调用Camera返回为空的分析及处理方法
来源:互联网 发布:花生壳免费域名2016 编辑:程序博客网 时间:2024/05/07 07:37
前言
大家可能遇到了这样的情况,调用Camera,然后指定自定义的保存路径,结果返回的Intent为空。我们来分析一下原因。
分析
首先看Camera的部分逻辑,在源码中的Camera.java的doAttach()方法里面。
// First handle the no crop case -- just return the value. If the// caller specifies a "save uri" then write the data to it's// stream. Otherwise, pass back a scaled down version of the bitmap// directly in the extras.if (mSaveUri != null) { OutputStream outputStream = null; try { outputStream = mContentResolver.openOutputStream(mSaveUri); outputStream.write(data); outputStream.close(); setResult(RESULT_OK); finish(); } catch (IOException ex) { // ignore exception } finally { Util.closeSilently(outputStream); }} else { Bitmap bitmap = createCaptureBitmap(data); setResult(RESULT_OK, new Intent("inline-data").putExtra("data", bitmap)); finish();}
注释也有明确解释,假如mSaveUri不为空,则直接返回RESULT_OK,不会回传其他任何东西。假如为空,则会回传一个bitmap。
再看看我们调用Camera的代码。
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);Date date = new Date();String photoDCIM = Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_DCIM; // 默认相册的路径String path = photoDCIM + File.separator + date.getTime() + ".jpg"; intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(path )));startActivityForResult(intent, PICTURE_CAMERA);
上面带指定的保存路径path ,就是Camera中的mSaveUri。所以结果就是Camera只会返回RESULT_OK。
结论
我们调用Camera可以有2种方式获得拍照的图片:
第1种是指定保存路径。
如上面的示例代码,将path设置为成员变量,在onActivityResult()中,直接读取该值即可。
第2种是不指定保存路径。
调用方法如下:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);getActivity().startActivityForResult(intent, PICTURE_CAMERA);
onActivityResult中
Bitmap bitmap= data.getParcelableExtra("data");
这样就能得到拍照的图片了。
总结
在日常使用过程中,推荐使用指定保存路径,这样可以方便获得File,然后做其他的操作。
0 0
- 调用Camera返回为空的分析及处理方法
- 调用系统相机拍照返回Intent 为空的处理。
- Android 照相机Camera 调用系统照相机返回data为空
- android 调用系统相机拍照返回Intent 为空的处理
- android 调用系统相机拍照返回Intent 为空的处理
- Android调用系统照相机返回intent为空原因分析
- 服务器返回空数据的处理方法
- jquery的ajax处理php返回数组,及json_encode中文为空的问题
- camera.open()返回空指针的问题
- 调用pcap_findalldevs返回列表为空的解决办法
- 异步调用webservice返回responseXML为空的问题解决方案
- C#调用C++Dll字符串返回为空的问题
- 如何处理$.getjson 返回值 为空的问题
- 返回值为结构体,返回值可能为空时候的处理情况
- Android调用webservice返回数据为空
- 百度地图getAddrStr()方法返回为空的问题
- Xamarin.ios 解决new NSUrl 返回为空的方法。
- Android 中Listview方法getChildAt()返回为空的问题
- 【tarjan缩点+小拓展】【POJ-2186】
- Hibernate中使用GetCurrentSession()方法
- Android 文件选择的实现代码
- 天工艺品-炉香一缕烟
- 如何解决adb devices 端口被占用的问题
- 调用Camera返回为空的分析及处理方法
- BCB中DLL的创建和调用
- 性能调优基础篇之无锁实现cache更新
- xml 转义特殊字符 如&'"
- hdu 1016
- Zigbee协议术语
- c语言基础
- iOS7导航条
- 字符和字节的区别