You are on page 1of 100

Erisvaldo Gadelha Saraiva Jnior

Faculdade de Tecnologia de Joo Pessoa (FATEC-JP) Especializao em Desenvolvimento para Dispositivos Mveis Disciplina: Tecnologias para Dispositivos Mveis

Android
E-mail: erisvaldojunior@gmail.com Site: http://erisvaldojunior.com Twitter: @erisvaldojunior

Sobre mim

Empreendedor Yupi Studios (http://yupistudios.com);

Desenvolvedor Mobile (LAViD); Mestrando em Informtica (UFPB); Analista de Sistemas (Cehap).

Sobre a Yupi Studios

www.yupistudios.com

Games (MinerMan)

Aplicativos (Pump Me Up!)

Solues Corporativas (Cardpio Digital)

O que ser exposto na aula?

Conceitos Introdutrios;
Organize with Sections

Mercado Mobile; Expor as Tecnologias e Tendncias; Introduzir o Android e preparar o ambiente de desenvolvimento.

Era da Computao Ubqua

Conceitos Introdutrios

Computao Mvel / Pervasiva / Ubqua

Conceitos Introdutrios

Computao Mvel / Pervasiva / Ubqua

Conceitos Introdutrios

Computao em Nuvem (Cloud Computing)

Conceitos Introdutrios

Computao em Nuvem (Cloud Computing)

Conceitos Introdutrios

Conceitos Introdutrios

Realidade Aumentada

Roteiro da Aula

VISO GERAL DO MERCADO

PLATAFORMAS E TENDNCIAS

A PLATAFORMA ANDROID

Entendendo o Mundo da Mobilidade

VISO GERAL DO MERCADO

Nmeros do Mercado Mobile no Brasil e no Mundo

O Mercado Mobile

Organize with Sections

Mercado brasileiro de telefonia mvel; Nmeros do mercado internacional; Mercado de jogos (Brasil e mundo).

Celulares no Brasil (2007 a 2009)

Market Share das operadoras no Brasil (2007 a 2009)

Mercado brasileiro de celulares (2010) 202 milhes 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%

Celulares no mundo (2000 a 2009)

Principais mercados de celular no mundo (2008 e 2009)

Operadoras de telefonia no mundo (2008 e 2009)

Market Share dos fabricantes (2005 a 2007)

Market Share dos fabricantes (2009 e 2010)

Mercado americano de jogos para dispositivos mveis

Mercado mundial de jogos para dispositivos mveis

Gartner

Plataformas e Tendncias

Plataformas de Mobilidade e Tendncias do Mercado

SOs para Desenvolvimento (no Presente)

iOS
RIM PALM OS Windows Mobile

Android
SYMBIAN MAEMO

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.

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).

Plataformas para Desenvolvimento (no Presente)

JavaME

Flash Lite PyS60 BREW

JavaME

Quase 2 bilhes de aparelhos;

Grande comunidade de desenvolvedores;


Atingiu 95% dos aparelhos em 2007.

Comparativo entre JavaME e Flash Lite

Comparativo entre Tecnologias

SOs para Desenvolvimento (Apostas para o Futuro)

BADA

MeeGo

Windows Phone 7

Mercado Mobile em 2010 (Diviso dos SOs)

Organize with Sections

Segundo a AdMob, dados de 2010, o Android ocupa a segunda posio entre os sistemas operacionais para smartphone no mundo, possuindo 26% do mercado e atrs apenas do iOS, que detm 40%.

Mercado Mobile em 2010 (Crescimento dos SOs)

Organize with Sections

Um aspecto interessante, porm, o crescimento do Android no mercado. O SO vem em uma ascendente contnua, ao contrrio do iOS, que vem oscilando, e do Symbian OS, que perdeu mercado.

Mercado Mobile em 2010 (Diviso dos Fabricantes)

Organize with Sections

