Câmera

Utilizando o Intent para Captura de Imagens

A maneira mais simples de se capturar imagens e vídeos em aplicações Android é a utilização da aplicação padrão do Android para essas funcionalidades. A aplicação padrão está configurada para receber Intents de tipos conhecidos, os mesmos que veremos agora.

O primeiro passo que devemos atentar é a utilização da propriedade MediaStore.EXTRA_OUTPUT, que pode ou não ser passada à aplicação de câmera do Android. Caso seja configurada, essa propriedade especifica ao Android o nome do arquivo a ser gerado, bem como o local em que ele deve ser salvo. Quando não utilizada, a ausência dessa propriedade indica ao Android para salvar a imagem com o nome padrão no local padrão. Assim, perde-se um pouco do controle sobre o que o Android fará com a imagem obtida. Apesar de opcional, é sempre bom configurar essa propriedade. Vejamos agora na Listagem 4 o código necessário para tirarmos uma foto dentro de nossa aplicação.

Listagem 4 - Capturando uma imagem e salvando a um local conhecido

Vamos analisar o código apresentado. Primeiramente, criamos um Intent passando como ação a constante MediaStore.ACTION_IMAGE_CAPTURE. Com esse Intent, podemos requisitar ao Android o serviço de câmera dele para capturar imagens. Uma vez que temos o Intent, o próximo passo é definir onde o arquivo será salvo.

Para definir isso, solicitamos ao sistema uma pasta dentro de seu diretório publico de imagens com o nome que quisermos. Em seguida, se essa pasta não existir, nós a criamos. Com isso, já temos o local onde a imagem será salva. Precisamos agora do nome que o arquivo terá. Para isso, pegamos o caminho indicado pela pasta selecionada e adicionamos a ele o código IMG_, o timeStamp da data em que a foto foi tirada e a extensão .jpg. Na sequência, criamos um URI a partir do arquivo declarado e adicionamos esse URI ao Intent já criado como a propriedade EXTRA_OUTPUT que vimos anteriormente. Com isso, o Intent está pronto para ser enviado e aí o enviamos por um resultado. Adiante, na seção "Tratando o resultado do Intent", veremos como tratar o resultado gerado pela Activity da câmera.

Após executar o código exibido na Listagem 4, a sua aplicação lançará a Activity de câmera do Android e ela será responsável por tratar tudo relacionado a câmera, como zoom, ajustes no contraste, flash, caso disponível, entre outras coisas. Uma vez que o usuário tenha tirado a foto e escolhido armazená-la, a Activity da câmera retornará para a Activity que a chamou e o resultado deverá ser tratado no método onActivityResult. Antes de vermos como lidar com esse velho conhecido, vamos ver as mudanças necessárias para capturar vídeo no lugar de fotos.

Versão 5.3 - Todos os Direitos reservados