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

Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxMarcosLemes28
 
Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Centro Jacques Delors
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfAutonoma
 
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdfMESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024azulassessoria9
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do séculoBiblioteca UCS
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...azulassessoria9
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...marcelafinkler
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptxJssicaCassiano2
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfLidianeLill2
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024azulassessoria9
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...marcelafinkler
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubeladrianaguedesbatista
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024azulassessoria9
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxMarcosLemes28
 
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...azulassessoria9
 
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...azulassessoria9
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticash5kpmr7w7
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022LeandroSilva126216
 

Último (20)

Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)
 
Novena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João EudesNovena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João Eudes
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdfMESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
 
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022
 

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