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
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?
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
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
● ?