Capítulo 07: Câmera e Arquivos
Instrutor
●

Programador desde 2000

●

Aluno de doutorado

●

●

●

●

Mestre em informática pelo
ICOMP/UFAM
Especialista...
Agenda
●

Arquivos

●

Usar Intent implícita da Câmera do Device

●

Passagem de parâmetros para a Câmera

●

Captura de i...
Agora queremos completar o cadastro
●

●

●

●

Para completar o cadastro do aluno, queremos usar a
câmera do device para ...
Android e o sistema de Arquivos
●

No Android, temos as classes tradicionais de arquivos:
–

●

FileInputStream e FileOutp...
Câmera
●

●

●

O android nos oferece duas formas de manipular câmera,
assim como ocorreu com a Chamada Telefônica
Na 1a, ...
Exercício 01: Carregar jpeg com a foto
●

Crie o método FormularioHelper.carregarFoto()

M.Sc. Márcio Palheta

7/41
Exercício 01: Carregar jpeg com a foto
Crie o método
carregarFoto()

●

Crie o método FormularioHelper.carregarFoto()

M.S...
Exercício 01: Carregar jpeg com a foto
●

Converte um
Arquivo em um
Crie oJAVA
Objeto método

Crie o método
carregarFoto()...
Exercício 01: Carregar jpeg com a foto
●

Converte um
Arquivo em um
Crie oJAVA
Objeto método

Crie o método
carregarFoto()...
Exercício 01: Carregar jpeg com a foto
●

Converte um
Arquivo em um
Crie oJAVA
Objeto método

Crie o método
carregarFoto()...
Exercício 01: Carregar jpeg com a foto
●

Converte um
Arquivo em um
Crie oJAVA
Objeto método

Crie o método
carregarFoto()...
Exercício 02: Altere o FormularioHelper

M.Sc. Márcio Palheta

13/41
Exercício 02: Altere o FormularioHelper

Carregar a foto
do Aluno

M.Sc. Márcio Palheta

14/41
Exercício 02: Altere o FormularioHelper

Carregar a foto
do Aluno

Crie o método
getFoto()
M.Sc. Márcio Palheta

15/41
Hora de chamar a câmera
●

Para acessar a câmera, vamos seguir a estratégia de
chamar uma Intent implícita, especialista e...
Hora de chamar a câmera (continuação)
●

O retorno do método startActivityForResult()
vem no callback method onActivityRes...
Exercício 03: Mudanças no Formulário
●

Na classe FormularioActivity, inclua novos atributos para
lidar com a câmera:

M.S...
Exercício 03: Mudanças no Formulário
●

Na classe FormularioActivity, inclua novos atributos para
lidar com a câmera:

M.S...
Exercício 04: Click da Imagem
●

No método FormularioActivity.onCreate(), implemente o
click da foto:

M.Sc. Márcio Palhet...
Exercício 04: Click da Imagem
●

No método FormularioActivity.onCreate(), implemente o
click da foto:

Controle do click
d...
Exercício 04: Click da Imagem
●

No método FormularioActivity.onCreate(), implemente o
click da foto:

Controle do click
d...
Exercício 04: Click da Imagem
●

No método FormularioActivity.onCreate(), implemente o
click da foto:

Controle do click
d...
Exercício 04: Click da Imagem
●

No método FormularioActivity.onCreate(), implemente o
click da foto:

M.Sc. Márcio Palhet...
Exercício 04: Click da Imagem
●

No método FormularioActivity.onCreate(), implemente o
click da foto:
Local em que a Foto
...
Exercício 04: Click da Imagem
●

No método FormularioActivity.onCreate(), implemente o
click da foto:
Local em que a Foto
...
Exercício 04: Click da Imagem
●

No método FormularioActivity.onCreate(), implemente o
click da foto:
Local em que a Foto
...
Exercício 04: Click da Imagem
●

No método FormularioActivity.onCreate(), implemente o
click da foto:

Chamando a
Câmera

...
Exercício 04: Click da Imagem
●

No método FormularioActivity.onCreate(), implemente o
click da foto:

Parâmetro: local de...
Exercício 04: Click da Imagem
●

