Não sei é por estar usando versões mais recentes, mas quando eu implemento a solução da classe "CarregadorDeFoto" sugerida no post do blog com relação às imagens viradas, o compilador aponta muitos erros como Unhandled Exception e Missing Return.. coisas do tipo. No fim, o código do carregador de arquivos que compila é o seguinte:
public class CarregadorDeFoto {
public static Bitmap carrega(String caminhoFoto) {
ExifInterface exif = null;
try {
exif = new ExifInterface(caminhoFoto);
} catch (IOException e) {
e.printStackTrace();
}
String orientacao = exif.getAttribute(ExifInterface.TAG_ORIENTATION);
int codigoOrientacao = Integer.parseInt(orientacao);
switch (codigoOrientacao) {
case ExifInterface.ORIENTATION_NORMAL:
return abreFotoERotaciona(caminhoFoto, 0);
case ExifInterface.ORIENTATION_ROTATE_90:
return abreFotoERotaciona(caminhoFoto, 90);
case ExifInterface.ORIENTATION_ROTATE_180:
return abreFotoERotaciona(caminhoFoto, 180);
case ExifInterface.ORIENTATION_ROTATE_270:
return abreFotoERotaciona(caminhoFoto, 270);
}
return null;
}
private static Bitmap abreFotoERotaciona(String caminhoFoto, int angulo) {
// Abre o bitmap a partir do caminho da foto
Bitmap bitmap = BitmapFactory.decodeFile(caminhoFoto);
// Prepara a operação de rotação com o ângulo escolhido
Matrix matrix = new Matrix();
matrix.postRotate(angulo);
// Cria um novo bitmap a partir do original já com a rotação aplicada
return Bitmap.createBitmap(bitmap, 0, 0,
bitmap.getWidth(), bitmap.getHeight(),
matrix, true);
}
}
Com detalhe para o try...catch que não havia:
try {
exif = new ExifInterface(caminhoFoto);
} catch (IOException e) {
e.printStackTrace();
}
Também para o retorno:
case ExifInterface.ORIENTATION_ROTATE_270:
return abreFotoERotaciona(caminhoFoto, 270);
}
return null;
}
E por fim, tornando o metodo "abreFotoERotaciona" estatico:
private static Bitmap abreFotoERotaciona(String caminhoFoto, int angulo) {
// Abre o bitmap a partir do caminho da foto
Bitmap bitmap = BitmapFactory.decodeFile(caminhoFoto);