Download - Descomplicando o Android
Descomplicando o Android
Como e porque desenvolver aplicativos para Android.
Quem sou eu?• Formado em Sistemas de Informações - (FIAP)
• Pós-Graduando em Sistemas e Desenvolvimento Web
• Twitter: @HeiderLopes
• Blog: www.heidertreinamentos.com.br/blog
• Analista Desenvolvedor
Agenda• Objetivos• O que é Android?• Quais as vantagens de desenvolver para android• A plataforma• A arquitetura• O mercado• Ambiente de desenvolvimento• Minha Primeira App Android – Criando um exemplo• Publicando sua aplicação• Conceitos básicos
O mundo Mobile• Celulares deixaram de ser simples telefones
• Hardware cada vez mais poderoso
• Convergência para a mobilidade
• Usuários cada vez mais exigentes
Uma rápida pesquisaEm qual dessas situações você
utiliza seu celular?Enquanto espera para ser atendido
No carro, de carona
No transporte público
Enquanto espera o início de um evento
(cinema, teatro, etc)
Enquanto trabalha
No banheiro
Enquanto assisto TV
Enquanto converso com os amigos
Um resultado da pesquisa
Quais são as oportunidades ???
Oportunidades
M-Payment
M-Learning
M-Advertisement
M-HealthNFC
Plataformas Móveis• Symbian• Java ME• IOS• Windows Mobile• Android• Entre outras
O que é Android?• Sistema Operacional para dispositivos Mobile
• Baseado no Linux
• Fácil integração com aplicações nativas e serviços do Google
• Poderoso ambiente de desenvolvimento
• Google Play (Android Market)
Breve Histórico• Android Inc fundada em 2003, em Palo Alto
• Aquisição da Android Inc pela Google em 205
• Android Beta SDK lançado em 2007
• Iphone anunciado no WWDC 2007
• Primeiro SDK para Iphone em Março de 2008
• Nokia adquire a Symbian Foundation em 2008
A história continua• Primeiro device android em 2008 (HTC G1)
• Android se torna a plataforma mais vendida em 2011
• + de 1 milhão de aplicativos/jogos disponíveis no Google Play
• 1,5 milhões de ativações de aparelhos por dia
Mas por que Android?
Dispositivo para todos os bolsos
Android: além de tablets e smartphones
Programação em Multiplataforma
Linguagens de Desenvolvimento
Ainda não me convenceu...
Vamos ver o Market Share?• Líder indiscutível de mercado
• Mundial: 80%
• China: 90% em 2012
• Europa: 70%
• Brasil: 90%
Market Share
http://www.blackberrycool.com/2010/02/23/gartner-release-breakdown-of-mobile-os-market-share/
Market Share
http://news.cnet.com/8301-13579_3-20006889-37.html
Market Share
http://bits.rahilparikh.me/2012/08/18/android-forensics/
A Plataforma• Navegador Web Integrado
• SQLite para armazenamento de dados
• Áudio (MP3, AAC, AMR)
• Vídeo (MPEG4, H.264)
Mais sobre a Plataforma• Imagens (JPG, PNG, GIF)
• Flash
• Bluetooth, EDGE, 3G, Wifi (dependente do hardware)
• Câmera, bússola, acelerômetro (dependente do hardware)
• Sensores
A Arquitetura
Camada de Aplicação• Onde se localizam todos os aplicativos que são executados
sobre o sistema operacional, tais como, cliente de SMS e MMS, cliente de e-mail, navegador, mapas, calculadora entre outros.
• Aplicações escritas em JAVA
Framework de Aplicação• Componentes que permitirão com que novas estruturas sejam
utilizadas para futuras aplicações
• Um rico e extensível conjunto de componentes gráficos que pode ser utilizado para construir uma aplicação bem como: listas, grids, caixas de textos, botões, etc
• Provedores de conteúdos que habilitam as aplicações acessar dados de outras aplicações
Camada de Bibliotecas• Camada que possui as bibliotecas C/C++ que são utilizadas pelo
sistema, e também as bibliotecas de multimidia, visualização de camadas 2D e 3D, funções para navegadores web, funções de aceleradores de hardware, renderização 3D, funções para gráficos, fontes bitmaps, e funções de acesso a banco de dados
Camada de Runtime• Camada que se instância a máquina Virtual Dalvik (criada para cada
aplicação Android). Essa máquina virtual é a melhor referente a desempenho, maior integração com a nova geração de hardware e projetada como executar vários processos paralelamente.
• Máquina virtual android / Toda aplicação roda dentro do seu próprio processo
• Executa arquivos .dex, bytecodes de java otimizados para o Android
Camada de Kernel de Linux• Núcleo derivado do Kernel do Linux• Heranças do Linux
– Controle de processos– Gerenciamento de memórias– Threads– Protocolos de rede– Modelo de drivers– Segurança de arquivos
Versões do Android
Android 1.5 Cupcake
Android 1.6 Donut
Android 2.0/2.1 Eclair
Android 2.2 Froyo
Android 2.3 GingerBread
Android 3.0 Honeycomb
Android 4.0 Ice CreamSandwich
Android 4.4
Kit Kat
Android 4.1 JellyBeans
Android 1.0
O que mudou?• 1.1
– Letreiros de layout– Suporte para salvar anexos
• Cupcake (1.5)– Primeiro nome baseado em sobremesa
Android 1.5 Cupcake
Android 1.1
O que mudou?• Donut (1.6)
– Text-to-speech– Busca por voz– CDMA
• Eclair (2.0)– Bluetooth– Múltiplas contas de e-mail– HTML5
O que mudou?• Froyo (2.2)
– Wi-fi hotspot– Flash
• Gingerbread (2.3)– Api para NFC– Android market on-line
Android 1.6 Donut
Android 2.0/2.1 Eclair
O que mudou?• HoneyComb (3.0)
– Versão otimizada para telas maiores– Tablets / Google TV
• Ice Scream Sandwich (4.0)– Unificação
Android 3.0 Honeycomb
Android 4.0 Ice CreamSandwich
O que mudou?• JellyBeans (4.1, 4.2 e 4.3)
– Múltiplos usuários– Widget na lock screen
• Kit Kat (4.4)– Otimização de uso de memória– “OK”Google (Comando de voz)– Aplicativos em tela cheia– Solução nativa para impressão
Android 4.4
Kit Kat
Android 4.1 JellyBeans
Ano de Lançamento
Market Share
Version Codename API Distribution
2.2 Froyo 8 1.7%
2.3.x Gingerbread 10 26.3%
3.2 Honeycomb 13 0.1%
4.0.x Ice Cream Sandwich
15 19.8%
4.1.x Jelly Bean 16 37.3%
4.2.x 17 12.5%
4.3 18 2.3%
http://developer.android.com/about/dashboards/index.html
Atualização de versão• Liberada normalmente pela fabricante do aparelho
• É gratuita
• O processo de upgrade de SO é fácil
• Custom Roms– CyanogenMod
Ambiente de Desenvolvimento• JAVA SE Development Kit (JDK)
• Android SDK
• IDE– Eclipse
• Android Development Tools (ADT)– Netbeans
• Nbandroid– Android Studio
• Opcional – Native Development Kit (NDK)
Ambiente de Desenvolvimento• IDE
• Emulador
• Ferramentas para Debug e Análise de Código
• Analisador de Memória e Performance
• Ferramenta para análise de hierarquia de Layouts
O ADT Bundle• Download disponível em: http://
developer.android.com/sdk/index.html
• Baixa um zip contendo:– Android SDK– Eclipse
Android SDK Manager
AVD Manager
Estrutura de um Projeto Android
• Src: – contém o código fonte da aplicação
• Gen:– Contém a classe R gerada automaticamente permitindo a aplicação
acessar recursos (imagens e arquivos) utilizando constantes dessa classe• Assets
– Contém arquivos opcionais ao projeto (exemplo fontes customizadas, músicas)
• Res– Contém os recursos da aplicação (layouts, imagens, arquivos de
internacionalização)• Bin
– Contém o aplicativo (uma vez já compilado)
Estrutura de um Projeto Android
• Drawable– Pasta com imagens da aplicação
• Layout– Os arquivos XML para construir a aplicação
• Values– XML utilizado para internacionalização da aplicação, estilos e
outras configurações
Estrutura do Projeto• Quando compilamos o projeto os resultados vão para a pasta Bin
• Bin/classes: contém as classes Java compiladas
• Bin/classes.dex: contém o executável criado a partir das classes Java compiladas
• Bin/ suaapp.ap_: contém os recursos do seu aplicativo, como um arquivo ZIP.
• Bin/suaapp.apk: é aplicação real Android
Após descobrirmos tudo
isso
Vamos começar nosso
primeiro programa
Android!!!
Primeiros Conceitos
Activity• Representado por uma tela da aplicação
• Possui interface com usuário– Views– Componentes Gráficos– Eventos– Entre outros
• Atividades são armazenadas em pilhas
Ciclo de Vida da Aplicação• As activitys representam uma classe com elementos a serem
executados assim que forem chamados
• Essas activitys possuem um ciclo de vida desde sua criação até o término da aplicação
Android Manifest• É a base de qualquer aplicação Android
• Contém as configurações necessárias para executar a aplicação– Activitys usadas– Activity Launcher– Permissões
• TODA activity deve ser declarada no Manifest
A classe R• Criada automaticamente e nunca deve ser modificada
• Define constantes para acesso aos recursos do projeto
• Os nomes dos arquivos adicionados devem ser minúsculos e sem espaços, caso contrário, a classe R não será compilada corretamente
Acessando elementos• findViewById (R.id.nome_recurso)
• Acesso através dos Ids da classe R
• Usado para utilizar os recursos da aplicação
Services• Não possui interface com o usuário
– Rodam em background
• Possui ciclo de vida próprio
• Usado normalmente operações em segundo plano
• Outra componente do aplicativo pode iniciar o serviço e ele irá continuar sendo executado em segundo plano, mesmo se o usuário mudar para outra aplicação
Broadcast Receiver• Utilizado para responder eventos externos
– Exemplo: atender uma ligação
• As aplicações também podem iniciar broadcasts para notificar outras aplicações
Broadcast Receivers nativos do Android
• ACTION_BATTERY_LOW: Enviado quando a bateria do dispositivo está com carga baixa;
• ACTION_HEADSET_PLUG: Enviado quando um fone de ouvido é conectado ou desconectado do dispositivo.
• ACTION_SCREEN_ON: Enviado quando a tela do dispositivo é ligada.
• NEW_OUTGOING_CALL: Enviado quando uma nova chamada telefônica é efetuada.
• BOOT_COMPLETED: Enviado quando o sistema completa o boot inicial.
• ACTION_POWER_CONNECTED: Enviado quando o dispositivo é conectado à energia.
• ACTION_POWER_DISCONNECTED: Enviado quando o dispositivo é desconectado da energia.
• CAMERA_BUTTON: Enviado quando o botão da câmera é disparado.
Content Provider• Usado para compartilhar dados entre aplicações
• Armazena e recupera dados em repositórios
• A plataforma oferece Content Providers para:– Áudio– Vídeo– Imagens
LogCat• Fazem parte do pacote android.util.Log
• Podemos filtrar os Logs através do DDMS
Nível Sigla Cor
Debug D Azul
Verbose V Preto
Info I Verde
Warn W Laranja
Erro E Vermelho
Acabei meu aplicativo e agora?
Como publico no Google Play?
Publicando no Google Play• Registro no google Play $25
• Assinar o aplicativo com uma chave privada
• Realizar upload do apk e de imagens do aplicativo
Criando sua KeyStore• File/Export/Export Android Application• Nome do Projeto• Create New KeyStore• Preenche os dados referente a chave
Dicas• Teste bem a aplicação
– De preferência em mais de um aparelho
• Confira se o versionCode e versionName estão configurados
• Retire arquivos não utilizados
• Internacionalize sua aplicação– values – values-pt-BR – values-en-US
O que acontece depois de enviado?
• No máximo em 3 horas seu aplicativo será liberado
• Possível visualizar estatísticas:– País– Aparelho– Idioma– Versão do Android– Operadora e versão do aplicativo
Exemplo de Gráfico
Atualizando seu aplicativo• Mude o VersionCode no Manifest.xml
• Assine a aplicação com seu keystore– NUNCA PERCA SEU KEYSTORE
• Envie o aplicativo
• Marque como versão atual
• Salve
Atualização
O lado escuro do Android
Algumas desvantagens• Fragmentação
• Maior concorrência
Nunca esqueçam!!!• http://developer.android.com• http://www.heidertreinamentos.com.br/blog
Referências• LECHETA, Ricardo R. Google Android: aprenda a criar
aplicações para dispositivos móveis com Android SDK
• http://www.android.com.br
• http://www.globalcode.com.br/gratuitos/minicursos/minicurso-introducao-ao-android