Flex Mobile拍照并保存在自定义目录

开发Flex Mobile应用时经常需要拍照,拍照后照片会自动保存在指定目录中,但不同设备自动保存的路径是不同的,开发人员希望将拍摄的照片保存在自定义的路径中,下面的代码实现了该功能。

(1)页面布局文件。页面布局非常简单,只有一个按钮。

<!--The layout of this view-->
<s:Button id="btnTakePhoto" label="Take photo" click="btnTakePhoto_clickHandler(event)"/>

(2)在按钮的单击事件中调用拍照。

//The click method of taking photo button.
protected function btnTakePhoto_clickHandler(event:MouseEvent):void
{
	if(CameraUI.isSupported)
	{
		//Open the view of taking photo.
		var camera:CameraUI=new CameraUI();
		camera.launch(MediaType.IMAGE);
		//Add the complete handler of CameraUI.
		camera.addEventListener(MediaEvent.COMPLETE,onTakePhotoCompleteHandler);
	}
}

(3)拍照完成后进行自定义保存

//Define the object of MeidaPromise and IDataInput.
private var mediaPromise:MediaPromise;
private var fileDataSource:IDataInput;
			
//The handler of taking photo complete.
private function onTakePhotoCompleteHandler(event:MediaEvent):void
{
	mediaPromise=event.data as MediaPromise;
	mediaPromise.addEventListener(Event.COMPLETE,mediaPromiseCompleteHandler);
	fileDataSource=mediaPromise.open();
}
			
//The handler of MeidaPromise complete.
private function mediaPromiseCompleteHandler(event:Event):void
{
	//Remove the handler of MediaPromise complete.
	mediaPromise.removeEventListener(Event.COMPLETE,mediaPromiseCompleteHandler);
				
	//Write the bytes to the ByteArray.
	var fileData:ByteArray=new ByteArray();
	fileDataSource.readBytes(fileData,0,fileDataSource.bytesAvailable);
				
	//Write the photo data to the File.
	var file:File=new File("/mnt/sdcard/DCIM/"+mediaPromise.relativePath);
	var fileStream:FileStream=new FileStream();
	fileStream.open(file,FileMode.WRITE);
	fileStream.writeBytes(fileData);
	mediaPromise.close();
	fileStream.close();
}

本人亲测通过,希望有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值