我看到了关于这个问题的其他问题和答案,但它们都没有为我工作。
我试图从相机拍摄照片并将其显示在图像视图中。 而且我还使用Helper类来获得更清晰的代码。
以下是Helper类中的代码:
拍照:public static void getphoto(final Activity act, final int int, final Uri uri){
Intent cameraIntent = new Intent("android.media.action.IMAGE_CAPTURE");
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
act.startActivityForResult(cameraIntent, int);
}
获得filpath:
public static String pathgal(Activity act, Uri uri){
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = act.getContentResolver().query(uri, filePathColumn, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();
return filePath;
}
return null;
}
得到结果:
if (requestCode == CAMERA_REQUEST) {
if (resultCode == RESULT_OK) {
String capturedImageFilePath = Helper.pathgal(act, mCapturedImageURI);
bmp = Helper.decodeFile(capturedImageFilePath);
Log.d("******CAMERAAAAAAA*******", "Camera fine 10");
if(data != null)
{
Log.d("******CAMERAAAAAAA*******", "Camera fine 11");
Helper.showpic(act, id1, bmp);
Log.d("******CAMERAAAAAAA*******", "Camera fine 12");
} else if (data == null) {
Log.d("******CAMERAAAAAAA*******", "Camera fine 13");
Toast.makeText(act.getApplicationContext(), "Data is Null",
Toast.LENGTH_SHORT).show();
}
}
}
现在,如果我在低级别的手机(如HTC野火版)上测试,一切正常,我得到的相机很好11和12"日志。但是,如果我在高级手机(如Galaxy s4)上测试它,它会给我"数据为空"和#34;相机罚款13"。
那么我应该如何阻止在那种设备中获取null?
答案 0 :(得分:1)
当您在摄像机意图中使用uri传递额外参数MediaStore.EXTRA_OUTPUT时,您告诉摄像机活动将捕获的图像写入该路径,并且它不会在onActivityResult方法中返回位图。所以你在onActivityResult上得到了null。
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri); //this line
你可能宁愿尝试这个
String capturedImageFilePath = Helper.pathgal(act, mCapturedImageURI);
bmp = Helper.decodeFile(capturedImageFilePath);
if(bmp != null)
{
Helper.showpic(act, id1, bmp);
} else{
Toast.makeText(act.getApplicationContext(), "bmp is Null",Toast.LENGTH_SHORT).show();
}