Definindo a orientação Android Photo EXIF
Eu escrevi uma atividade do Android que captura uma foto programaticamente. Desejo salvar a imagem como JPEG com os dados de orientação EXIF corretos (assim como o aplicativo nativo da câmera Android faz automaticamente).
Aqui está o método para tirar a foto (removi os blocos try / catch):
private void takePhoto() {
camera = Camera.open();
SurfaceTexture dummySurfaceTexture = new SurfaceTexture(0);
camera.setPreviewTexture(dummySurfaceTexture);
camera.startPreview();
camera.takePicture(null, null, jpgCallback);
}
... e o retorno de chamada:
private Camera.PictureCallback jpgCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
releaseCamera();
savePhoto(data);
};
A foto foi tirada corretamente, mas o meu problema é que os dados EXIF mostram que a orientação está definida como "Orientação da imagem: superior, esquerda", independentemente da orientação do dispositivo, de modo que, quando carrego a foto, ela aparece de cabeça para baixo ou girado.
Preciso realmente capturar a orientação do dispositivo manualmente (rolar, pitch, azimute) e escrever a orientação EXIF? Como o aplicativo Câmera grava automaticamente esses dados corretamente? Alguém sabe uma maneira de definir esse atributo corretamente?
EDIT: Não consigo usar a orientação da tela, pois a Atividade está bloqueada no modo retrato.