Правильно ли задокументирована функция CameraInfo.orientation в Android? Неправильно реализована?

В Android вы можете получить описание свойств Camera, получив CameraInfo. Меня интересует ориентация, описанная в http://developer.android.com/reference/android/hardware/Camera.CameraInfo.html#orientation

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

В частности, в документации говорится:

Значение - это угол, на который нужно повернуть изображение с камеры по часовой стрелке, чтобы оно правильно отображалось на дисплее в его естественной ориентации. ... Например, предположим, что устройство имеет естественно высокий экран. Сенсор камеры на задней панели установлен в альбомной ориентации. Вы смотрите на экран. Если верхняя сторона датчика камеры совмещена с правым краем экрана в естественной ориентации, значение должно составлять 90. Если верхняя сторона сенсора фронтальной камеры выровнена по правому краю экрана, значение должно быть 270.

Но в приведенном примере именно изображение с камеры повернуто на 90 градусов по часовой стрелке относительно естественной высокой ориентации, а не наоборот. То есть изображение, верхняя часть которого совмещена с правой стороной устройства, нужно повернуть на 270 градусов по часовой стрелке, чтобы совместить с верхней стороной устройства.

По крайней мере, все четыре моих устройства показывают "90" для этого значения, и все они ведут себя так, как будто верхняя часть камеры находится на правой стороне устройства, когда оно находится в естественной ориентации. То есть для соответствия естественной ориентации изображение должно быть повернуто на 270 градусов по часовой стрелке, а не на 90. Пример кажется правильным, но первая строка - нет.

Этот пример кода, похоже, подтверждает мой вывод, поскольку он дает правильный результат, только когда ориентация интерпретируется как указано выше.

Странно, но у меня есть данные журнала с устройства одного пользователя, которые показывают, что он сообщает это значение как 90 в одно время, и 0 в другое время! Это должно быть физическим свойством того, как камера расположена в устройстве, верно?

  1. Может ли кто-нибудь подтвердить, что первая строка документации на самом деле неверна, а пример верен?
  2. Наблюдал ли кто-нибудь изменение значения CameraInfo.orientation? Есть ли доказательства в документации, что это законное поведение, или это скорее всего ошибка в устройстве?
  3. Любые другие комментарии, опыт, проблемы, с которыми я еще не сталкивался?

24
задан AgentKnopf 13 April 2012 в 17:40
поделиться