Buenos días,
Estoy teniendo un problema a la hora de sacar una foto y ponerla en un ImageView.
En un móvil (HTC Desire X, Huawei G300 o Sony Xperia J), cuando saco una foto en vertical, me la pone en vertical en el ImageView, y cuando la saco en horizontal, me la pone en horizontal.
Para estos móviles, en vertical, el alto > ancho y orientation=0, y en horizontal, el ancho>alto y orientation=0
Ahora, la misma prueba, realizada en otros dispositivos (Samsung Galaxy Tab 2 7' o Samsung Galaxy SIII), las fotos horizontales me las pone bien, pero las verticales no.
Para estos móviles, en vertical, ancho > alto y orientation=0, y en horizontal, ancho>alto y orientation=0
¿Alguno tiene idea de como solucionar el problema, que al parecer es en los dispositivos con una pantalla más bien grande, que si o si, entienda todas las fotos como landscape?
El código que tengo para controlar la orientación de la foto es el siguiente:
try {
exif = new ExifInterface(filePath);
int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
Log.e("ORIENTATION", " " + orientation);
Matrix matrix = new Matrix();
if (orientation == 6) {
matrix.postRotate(90);
} else if (orientation == 3) {
matrix.postRotate(180);
} else if (orientation == 8) {
matrix.postRotate(270);
}
thumbnail = Bitmap.createBitmap(thumbnail, 0, 0,thumbnail.getWidth(), thumbnail.getHeight(), matrix,true);
He buscado el modo de forzar a la cámara en modo Portrait, pero claro, eso tampoco me vale porque me ocurriría el error con las fotos horizontales. El asunto es, que haga como en los móviles, si es en horizontal, ancho>alto y si es en vertical, alto>ancho.
Muchas gracias.
Un saludo