Oi Ayrton tudo bom?
Esse problema da foto rotacionada é bem comum.
Você pode usar a classe ExifInterface
para descobrir a orientação e fazer a rotação na mão. Algo como:
ExifInterface exif = new ExifInterface(caminhoFoto);
String orientacao = exif.getAttribute(ExifInterface.TAG_ORIENTATION);
Fazer um switch case para saber quantos graus precisa rotacionar:
switch (codigoOrientacao) {
case ExifInterface.ORIENTATION_NORMAL:
// rotacionar 0 graus
case ExifInterface.ORIENTATION_ROTATE_90:
// rotacionar 90 graus
// mesma coisa para 180 e 270
}
E criar um novo bitmap na rotação que você precisa:
Matrix matrix = new Matrix();
matrix.postRotate(angulo);
Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
A questão da foto sumir é porque toda vez que você muda a orientação, o layout da Activity é recriado, então você teria que chamar este código acima no onCreate
da Activity.
Abraço!