A AdMob tambm mostra que a Apple (aparelhos iOS) possui a maior fatia de smartphones do mercado. A Nokia (aparelhos Symbian e Maemo) detm a segunda posio.

Android deve superar iOS em breve


Vrias pesquisas e especialistas apontam que o Android deve se tornar mais popular que o iOS nos prximos anos.

Organize with Sections

Android deve superar sistema operacional do iPhone em 2012, diz estudo. http://www.tecnologia3g.com.br/site/pt/page/noticias_detalhe.asp?cod=261 Android a plataforma que mais cresce, diz consultoria http://tecnologia.ig.com.br/noticia/2010/11/03/android+e+a+plataforma+que +mais+cresce+diz+consultoria+9956087.html Co-fundador da Apple (Steve Wozniak) acredita que Android ganhar corrida entre smartphones http://olhardigital.uol.com.br/produtos/digital_news/co-fundador-da-appleacredita-que-android-ganhara-corrida-entre-smartphones/14935 Demanda por desenvolvedores Android cresceu 710% em um ano http://imasters.com.br/noticia/18931/carreira/demanda_por_desenvolvedore s_android_cresceu_710_em_um_ano/

Lojas de Aplicativos para Dispositivos Mveis (App Stores)


Modelo Antigo (antes das App Stores)
Desenvolvedor / Pequena Empresa
Publisher / Grande Empresa Operadoras

A porcentagem final para o desenvolvedor independente ou pequena empresa acabava sendo menor que 20% do total.

Lojas de Aplicativos para Dispositivos Mveis (App Stores)


Novo Modelo (era das App Stores)
Desenvolvedor / Empresa
Loja de aplicativos do Fabricante ou Operadora

A porcentagem final para o desenvolvedor independente ou empresa agora gira em torno de 70% do total.

Apple App Store


Loja de aplicativos para iOS (iPod, iPhone e iPad) gerenciada pela Apple e disponvel atravs dos prprios aparelhos.

Lanada em julho de 2008; 340 mil aplicativos e 10 bilhes de downloads at janeiro de 2011;

App Stores

Disponvel em cerca de 90 pases;

Share de 70% Desenvolvedor e 30% Apple;


Desenvolvedor paga inscrio e anuidade no valor de U$ 99,00.

Google Android Market


Loja de aplicativos para Android gerenciada pela Google e disponvel atravs dos prprios aparelhos.

Lanado em outubro de 2008;

Mais de 200 mil aplicativos e 3 bilhes de downloads at janeiro de 2011;

App Stores

Disponvel em cerca de 48 pases; Share de 70% Desenvolvedor e 30% Google; Desenvolvedor paga taxa nica de inscrio no valor de U$ 25,00.

Comparativo Android Market X Apple App Store


Dados referentes ao ano de 2009, quando a distncia entre Android Market e a Apple App Store ainda era muito grande.

Organize with Sections

Comparativo Android Market x Apple App Store


A mdia de downloads da Apple App Store superior a do Android Market, bem como a porcentagem de usurios que compram aplicaes (dados de 2009).

Organize with Sections

Nokia Ovi Store


Loja de aplicativos para dispositivos Nokia (Symbian, QT, Flash Lite e JavaME) e disponvel atravs dos prprios aparelhos.

Lanada em maio de 2009;

50 mil aplicativos e mdia de 3 milhes de downloads por dia (janeiro de 2011);

App Stores

Disponvel em mais de 200 pases;


Share de 70% Desenvolvedor e 30% Nokia; Desenvolvedor paga taxa nica de inscrio de apenas 1 (um) euro.

Comparao entre App Stores (custo para desenvolvedores)

Relao de App Stores (distimo.com)

In-App Payment uma tendncia


Jogos e aplicativos so gratuitos priori, embora vrios recursos possam ser comprados dentro do prprio aplicativo.

App Stores

A plataforma Android

Introduo ao Android, Arquitetura e Layouts

