Получение поворота из ExifInterface всегда возвращает 0

Я передаю растровое изображение через связку наonActivityResult с камеры.

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, "picture");
mCapturedImageURI =     getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);

startActivityForResult(intent, REQUEST_TAKE_PHOTO); 

Я могу получить растровое изображение:

Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), mCapturedImageURI);

Однако я заметил, что изображение поворачивается на некоторых устройствах. После поиска сообщений здесь, типичное решение, похоже, получило ротацию через:

String path = mCapturedImageURI.getPath();
ExifInterface exif = new ExifInterface(path);
int rotation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);

К сожалению мойint rotation всегда 0, хотя растровое изображение повернуто.

Я также попробовал это, который работал, когда я загрузил изображение уже на устройстве, но ориентация по-прежнему 0:

String[] orientationColumn = {MediaStore.Images.Media.ORIENTATION};
Cursor cur = managedQuery(mCapturedImageURI, orientationColumn, null, null, null);
if (cur != null && cur.moveToFirst()) {
      orientation = cur.getInt(cur.getColumnIndex(orientationColumn[0]));
}

Кто-нибудь видит что-то, что я могу здесь делать неправильно? Или другой обходной путь?

Обычно растровое изображение поворачивается на 90 градусов против часовой стрелки с задней камерой и на 90 градусов по часовой стрелке с передней камерой. Работает нормально на Moto G. Поворачивается на Galaxy S3 и LG G2.

Ответы на вопрос(2)

Ваш ответ на вопрос