Como criar um aplicativo Android com câmera (Android 6+)

google-camera-interface-nexus-6p-android-n-840x473

Atualizado em 19/07/17 com suporte a Android 6+

No post de hoje vou ensinar como criar um app Android onde você pode “invocar” o recurso de câmera do smartphone e depois ter acesso à foto retirada para fazer o que quiser com ela. Tenho certeza que lhe pode ser útil para algum projeto que esteja fazendo ou que vá fazer um dia.

Se você nunca fez um app antes, sugiro dar uma olhada primeiro neste tutorial que cobre todo o básico!

Há alguns anos atrás eu desenvolvi um app para uma campanha publicitária da LG, para o lançamento de um novo modelo de smartphone, acho que era o L2 ou algo assim. Esse app se chamava “Bem na Foto” e foi solicitado pela LG para ser usado nos pontos de venda visando mostrar como a câmera desse aparelho novo era boa. Ele era bem simples: o usuário abria o app, tirava uma foto, escolhia uma moldura para colocar a foto dentro e publicava nas redes sociais. Mesmo simples, me rendeu bastante dinheiro para um projeto que levei poucos dias para deixar 100%.

Vamos ver nesse post:

A tela inicial

Na tela inicial não teremos nada de especial, exceto um botão para tirar uma nova foto, sendo assim, quando você for criar seu projeto, escolha o template Basic Activity (o mesmo que usamos neste tutorial de CRUD) que já vem com um FloatingActionButton e apenas adicione uma ImageView que exibirá a foto tirada, dentro do content_main.xml:

Note que eu não escrevi todos esses código aí em cima, apenas arrastei o ImageView pro layout e usei o recurso Infer Constraints do ContraintLayout. Já no activity_main.xml, apenas mude o ícone do FloatingActionButton para ser uma câmera ao invés do envelope tradicional, como fiz no código abaixo:

O seu layout deve se parecer com esse (a ImageView está transparente pois não tiramos foto ainda):

Layout do app
Layout do app

Na classe Java que vai responder por esta tela, chamada de MainActivity, existe um código pronto para o clique do FloatingActionButton, que por padrão apenas exibe uma SnackBar, mude-o para que chame o método correto, conforme abaixo:

Note que neste código chamamos um método getPermissions(); que ainda não existe e que teremos de criar no próximo passo.

Configurando permissões

Neste tutorial usaremos os recursos de câmera e de armazenamento do smartphone, logo, precisamos que o Android nos forneça tais permissões. Além disso, precisamos exigir que este app somente possa ser instalado em dispositivos com câmera. O trecho de código abaixo deve ser colocado no arquivo AndroidManifest.xml, logo acima da tag application:

Até a versão 5 do Android isso é o suficiente para garantir que teremos as permissões necessárias. No entanto, a partir da versão 6 o controle de permissões mudou e agora devemos também solicitar via código, no momento em que vamos usar o recurso em questão.

Para tanto, vamos criar o método getPermissions() como abaixo (bem parecido com o que usamos no tutorial de app com GPS) e o método onRequestPermissionsResult() que será disparado automaticamente quando o usuário tiver interagido com o dialog de sistema que pedirá a permissão para ele:

Após o usuário fornecer ou não permissão ao aplicativo, ele irá disparar o evento onRequestPermissionsResult, também exibido no código anterior, que dispara o método dispatchTakePictureIntent() se tiver as permissões de uso da câmera e do SD ou um alerta, caso contrário. Da mesma forma, em usos futuros do app, já com a permissão concedida, esse passo não acontece mais, como mostrado no else do método getPermissions().

Note que este método dispatchTakePictureIntent() não existe ainda, criaremos no próximo passo.

Curso React Native

Chamando a câmera

Para invocar a câmera do dispositivo nós temos que criar um método com a intenção de usar a câmera que, quando a foto for tirada, irá retornar à activity de origem, salvar a foto e exibir a mesma.

Ufa, é um trabalho e tanto!

Temos dois métodos no exemplo de código acima, o dispatchTakePictureIntent que inicializa a câmera, e salva a foto tirada no cartão SD e o evento onActivityResult que é disparado automaticamente quando a foto termina de ser tirada para exibi-la no ImageView.

Quando for mandar rodar no simulador, lembre-se de se certificar se ele possui hardware de câmera na tela de configurações dele (caso não possua, edite-o). Na imagem abaixo você confere a foto tirada, usando o modo “emulated” de câmera no simulador do Android.

Foto tirada
Foto tirada

Na sequência você pode colocar botões nessa tela para editar a imagem, por exemplo, ou para exclui-la. Com alguns códigos Java você pode publicá-la em redes sociais ou mesmo envia-la por email.

Mas isso fica para a sua criatividade ou para posts futuros, não é mesmo?! 😉

* OBS: curtiu o post? Então dá uma olhada no meu livro de Android clicando no banner abaixo pra aprender a criar outros tantos apps incríveis!

Criando apps para empresas com Android

Publicado por

Luiz Duarte

Pós-graduado em computação, professor, empreendedor, autor, Agile Coach e programador nas horas vagas.