Anda di halaman 1dari 73

Erisvaldo Gadelha Saraiva Jnior

Faculdade iDEZ Curso de Ps-Graduao em Mobilidade e Sistemas Embarcados Disciplina: Plataformas Emergentes para Dispositivos Mveis

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

Sobre mim
Analista de Sistemas da Cehap (Companhia Estadual de Habitao Popular); Desenvolvedor Mobile e participante do projeto Ginga pelo LAViD (Laboratrio de Aplicaes de Vdeo Digital), situado na Universidade Federal da Paraba; Empreendedor da Yupi Studios (http://yupistudios.com), startup voltada para a criao de contedo criativo para dispositivos mveis;

Bacharel em Cincia da Computao pela Universidade Federal da Paraba e Tecnlogo em Sistemas para Internet pelo Instituto Federal de Educao, Cincia e Tecnologia.

Sobre a Yupi Studios

www.yupistudios.com

Games (MinerMan)

Aplicativos (Pump Me Up!)

Objetivo da Aula
Expor em detalhes o Sistema Operacional e o kit de desenvolvimento do Android, ressaltando as diferenas para os demais Sistemas Operacionais e plataformas para dispositivos mveis, o mercado de aplicaes e o ambiente de desenvolvimento.

Organize with Sections

O que o Android?
Sistema operacional para dispositivos mveis desenvolvido pela OHA (Open Handset Alliance), liderada pelo Google e com participao da HTC, Intel, Motorola, Qualcomm, T-Mobile e NVIDIA.
O Android atualmente se encontra na verso 2.x e baseado no Linux; O kit de desenvolvimento para Android (o Android SDK) est disponvel para Windows, Linux e Mac OS. A linguagem de programao utilizada no desenvolvimento para Android o Java e a IDE, o Eclipse (em conjunto com o plugin Android Development Tools). O desenvolvedor pode distribuir suas aplicaes atravs da loja de aplicativos Android Market, previamente instalada em todos os aparelhos com Android.

Introduo

Desenvolvendo para Android


Android SDK, Eclipse e Android Development Tools (ADT)

Introduo

Roteiro da Aula

MOTIVAO

O ANDROID

O AMBIENTE E EXEMPLOS

Desenvolvendo para Android

MOTIVAO

Por que desenvolver para Android?

Tecnologias para Desenvolvimento Mvel SOs do Momento Android iOS Outros SOs Blackberry OS Maemo Symbian Windows Mobile Palm OS

Plataformas JavaME Flash Lite PyS60 BREW

Tecnologias para Desenvolvimento Mvel

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.

Lojas de aplicativos para dispositivos mveis

Android Market
Loja de aplicativos para Android gerenciada pela Google e disponvel atravs dos prprios aparelhos.
Em outubro de 2008 foi lanado o Android Market, na qual o desenvolvedor paga uma taxa de 25 dlares para se registrar, define o preo final de suas aplicaes e recebe 70% do lucro total;

Motivao

A loja vem sendo um sucesso e, no momento, a principal concorrente da Apple App Store (primeira loja do gnero, lanada em julho de 2008). O Android Market est disponvel em cerca de cinquenta pases, com mais de 85 mil aplicaes, nmeros que crescem a cada dia;

O Android Market tem crescido a ritmo acelerado nos ltimos meses devido ao forte crescimento do Android. Algumas pesquisas apontam que a loja pode superar a concorrente da Apple em mdio prazo.

Comparativo Android Market X Apple App Store

Organize with Sections

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

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

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/

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

O Android

Conhecendo o sistema operacional Android e o seu kit de desenvolvimento

Recursos do Android
Em uma definio mais completa, o Android uma pilha de software para dispositivos mveis que inclui um SO, 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. Apresenta uma biblioteca grfica 2D bem como suporte a 3D baseado na especificao do OpenGL ES 1.0; SQLite para armazenamento estruturado de dados;

Suporte a mdias e formatos diversos de udio, vdeo e imagens (MPEG-4, H.264, MP3, AAC, AMR, JPG, PNG, GIF);
Suporte a Bluetooth, EDGE, 3G, e WiFi (dependente do hardware); Suporte a Cmera, GPS, Bssola e Acelermetro (dependente do hardware); Ambiente de desenvolvimento rico com EMULADOR, FERRAMENTAS de depurao e otimizao de performance e um PLUGIN para a IDE ECLIPSE.

Verses do 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)