Definio do Android

Pilha de Software para Dispositivos Mveis que inclui um Sistema Operacional, um Middleware e aplicaes-chave. O Android SDK prov ferramentas e APIs para o desenvolvimento de aplicaes na plataforma Android usando a linguagem de programao Java.

Recursos do Android
Biblioteca Grfica 2D e Suporte a 3D (OpenGL ES 1.0);

SQLite;
Suporte a Mdias diversas (MPEG-4, H.264, MP3, AAC, AMR, JPG, PNG, GIF); Bluetooth, EDGE, 3G e WiFi (dependente do hardware);

Cmera, GPS, Bssola e Acelermetro (dependente do hardware);


Para desenvolvedores: Android Development Tools (ADT) Plugin para Eclipse.

Histria do Android

Julho de 2005: Google comprou a startup Android; Novembro de 2007: Google anunciou a Open Handset Alliance (OHA) e o Android; Ainda nesse ms, liberou a primeira verso do Android SDK.

Histria do Android

Outubro de 2008: Android se torna Open Source;


Ainda nesse ms, lanado o primeiro smartphone com Android: o HTC G1; Lanado o primeiro Android Developer Phone (ADP), baseado no G1.

Histria do Android

Julho de 2009: HTC Hero, concorrente direto do iPhone;

Novembro de 2009: Motorola Droid, 1 milho de unidades em pouco mais de dois meses;
Chegou no Brasil como Motorola Milestone e foi sucesso de vendas.

Histria do Android

Em 2010, dezenas de timos smartphones Android foram lanados;


Setembro de 2010: Samsung Galaxy Tab, primeiro tablet a concorrer com o iPad; Dezembro de 2010: Quarto ADP lanado, o Samsung Nexus S.

Verses do Android

AndroidManifest.xml

Android 1.1 (fevereiro de 2009)


Alarm Clock API Demos Browser Calculadora Camera Contatos Dev Tools Dialer Email Maps (e StreetView) Mensagem Msica Imagens (Galeria) Configuraes

Android 1.5 Cupcake (maio de 2009)

Grande evoluo na interface (UI), adicionando as seguintes novidades: Gravao de vdeos Bluetooth A2DP Conexo Bluetooth Automtica Upload de vdeos para YouTube e Picasa Copiar e Colar

Android 1.6 Donut (setembro de 2009)

O HTC Hero trazia essa verso, que incluia o novo Android Market, alm das seguintes melhorias:

Integrao de cmera, gravao de vdeos e galeria Busca por gestos e voz Integrao de aplicativos Grande melhoria no Text-To-Speech

Android 2.0/2.1 Eclair (outubro de 2009)

Uma das verses mais usadas at hoje. Desempenho otimizado Mais opes de tamanho e resoluo de tela UI bastante melhorada Suporte ao Exchange Live wallpapers Teclado virtual melhorado Bluetooth 2.1 Google Maps 3.1.2

Android 2.2 Froyo (maio de 2010)

Suporte completo ao Flash 10.1 Desempenho bastante otimizado (at 5x) Hotspot para at 8 aparelhos Home Screen melhorada (atalhos dedicados) Melhoria do Exchange Melhoria da cmera Salvar aplicativos no carto de memria Discagem por bluetooth

Android 2.3 Gingerbread (dezembro de 2010)

Melhoria do Copiar e Colar Interface melhorada Suporte a NTFC Teclado multitouch Suporte a SIP Gerenciador de Downloads Suporte a cmera frontal e vdeo-conferncia

Google App Inventor for Android

App Inventor for Android

Criao de aplicaes para Android visualmente, sem a necessidade de escrever cdigo.

Google App Inventor for Android

App Inventor for Android

Orientado a blocos, basta definir as suas propriedades visuais e as suas aes para determinados eventos.

Google App Inventor for Android

App Inventor for Android

Arquitetura do Android

