O documento fornece uma introdução à plataforma Android, descrevendo sua criação pelo Google, arquitetura baseada em Java e Linux, conjunto de ferramentas para desenvolvedores, primeiro dispositivo (HTC G1) e desafio para desenvolvedores.
1. Agenda
Parte 3
• Introdução
• Porque o Google criou o Android?
• Plataforma aberta: vantagens
• Arquitetura
• Características
• Vantagens e desvantagens
• Ferramentas e modelo de desenvolvimento
• Google Phone HTC G1
• Android Developer´s Challenge
• Links Interessantes
• Conclusões
2. Plataforma Android
Introdução
• Plataforma de software para dispositivos móveis criada pela
Google em 2007
– Pilha de SW composta por camadas de abstração
• Gerenciada pela Open Handset Alliance
– Operadoras, empresas de SW, fabricantes de dispositivos e
semicondutores
• Baseada na plataforma Linux
– Versão mais simplificada, sem glibc, native windowing system
• Desenvolvimento em Java
• SDK para desenvolvimento
– Windows, Linux e Mac OSX
– Integração com IDEs populares (Eclipse e Netbeans)
– Documentação e Emulador
3. Plataforma Android
Introdução
• Desenvolvimento em JavaSE 5.0, utilizando bibliotecas Java
implementadas pelo Google
– Máquina Virtual Dalvik (Não é uma máquina virtual Java)
– Criada especificamente para dispositivos com CPUs mais lentos, pouca
memória
• Inclui
– Sistema operacional (Linux 2.6), middleware e aplicações importantes
• Independente de hardware
– Smartphone, netbook, PDA
4. Plataforma Android
Introdução
• Acesso a Internet de forma ubíqua
– Simplicidade em conexões a Web
• Serviços Google
• Igualdade para todas as aplicações
– Acesso igual a recursos
• Combinação de informações da Web e
do dispositivo
– Ex: contatos e localização geográfica
5. Plataforma Android
Histórico
• Datas importantes
– Novembro de 2007: Primeiro SDK liberado ao público
– Abril de 2008: Android Developer Challenge
– Agosto de 2008: mercado Android anunciado, aplicações de graça (por
enquanto)
– Setembro de 2008: Primeiro aparelho no mercado com o Android, o
T-Mobile G1
– Setembro de 2008: Versão 1.0 do Android SDK é lançado
– Outubro de 2008: Código fonte do Android é aberto a comunidade
Memória: RAM (192MB), ROM (256MB)
Processador: Qualcomm 528 Mhz
Peso: 158 Gramas
Conectividade: WiFi 802.11b/g, 3G (HSDPA),
Quadband GSM
Tela: HVGA (320x480)
Teclado: Qwerty
Recursos: Câmera 2.0 MP, microSD slot,
GPS, bússola e acelerômetro
6. Plataforma Android
Porque o Google criou o Android?
– Plataforma JavaME
• Não é open-source, apenas no JavaSE é open-source
• Está um pouco ultrapassada (CLDC + MIDP)
• Necessidade de uma nova API de GUI
– IPhone não possui suporte oficial a aplicações em Java
– Grande comunidade de desenvolvedores Java
• Utilizou a comunidade no provimento de sugestões na arquitetura,
correções de bugs
• O jeito “Google” de ser e fazer as coisas
7. Plataforma Android
Porque o Google criou o Android?
– Busca por uma plataforma aberta e rica de recursos
• Licença Apache 2.0 e GPL v2
• Navegação pela Web
• Serviços Google: Maps, GPS, StreetView, gráficos 2D, Open GL
• Media Framework, SQLite
– Criação de um novo modelo de desenvolvimento de
aplicações móveis
• Arquitetura baseada em componentes
8. Plataforma Android
Plataforma Aberta: Vantagens
– Consumidores
• Dispositivos mais baratos e mais inovadores (recursos, aplicações)
– Operadoras
• Baixo custo de dispositivos, inovação mais rápida, flexibilidade de
customização
– Fabricantes de dispositivos
• Custo de SW baixo, TTM mais rápido, flexibilidade para prover tipos de
produtos diferentes
9. Plataforma Android
Plataforma Aberta: Vantagens
– Fabricantes de semicondutores
• Acesso a recursos mais avançados do dispositivo, acesso por
desenvolvedores
– Empresas de software
• Integração de aplicações mais simples, demanda por mais aplicações,
investimentos em SW
– Desenvolvedores
• Acesso a API, ferramentas open-source e populares, melhor
desenvolvimento de aplicações, custo menor de distribuição e
comercialização de aplicações
11. Plataforma Android
Arquitetura: Dalvik VM
– Máquina virtual Java não padronizada
– Dalvik VM != JavaSE VM
– Não é baseada no JavaSE e/ou JavaME, não possui as APIs de GUI
(Swing, AWT)
– Otimizada para dispositivos embarcados
– Usabilidade, energia, processamento, gerência de processos
– APIs Java presentes
• Apache Commons, HttpClient e Junit
• Telefonia, Gerenciamento de energia e SMS
12. Plataforma Android
Arquitetura: Dalvik VM
– Compilação para Dalvik BC
– Os programa são desenvolvidos em Java usando IDEs orientadas a Java.
Porém ao invés de compilar para bytecode Java (.class), a compilação vai
para dalvik bytecode (.dex)
– Cada aplicação é executada em uma única e exclusiva
instância da VM
• Multitarefas
– Utiliza o kernel para as funcionalidades de baixo nível
• Gerenciamento de memória e threading
13. Plataforma Android
Características
• Filosofia
– quot;Successful applications will offer an outstanding end-user experiencequot;
• Fast
• Responsive
• Seamless
• Interface gráfica
– Modelo de componentes rico baseado em XML
– Novos componentes: MapView, WebView ou customizado
• Aplicações
– Cliente de Email, mensagens por SMS, Calendário, mapas
– Navegador, Contatos
– Todas as aplicações foram desenvolvidas na linguagem Java
15. Plataforma Android
Vantagens
• Utiliza tecnologias como o Java e Eclipse
– Grande quantidade de desenvolvedores adeptos
• Modelo de UI rico utilizando uma programação declarativa
por XML
– Mais simples de construir interfaces
• SDK com vários recursos
• Oferece mais recursos que o JavaME
• Possui dispositivos reais no mercado
16. Plataforma Android
Vantagens
• Plataforma aberta
– Código aberto e independente de hardware
• Permite a construção de aplicações complexas
• Fácil instalação de aplicações em dispositivos
– Menos restritivo que outras plataformas
• Navegação Web – WebKit
– Mesmo do IPhone, Safari, Chrome
• Serviços de localização
– Gmaps, Street view, GPS, alertas de proximidada
17. Plataforma Android
Desvantagens
• SDK sofre alterações significativas entre versões antes do
1.0
• Modelo de programação complexo comparada a outras
existentes (AWT, Swing, MIDP)
– Curva de aprendizado para desenvolvedores JavaME é alta
• Dispositivos reais só recentemente
– Somente dois no mercado
• Plataforma nova, com pouco tempo de uso
– Bugs, falhas de segurança
• Concorrentes fortes no mercado
– IPhone, Windows Mobile e outros
18. Plataforma Android
Ferramentas de Desenvolvimento
• JavaSE Systems Development Kit
• Android SDK
• Emulador
• Ferramentas de linha de comando (ex: emulador, android debug bridge,
etc.)
• Documentação
• Aplicações de exemplo
• Eclipse
• ADT: Android Development Tools Plugin
• DDMS: Dalvik Debug Monitor Server
• Interface gráfica
• Baseada em XML
• www.droiddraw.org
19. Plataforma Android
Modelo de Desenvolvimento
• Modelo de desenvolvimento voltado a componentes
• Blocos básicos de construção
– Atividades e intenções
– Receptores de broadcast
– Serviços
– Provedores de conteúdo
• Aplicações e serviços utilizam
recursos de camadas inferiores
– Aplicações
– App Framework
– Bibliotecas nativas
– Linux Kernel
20. Plataforma Android
Componentes de uma Aplicação
• Visões (Views)
– Interfaces de usuário (ex: listas, grids, botões)
• Provedores de conteúdo (Content Providers)
– Acesso a dados de outras aplicações (ex: contatos)
• Gerenciador de recursos (Resource Mgr)
– Acesso a recursos (ex: strings, gráficos e leioutes internacionalizador
• Gerenciador de notificações (Notification Mgr)
– Mostragem de alertas na barra de estado
21. Plataforma Android
Componentes de uma Aplicação
• Gerenciador de atividades (Activity Mgr)
– Gerencia o ciclo de vida de aplicações
• Gerenciador de serviços (Service Mgr)
– Gerencia os serviços (sem UI)
• Receptores de broadcast
– Receptor e reagente a anúncios e eventos
• Intenções (Intents)
– Mensagens assíncronas de ativação, responsável por acionar as atividades,
serviços e receptores de broadcast
24. Plataforma Android
Hello, Android!
package com.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText(quot;Hello, Androidquot;); setContentView(tv);
}
}
25. Plataforma Android
Google Phone: HTC G1
• Android OS (baseado no Linux)
• Tela 3.2 polegadas sensível ao toque, resolução HVGA
– 65k cores, 320x480 (resolução do IPhone)
• Teclado qwerty
• Processador Qualcomm MSM 7201A 528 MHz, 192 MB
RAM
• Quadband GSM/GPRS/EDGE/HSDPA/HSUPA
• Câmera de 3.15 MP
• WiFi 802.11 b/g
• GPS
• Trackball
• Sensor de acelerômetro e compasso digital
28. Plataforma Android
Google Phone: HTC G1
• Vantagens • Desvantagens
– É um celular do Google! – É um celular do Google!
– Navegação em trackball – Sem suporte a video pela
câmera (ligações e
– Bom tempo de bateria (1
gravação)
dia sobre uso pesado)
– Sem suporte a Flash no
– Boa responsividade na
browser
execução de aplicações
– Bluetooth restrito
– Sem radio FM
– Sem auto-rotação da tela
29. Plataforma Android
Android Developer's Challenge
• Desafio para que desenvolvedores utilizassem a plataforma
Android para o desenvolvimento de aplicações móveis
• Mais de 1700 submissões
• Os 50 melhores foram escolhidos de todas as submissões
– Duas fases de submissão
• Os 50 melhores receberam US$ 25,000.00
• Os melhores ganharam
– Dez prêmios de US$ 275,000.00
– Dez prêmios de US$ 100,000.00
30. Plataforma Android
Android Developer's Challenge
• Áreas sugeridas
– Redes sociais
– Consumo, gerenciamento, edição ou compartilhamento de de mídia, etc.
– Fotos
– Produtividade e colaboração, tais como Email, IM, calendário, etc.
– Jogos
– Notícias e informações
– Novas interfaces de usuário
– Funcionalidade mash-up
– Location-based services
– Benefícios humanitários
– Aplicações em serviço do desenvolvimento econômico global
– Lista de candidatos
31. Plataforma Android
Links Interessantes
• Android Market
– http://www.android.com/market/
– Loja de aplicações do Google
– Permite a oferta de aplicações por desenvolvedores
• US$ 25,00 por membro por ano
– 70% do lucro vai para os desenvolvedores, restante para operadoras,
custos, etc.
– Processo similar ao YouTube
• Feedback ao desenvolvedor
• Publicação de aplicações: register, upload e publish, acompanhamento das
aplicações
• Android Developers
– http://developer.android.com/
• Google APIs
– GeoCoder, Maps API
– http://code.google.com/android/add-ons/google-apis/index.html
32. Plataforma Android
Conclusões
• Mercado está amadurecendo rapidamente
– Oportunidades e desafios
• Alta demanda
– Faltam profissionais especialistas no desenvolvimento de
aplicações móveis
– Caso comum: desenvolvedor para desktop ou servidor e prepará-lo para
dispositivos móveis
– Transações móveis, jogos, aplicações corporativas
– Consumo de conteúdo (texto, mídia)
33. Plataforma Android
Conclusões
• Android como plataforma de desenvolvimento de
aplicações ubíquas
• Adotado pelo meio acadêmico
• Convergência de serviços e tecnologias para o
dispositivo móvel
– Texto, mídia, dados, serviços baseados em IP
• Plataformas de desenvolvimento em Java
– Portabilidade, ubiquidade e número de desenvolvedores