SlideShare a Scribd company logo
1 of 27
@eloijr
www.facebook.com/eloijr
Eloi Jr
● Iniciou na área mobile em 2002
● Palestrou em diversos eventos de TI
● Escreveu artigos técnicos
● Desenvolvedor mobile desde o Java ME
● Projetos em Windows Phone e Android
● Empreendedor no Maranhão!?!??
Imperatriz-MA
Imperatriz-MA
● Segundo maior centro político, cultural e
populacional do Maranhão: +400hab
● Beira-rio Tocantins: 33º às 20:00
● Comércio varejista e atacadista e algumas
indústrias (Suzano Papel e Celulose)
● Cerca de 600km de Belém, São Luís, Palmas e
Teresina
● Rio Tocantins: segundo maior rio brasileiro em
águas brasileiras
YourHeroes
● App Android desenvolvido como projeto final do
curso Udacity/Google “Developing Android
Apps”
● Iniciativa de apoio aos GDG
● Diversos conceitos importantes: Definição de
interfaces, SQLite, Providers, Loaders,
SyncAdapters, IntentServices e etc.
● API escolhida: Marvel!
Serviços RESTful
● Serviço web que utiliza paradigma
arquitetônico REST (Representational State
Transfer)
● Exposição e troca de informações usando URIs
● Leve
● Transmissão de dados via HTTP
● APIs RESTful: Google Maps, infor. sobre
temperatura, trânsito, Nasa, governo, DPRF,
ESPN, API Marvel
JSON
● JavaScript Object Notation
● Formato leve de troca de dados
{
"id": 1009664,
"name": "Thor",
"description": "As the Norse God...",
"modified": "2013-10-24T14:24:12-0400",
"thumbnail": {
"path": "http://...",
"extension": "jpg"
}
}
Marvel Comics API
● Serviço RESTful com JSON
● Acesso a dados de mais 70 anos de
quadrinhos Marvel
● Personagens, quadrinhos, séries, eventos,
estórias e criadores!
● Imagens em diferentes resoluções e tamanhos
● Documentação
● Ferramenta online para testar chamadas à API
Marvel Comics API
● Necessário obter uma chave pública e privada
● Limite de 3000 req./dia
● Link p/ site Marvel;
● Data provided by Marvel. © 2014 Marvel
● Não é permitido cache indefinido! Sugestão: 24
horas
● developer.marvel.com
Marvel Comics API: Imagens
● PORTRAIT, STANDARD, LANDSCAPE
● SMALL, MEDIUM, XLARGE, FANTASTIC,
UNCANNY, AMAZING e INCREDIBLE
● DETAIL
● FULL_SIZE
YourHeroes - Tópicos
● Interface de usuário p/ tablets e smartphones
● Persistência
● Loader
● Content Providers (Contract e Provider)
● IntentService
● JSON parsing
● CursorAdapter
● Carregamento de Imagens em uma Thread
Interface Usuário
tablets/smartphones
● Fragments!
● layout-sw600dp e values-sw600dp
● Values-v14 (Android 4.0 – Ice Cream Sandw.)
● Pasta drawable
● footer.xml
Fragment
● Parte da Interface de Usuário de uma Activity
● Interface dinâmica e multi-pane
● Comportamento e visualização
Suporte a Diferentes Telas
● Smallest-width Qualifier: sw600dp, sw720dp
● Configurações de acordo com API: v11 (3.0),
v14 (4.0)
● Uso da pasta drawable
Por que Persistir Dados?
● Resposta Rápida Para o Usuário
● Redução de Consumo de Bateria
● Instabilidades Eventuais na Rede de Dados
● Locais Sem Serviço de Dados
● Shared Preferences ou SQLite?
Persistência
● SQLite
● Serializable
● Classe Contract
● SQLiteOpenHelper
Content Provider
● Acesso Universal a Dados a partir de URI
● Retorna uma Lista ou Apenas um Item
● Compartilhamento de Dados
● Acesso a Dados Nativos: Calendário, SMS,
Contatos e etc.
Content Provider
Visualizar os contatos:
Uri u =
Uri.parse(“content://com.android.contacts/contacs/” );
Intent it = new Intent(Intent.ACTION_PICK, u);
startActivity(it);
Loader
● Leitura assíncrona de dados
● Monitora os Dados Utilizando AsyncTask
● Atualiza a UI em Caso de Mudança
● Permite Acesso a Thread de UI
● Reconecta o Cursor Automaticamente em
Mudanças de Configurações
● CursorLoader utiliza Contents Provider!
CursorAdapter
● Método de Alta Performance Para Apresentar
Dados do SQLite em Listas
● Permite Mapear as Colunas Direto a Partir do
Banco de Dados SQLite
IntentService
● Utilizado em Tarefas Longas
● Roda em uma Thread Separada
● Chamada por uma Intent
● Se Comunica com a Main Thread através de
Handlers ou Broadcast
IntentService YourHeroes
● Conecta com a API Marvel utilizando uma URL
● Carrega os Dados
● Efetua o parsing JSON
● Gera um ArrayList<Person>
● Insere os Registros na Tabela do SQLite
● Utiliza um BradcastReceiver para Notificar o
Fim da Tarefa (remover spinner e progresso)
JSON parsing
● Parsing!
● Formato Leve e Simples Para Troca de Dados
● Elementos básicos: objetos, propriedades e
arrays
● Objetos: “{}” ; propriedades: “:” ; arrays: “[]”
● JSONObject e JSONArray
JSON parsing
{
"id": 1009664,
"name": "Thor",
"description": "As the Norse God...",
"modified": "2013-10-24T14:24:12-0400",
"thumbnail": {
"path": "http://...",
"extension": "jpg"
}
}
Carregamento de Imagens:
ImageLoader
● Cria uma Thread para Cada Imagem a ser
Carregada da Lista, empilhando-as
● Cada Imagem Carregada é Gravada No
Sistema de Arquivos (data/images)
● Se já Estiver em Cache a Imagem é Lida a
Partir do Mesmo. Caso Contrário: NET!
● Um Runnable p/ Cada Imagem a Ser
Desenhada pelo CursorAdapter
YourHeroes - Issues
● Material Design!
● Acesso a dados de revistas, séries, eventos,
estórias e criadores
● Limitar cache para máx. 24 horas
● Aproveitamente Ideal dos Formatos de
Imagens Disponíveis pela API
● ?
@eloijr
Referências:
http://developer.android.com
http://developer.marvel.com
Email: eloimuon@gmail.com
www.facebook.com/eloijr

More Related Content

Similar to Projeto Android Your Heroes que Utiliza a API Marvel

Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EELuan Felipe Knebel
 
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...tdc-globalcode
 
Mongo db no mundo real slides
Mongo db no mundo real   slidesMongo db no mundo real   slides
Mongo db no mundo real slidesSuissa
 
DevDay - MongoDb no mundo real - slides
DevDay - MongoDb no mundo real - slidesDevDay - MongoDb no mundo real - slides
DevDay - MongoDb no mundo real - slidesSuissa
 
TDC2012: Apps RIA com Sencha GXT 3 e GWT
TDC2012: Apps RIA com Sencha GXT 3 e GWTTDC2012: Apps RIA com Sencha GXT 3 e GWT
TDC2012: Apps RIA com Sencha GXT 3 e GWTLoiane Groner
 
Tirando água da rocha: escalabilidade via software no ExpressoV3
Tirando água da rocha: escalabilidade via software no ExpressoV3Tirando água da rocha: escalabilidade via software no ExpressoV3
Tirando água da rocha: escalabilidade via software no ExpressoV3Flávio Lisboa
 
Habilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosHabilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosJeison Barros
 
GWT - de iniciante a especialista
GWT - de iniciante a especialistaGWT - de iniciante a especialista
GWT - de iniciante a especialistaDanilo Reinert
 
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3André Luiz Forchesatto
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0jesuinoPower
 
Como um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoComo um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoDavid Robert Camargo de Campos
 
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EEJavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EERodrigo Cândido da Silva
 
Aula 1 - Introducao.pdf
Aula 1 - Introducao.pdfAula 1 - Introducao.pdf
Aula 1 - Introducao.pdfRoberto Aragy
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sitesthiagolima
 

Similar to Projeto Android Your Heroes que Utiliza a API Marvel (20)

Visão Geral sobre Angular JS
Visão Geral sobre Angular JSVisão Geral sobre Angular JS
Visão Geral sobre Angular JS
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EE
 
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
 
Mongo db no mundo real slides
Mongo db no mundo real   slidesMongo db no mundo real   slides
Mongo db no mundo real slides
 
DevDay - MongoDb no mundo real - slides
DevDay - MongoDb no mundo real - slidesDevDay - MongoDb no mundo real - slides
DevDay - MongoDb no mundo real - slides
 
TDC2012: Apps RIA com Sencha GXT 3 e GWT
TDC2012: Apps RIA com Sencha GXT 3 e GWTTDC2012: Apps RIA com Sencha GXT 3 e GWT
TDC2012: Apps RIA com Sencha GXT 3 e GWT
 
Tirando água da rocha: escalabilidade via software no ExpressoV3
Tirando água da rocha: escalabilidade via software no ExpressoV3Tirando água da rocha: escalabilidade via software no ExpressoV3
Tirando água da rocha: escalabilidade via software no ExpressoV3
 
Habilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosHabilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dados
 
GWT - de iniciante a especialista
GWT - de iniciante a especialistaGWT - de iniciante a especialista
GWT - de iniciante a especialista
 
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0
 
Como um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoComo um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenho
 
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EEJavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
 
Curriculum vitae u05_lutonda
Curriculum vitae u05_lutondaCurriculum vitae u05_lutonda
Curriculum vitae u05_lutonda
 
Web Services
Web ServicesWeb Services
Web Services
 
Aula 1 - Introducao.pdf
Aula 1 - Introducao.pdfAula 1 - Introducao.pdf
Aula 1 - Introducao.pdf
 
Treinamento hadoop - dia4
Treinamento hadoop - dia4Treinamento hadoop - dia4
Treinamento hadoop - dia4
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
Engenharia Web
Engenharia WebEngenharia Web
Engenharia Web
 
Pentaho PDI
Pentaho PDIPentaho PDI
Pentaho PDI
 

More from Eloi Júnior

Missão Rosetta: Uma história emocionante sobre ciência espacial
Missão Rosetta: Uma história emocionante sobre ciência espacialMissão Rosetta: Uma história emocionante sobre ciência espacial
Missão Rosetta: Uma história emocionante sobre ciência espacialEloi Júnior
 
Android: Projetando e Pensando em Design
Android: Projetando e Pensando em DesignAndroid: Projetando e Pensando em Design
Android: Projetando e Pensando em DesignEloi Júnior
 
Desenvolvedor out of road: Saia da cadeira e seja um!
Desenvolvedor out of road: Saia da cadeira e seja um!Desenvolvedor out of road: Saia da cadeira e seja um!
Desenvolvedor out of road: Saia da cadeira e seja um!Eloi Júnior
 
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSpherePortando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphereEloi Júnior
 
Carreira e CV: construa-os!
Carreira e CV: construa-os!Carreira e CV: construa-os!
Carreira e CV: construa-os!Eloi Júnior
 
Pomodoro o tempo é o seu aliado
Pomodoro o tempo é o seu aliadoPomodoro o tempo é o seu aliado
Pomodoro o tempo é o seu aliadoEloi Júnior
 

More from Eloi Júnior (6)

Missão Rosetta: Uma história emocionante sobre ciência espacial
Missão Rosetta: Uma história emocionante sobre ciência espacialMissão Rosetta: Uma história emocionante sobre ciência espacial
Missão Rosetta: Uma história emocionante sobre ciência espacial
 
Android: Projetando e Pensando em Design
Android: Projetando e Pensando em DesignAndroid: Projetando e Pensando em Design
Android: Projetando e Pensando em Design
 
Desenvolvedor out of road: Saia da cadeira e seja um!
Desenvolvedor out of road: Saia da cadeira e seja um!Desenvolvedor out of road: Saia da cadeira e seja um!
Desenvolvedor out of road: Saia da cadeira e seja um!
 
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSpherePortando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphere
 
Carreira e CV: construa-os!
Carreira e CV: construa-os!Carreira e CV: construa-os!
Carreira e CV: construa-os!
 
Pomodoro o tempo é o seu aliado
Pomodoro o tempo é o seu aliadoPomodoro o tempo é o seu aliado
Pomodoro o tempo é o seu aliado
 

Projeto Android Your Heroes que Utiliza a API Marvel

  • 2. Eloi Jr ● Iniciou na área mobile em 2002 ● Palestrou em diversos eventos de TI ● Escreveu artigos técnicos ● Desenvolvedor mobile desde o Java ME ● Projetos em Windows Phone e Android ● Empreendedor no Maranhão!?!??
  • 4. Imperatriz-MA ● Segundo maior centro político, cultural e populacional do Maranhão: +400hab ● Beira-rio Tocantins: 33º às 20:00 ● Comércio varejista e atacadista e algumas indústrias (Suzano Papel e Celulose) ● Cerca de 600km de Belém, São Luís, Palmas e Teresina ● Rio Tocantins: segundo maior rio brasileiro em águas brasileiras
  • 5. YourHeroes ● App Android desenvolvido como projeto final do curso Udacity/Google “Developing Android Apps” ● Iniciativa de apoio aos GDG ● Diversos conceitos importantes: Definição de interfaces, SQLite, Providers, Loaders, SyncAdapters, IntentServices e etc. ● API escolhida: Marvel!
  • 6. Serviços RESTful ● Serviço web que utiliza paradigma arquitetônico REST (Representational State Transfer) ● Exposição e troca de informações usando URIs ● Leve ● Transmissão de dados via HTTP ● APIs RESTful: Google Maps, infor. sobre temperatura, trânsito, Nasa, governo, DPRF, ESPN, API Marvel
  • 7. JSON ● JavaScript Object Notation ● Formato leve de troca de dados { "id": 1009664, "name": "Thor", "description": "As the Norse God...", "modified": "2013-10-24T14:24:12-0400", "thumbnail": { "path": "http://...", "extension": "jpg" } }
  • 8. Marvel Comics API ● Serviço RESTful com JSON ● Acesso a dados de mais 70 anos de quadrinhos Marvel ● Personagens, quadrinhos, séries, eventos, estórias e criadores! ● Imagens em diferentes resoluções e tamanhos ● Documentação ● Ferramenta online para testar chamadas à API
  • 9. Marvel Comics API ● Necessário obter uma chave pública e privada ● Limite de 3000 req./dia ● Link p/ site Marvel; ● Data provided by Marvel. © 2014 Marvel ● Não é permitido cache indefinido! Sugestão: 24 horas ● developer.marvel.com
  • 10. Marvel Comics API: Imagens ● PORTRAIT, STANDARD, LANDSCAPE ● SMALL, MEDIUM, XLARGE, FANTASTIC, UNCANNY, AMAZING e INCREDIBLE ● DETAIL ● FULL_SIZE
  • 11. YourHeroes - Tópicos ● Interface de usuário p/ tablets e smartphones ● Persistência ● Loader ● Content Providers (Contract e Provider) ● IntentService ● JSON parsing ● CursorAdapter ● Carregamento de Imagens em uma Thread
  • 12. Interface Usuário tablets/smartphones ● Fragments! ● layout-sw600dp e values-sw600dp ● Values-v14 (Android 4.0 – Ice Cream Sandw.) ● Pasta drawable ● footer.xml
  • 13. Fragment ● Parte da Interface de Usuário de uma Activity ● Interface dinâmica e multi-pane ● Comportamento e visualização
  • 14. Suporte a Diferentes Telas ● Smallest-width Qualifier: sw600dp, sw720dp ● Configurações de acordo com API: v11 (3.0), v14 (4.0) ● Uso da pasta drawable
  • 15. Por que Persistir Dados? ● Resposta Rápida Para o Usuário ● Redução de Consumo de Bateria ● Instabilidades Eventuais na Rede de Dados ● Locais Sem Serviço de Dados ● Shared Preferences ou SQLite?
  • 16. Persistência ● SQLite ● Serializable ● Classe Contract ● SQLiteOpenHelper
  • 17. Content Provider ● Acesso Universal a Dados a partir de URI ● Retorna uma Lista ou Apenas um Item ● Compartilhamento de Dados ● Acesso a Dados Nativos: Calendário, SMS, Contatos e etc.
  • 18. Content Provider Visualizar os contatos: Uri u = Uri.parse(“content://com.android.contacts/contacs/” ); Intent it = new Intent(Intent.ACTION_PICK, u); startActivity(it);
  • 19. Loader ● Leitura assíncrona de dados ● Monitora os Dados Utilizando AsyncTask ● Atualiza a UI em Caso de Mudança ● Permite Acesso a Thread de UI ● Reconecta o Cursor Automaticamente em Mudanças de Configurações ● CursorLoader utiliza Contents Provider!
  • 20. CursorAdapter ● Método de Alta Performance Para Apresentar Dados do SQLite em Listas ● Permite Mapear as Colunas Direto a Partir do Banco de Dados SQLite
  • 21. IntentService ● Utilizado em Tarefas Longas ● Roda em uma Thread Separada ● Chamada por uma Intent ● Se Comunica com a Main Thread através de Handlers ou Broadcast
  • 22. IntentService YourHeroes ● Conecta com a API Marvel utilizando uma URL ● Carrega os Dados ● Efetua o parsing JSON ● Gera um ArrayList<Person> ● Insere os Registros na Tabela do SQLite ● Utiliza um BradcastReceiver para Notificar o Fim da Tarefa (remover spinner e progresso)
  • 23. JSON parsing ● Parsing! ● Formato Leve e Simples Para Troca de Dados ● Elementos básicos: objetos, propriedades e arrays ● Objetos: “{}” ; propriedades: “:” ; arrays: “[]” ● JSONObject e JSONArray
  • 24. JSON parsing { "id": 1009664, "name": "Thor", "description": "As the Norse God...", "modified": "2013-10-24T14:24:12-0400", "thumbnail": { "path": "http://...", "extension": "jpg" } }
  • 25. Carregamento de Imagens: ImageLoader ● Cria uma Thread para Cada Imagem a ser Carregada da Lista, empilhando-as ● Cada Imagem Carregada é Gravada No Sistema de Arquivos (data/images) ● Se já Estiver em Cache a Imagem é Lida a Partir do Mesmo. Caso Contrário: NET! ● Um Runnable p/ Cada Imagem a Ser Desenhada pelo CursorAdapter
  • 26. YourHeroes - Issues ● Material Design! ● Acesso a dados de revistas, séries, eventos, estórias e criadores ● Limitar cache para máx. 24 horas ● Aproveitamente Ideal dos Formatos de Imagens Disponíveis pela API ● ?