Obter rotação do ExifInterface sempre retorna 0

Estou passando um bitmap via pacote emonActivityResult de uma câmera

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

Eu posso obter o bitmap:

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

No entanto, notei que a imagem é rotacionada em alguns dispositivos. Depois de pesquisar as postagens aqui, a solução típica parecia obter a rotação via:

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

Infelizmente, meuint rotation é sempre 0, mesmo que o bitmap seja girado.

Eu também tentei isso que funcionou quando eu carreguei uma imagem já no dispositivo, mas a orientação ainda é 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]));
}

Alguém viu alguma coisa que eu possa estar fazendo de errado aqui? Ou outra solução alternativa?

Geralmente, o bitmap é girado 90 graus no sentido anti-horário com a câmera traseira e 90 graus no sentido horário com a câmera frontal. Funciona bem no Moto G. Rodado no Galaxy S3 e LG G2.

questionAnswers(2)

yourAnswerToTheQuestion