Android_照相机Camera_调用系统照相机返回data为空
来源:互联网 发布:搜索游戏的软件 编辑:程序博客网 时间:2024/05/01 22:13
本博文为子墨原创,转载请注明出处!
http://blog.csdn.net/zimo2013/article/details/16916279
1.调用系统照相机
[Java] view plaincopy
但是在onActivityResult(int requestCode, int resultCode, Intent data)代码中得到的data总为null?
- //实例化一个intent,并指定action
- Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
- //指定一个图片路径对应的file对象
- uri = Uri.fromFile(ImageUtil.getImageFile());
- intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
- //启动activity
- startActivityForResult(intent, REQUEST_CODE_CAMERA);
2.原因分析
于是我查看了Android系统框架Camera应用程序,找到了关于系统照相机如何处理返回值data问题!
默认情况下,即不需要指定intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);照相机有自己默认的存储路径,拍摄的照片将返回一个缩略图。如果想访问原始图片,可以通过dat extra能够得到原始图片位置。即,如果指定了目标uri,data就没有数据,如果没有指定uri,则data就返回有数据!现在想想,这种设计还是很合理的!
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- switch (requestCode) {
- case REQUEST_CODE_CAMERA:
- if (resultCode == RESULT_OK) {
- if(data !=null){ //可能尚未指定intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
- //返回有缩略图
- if(data.hasExtra("data")){
- Bitmap thumbnail = data.getParcelableExtra("data");
- //得到bitmap后的操作
- }
- }else{
- //由于指定了目标uri,存储在目标uri,intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
- // 通过目标uri,找到图片
- // 对图片的缩放处理
- // 操作
- }
- }
- }
- }
3.Android系统照相机部分关键源码
- // 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) { //存在mSaveUri,即指定了目标uri
- OutputStream outputStream = null;
- try {
- outputStream = mContentResolver.openOutputStream(mSaveUri);
- outputStream.write(data);
- outputStream.close();
- setResult(RESULT_OK); //直接返回RESULT_OK,并没有指定intent
- finish();
- } catch (IOException ex) {
- // ignore exception
- } finally {
- Util.closeSilently(outputStream);
- }
- } else {
- Bitmap bitmap = createCaptureBitmap(data);
- // 返回RESULT_OK,并包含一个Intent对象,其中Extra中科key为data,value为一个bitmap
- setResult(RESULT_OK, new Intent("inline-data").putExtra("data", bitmap));
- finish();
- }
0 0
- Android_照相机Camera_调用系统照相机返回data为空
- Android_照相机Camera_调用系统照相机返回data为空
- Android_照相机Camera_调用系统照相机返回data为空
- Android_照相机Camera_调用系统照相机返回data为空
- Android_照相机Camera_调用系统照相机返回data为空
- Android_照相机Camera_调用系统照相机返回data为空
- Android_照相机Camera_调用系统照相机返回data为空
- Android_照相机Camera_调用系统照相机返回data为空
- Android_照相机Camera_使用intent调用系统照相机在onActivityResult返回data为空
- Android 照相机Camera 调用系统照相机返回data为空
- Android_照相机Camera_调用系统照…
- Android调用系统照相机返回intent为空原因分析
- Android调用系统照相机
- 调用系统照相机 相册
- 调用系统照相机
- 调用系统照相机
- android 调用系统照相机
- 调用系统照相机
- linux下防火墙的简单配置,插入规则
- android 状态栏(StatusBar)
- React入门基础
- 算法竞赛入门经典-开灯问题
- Unity 常用的几种相机跟随
- Android_照相机Camera_调用系统照相机返回data为空
- SQL SERVER返回列表带if判断的函数写法
- MyBatis 向Sql语句中动态传参数·动态SQL拼接
- 『sklearn学习』多种模型预测脸的下半部分的结果对比
- CocoaPods安装和使用教程
- AlertDialog对话框的使用
- Unity 动画回调
- lintcode,转换字符串到整数
- Torch7的使用之基本知识