O ambiente e exemplos

Desenvolvendo para Android

Ambiente de Desenvolvimento

O que necessrio?
Para configurar um ambiente de desenvolvimento Android, necessrio ter a ltima verso do JDK (Java Development Kit) instalado na mquina (seja em Windows, Linux ou Mac OS X). Em seguida, deve-se efetuar o download de:
Android SDK (http://developer.android.com/sdk); Eclipse IDE (http://www.eclipse.org/downloads).

A partir de ento, faz-se necessrio a instalao do plugin ADT (Android Development Tools) para o Eclipse. Para tal, deve-se acessar, dentro do gerenciador de plugins do Eclipse, o seguinte endereo: ADT Plugin para Eclipse (https://dl-ssl.google.com/android/eclipse).

Ambiente de Desenvolvimento

Adicionando plataformas Android


Uma vez instalado o ADT Plugin no Eclipse, faz-se necessrio adicionar as plataformas Android e demais componentes ao SDK.
Acessa-se o menu Window do Eclipse e, em seguida, Android SDK and AVD Manager. Seleciona-se Installed Packages e, finalmente, clica-se em Update All. Depois basta selecionar as plataformas e componentes desejados e efetuar o download.

Ambiente de Desenvolvimento

Adicionando AVDs (Android Virtual Devices)


Uma vez instalado o ADT Plugin e as plataformas desejadas, hora de adicionar pelo menos um AVD para que voc possa testar suas aplicaes.
Acessa-se o menu Window do Eclipse e, em seguida, Android SDK and AVD Manager. Seleciona-se Virtual Devices e, finalmente, clica-se em New. Depois basta configurar o dispositivo virtual conforme se deseja e ele estar disponvel para ser usado.

Criando um projeto Android

Estrutura de um projeto Android


Quando se cria um projeto com o ADT plugin, obtm-se a seguinte estrutura de pastas:

/ - Raiz do projeto. o src/ - Classes Java o gen/ - Cdigo Java gerado automaticamente. o res/ - Recursos da aplicao drawable/ - Imagens layout/ - Layouts de telas/formulrios. values/ - Arquivos de variveis. o AndroidManifest.xml - Configurao do projeto.

Criando um projeto Android

AndroidManifest.xml
Arquivo de configurao de uma aplicao Android. Identifica o nome e o cone da aplicao, declara os componentes, realiza a conexo com bibliotecas extras que a aplicao necessita (alm da biblioteca padro do Android), define a verso mnima do Android na qual a aplicao a pode ser executada e identifica quaisquer permisses que a aplicao espera obter.

Criando um projeto Android

Layout main.xml
A forma mais comum de esboar uma tela atravs de um arquivo de layout no formato XML. Esse arquivo determina o tipo de layout utilizado e declara os elementos de interface que compem a tela, correspondentes as classes View e suas subclasses.
Alm disso, a aplicao pode criar objetos View e ViewGroup (e manipular suas propriedades) em tempo de execuo, atravs de cdigo na Activity.

EXERCCIOS DE LAYOUT

Primeiro Exerccio

Alterar o layout main.xml para obter uma tela similar a esta imagem.

EXERCCIOS DE LAYOUT
Segundo exerccio: criar um layout linearlayout.xml de forma a confeccionar a tela abaixo.

EXERCCIOS DE LAYOUT
Terceiro exerccio: criar o layout complexo abaixo.

Criando apliaces simples

Primeira aplicao Criar uma aplicao com duas Activities e uma Dialog. Uma Activity chamada atravs do clique no primeiro boto e a Dialog atravs do clique no segundo boto.

Criando aplicaes simples

Primeira aplicao (FormActivity)

Criar o formulrio ao lado e mapear os campos do layout para a Activity.

Segunda Aplicao

Criando aplicaes simples

Criar a aplicao ao lado. Ao pressionar o boto, exibir um AlertDialog informando lcool ou Gasolina.

Whats Your Message? OBRIGADO!

Anda mungkin juga menyukai