Camera no Android Exemplo

Eu quero escrever uma atividade que:

Mostra a visualização da câmera (visor) e possui um botão "capturar" Quando o botão "capturar" é pressionado, tira uma foto e a retorna para a atividade de chamada (setResult () & finish ()).

Há algunscomplet exemplos por aí que funcionam emevery device? Um link para um aplicativo de código aberto simples que tira fotos seria a resposta idea

Minha pesquisa até agora:

Este é um cenário comum, e há muitas perguntas e tutoriais sobre iss

Existem duas abordagens principais:

Use o evento android.provider.MediaStore.ACTION_IMAGE_CAPTURE. Vejoessa questãUtilize a API da câmera diretamente. Vejoeste exemplo ouesta questão (com muitas referências).

@ Approach 1 teria sido perfeita, mas o problema é que a intenção é implementada de maneira diferente em cada dispositivo. Em alguns dispositivos, ele funciona bem. No entanto, em alguns dispositivos, você pode tirar uma foto, mas ela nunca é retornada ao seu aplicativo. Em alguns dispositivos, nada acontece quando você inicia a intençã Normalmente, também salva a imagem no cartão SD e exige a presença do cartão SD. A interação do usuário também é diferente em todos os dispositivos.

om a abordagem 2, o problema é a estabilidade. Tentei alguns exemplos, mas consegui parar a câmera de funcionar (até a reinicialização) em alguns dispositivos e congelar completamente outro dispositivo. Em outro dispositivo, a captura funcionou, mas a visualização ficou preta.

Eu usaria o ZXing como um exemplo de aplicativo (eu trabalho muito com ele), mas ele usa apenas a visualização (visor) e não tira fotos. Também descobri que em alguns dispositivos, o ZXing não ajustava automaticamente o balanço de branco quando as condições de iluminação mudavam, enquanto o aplicativo da câmera nativa fazia isso corretamente (não tenho certeza se isso pode ser corrigido

Atualizar

or um tempo, usei a API da câmera diretamente. Isso dá mais controle (interface do usuário personalizada, etc.), mas eu não recomendaria a ninguém. Eu trabalhava em 90% dos dispositivos, mas de vez em quando um novo dispositivo era lançado, com um problema diferent

Alguns dos problemas que encontrei:

Handling autofocusHandling flashApoiar dispositivos com uma câmera frontal, traseira ou ambas Cada dispositivo possui uma combinação diferente de resolução de tela, resolução de visualização (nem sempre corresponde à resolução da tela) e resolução de image

Então, em geral, eu não recomendaria seguir essa rota, a menos que não haja outra maneira. Depois de dois anos, pesquisei por código personalizado e retornei à abordagem baseada em Intent. Desde então, tive muito menos problemas. Os problemas que tive com a abordagem baseada em intenções no passado provavelmente eram apenas minha própria incompetênci

Se vocêsrealment preciso seguir esse caminho, ouvi dizer que é muito mais fácil se você só suportar dispositivos com Android 4.0 +.

questionAnswers(3)

yourAnswerToTheQuestion