Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Estou com dúvida no curso de Android : Interface, aparência e recursos do device - Parte 2, no exercício do capítulo Câmera e arquivos.

A imagem captura sempre fica em landscape, como devo proceder para gravar a imagem em protrait? Como faço para configurar a aplicação ou rotacionar a imagem?

4 respostas

Você pode rotacionar a imagem no seu FormularioHelper, no método carregaImagem:

public void carregaImagem(String localArquivoFoto) {

    Bitmap imagemFoto = BitmapFactory.decodeFile(localArquivoFoto);
    Matrix matrix = new Matrix();
    matrix.postRotate(90);
    Bitmap imagemFotoRotacionada = Bitmap.createBitmap(imagemFoto, 0, 0, imagemFoto.getWidth(), imagemFoto.getHeight(), matrix, true);
    Bitmap imagemFotoReduzidaERotacionada = Bitmap.createScaledBitmap(imagemFotoRotacionada, 100, 100, true);

    aluno.setFoto(localArquivoFoto);
    foto.setImageBitmap(imagemFotoReduzidaERotacionada);
}

Boa noite Felipe! Cheguei numa solução muito parecida com essa, mas notei que a performance do App caiu muito, principalmente na mudança de telas entre a listagem de alunos e formulário de cadastro\alteração. Alterei a rotina para a sua sugestão, mas o problema de performance continua, estou achando que é devido a qualidade da câmera que está captando as imagens em alta resolução ficando em média 2Mb cada imagem, o que você acha sobre essa suspeita? Será que há uma forma de "forçar a configuração" para o App capturar imagens com resoluções e tamanho menores?

Acabei de fazer uns testes aqui, realmente o que detona a performance do App é o tamanho da imagem. Agora é descobrir como setar a configuração da câmera através do App impossibilitando ajuste pelo usuário.

solução!

De fato, fazer resize (ou qualquer outra operação de maipulação) toda hora num Bitmap acaba prejudicando a performance da app. No caso da nossa app, sempre utilizamos a imagem num tamanho pequeno, então poderíamos trabalhar sempre com o thumbnail da foto, em vez da imagem com 2MB.

Uma ideia seria salvar no caminho da foto o arquivo Bitmap já reduzido. Dessa forma, não precisaríamos fazer o resize. O problema é que a câmera não possui uma opção de definir programaticamente as dimensões da imagem a ser salva; desse modo, a solução seria gerar o Bitmap reduzido e passá-lo para um arquivo na URL que geramos.