No método FormularioActivity.onCreate(), implemente o
click da foto:

Inicia a Activity d...
Exercício 04: Click da Imagem
●

No método FormularioActivity.onCreate(), implemente o
click da foto:

Inicia a Activity d...
Exercício 05: Verificação do resultado
●

Na ForumlarioActivity, crie o método onActivityResult(),
para verificar o result...
Exercício 05: Verificação do resultado
●

Na ForumlarioActivity, crie o método onActivityResult(),
para verificar o result...
Teste das atualizações
Click na
ImageView

M.Sc. Márcio Palheta

34/41
Teste das atualizações

Capture a
imagem

M.Sc. Márcio Palheta

35/41
Teste das atualizações

Salve a
imagem

M.Sc. Márcio Palheta

36/41
Teste das atualizações
Imagem
Atualizada

M.Sc. Márcio Palheta

37/41
Desafio
●

Quando cadastramos um aluno, o formulário está vazio;

●

Se você clicar na foto, a câmera é chamada;

●

A fot...
O que vem a seguir?
●

LayoutInflater

●

Serviços de background: Receber SMS e Tocar MP3

●

Integração via JSON

●

Tare...
Referências
●

www.caelum.com.br

●

d.android.com

●

●

LECHETA, Ricardo. Google Android, 3a edição,
Novatec, São Paulo,...
Capítulo 07: Câmera e Arquivos
Upcoming SlideShare
Loading in...5
×

Capítulo 07 - Acesso a câmera e arquivos armazenados no device

2,263

Published on

Neste capítulo discutimos o acesso a arquivos armazenados no device e utilização da câmera do celular. Itens discutidos:
1. Carregar imagens armazenadas no device com Bitmap, BitmapFactory, decodeFile e createScaleBitMap.
2. Chamada à camêra usando uma Intent implícita;
3. Iniciar uma Intent e aguardar o seu resultado;
4. Método startActivityForResult()

Published in: Education