Arquitetura do Android
Applications Conjunto de aplicaes-chave nativas do Android, incluindo um cliente de e-mail, gerenciador de SMS, calendrio, mapa, navegador, gerenciador de contatos e outros. Todas essas aplicaes foram escritas em Java.

Application Framework Desenvolvedores tem acesso completo s mesmas APIs que as aplicaes-chave. O framework prov um conjunto de Views que podem ser utilizados para construir a interface da aplicao, incluindo listas, tabelas, caixas de texto, botes e at mesmo um browser embutido. Disponibiliza tambm Content Providers que permitem o acesso a dados de outras aplicaes (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 aplicao mostre avisos personalizados) e o Activity Manager (gerencia o ciclo de vida da aplicao e a sua navegao).

Arquitetura do Android
Libraries Conjunto de bibliotecas C/C++ utilizadas por vrios componentes do Android. Essas bibliotecas provem recursos que so expostos aos desenvolvedores atravs de sua camada sobrejacente: Application Framework.

Android Runtime Cada aplicao no Android roda em um processo diferente no Linux e para cada processo criada uma instncia da mquina virtual Dalvik. Essa mquina virtual foi criada de forma que um dispositivo possa executar mltiplas instncias de forma eficiente. As classes compiladas da aplicao so transformadas para o formato .dex (Dalvik Executable), otimizado para uma mnima utilizao de memria. A Dalvik VM interage diretamente com o kernel Linux para execuo de funcionalidades subjacentes como tratamento de concorrncia e gerenciamento de memria.

Noes sobre aplicaes Android


As aplicaes so escritas em Java e o seu cdigo compilado, juntamente com os recursos que a aplicao utilizada, so empacotados em um arquivo .apk pela ferramenta aapt. esse arquivo .apk que usado para distribuir a aplicao e instal-la nos dispositivos Android;

Por padro, cada aplicao executada como um processo separado, com ID nico e mquina virtual prpria, isolando o seu cdigo das demais aplicaes.

Componentes da Aplicao
Um recurso fundamental do Android o reuso de componentes. Caso uma aplicao precise disponibilizar uma lista de imagens com scrolling e outra aplicao apresenta tal componente e o disponibilizou para as demais, podese invocar esse componente.

Devido a essa organizao dos aplicativos em componentes, as aplicaes Android no possuem um nico ponto de entrada (no h um mtodo main(), por exemplo). Ao invs disso, as aplicaes apresentam componentes essenciais que o sistema pode instanciar e executar quando necessrio. Esses componentes podem ser de quatro tipos:
Activities (apresenta uma interface visual para o usurio)
Services (roda em segundo plano por um perodo de tempo indeterminado) Broadcast Receivers (recebe e reage a eventos do sistema) Content providers (dados do aplicativo disponveis para os demais)

Ativando e desativando componentes


Content Providers so ativados por meio de uma requisio de um ContentResolver. Os demais componentes (Activities, Services e Broadcast Receivers) so ativados por mensagens assncronas denominadas intents. Tratase de um objeto da classe Intent que armazena o contedo da mensagem. Para activities e services, o objeto apresenta o nome da ao que est sendo requisitada bem como o endereo do dado em que atuar, alm de outras coisas. No caso de uma Activity, por exemplo, pode conter uma requisio para apresentar uma imagem ao usurio ou permitir que o usurio edite algum texto. J para Broadcast Receivers, o objeto Intent pode anunciar que um boto da cmera foi pressionado, por exemplo.

Content Provider e BroadCast Receiver no precisam ser desativados, uma vez que permanecem ativos somente enquanto esto respondendo requisies. J Activities e Services podem permanecer em execuo por um longo perodo de tempo, da a necessidade de finaliz-los atravs dos mtodos finish() e stopSelf(), respectivamente.

Activities
O componente mais comum de uma aplicao um Activity. implementado como uma subclasse de Activity e uma aplicao 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 aplicao iniciada. Mover-se de uma Activity para outra consiste em fazer com que a Activity atual invoque a prxima.

