То, что я делаю, кажется, должно быть простым, но я все еще теряюсь после того, как прочитал все возможные ответы Stackoverflow, которые смог найти, и искал в Google все статьи, которые смог найти .
Я использую предварительный просмотр SurfaceView и захватываю изображение из действия, которое установлено для screenOrientation = "landscape" в моем AndroidManifest.xml.
Я следил за примером кода приложения камеры и думал, что все работает, пока я попробовал мое приложение на нескольких устройствах Motorola под управлением 1.5.
У меня есть OrientationEventListener, работающий нормально, и я использую отражение, чтобы проверить, задано ли вращение как таковое:
final int latchedOrientation = roundOrientation(mLastOrientation + 90);
Parameters parameters = preview.camera.getParameters();
JPLog.d("Setting camera rotation = %d", latchedOrientation);
try {
// if >= 2.0
Method method = Camera.Parameters.class.getMethod("setRotation",
int.class);
if(method != null) {
method.invoke(parameters, latchedOrientation);
}
} catch(Throwable t) {
// if < 2.0
parameters.set("rotation", latchedOrientation);
}
preview.camera.setParameters(parameters);
NexusOne (OS 2.2) - Отлично работает. latchedOrientation = 0, картинка в порядке, без поворота в заголовке EXIF.
T-Mobile G1 (OS 1.6) - Также отлично работает. latchedOrientation = 0, изображение в порядке.
Motorola Backflip (OS 1.5) - Изображение повернуто. latchedOrientation = 0, изображение не имеет поворота EXIF.
Motorola CLIQ (OS 1.5) - Изображение повернуто. latchedOrientation = 0, изображение не имеет вращения EXIF.
Что происходит с этими устройствами Motorola? Я думал, что моя проблема в том, что драйвер камеры Motorola не поворачивает изображения, поэтому нашел классы чтения Sanselan EXIF для Android и готовился повернуть их сам. Забавно то, что есть заголовки EXIF, но нет элемента поворота.
Если я установил поворот вручную на 90 градусов, изображения получаются идеальными для устройств Motorola, но теперь у G1 и NexusOne есть изображения, повернутые на 90 градусов ( не то что хочу). Должно быть что-то, что я ' м не попадаю сюда.
Я сомневаюсь, что это проблема версии 1.5, иначе кто-нибудь опубликовал бы информацию об этом?