Capítulo 07 - Acesso a câmera e arquivos armazenados no device

  1. 1. Capítulo 07: Câmera e Arquivos
  2. 2. Instrutor ● Programador desde 2000 ● Aluno de doutorado ● ● ● ● Mestre em informática pelo ICOMP/UFAM Especialista em aplicações WEB – FUCAPI marcio.palheta@gmail.com sites.google.com/site/marcio palheta M.Sc. Márcio Palheta
  3. 3. Agenda ● Arquivos ● Usar Intent implícita da Câmera do Device ● Passagem de parâmetros para a Câmera ● Captura de imagens da câmera ● Recuperar resultados de uma Activity ● Carregar imagens de arquivos salvos no device ● A imagem é perdida quando giramos a tela. E agora? M.Sc. Márcio Palheta 3/41
  4. 4. Agora queremos completar o cadastro ● ● ● ● Para completar o cadastro do aluno, queremos usar a câmera do device para capturar sua foto; O arquivo .jpeg da foto ficará armazenado no device No SQLite, guardaremos apenas o caminho para o arquivo físico Na hora de carregar a foto, pegamos o caminho armazenado no SQLite, acessamos o device e carregamos a imagem na tela. M.Sc. Márcio Palheta 4/41
  5. 5. Android e o sistema de Arquivos ● No Android, temos as classes tradicionais de arquivos: – ● FileInputStream e FileOutputStream; A Activity tem métodos para gerar esses objetos: – FileInputStream stream = openFileInput("arquivo.txt"); ● E se você precisar trabalhar com memória externa? ● File diretorio = Enviroment.getExternalStorageDirectory() ● Devolve um diretório externo, provavelmente, um sdcard M.Sc. Márcio Palheta 5/41
  6. 6. Câmera ● ● ● O android nos oferece duas formas de manipular câmera, assim como ocorreu com a Chamada Telefônica Na 1a, podemos usar e controlar todo o ciclo de vida e opções do uso da câmera, como, por exemplo, habilitar flash e controlar a entrada de luz Na 2a, podemos chamar uma Activity especialista no tratamento da câmera. Essa Activity recebe como parâmetro, o local para salvar a foto capturada. ● Bom, acho uma boa optarmos pela 2a alternativa. ● E vamos aos códigos... M.Sc. Márcio Palheta 6/41
  7. 7. Exercício 01: Carregar jpeg com a foto ● Crie o método FormularioHelper.carregarFoto() M.Sc. Márcio Palheta 7/41
  8. 8. Exercício 01: Carregar jpeg com a foto Crie o método carregarFoto() ● Crie o método FormularioHelper.carregarFoto() M.Sc. Márcio Palheta 8/41
  9. 9. Exercício 01: Carregar jpeg com a foto ● Converte um Arquivo em um Crie oJAVA Objeto método Crie o método carregarFoto() FormularioHelper.carregarFoto() M.Sc. Márcio Palheta 9/41
  10. 10. Exercício 01: Carregar jpeg com a foto ● Converte um Arquivo em um Crie oJAVA Objeto método Crie o método carregarFoto() FormularioHelper.carregarFoto() Definição de uma Imagem reduzida M.Sc. Márcio Palheta 10/41
  11. 11. Exercício 01: Carregar jpeg com a foto ● Converte um Arquivo em um Crie oJAVA Objeto método Crie o método carregarFoto() FormularioHelper.carregarFoto() Definição de uma Imagem reduzida Atualiza o atributo foto do Aluno M.Sc. Márcio Palheta 11/41
  12. 12. Exercício 01: Carregar jpeg com a foto ● Converte um Arquivo em um Crie oJAVA Objeto método Crie o método carregarFoto() FormularioHelper.carregarFoto() Definição de uma Imagem reduzida Atualiza o atributo foto do Aluno Atualiza a imagem na Tela M.Sc. Márcio Palheta 12/41
  13. 13. Exercício 02: Altere o FormularioHelper M.Sc. Márcio Palheta 13/41
  14. 14. Exercício 02: Altere o FormularioHelper Carregar a foto do Aluno M.Sc. Márcio Palheta 14/41
  15. 15. Exercício 02: Altere o FormularioHelper Carregar a foto do Aluno Crie o método getFoto() M.Sc. Márcio Palheta 15/41
  16. 16. Hora de chamar a câmera ● Para acessar a câmera, vamos seguir a estratégia de chamar uma Intent implícita, especialista em câmera: Intent irParaCamera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); ● Podemos informar o local para salvar a foto: irParaCamera.putExtra(MediaStore.EXTRA_OUTPUT, localFoto); ● ● E esperar o retorno, com nome do arquivo gerado. Para isso, informamos um código para a requisição (requestCode), comumente associado a uma constante: startActivityForResult(irParaCamera, FAZER_FOTO); M.Sc. Márcio Palheta 16/41
  17. 17. Hora de chamar a câmera (continuação) ● O retorno do método startActivityForResult() vem no callback method onActivityResult() @Override protected void onActivityResult( int requestCode, int resultCode, Intent data) { … } ● O requestCode == FAZER_FOTO ● Já o resultCode pode ser: – RESULT_OK: ocorreu tudo bem. :-) – RESULT_CANCELED: em caso de problemas ou cancelamento :-( M.Sc. Márcio Palheta 17/41
  18. 18. Exercício 03: Mudanças no Formulário ● Na classe FormularioActivity, inclua novos atributos para lidar com a câmera: M.Sc. Márcio Palheta 18/41
  19. 19. Exercício 03: Mudanças no Formulário ● Na classe FormularioActivity, inclua novos atributos para lidar com a câmera: M.Sc. Márcio Palheta 19/41
  20. 20. Exercício 04: Click da Imagem ● No método FormularioActivity.onCreate(), implemente o click da foto: M.Sc. Márcio Palheta 20/41
  21. 21. Exercício 04: Click da Imagem ● No método FormularioActivity.onCreate(), implemente o click da foto: Controle do click da Foto do Aluno M.Sc. Márcio Palheta 21/41
  22. 22. Exercício 04: Click da Imagem ● No método FormularioActivity.onCreate(), implemente o click da foto: Controle do click da Foto do Aluno Devolve o ImageView da foto M.Sc. Márcio Palheta 22/41
  23. 23. Exercício 04: Click da Imagem ● No método FormularioActivity.onCreate(), implemente o click da foto: Controle do click da Foto do Aluno Devolve o ImageView da foto M.Sc. Márcio Palheta 23/41
  24. 24. Exercício 04: Click da Imagem ● No método FormularioActivity.onCreate(), implemente o click da foto: M.Sc. Márcio Palheta 24/41
  25. 25. Exercício 04: Click da Imagem ● No método FormularioActivity.onCreate(), implemente o click da foto: Local em que a Foto será armazenada M.Sc. Márcio Palheta 25/41
  26. 26. Exercício 04: Click da Imagem ● No método FormularioActivity.onCreate(), implemente o click da foto: Local em que a Foto será armazenada Referência para o Local de armazenamento M.Sc. Márcio Palheta 26/41
  27. 27. Exercício 04: Click da Imagem ● No método FormularioActivity.onCreate(), implemente o click da foto: Local em que a Foto será armazenada Referência para o Local de armazenamento Intent Implícita para uso da câmera M.Sc. Márcio Palheta 27/41
  28. 28. Exercício 04: Click da Imagem ● No método FormularioActivity.onCreate(), implemente o click da foto: Chamando a Câmera M.Sc. Márcio Palheta 28/41
  29. 29. Exercício 04: Click da Imagem ● No método FormularioActivity.onCreate(), implemente o click da foto: Parâmetro: local de armazenamento Chamando a Câmera M.Sc. Márcio Palheta 29/41
  30. 30. Exercício 04: Click da Imagem ● No método FormularioActivity.onCreate(), implemente o click da foto: Inicia a Activity da Câmera. A resposta é lançada no método de Callback onActivityResult() Parâmetro: local de armazenamento Chamando a Câmera M.Sc. Márcio Palheta 30/41
  31. 31. Exercício 04: Click da Imagem ● No método FormularioActivity.onCreate(), implemente o click da foto: Inicia a Activity da Câmera. A resposta é lançada no método de Callback onActivityResult() Parâmetro: local de armazenamento Código da requisição M.Sc. Márcio Palheta (requestCode) Chamando a Câmera 31/41
  32. 32. Exercício 05: Verificação do resultado ● Na ForumlarioActivity, crie o método onActivityResult(), para verificar o resultado retornado pela Intent da Câmera: M.Sc. Márcio Palheta 32/41
  33. 33. Exercício 05: Verificação do resultado ● Na ForumlarioActivity, crie o método onActivityResult(), para verificar o resultado retornado pela Intent da Câmera: Tratamento da resposta da Intent da câmera M.Sc. Márcio Palheta 33/41
  34. 34. Teste das atualizações Click na ImageView M.Sc. Márcio Palheta 34/41
  35. 35. Teste das atualizações Capture a imagem M.Sc. Márcio Palheta 35/41
  36. 36. Teste das atualizações Salve a imagem M.Sc. Márcio Palheta 36/41
  37. 37. Teste das atualizações Imagem Atualizada M.Sc. Márcio Palheta 37/41
  38. 38. Desafio ● Quando cadastramos um aluno, o formulário está vazio; ● Se você clicar na foto, a câmera é chamada; ● A foto é salva no device; ● E exibida na tela de formulário; ● Porém, se girarmos a tela, o que acontece? ● Isso mesmo, a foto é perdida. ● Resolva esse problema, recorrente em Android Apps ● Ideia fantástica: acho que você pode usar o Bundle. ● Só acho :-) M.Sc. Márcio Palheta 38/41
  39. 39. O que vem a seguir? ● LayoutInflater ● Serviços de background: Receber SMS e Tocar MP3 ● Integração via JSON ● Tarefas assíncronas e Barra de progresso ● Fragments ● Google Maps e GPS M.Sc. Márcio Palheta 39/41
  40. 40. Referências ● www.caelum.com.br ● d.android.com ● ● LECHETA, Ricardo. Google Android, 3a edição, Novatec, São Paulo, 2013 Código fonte completo: https://github.com/marciopalheta/cursosandroid M.Sc. Márcio Palheta 40/41
  41. 41. Capítulo 07: Câmera e Arquivos
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×