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

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 JSONMarcio Palheta
 
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 ferreiraJoao Ferreira
 
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 1Elaine Cecília Gatto
 
Ajuda - plugin monitor de desempenho
Ajuda - plugin monitor de desempenhoAjuda - plugin monitor de desempenho
Ajuda - plugin monitor de desempenhoOziel Antunes
 

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

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 BackgroundMarcio Palheta
 
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 HelloWorldMarcio Palheta
 
Implementação de Sockets em JAVA
Implementação de Sockets em JAVAImplementação de Sockets em JAVA
Implementação de Sockets em JAVAMarcio Palheta
 
Trabalhando com Threads em JAVA
Trabalhando com Threads em JAVATrabalhando com Threads em JAVA
Trabalhando com Threads em JAVAMarcio Palheta
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao PythonMarcio Palheta
 
Weka em aplicações java
Weka em aplicações javaWeka em aplicações java
Weka em aplicações javaMarcio 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 2012Marcio 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

A galinha ruiva sequencia didatica 3 ano
A  galinha ruiva sequencia didatica 3 anoA  galinha ruiva sequencia didatica 3 ano
A galinha ruiva sequencia didatica 3 anoandrealeitetorres
 
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxLuizHenriquedeAlmeid6
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
VALORES HUMANOS NA DISCIPLINA DE ENSINO RELIGIOSO
VALORES HUMANOS NA DISCIPLINA DE ENSINO RELIGIOSOVALORES HUMANOS NA DISCIPLINA DE ENSINO RELIGIOSO
VALORES HUMANOS NA DISCIPLINA DE ENSINO RELIGIOSOBiatrizGomes1
 
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOInvestimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOMarcosViniciusLemesL
 
Bingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosBingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosAntnyoAllysson
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxBiancaNogueira42
 
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 anoAdelmaTorres2
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfO Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfPastor Robson Colaço
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfaulasgege
 
Atividade com a letra da música Meu Abrigo
Atividade com a letra da música Meu AbrigoAtividade com a letra da música Meu Abrigo
Atividade com a letra da música Meu AbrigoMary Alvarenga
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
Guia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfGuia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfEyshilaKelly1
 
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptxSlides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptxLuizHenriquedeAlmeid6
 
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdfcartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdfIedaGoethe
 
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASQUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASEdinardo Aguiar
 

Último (20)

A galinha ruiva sequencia didatica 3 ano
A  galinha ruiva sequencia didatica 3 anoA  galinha ruiva sequencia didatica 3 ano
A galinha ruiva sequencia didatica 3 ano
 
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
VALORES HUMANOS NA DISCIPLINA DE ENSINO RELIGIOSO
VALORES HUMANOS NA DISCIPLINA DE ENSINO RELIGIOSOVALORES HUMANOS NA DISCIPLINA DE ENSINO RELIGIOSO
VALORES HUMANOS NA DISCIPLINA DE ENSINO RELIGIOSO
 
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOInvestimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
 
Bingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosBingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteiros
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
 
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
 
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfO Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdf
 
Atividade com a letra da música Meu Abrigo
Atividade com a letra da música Meu AbrigoAtividade com a letra da música Meu Abrigo
Atividade com a letra da música Meu Abrigo
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
Guia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfGuia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdf
 
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptxSlides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
 
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdfcartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
 
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASQUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
 

Cap07 Câmera Arquivos

  • 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