Rotación inexplicable de la cámara de Android en la captura para algunos dispositivos (no en EXIF)

Parece que lo que estoy haciendo debería ser simple, pero aún estoy perdido después de haber leído todas las respuestas posibles de Stackoverflow que puedo encontrar y busqué en Google todos los artículos que puedo encontrar.

Estoy usando una vista previa de SurfaceView y capturando una imagen de una actividad configurada para screenOrientation = "landscape" en mi AndroidManifest.xml.

Seguí el código de aplicación de la cámara de muestra y pensé que las cosas funcionaban hasta que probé mi aplicación en algunos dispositivos Motorola con 1.5.

Tengo OrientationEventListener funcionando bien y uso la reflexión para ver si establezco la rotación como tal:

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) - Funciona genial. latchedOrientation = 0, imagen OK sin ninguna rotación en el encabezado EXIF.

T-Mobile G1 (OS 1.6) - También funciona muy bien. latchedOrientation = 0, imagen OK.

Motorola Backflip (OS 1.5) - Imagen rotada. latchedOrientation = 0, la imagen no tiene rotación EXIF.

Motorola CLIQ (OS 1.5) - Imagen rotada. latchedOrientation = 0, la imagen no tiene rotación EXIF.

¿Qué está pasando con estos dispositivos Motorola? Pensé que mi problema era que el controlador de la cámara Motorola no estaba rotando las imágenes, así que encontré las clases de lectura Sanselan EXIF para Android y me estaba preparando para rotarlas yo mismo. Lo curioso es que hay encabezados EXIF pero no hay elemento de rotación.

Si configuro la rotación manualmente a 90 grados, las imágenes salen perfectas de los dispositivos Motorola, pero ahora el G1 y el NexusOne tienen imágenes que giran 90 grados (no lo que quiero). Tiene que haber algo que no entiendo aquí.

Dudo que este sea un problema de 1.5, ¿o alguien habría publicado información al respecto?

Respuestas a la pregunta(4)

Su respuesta a la pregunta