您的位置:首页 > 移动开发 > Android开发

Android拍照获得图片URI为空的处理方法

2016-12-22 12:30 489 查看
看文章咯,反正最近被相机这块搞的有点疯。

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);


裁剪的方法。

4000
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");


完。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: