我需要獲得高品質的位圖得到捕獲來自攝像機圖像,但它似乎驗證碼:無法從相機
Intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageUri);
從獲取到onActivityResult
停止活動,並拋出這樣一個異常:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=null} to activity
這就是我從5小時搜索中得出的結果。
這是我的代碼: 意圖
File mediaStorageDir = new File(Environment.getExternalStorageDirectory() + "/Files");
String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmmss").format(new Date());
String mImageName = "MI_" + timeStamp + ".jpg";
File mediaFile = new File(mediaStorageDir.getPath() + File.separator + mImageName);
imageUri = Uri.fromFile(mediaFile);
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageUri);
filePath = imageUri.getPath();
Log.e("000", filePath + " :|");
startActivityForResult(cameraIntent, 0);
在日誌行我得到的路徑,但是當我按下保存在相機應用程序,我得到錯誤和空filePath
Bitmap bitmap = BitmapFactory.decodeFile(filePath);
appPanel.setBitmap(bitmap);
這段代碼不錯,但返回的是低質量圖像:
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
最後我找到了解決辦法:
我們必須onSaveInstanceState
如下保存路徑:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
CharSequence userText = CapturedPath;
outState.putCharSequence("savedText", userText);
}
,並使其回到onRestoreInstanceState
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
CapturedPath =savedInstanceState.getCharSequence("savedText").toString();
//Load bitamp from here:
Bitmap bitmap = BitmapFactory.decodeFile(CapturedPath);
appPanel.setBitmap(bitmap);
}
我發現在我的崗位 – MREZA
解決形容我忘了把新的支持lib中exifInterface。 這將適用於所有設備和操作系統的所有orientatino。 到目前爲止沒有問題。請檢查一下。 https://android-developers.googleblog.com/2016/12/introducing-the-exifinterface-support-library.html – neonankiti