Данные об ориентации EXIF не извлекаются в устройстве Xiaomi

#java #android #xiaomi #android-exifinterface

Вопрос:

Следующий код успешно работает для получения ориентации изображения, выполненного с помощью камеры Android, которое считывается через ExifInterface, при условии, что оно выполняется на эмуляторе Android:

 orientation=Integer.valueOf(exif.getAttribute(ExifInterface.TAG_ORIENTATION));  

Но в устройстве Xiaomi он всегда возвращает значение 0, которое было бы зарезервированным значением в соответствии со спецификацией EXIF.

Возможно, устройство Xiaomi не могло поддерживать получение значений из ExifInterface, но оно способно успешно извлекать следующее значение:

 double vel = exif.getAttributeDouble(ExifInterface.TAG_SHUTTER_SPEED_VALUE, 0);  

Таким образом, выглядит довольно странно, что он может правильно получить это последнее значение, но не правильное для ориентации.

Эти два данные извлекаются последовательно следующим образом:

 double vel = exif.getAttributeDouble(ExifInterface.TAG_SHUTTER_SPEED_VALUE, 0);  shutterSpeed =((double ) 1/ Math.round(Math.pow(2.0, vel)));  orientation=Integer.valueOf(exif.getAttribute(ExifInterface.TAG_ORIENTATION));  

Итак, я также не вижу никакой причины, связанной с тем, что изображение, возможно, не готово к получению своей ориентации.

Если возможно, я хотел бы придерживаться использования ExifInterface для получения ориентации, так как после некоторых исследований, похоже, довольно сложно определить, использует ли устройство Android заднюю часть фронтальной камеры, если это вообще возможно.

Комментарии:

1. Скопируйте файл jpg на то устройство, которое имеет известную ориентацию на другом устройстве.