Android 1.6 Камера вращения? - PullRequest
       21

Android 1.6 Камера вращения?

3 голосов
/ 22 октября 2009

Я опубликовал это на форумах разработчиков Android, но хотел обратиться сюда.

Одним из действий в нашем приложении была съемка. Предварительный просмотр изображения показывает правильный путь на экране в 1.5 и 1.6, но когда он сохраняется, он сохраняет повернутый jpg 90.

Я могу повернуть его в реальном времени при отображении, и я думаю, что я мог бы повторно сохранить его после сохранения. Моя проблема в том, что я хотел бы сохранить ее правильно при съемке.

Мое приложение, скомпилированное в 1.5, работает нормально. У меня были некоторые проблемы с памятью ж / 1.6 из-за размера изображения, что было странно, т.к. размер изображения увеличился при съемке фотографий путем съемки с держателем поверхности / захватом изображения Перезвоните. Я, кажется, исправил повторное отображение этих изображений путем изменения размера их используя растровую матрицу. Но моя камера сейчас вращается все 90 градусов. Похоже, что мой Override SurfaceChanged ничего не делает, вот где я устанавливал вращение на 90 (я не могу помните почему, это было 10 месяцев назад!). Я пытался вращать параметры камеры параметры на 90 градусов, 0 градусов. Не похоже сделать что-нибудь ... какие-нибудь мысли?

1 Ответ

6 голосов
/ 30 ноября 2009

Драйверы камеры не знают ориентации устройства. В 1.5 и 1.6 вам нужно вызвать параметры.set («поворот», градус), чтобы сообщить драйверам о повороте перед вызовом takePicture (). В 2.0 появился новый API setRotation (см. Ниже). Обратите внимание, что некоторые устройства поворачивают изображения целиком, а некоторые просто устанавливают ориентацию в заголовке EXIF.

http://developer.android.com/reference/android/hardware/Camera.Parameters.html#setRotation(int)

Устанавливает ориентацию устройства в градусах. Например, предположим, что естественным положением устройства является пейзаж. Если пользователь делает снимок в ландшафтном режиме с разрешением 2048x1536, поворот должен быть установлен на 0. Если пользователь поворачивает телефон на 90 градусов по часовой стрелке, поворот должен быть установлен на 90. Приложения могут использовать OrientationEventListener для установки этого параметра. Драйвер камеры может устанавливать ориентацию в заголовке EXIF, не поворачивая изображение. Или драйвер может повернуть изображение и миниатюру EXIF. Если изображение в формате Jpeg поворачивается, ориентация в заголовке EXIF ​​будет отсутствовать или равна 1 (строка № 0 - верхняя, а столбец № 0 - левая сторона).
Параметры
Вращение Ориентация устройства в градусах. Вращение может быть только 0, 90, 180 или 270

...