Android拍照获得图片URI为空的处理方法
16lz
2021-01-26
看文章咯,反正最近被相机这块搞的有点疯。
android拍照获得图片URI为空的处理方法
Android_照相机Camera_调用系统照相机返回data为空
拍照的方法:
public void takePhoto() { destoryBimap(); String state = Environment.getExternalStorageState(); if (state.equals(Environment.MEDIA_MOUNTED)) { Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");//这个是指定的uri地址,所以注释掉 如果指定了目标uri,data就没有数据,如果没有指定uri,则data就返回有数据 // intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(intent, PHOTO_WITH_CAMERA); } else { Toast.makeText(getActivity(), "没有SD卡", Toast.LENGTH_LONG).show(); } }
onActivityResult方法中接收。
Bundle bundle =data.getExtras(); //获取相机返回的数据,并转换为Bitmap图片格式 aphoto = (Bitmap)bundle.get("data"); if (data.getData()!=null){ imageUri =data.getData(); }else { imageUri = Uri.parse(MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), aphoto, null,null)); }// 裁剪照片的方法 copePhoto(imageUri);
裁剪的方法。
public void copePhoto(Uri uri){ destoryBimap(); String state = Environment.getExternalStorageState(); if (state.equals(Environment.MEDIA_MOUNTED)) { Intent intent = new Intent(); intent.setAction("com.android.camera.action.CROP"); intent.setDataAndType(uri,"image/*"); intent.putExtra("cope","true"); intent.putExtra("aspectX", 1);// 裁剪框比例 intent.putExtra("aspectY", 1); intent.putExtra("outputX", 200);// 输出图片大小 intent.putExtra("outputY", 150); intent.putExtra("return-data", true); startActivityForResult(intent,PHOTO_COPE); } else { Toast.makeText(getActivity(), "没有SD卡", Toast.LENGTH_LONG).show(); } }
onActivityResult方法中接收。
Bundle bundle = data.getExtras(); photo = bundle.getParcelable("data");
完。
更多相关文章
- Android学习笔记八之BroadCastReceiver
- Unity 调用android插件
- [置顶] 使用ContentProvider共享数据
- Android中刷新界面的二种方法
- android事件分发机制dispatch
- Android(安卓)Context Menu和Options Menu菜单的区别
- Android(安卓)耗时代码(ANR)的查找检测和分析解决 TraceView的使
- android gridview布局添加多个title
- android 定义 程序 Scheme 接收特定URI开启Activity