2009-12-19 5 views
1

Я использую эту камеру код попросить камеру, чтобы повернуть данные захваченного изображения:Droid device - не будет поворачивать изображение, снятое с камеры? (Camera.Parameters)

Camera.Parameters params = camera.getParameters(); 
params.set("rotation", 90); 
camera.setParameters(params); 

это, кажется, работает на всех телефонах, кроме Droid. Кто-нибудь еще видел это? Данные изображения всегда ландшафтные, однако собственное приложение для камеры на Droid производит портретные изображения в порядке.

Интересно, будет ли Droid уважать только новый метод Camera.Parameters.setRotation(), но это кажется доступным только в уровне API 5?

ответ

0

Вращение может быть просто сохранено в заголовке jpeg exif, как описано в документе setRotation. На Droid это на самом деле. Чтобы проверить это, вы можете использовать инструменты чтения заголовков jpeg, такие как jhead. Вы также можете использовать ExifInterface API для чтения тега ориентации в своей программе.

+0

попробовал использовать API для exif, но не смог сохранить изменения. Я не могу заставить ротацию работать на фотографиях камеры. Очень раздражает. – Brenden

0

Droid работает под управлением Android 2.0 (ну, теперь 2.0.1), которые являются уровнями API 5 и 6 соответственно.

Так что вполне возможно, что Droid только уважает (более разумный) API 2.0+ для вращения.

Однако, я думаю, ваша озабоченность связана с совместимостью между различными типами устройств и версиями ОС, поэтому я предполагаю, что вам придется вызывать API 2.0+ через отражение после обнаружения версии ОС (используя android.os.Build.VERSION_CODES).

+0

О, это не звучит приятно - вместо этого я должен просто начать использовать API 2.0 (выглядит как уровень 6), и если я увижу API <6, то вместо этого используйте этот вызов параметров? Я не знаю, смогу ли я пойти в другом направлении? Спасибо – Mark

2

setRotation также не работал для меня на Nexus One, но я получил поворот изображения для работы, следуя примеру приложения Android-камеры.
Исходный код доступен здесь: https://android.googlesource.com/platform/packages/apps/Camera

Начните с Camera.java, но вы также будете смотреть на ImageManager.java, Util.java и другие файлы.

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