10. O Mercado Mobile
Mercado brasileiro de telefonia móvel;
Organize with Sections
Números do mercado internacional;
Mercado de jogos (Brasil e mundo).
13. Mercado brasileiro de celulares (2010)
202 milhões e 944 mil celulares
Crescimento de 16,7%;
104,7 celulares a cada 100 habitantes.
Operadoras
Vivo - 29,7%
Claro - 25,4%
TIM – 25,1%
Oi – 19,4%
22. Android (Open Handset Alliance, liderada pelo Google)
Plataforma aberta baseada em Linux;
Android Development Tools (ADT)
Plugin para Eclipse;
Desenvolvimento em Java (Linux /
Windows / Mac OS);
1º smartphone: HTC G1 (2008);
1º tablet: Samsung Galaxy Tab (2010).
23. iOS (Apple)
iPod, iPhone (2007) e iPad (2010);
Baseado no Mac OS X (Objective-C);
Kit de desenvolvimento exclusivo para
Mac OS;
Aplicativos exclusivamente na Apple
App Store.
32. Android já lidera mercado mundial de smartphones
No primeiro trimestre de 2011, 35% dos smartphones vendidos eram
Android, contra 19% do iOS, da Apple
http://www.geektech.com.br/?p=116
33. Lojas de Aplicativos para Dispositivos Móveis (App Stores)
Modelo Antigo (antes das App Stores)
Desenvolvedor /
Publisher / Grande Empresa Operadoras
Pequena Empresa
A porcentagem final para o desenvolvedor independente ou
pequena empresa acabava sendo menor que 20% do total.
34. Lojas de Aplicativos para Dispositivos Móveis (App Stores)
Novo Modelo (era das App Stores)
Desenvolvedor / Loja de aplicativos do
Empresa Fabricante ou Operadora
A porcentagem final para o desenvolvedor independente ou
empresa agora gira em torno de 70% do total.
35. Apple App Store
Loja de aplicativos para iOS (iPod, iPhone e iPad) gerenciada
pela Apple e disponível através dos próprios aparelhos.
Lançada em julho de 2008;
340 mil aplicativos e 10 bilhões de downloads até
janeiro de 2011;
Disponível em cerca de 90 países;
Share de 70% Desenvolvedor e 30% Apple;
Desenvolvedor paga inscrição e anuidade no valor
de U$ 99,00.
36. Google Android Market
Loja de aplicativos para Android gerenciada pela Google e
disponível através dos próprios aparelhos.
Lançado em outubro de 2008;
Mais de 200 mil aplicativos e 3 bilhões de
downloads até janeiro de 2011;
Disponível em cerca de 48 países;
Share de 70% Desenvolvedor e 30% Google;
Desenvolvedor paga taxa única de inscrição no
valor de U$ 25,00.
37. Comparativo Android Market X Apple App Store
Dados referentes ao ano de 2009, quando a distância entre
Android Market e a Apple App Store ainda era muito grande.
38. Comparativo Android Market x Apple App Store
A média de downloads da Apple App Store é superior a do Android
Market, bem como a porcentagem de usuários que compram aplicações
(dados de 2009).
39. Nokia Ovi Store
Loja de aplicativos para dispositivos Nokia (Symbian, QT, Flash
Lite e JavaME) e disponível através dos próprios aparelhos.
Lançada em maio de 2009;
50 mil aplicativos e média de 3 milhões de
downloads por dia (janeiro de 2011);
Disponível em mais de 200 países;
Share de 70% Desenvolvedor e 30% Nokia;
Desenvolvedor paga taxa única de inscrição
de apenas 1 (um) euro.
43. Mercado de Apps:
In-App Billing é uma tendência
Jogos e aplicativos são gratuitos à priori, embora vários
recursos possam ser comprados dentro do próprio app.
44. Android Market oferece serviço de In-App Billing
Pode-se vender conteúdo digital dentro do aplicativo, como
itens ou fases de jogos e funcionalidades extras para
aplicativos. O share é de 70% para o desenvolvedor e 30% para
a Google em cima do valor da venda.
45. Google App Inventor for Android
Criação de aplicações para Android visualmente, sem a
necessidade de escrever código.
46. Google App Inventor for Android
Orientado a blocos, basta definir as suas propriedades visuais e
as suas ações para determinados eventos.
49. Definição do Android
Pilha de Software para Dispositivos Móveis que
inclui um Sistema Operacional, um Middleware e
aplicações-chave.
O Android SDK provê ferramentas e APIs para o
desenvolvimento de aplicações na plataforma
Android usando a linguagem de programação Java.
50. Recursos do Android
• Biblioteca Gráfica 2D e Suporte a 3D (OpenGL ES);
• SQLite;
• Mídias diversas (MPEG-4, H.264, MP3, AAC, AMR, JPG, PNG, GIF);
• Bluetooth, EDGE, 3G e WiFi (dependente do hardware);
• Câmera, GPS, Bússola e Acelerômetro (dependente do hardware);
• Desenvolvimento: Android Development Tools (ADT) para Eclipse.
53. História do Android – 2005 a 2007
Julho de 2005: Google comprou a
startup Android;
Novembro de 2007: Google anunciou a
Open Handset Alliance (OHA) e o
Android;
Ainda nesse mês, liberou a primeira
versão do Android SDK.
54. História do Android - 2008
Outubro de 2008: Android se torna
Open Source;
Ainda nesse mês, lançado o primeiro
smartphone com Android: o HTC G1;
Lançado o primeiro Android Developer
Phone (ADP), baseado no G1.
55. História do Android - 2009
Julho de 2009: HTC Hero, concorrente
direto do iPhone;
Novembro de 2009: Motorola Droid, 1
milhão de unidades em pouco mais de
dois meses;
Chegou no Brasil como Motorola
Milestone e foi sucesso de vendas.
56. História do Android - 2010
Em 2010, dezenas de ótimos
smartphones Android foram lançados;
Setembro de 2010: Samsung Galaxy Tab,
primeiro tablet a concorrer com o iPad;
Dezembro de 2010: Quarto ADP
lançado, o Samsung Nexus S.
57. História do Android - 2011
Lançamento dos primeiros tablets com o
Android 3 (Honeycomb);
Gingerbread parece ser o fim da linha para
smartphones Android 2.x;
Anúncio do Android Market para Google TV
(Android 3.1);
Possível lançamento do Ice Cream Sandwich
(Android 4) + quinto ADP, o Nexus Prime.
59. Android 1.1 (fevereiro de 2009)
• Aplicativos e funcionalidades básicas
Android 1.5 Cupcake (maio de 2009)
• Interface remodelada
• Gravação de vídeos
• Conexão Bluetooth Automática
• Upload de vídeos para YouTube e Picasa
• Copiar e Colar
Android 1.6 Donut (setembro de 2009)
• Novo Android Market
• Integração de câmera e galeria
• Busca por gestos e voz
60. Android 2.0/2.1 Eclair (outubro de 2009)
• Suporte avançado para múltiplas resoluções e telas
• Suporte ao Exchange
• Live wallpapers
Android 2.2 Froyo (maio de 2010)
• Flash 10
• Desempenho bastante otimizado (até 5x)
• Hotspot para até 8 aparelhos
• Salvar aplicativos no cartão de memória
• Discagem por bluetooth
Android 2.3 Gingerbread (dezembro de 2010)
• Suporte a NFC
• Teclado multitouch
• Suporte a SIP
• Gerenciador de Downloads
• Suporte a câmera frontal e vídeo-conferência
61. Pacote android.nfc
NFC (Near Field Communication) Permite a comunicação entre dispositivos (iniciador e alvo) com
distância de centímetros. O alvo é uma tag RFID ou peer-to-peer.
Pagamento pelo celular Troca de informações
Chaves Ingressos para shows
62. SIP (Session Initiation Protocol)
Pacote android.net.sip
Android provê uma API que permite a realização de
chamadas através do protocolo SIP. Pode ser usado para
videochamadas ou mensageiros instantâneos.
63. Novos recursos para o Usuário
Novidades do Android 3 Sistema remodelado e otimizado para os tablets
• System Bar
• Action Bar
• 5 Homes Customizáveis
• Aplicações recentes
64. Novos recursos para o Usuário
Novidades do Android 3
• Novo Teclado
• Manipulação de Textos
• Mais conectividade
• Aplicações-chave melhores
65. Novos recursos para o Usuário
Novidades do Android 3 Aplicações-chave foram aperfeiçoadas
66. Novos recursos para o Desenvolvedor
Novidades do Android 3 Novo framework de UI, refinado para tablets
• Fragmentos
• Widgets remodelados
• Action Bar customizável
• Notificações mais ricas
• Seleção múltipla, clipboard
e recurso de drag-and-drop
67. Novidades do Android 3 Novos recursos para o Desenvolvedor
• Novo e flexível Framework de animação
• Aceleração gráfica 2D por hardware
• Renderscript (engine 3D)
• Suporte a múltiplos processadores
• HTTP Live streaming (M3U)
• Framework de DRM
• Transferência de arquivos de mídia (MTP/PTP)
• Mais opções de conectividade
• Segurança para ambientes corporativos
• Compatibilidade com aplicações existentes
68. Novo Android Market
Google Movies, Books e Music Google, como já fazia a Apple, passa a oferecer não só Apps,
como também livros, músicas e aluguel de filmes.
69. Cartões de Crédito, Cupons, Documentos e até
Google Wallet (Android 2.3+) chaves no seu smartphone
76. Google TV terá Android Market ainda em 2011
Desenvolvedores poderão distribuir seus aplicativos para serem
executados na Google TV, que terá Android Market embutido.
Google TV (Android 3.1)
Google TV Google TV Remote
(iOS / Android)
77. Não tem touch, mas tem teclado.
Google TV (Android 3.1)
App “Google TV Only”
Caso se declare a tag abaixo, o App NÃO
aparecerá no Google TV Market.
87. Arquitetura do Android
Applications
Conjunto de aplicações-chave nativas do Android, incluindo um cliente
de e-mail, gerenciador de SMS, calendário, mapa, navegador,
gerenciador de contatos e outros. Todas essas aplicações foram escritas
em Java.
Application Framework
Desenvolvedores tem acesso completo às mesmas APIs que as
aplicações-chave. O framework provê um conjunto de Views que podem
ser utilizados para construir a interface da aplicação, incluindo listas,
tabelas, caixas de texto, botões e até mesmo um browser embutido.
Disponibiliza também Content Providers que permitem o acesso a dados
de outras aplicações (como o gerenciador de Contatos). Há, ainda, o
Resource Manager (provê acesso a recursos como imagens e arquivos
de layout), o Notification Manager (permite que a aplicação mostre
avisos personalizados) e o Activity Manager (gerencia o ciclo de vida da
aplicação e a sua navegação).
88. Arquitetura do Android
Libraries
Conjunto de bibliotecas C/C++ utilizadas por vários componentes do
Android. Essas bibliotecas provêem recursos que são expostos aos
desenvolvedores através de sua camada sobrejacente: Application
Framework.
Android Runtime
Cada aplicação no Android roda em um processo diferente no Linux e
para cada processo é criada uma instância da máquina virtual Dalvik.
Essa máquina virtual foi criada de forma que um dispositivo possa
executar múltiplas instâncias de forma eficiente.
As classes compiladas da aplicação são transformadas para o formato
.dex (Dalvik Executable), otimizado para uma mínima utilização de
memória. A Dalvik VM interage diretamente com o kernel Linux para
execução de funcionalidades subjacentes como tratamento de
concorrência e gerenciamento de memória.
89. Noções sobre aplicações Android
As aplicações são escritas em Java e o seu código compilado,
juntamente com os recursos que a aplicação utilizada, são
empacotados em um arquivo .apk pela ferramenta aapt. É
esse arquivo .apk que é usado para distribuir a aplicação e
instalá-la nos dispositivos Android;
Por padrão, cada aplicação é executada como um processo
separado, com ID único e máquina virtual própria, isolando o
seu código das demais aplicações.
90. Componentes da Aplicação
Um recurso fundamental do Android é o reuso de componentes. Caso uma
aplicação precise disponibilizar uma lista de imagens com scrolling e outra
aplicação apresenta tal componente e o disponibilizou para as demais, pode-
se invocar esse componente.
Devido a essa organização dos aplicativos em componentes, as aplicações
Android não possuem um único ponto de entrada (não há um método main(),
por exemplo). Ao invés disso, as aplicações apresentam componentes
essenciais que o sistema pode instanciar e executar quando necessário. Esses
componentes podem ser de quatro tipos:
Activities (apresenta uma interface visual para o usuário)
Services (roda em segundo plano por um período de tempo indeterminado)
Broadcast Receivers (recebe e reage a eventos do sistema)
Content providers (dados do aplicativo disponíveis para os demais)
91. Ativando e desativando componentes
Content Providers são ativados por meio de uma requisição de um
ContentResolver. Os demais componentes (Activities, Services e Broadcast
Receivers) são ativados por mensagens assíncronas denominadas intents. Trata-
se de um objeto da classe Intent que armazena o conteúdo da mensagem. Para
activities e services, o objeto apresenta o nome da ação que está sendo
requisitada bem como o endereço do dado em que atuará, além de outras coisas.
No caso de uma Activity, por exemplo, pode conter uma requisição para
apresentar uma imagem ao usuário ou permitir que o usuário edite algum texto.
Já para Broadcast Receivers, o objeto Intent pode anunciar que um botão da
câmera foi pressionado, por exemplo.
Content Provider e BroadCast Receiver não precisam ser desativados, uma vez
que permanecem ativos somente enquanto estão respondendo requisições.
Já Activities e Services podem permanecer em execução por um longo
período de tempo, daí a necessidade de finalizá-los através dos métodos
finish() e stopSelf(), respectivamente.
92. Activities
O componente mais comum de uma aplicação é um Activity. É implementado
como uma subclasse de Activity e uma aplicação pode conter uma ou mais
activities. Cada qual representa uma interface visual e uma delas é marcada
como sendo a inicial que deve ser apresentada quando a aplicação é iniciada.
Mover-se de uma Activity para outra consiste em fazer com que a Activity atual
invoque a próxima.
Cada Activity possui uma janela padrão para
O visual da janela é composto
desenhar. Normalmente a janela ocupa a tela
por uma hierarquia de views,
toda mas também pode ser menor e flutuar
objetos derivados da classe
sobre outras janelas. Uma Activity pode
base View. As views também
conter janelas adicionais, como por exemplo
são responsáveis por
um dialog que exige uma resposta do usuário
responder às ações do usuário
ou mostra um aviso quando um dado item é
direcionadas ao seu espaço.
selecionado.
93. Activities e Tasks
Conforme dito anteriormente, uma Activity pode iniciar outra, inclusive uma que
pertença a outro aplicativo. Por exemplo: uma aplicação deseja mostrar o mapa
de algum local. Já existe uma Activity que o faz, então tudo o que a sua Activity
precisa fazer é chamar o método startActivity() passando como parâmetro o
objeto da classe Intent com as informações necessárias. O mapa será mostrado e,
quando o usuário pressionar a tecla voltar, sua Activity será mostrada novamente
na tela.
Para o usuário, isso é transparente. O Android mantém ambas as activities na
mesma Task. Uma Task, para o usuário, é como se fosse uma aplicação.
Tecnicamente é um grupo de Activities relacionadas que foram adicionadas
em uma pilha. A base da pilha é a primeira Activity que é mostrada quando a
Task é iniciada, enquanto que o topo é a Activity que está sendo executada no
momento, ou seja, que está recebendo o foco das ações do usuário.
94. Ciclo de vida de uma Activity
Basicamente, uma Activity possui
três estados:
Ativo: quando a Activity está
no topo da pilha (visível na
tela e recebendo as ações do
usuário);
Pausado: quando a Activity
perdeu o foco mas
permanece visível ao usuário.
Ou seja, há outra Activity no
topo que é transparente ou
não ocupa toda a tela;
Parado: quando a Activity
está ofuscada por outra.
Mantém o estado mas pode
ser eliminada pelo sistema
em caso de falta de memória.
96. Services
Diferentemente de activities, os services não possuem interface e executam em
segundo plano por um período de tempo indeterminado. Cada serviço é uma
classe que herda de Service.
Um exemplo clássico de Service é um tocador
de músicas. A aplicação deve consistir de uma
ou mais activities que permitem ao usuário
selecionar as músicas e começar a tocá-las.
Contudo, a execução das músicas em si não
faz parte da Activity mas sim de um Service,
uma vez que o usuário espera que a música
continue a ser tocada após sair da tela.
98. Broadcast Receivers
Componente que recebe e reage a anúncios de broadcast, geralmente oriundos
do sistema. Cada receiver é uma classe que herda de BroadCastReceiver.
Mudança no fuso horário, anúncio de bateria
fraca e mudança da linguagem por parte do
usuário são exemplos de anúncios que podem
ser capturados por Broadcast Receivers.
Uma aplicação pode conter quantos
receptores quiser. Os receptores podem
iniciar uma Activity ou utilizar o
NotificationManager para alertar o usuário
(acender a luz do aparelho, vibrar, executar
um som, etc).
99. Ciclo de vida de Broadcast Receivers
Quando uma mensagem de broadcast chega ao receptor, o Android invoca o
método onReceive(), passando como parâmetro um objeto Intent contendo a
mensagem.
O Broadcast Receiver fica ativo apenas enquanto está executando esse método.
100. Content Providers
Componente que torna um conjunto específico de dados da aplicação disponível
para outras aplicações. Cada provider é uma classe que herda de ContentProvider
e disponibiliza um conjunto padrão de métodos para que outras aplicações
possam recuperar e armazenar dados do tipo que o provedor controla.
As aplicações não podem acessar
os métodos de um Content
Provider diretamente. Para isso,
elas precisam de um objeto
ContentResolver, o qual pode
conversar com qualquer Content
Provider.