Rotação inexplicável da câmera do Android na captura para alguns dispositivos (não em EXIF)

O que estou fazendo parece que deve ser simples, mas ainda estou perdido depois de ler todas as respostas possíveis do Stackoverflow que posso encontrar e pesquisar no Google todos os artigos que posso encontrar.

Estou usando uma visualização do SurfaceView e capturando uma imagem de uma atividade definida para screenOrientation = "landscape" no meu AndroidManifest.xml.

Segui o código de aplicativo da câmera de exemplo e pensei que as coisas estavam funcionando até que eu tentei o aplicativo em alguns dispositivos Motorola executando o 1.5.

Eu tenho o OrientationEventListener executando OK e uso a reflexão para ver se defina a rotação da seguinte forma:

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 bem. latchedOrientation = 0, figura OK sem qualquer rotação no cabeçalho EXIF.

T-Mobile G1 (OS 1.6) - Também funciona muito bem. latchedOrientation = 0, imagem OK.

Motorola Backflip (OS 1.5) - Imagem girada. latchedOrientation = 0, a imagem não possui rotação EXIF.

Motorola CLIQ (OS 1.5) - Imagem girada. latchedOrientation = 0, a imagem não possui rotação EXIF.

O que está acontecendo com esses dispositivos Motorola? Eu pensei que meu problema era que o driver da câmera da Motorola não estava rodando as imagens, então encontrei as aulas de leitura Sanselan EXIF para Android e estava me preparando para rotacioná-las. O engraçado é que existem cabeçalhos EXIF, mas nenhum elemento de rotação.

Se eu definir a rotação manualmente para 90 graus, as imagens sairão perfeitas para os dispositivos Motorola, mas agora o G1 e o NexusOne têm imagens giradas em 90 graus (não é o que eu quero). Tem que haver algo que eu não estou chegando aqui.

Duvido que seja um problema de 1,5 ou alguém teria postado informações sobre ele?

questionAnswers(4)

yourAnswerToTheQuestion