Cada Activity possui uma janela padro para desenhar. Normalmente a janela ocupa a tela toda mas tambm pode ser menor e flutuar sobre outras janelas. Uma Activity pode conter janelas adicionais, como por exemplo um dialog que exige uma resposta do usurio ou mostra um aviso quando um dado item selecionado.

O visual da janela composto por uma hierarquia de views, objetos derivados da classe base View. As views tambm so responsveis por responder s aes do usurio direcionadas ao seu espao.

Activities e Tasks
Conforme dito anteriormente, uma Activity pode iniciar outra, inclusive uma que pertena a outro aplicativo. Por exemplo: uma aplicao deseja mostrar o mapa de algum local. J existe uma Activity que o faz, ento tudo o que a sua Activity precisa fazer chamar o mtodo startActivity() passando como parmetro o objeto da classe Intent com as informaes necessrias. O mapa ser mostrado e, quando o usurio pressionar a tecla voltar, sua Activity ser mostrada novamente na tela.

Para o usurio, isso transparente. O Android mantm ambas as activities na mesma Task. Uma Task, para o usurio, como se fosse uma aplicao. 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 aes do usurio.

Ciclo de vida de uma Activity


Basicamente, uma Activity possui trs estados:
Ativo: quando a Activity est no topo da pilha (visvel na tela e recebendo as aes do usurio); Pausado: quando a Activity perdeu o foco mas permanece visvel ao usurio. Ou seja, h outra Activity no topo que transparente ou no ocupa toda a tela; Parado: quando a Activity est ofuscada por outra. Mantm o estado mas pode ser eliminada pelo sistema em caso de falta de memria.

Ciclo de vida de uma Activity

Services
Diferentemente de activities, os services no possuem interface e executam em segundo plano por um perodo de tempo indeterminado. Cada servio uma classe que herda de Service.

Um exemplo clssico de Service um tocador de msicas. A aplicao deve consistir de uma ou mais activities que permitem ao usurio selecionar as msicas e comear a toc-las. Contudo, a execuo das msicas em si no faz parte da Activity mas sim de um Service, uma vez que o usurio espera que a msica continue a ser tocada aps sair da tela.

Ciclo de vida de um Service

Broadcast Receivers
Componente que recebe e reage a anncios de broadcast, geralmente oriundos do sistema. Cada receiver uma classe que herda de BroadCastReceiver.

Mudana no fuso horrio, anncio de bateria fraca e mudana da linguagem por parte do usurio so exemplos de anncios que podem ser capturados por Broadcast Receivers. Uma aplicao pode conter quantos receptores quiser. Os receptores podem iniciar uma Activity ou utilizar o NotificationManager para alertar o usurio (acender a luz do aparelho, vibrar, executar um som, etc).

Ciclo de vida de Broadcast Receivers

Quando uma mensagem de broadcast chega ao receptor, o Android invoca o mtodo onReceive(), passando como parmetro um objeto Intent contendo a mensagem.

O Broadcast Receiver fica ativo apenas enquanto est executando esse mtodo.

Content Providers
Componente que torna um conjunto especfico de dados da aplicao disponvel para outras aplicaes. Cada provider uma classe que herda de ContentProvider e disponibiliza um conjunto padro de mtodos para que outras aplicaes possam recuperar e armazenar dados do tipo que o provedor controla.

As aplicaes no podem acessar os mtodos de um Content Provider diretamente. Para isso, elas precisam de um objeto ContentResolver, o qual pode conversar com qualquer Content Provider.

Como o Android suporta mltiplas telas?

Suporte a Mltiplas Telas

