SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
Capítulo 07: Câmera e Arquivos
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
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
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
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
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
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.Sc. Márcio Palheta

8/41
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
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
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
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
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 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
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
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
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
Exercício 04: Click da Imagem
●

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

M.Sc. Márcio Palheta

20/41
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
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
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
Exercício 04: Click da Imagem
●

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

M.Sc. Márcio Palheta

24/41
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
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
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
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
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
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
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
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
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
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 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
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
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
Capítulo 07: Câmera e Arquivos

Mais conteúdo relacionado

Mais procurados (7)

Capítulo 10 - Sincronização de dados usando JSON
Capítulo 10 - Sincronização de dados usando JSONCapítulo 10 - Sincronização de dados usando JSON
Capítulo 10 - Sincronização de dados usando JSON
 
Apostila php avancado
Apostila php avancadoApostila php avancado
Apostila php avancado
 
Webquest adição e subtracção de fracções, elvira ferreira
Webquest adição e subtracção de fracções, elvira ferreiraWebquest adição e subtracção de fracções, elvira ferreira
Webquest adição e subtracção de fracções, elvira ferreira
 
Tutorial Java: Polimorfismo
Tutorial Java: PolimorfismoTutorial Java: Polimorfismo
Tutorial Java: Polimorfismo
 
Tutorial Java: Interface
Tutorial Java: InterfaceTutorial Java: Interface
Tutorial Java: Interface
 
Tutorial java orientação a objetos parte 1
Tutorial java orientação a objetos parte 1Tutorial java orientação a objetos parte 1
Tutorial java orientação a objetos parte 1
 
Ajuda - plugin monitor de desempenho
Ajuda - plugin monitor de desempenhoAjuda - plugin monitor de desempenho
Ajuda - plugin monitor de desempenho
 

Mais de Marcio Palheta

Palestra ministrada na Feira Norte do Estudante 2012
Palestra ministrada na Feira Norte do Estudante 2012Palestra ministrada na Feira Norte do Estudante 2012
Palestra ministrada na Feira Norte do Estudante 2012
Marcio Palheta
 

Mais de Marcio Palheta (7)

Capítulo 09 - Serviços em Background
Capítulo 09 - Serviços em BackgroundCapítulo 09 - Serviços em Background
Capítulo 09 - Serviços em Background
 
Capítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldCapítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorld
 
Implementação de Sockets em JAVA
Implementação de Sockets em JAVAImplementação de Sockets em JAVA
Implementação de Sockets em JAVA
 
Trabalhando com Threads em JAVA
Trabalhando com Threads em JAVATrabalhando com Threads em JAVA
Trabalhando com Threads em JAVA
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao Python
 
Weka em aplicações java
Weka em aplicações javaWeka em aplicações java
Weka em aplicações java
 
Palestra ministrada na Feira Norte do Estudante 2012
Palestra ministrada na Feira Norte do Estudante 2012Palestra ministrada na Feira Norte do Estudante 2012
Palestra ministrada na Feira Norte do Estudante 2012
 

Último

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
azulassessoria9
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
edelon1
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptx
LusGlissonGud
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
WagnerCamposCEA
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
azulassessoria9
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 

Último (20)

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptx
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 

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

  • 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. 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. 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. 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. 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. Exercício 01: Carregar jpeg com a foto ● Crie o método FormularioHelper.carregarFoto() M.Sc. Márcio Palheta 7/41
  • 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. 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. 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. 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. 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. Exercício 02: Altere o FormularioHelper M.Sc. Márcio Palheta 13/41
  • 14. Exercício 02: Altere o FormularioHelper Carregar a foto do Aluno M.Sc. Márcio Palheta 14/41
  • 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. 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. 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. 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. 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. Exercício 04: Click da Imagem ● No método FormularioActivity.onCreate(), implemente o click da foto: M.Sc. Márcio Palheta 20/41
  • 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. 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. 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. Exercício 04: Click da Imagem ● No método FormularioActivity.onCreate(), implemente o click da foto: M.Sc. Márcio Palheta 24/41
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. Teste das atualizações Click na ImageView M.Sc. Márcio Palheta 34/41
  • 35. Teste das atualizações Capture a imagem M.Sc. Márcio Palheta 35/41
  • 36. Teste das atualizações Salve a imagem M.Sc. Márcio Palheta 36/41
  • 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. 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. 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. Capítulo 07: Câmera e Arquivos