Это происходит для всех устройств или только для некоторых? Насколько я думаю, это должно происходить не на всех устройствах. Вы проверяли это?
Вы можете попробовать решение, приведенное ниже. Это происходит из-за того, что большинство камер телефонов имеют альбомную ориентацию, то есть если вы сделаете фотографию в портретной ориентации, полученные фотографии будут повернуты на 90 градусов. В этом случае программное обеспечение камеры должно заполнить данные Exif с ориентацией, в которой должна просматриваться фотография.
Это решение должно работать, но не на 100% надежно, потому что оно зависит от производитель телефона devive / camera Exif data.
ExifInterface ei = new ExifInterface(photoPath);
int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_UNDEFINED);
Bitmap rotatedBitmap = null;
switch(orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
rotatedBitmap = rotateImage(bitmap, 90);
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotatedBitmap = rotateImage(bitmap, 180);
break;
case ExifInterface.ORIENTATION_ROTATE_270:
rotatedBitmap = rotateImage(bitmap, 270);
break;
case ExifInterface.ORIENTATION_NORMAL:
default:
rotatedBitmap = bitmap;
}
public static Bitmap rotateImage(Bitmap source, float angle) {
Matrix matrix = new Matrix();
matrix.postRotate(angle);
return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(),
matrix, true);
}
Примечание. Если это решение вам не известно, я мог бы предоставить другое, возможно.