Desde o Android 1.6, a plataforma prov suporte a mltiplos tamanhos de tela e resolues, adequando-se aos muitos tipos e tamanhos de dispositivos com Android. Assim, a partir do Android 1.6, a plataforma divide a infinidade de tamanhos de tela e resolues suportadas em:
Um conjunto de trs tamanhos: large, normal e small; Um conjunto de trs densidades: hdpi (high), mdpi (medium) e ldpi (low).

Dessa forma, a aplicao pode prover layouts e imagens para qualquer um desses trs conjuntos, sem a necessidade de trabalhar com o tamanho fsico real da tela do aparelho. Em tempo de execuo, o Android carrega o conjunto adequado de recursos, baseado no dispositivo em questo.

Suporte a Mltiplas Telas

Suporte a Mltiplas Telas

Suporte a Mltiplas Telas

Organizao de pastas de layout e imagens para uma aplicao que, em tese, suporta todos os tamanhos de telas e resolues.

Views e ViewGroups em Android


Em Android, todos os componentes de interface grfica so representados por subclasses de android.view.View que representam os componentes grficos como TextView, Button, TextEdit, RadioButton, CheckBox, etc. Alm da classe android.view.ViewGroup, que representa um container de views e tambm de ViewGroups. Ela a classe base para componentes de layouts, como LinearLayout, RelativeLayout, AbsoluteLayout, FrameLayout, TableLayout, etc.

Hierarquia de classes de UI

Layouts e Layout Params em Android


Para que os componentes possam ser acomodados de acordo com o layout de seu pai, os mesmos devem manter uma relao de obedincia. Sendo assim, cada filho deve configurar os seus parmetros de layouts, por meio da classe ViewGroup.LayoutParams, que permite que estes determinem suas propriedades de posio e tamanho referente ao layout de seus pais.

LinearLayout
O layout bsico, padro quando da gerao de um .XML de layout no Android, o LinearLayout. Como o prprio nome diz, ele dispe os componentes linearmente em uma unica direo definida pelo atributo android:layout_orientation.

LinearLayout e LayoutParams

android:layout_gravity: similar ao float do CSS, o gravity define a posio do contedo do LinearLayout na tela, podendo-se usar top, bottom, left, right, center, center_vertical, center_horizontal, etc. Pode-se usar combinaes atravs do conector |. Por exemplo: bottom | right. android:layout_weight: indica quanto do espao extra no LinearLayout ser alocado para a viso associada aos LayoutParams. Ou seja, pode-se dividir a tela entre os layouts atribuindo a cada um deles um peso que define qual deles ter maior espaamento e, casa todos tenham o mesmo peso, a tela dividida igualmente.

Aplicao de peso (weight) em um componente do LinearLayout

LinearLayout (Cdigo)

FrameLayout
Arranja seus filhos de acordo com uma pilha de componentes que so adicionados, sendo que o topo da pilha contm o objeto que foi adicionado por ltimo. Pode-se usar quando se tem vrias imagens e uma sobreposta pela outra (como um slide de imagens) conforme vo sendo adicionadas.

Criando uma pilha de componentes com FrameLayout

Sobreposio de componentes com FrameLayout

FrameLayout (Cdigo)

Nota: O FrameLayout usado comumente a partir de uma de suas subclasses, tais como ImageSwitcher, ViewAnimator, ViewSwitcher, ScrollView, TabHost, etc.

AbsoluteLayout
Implementa um plano cartesiano e posiciona os componentes em coordenadas X, Y de forma absoluta.

Posicionando componentes no AbsoluteLayout

AbsoluteLayout (Cdigo)

RelativeLayout
Os componentes so ajustados atravs de relacionamentos entre si ou ao seu pai.

RelativeLayout (Cdigo)

TableLayout
Comporta seus filhos em linhas e colunas. Cada filho representado por um TableRow (uma espcie de LinearLayout na horizontal) que permite que uma ou ais clulas sejam adicionadas horizontalmente, sendo que cada clula pode conter um nico View.

TableLayout (Cdigo)

Whats Your Message? OBRIGADO!

You might also like