ねえ、私はこのエラーを理解できないようです。写真を撮るか、ギャラリーから選択して画像を選択しようとしています。選択した画像でこの方法を試してみるとうまくいきますが、カメラから画像を撮るとcursor.close()
回線にエラーが発生します
私はギャラリーから画像をキャプチャするためにこのコードを持っています:
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {
Uri selectedImage = mImageUri;
getContentResolver().notifyChange(selectedImage, null);
ImageView imageView = (ImageView) findViewById(R.id.chosenImage2);
ContentResolver cr = getContentResolver();
try {
bitmap = android.provider.MediaStore.Images.Media
.getBitmap(cr, selectedImage);
//flip image if needed
bitmap = Helpers.flipBitmap(bitmap, Helpers.getOrientation(this, selectedImage));
imageView.setImageBitmap(bitmap);
} catch (Exception e) {
Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT)
.show();
e.printStackTrace();
Log.e("Camera", e.toString());
}
}
これはgetOrientationコードです:
public static int getOrientation(Context context, Uri photoUri) {
Cursor cursor = context.getContentResolver().query(photoUri,
new String[] { MediaStore.Images.ImageColumns.ORIENTATION },
null, null, null);
try {
if (cursor.moveToFirst()) {
return cursor.getInt(0);
} else {
return -1;
}
} finally {
cursor.close();
}
}
これによりnullポインター例外が発生し、その理由がわかりません。
何か助けはありますか?
編集:
これは私がインテントと呼ぶ方法です:
ImageView imageView = (ImageView) findViewById(R.id.chosenImage2);
if(imageView.getDrawable() == null){
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File photo = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+ ".jpg");
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(photo));
mImageUri = Uri.fromFile(photo);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}
}