Olá Alessandro Lima Alexandre.Obrigado por ajudar no outro tópico.O código que vc passou funciona para rotacionar a foto no formulário, mas infelizmente só funciona parcialmente.Quando clicamos no botão de tirar a foto, o método private static Bitmap abreFotoERotaciona(String caminhoFoto, int angulo) { ...} faz a rotação e salva no formulário, mas quando vai pra lista a foto fica invertida novamente.Aí está o código da classe CarregadorDeFoto:
package br.com.alura.schedule; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.media.ExifInterface; import android.widget.ImageView; import java.io.IOException;
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);
default:
return abreFotoERotaciona(caminhoFoto, 0);
}
}
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);
}
}
E aqui está a classe FormularioHelper com o trecho do código que chama o CarregadorDeFoto.carrega(caminhoFoto); >>>
public void carregaImagem(String caminhoFoto) {
if (caminhoFoto !=null){
Bitmap bitmap = CarregadorDeFoto.carrega(caminhoFoto);
Bitmap bitmapReduzido = Bitmap.createScaledBitmap(bitmap, 100, 100, true);
campoFoto.setImageBitmap(bitmapReduzido);
campoFoto.setScaleType(ImageView.ScaleType.FIT_XY);
campoFoto.setTag(caminhoFoto);//associa a imagem com o caminho da foto*/
}
}
E só mais uma última coisa.Quando vou editar o aluno ou conferir os dados, a foto no formulário está rotacionada do jeito correto, exatamente do jeito que tiramos.É somente na lista que as fotos miniaturizadas ficam invertidas de novo.