Anda di halaman 1dari 73

Android

www.venturus.org.br

Objetivo
 O mini-curso tem por objetivo apresentar os conceitos bsicos da plataforma Android, familiarizando os alunos com o ambiente de desenvolvimento.

Agenda
        Introduo Arquitetura e conceitos bsicos Interfaces grficas Emulao e degugging Broadcast Receiver Service Handler Content provider

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Frederico Gonalves

Introduo

O que Android?
 Android uma plataforma de software para dispositivos mveis
 Criada pela Open Handset Alliance, um conjunto de empresas lideradas pela Google  Objetivo de acelerar a inovao e oferecer aos consumidores uma experincia mais rica  A plataforma Android foi publicada como cdigo aberto em 2008

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Frederico Gonalves

Evoluo
 Android evoluiu rapidamente desde seu lanamento
 Diversos fabricantes adotaram a plataforma: HTC, Samsung, Motorola, Sony Ericsson, LG, Dell, Acer, etc.  Google esperava em torno de 18 modelos at o fim de 2009  Hoje j so mais de 50 modelos
http://en.wikipedia.org/wiki/List_of_Android_devices

HTC Wildfire
VNT/PQ:111

Sony Ericsson X10


Rev. B

Nexus One

Motorola DEXT

LG GW620

Acer A1

Data: 23/06/2010

Preparado por: Frederico Gonalves

Android e as demais plataformas mveis

Android Market
 Desenvolvedores podem publicar e vender suas aplicaes no Android Market
 Taxa de registro de U$25,00  Desenvolvedor recebe 70%, operadora 30% e Google 0%

 Android Market com 70.000 aplicaes, 60% gratuitas


http://www.androlib.com

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Frederico Gonalves

Arquitetura e conceitos bsicos

A plataforma Android
 Android uma plataforma de software para dispositivos mveis que inclui:
 Sistema operacional;  Middleware;  Aplicaes chave.

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Frederico Gonalves

Arquitetura

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Frederico Gonalves

Linux Kernel
 Android utiliza um kernel Linux que abstrai o sistema do hardware do dispositivo
 Responsvel por tarefas bsicas do sistema
 Gerenciamento de memria, processos, threads, sistema de arquivos, redes, drivers, etc.

 Baseado na verso Linux 2.6


 Com modificaes especficas para atender requisitos de uma plataforma mvel  No suporta conjunto padro de bibliotecas de uma distribuio Linux convencional

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Frederico Gonalves

Libraries
 O prximo nvel, acima do kernel, composto por bibliotecas nativas
 As bibliotecas so escritas em C ou C++ e compiladas para o hardware especfico do dispositivo  Oferecem funes comuns do sistema
     
VNT/PQ:111 Rev. B

Surface manager: gerenciamento do display Media Framework: para suporte a audio e video SQL Lite: para persistncia de informaes OpenGL: para renderizaode conteto 3D WebKit: para renderizao de contedo web ...
Data: 23/06/2010 Preparado por: Frederico Gonalves

Run time
 Inclui a mquina virtual e bibliotecas Java bsicas
 Mquina virtual Dalvik, implementada pela Google, otimizada para execuo em dispositivos mveis
 Executa classes Java compiladas para o formato Dalvik Executable (.dex)  Toda aplicao executada em seu prprio processo e instncia da mquina virtual

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Frederico Gonalves

Application Framework
 Conjunto de APIs que abstraem detalhes do sistema
 Aplicaes instalveis tem acesso as mesmas APIs utilizadas pelas aplicaes pr-instaladas  Arquitetura projetada para simplificar o reuso de componentes
 Qualquer aplicao pode publicar suas capabilities que podero ser usadas por outras aplicaes

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Frederico Gonalves

Aplicaes
 Aplicaes so escritas na linguagem Java
 O cdigo Java compilado, assim como os recursos da aplicao, compactado num arquivo .apk  O arquivo .apk pode ser instalado nos dispositivos mveis  Cada .apk representa uma aplicao nica

 Android inclui algumas aplicaes bsicas


 Email, calendrio, mapas, contatos, browser, etc.

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Frederico Gonalves

Desenvolvimento nativo
 Tarefas com requisitos crticos de performance podem ser implementadas em cdigo nativo
 Aplicaes Java podem acessar rotinas nativas, no possvel desenvolver aplicaes apenas nativas
 Rotinas nativas desenvolvidas em C ou C++ e acessveis ao Java utilizando JNI (Java Native Interface)

 Uso de rotinas nativas deve ser tratado com parcimnia


 Complexidade da soluo pode no resultar em melhora da performance  Operaes de consumo intenso de CPU, como processamento de sinais, so candidatos
VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonalves

Ferramentas de desenvolvimento
 Android SDK prov ferramentas e APIs necessrias para o desenvolvimento de aplicaes em Java
 SDK disponvel para Windows, Mac OS e Linux
http://developer.android.com/sdk/index.html

 ADT Plugin para Eclipse IDE permite a criao de um ambiente integrado pada desenvolvimento de aplicaes http://developer.android.com/sdk/eclipse-adt.html  Android NDK para desenvolvimento de operaes nativas
http://developer.android.com/sdk/ndk/index.html#overview
VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonalves

Componentes bsicos de aplicaes


 Activity: representa uma tela ou janela da interface de usurio. Composta por objetos grficos, Views, organizados hierarquicamente  Service: executa tarefa em background , sem interao direta do usurio  BroadcastReceiver: recebem a notificaes do sistema e/ou aplicaes  ContentProviders: disponibilizam dados para outras aplicaes

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Frederico Gonalves

Ciclo de vida de uma activity


 Running: activity est executando em primeiro plano com foco  Paused: activity est em segundo plano, sem foco, mas visvel  Stoped: activity no est visvel, pode potencialmente ser destruda pelo sistema
onResume() onStart() onRestart()

Starting
onCreate() onStart() onResume()

Running

onPause()

onResume()

Stoped

onStop()

Paused

onDestroy() <<Process Killed>>

<<Process Killed>>

Destroyed

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Frederico Gonalves

Reuso de componentes
 Uma aplicao pode fazer uso de componentes de outras aplicaes
 Cdigo do componente no incorporado pela aplicao cliente  O sistema inicia uma aplicao quando um de seus componentes for necessrio  Aplicaes Android no tem um ponto de entrada nico

 Componentes devem ser declarados ao sistema


 Arquivo de projeto AndroidManifest.xml

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Frederico Gonalves

Estrutura de um projeto

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Frederico Gonalves

Interfaces Grficas

Activity, View, Layout


 Criao de tela
 arquivo XML (abordado neste curso);  classes da API Java similar ao Swing;

 Activity (android.app.Activity)
 representa uma tela da aplicao;  trata os eventos gerados nessa tela (ex: pressionamento de um boto);  deve implementar o mtodo onCreate(bundle);  deve ser declarada no arquivo AndroidManifest.xml;

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Activity, View, Layout


 View (android.view.View) Componente
 elementos visuais da tela (ex: boto, caixa de texto, checkbox, imagem, ...);  Criao esttica ou dinmica;

 setContentView(view)
 elo de ligao entre a activity e a view;  parmetro: view que ser exibida na tela;  chamada: mtodo onCreate(bundle) da activity;

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Activity, View, Layout


 Gerenciadores de layout
 organiza a disposio dos componentes na tela;  layouts:  AbsoluteLayout;  FrameLayout;  LinearLayout;  TableLayout;  RelativeLayout.

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Activity, View, Layout


 Principais layouts (API Demos > Views > Layouts)
 AbsoluteLayout
 componentes so posicionados por meio das coordenadas X (android:layout_x) e Y (android:layout_y);

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Activity, View, Layout


 Principais layouts (API Demos > Views > Layouts)
 FrameLayout
 mais comum e simples;  utilizado por um componente que precisa preencher a tela inteira;

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Activity, View, Layout


 Principais layouts (API Demos > Views > Layouts)
 LinearLayout (mais utilizado)
 permite organizar os componentes na vertical ou horizontal;

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Activity, View, Layout


 Principais layouts (API Demos > Views > Layouts)
 TableLayout
 utilizado para organizar os componentes em uma tabela com linhas e colunas;

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Activity, View, Layout


 Principais layouts: TableLayout

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Activity, View, Layout


 Principais layouts (API Demos > Views > Layouts)
 RelativeLayout
 um componente posicionado relativamente a outro (acima, abaixo, do lado, ...);  os componentes devem possuir um ID;

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Activity, View, Layout


 Principais layouts: Relative Layout

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Activity, View, Layout


 Principais layouts
 pode-se utilizar mais de um layout na mesma tela

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Emulao e debugging

Ferramentas
      adb (Android Debug Bridge); LogCat; Debugger; DDMS (Dalvik Debug Monitor Service); Hierarchy viewer; Trace View.

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Comandos adb (Android Debug Bridge)


 Ferramenta de depurao;  Faz parte do SDK do Android;  Permite gerenciar e controlar o estado do emulador ou do dispositivo conectado por cabo USB;

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Comandos adb (Android Debug Bridge)


 Listar os emuladores/dispositivos
 adb devices

 Instalar aplicativo
 adb install <nome_do_aplicativo>.apk

 Desinstalar aplicativo
 adb uninstall <nome_do_aplicativo>.apk

 Encerrar o adb corrente


 adb kill-server

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Comandos adb (Android Debug Bridge)


 Enviar um arquivo para o emulador/dispositivo
 adb push [caminho_arquivo_local] [pasta_destino_emulador_dispositivo]
adb push c:\temp\arquivo.txt /data/local/tmp

 Fazer o download de um arquivo que est no emulador/dispositivo


 adb pull [pasta_origem_emulador_dispositivo] [caminho_arquivo_local] adb pull /data/local/tmp c:\temp\arquivo.txt

 Obter informao de Debug


 adb logcat

http://www.androidpt.info/index.php?title=ADB
VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Esther M. de Freitas

Debug utilizando mensagens de log


 Classe Log
    

Log.e( ): Erros (errors) Log.w( ): Advertncias (warnings) Log.i( ): Informao (information) Log.d( ): Depurao (debugging) Log.v( ): Verboso, prolixo (verbose)

 Utilizar LogCat para visualizar o log


 Eclipse > Window > Show View > Other > Android > LogCat  adb logcat

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Debug utilizando Debugger


 Eclipse debugger
 Definir breakpoints, visualizar o estado do aplicativo, .

 Habilitar o projeto para ser depurado


 android:debuggable= true

AndroidManifest.xml

 Depurar no Eclipse
 clicar com o boto direito sobre o projeto > Debug As > Android;  selecionar o boto bug na barra de ferramentas > escolher o aplicativo apropriado;

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Debug utilizando Debugger


 Depurar no Eclipse
 no menu, selecionar Run > Debug;  clicar com o boto direito sobre o projeto > Debug As > Debug Configurations

 Abrir janela de debug


 Eclipse > Window > Open Perspective > Debug

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

DDMS (Dalvik Debug Monitor Service)


 Ferramenta localizada na pasta tools do SDK (ddms.bat);
    

controlar o emulador/dispositivo; simular o envio de uma mensagem SMS/Ligao; capturar imagem da tela do emulador/dispositivo; visualizar os logs da aplicao; analisar os processos, ...;

 Eclipse disponibiliza um plug-in para o DDMS (menos


recursos)  Eclipse Window Open perspective Other DDMS

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Hierarchy Viewer e Trace View


 Hierarchy Viewer (android > tools > hierarchyviewer.dat)
 representao visual da arquitetura dos layouts da View;  inspeo refinada do display (posicionamento dos objetos Pixel Perfect View);

 Trace View (android > tools > traceview.dat)


 identificar gargalos na aplicao;  interao entre os mtodos e tempo de execuo de cada um deles;

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Notification

Notification
 Usada para avisar o usurio sobre um evento que ocorreu na aplicao;  Usurio pode visualizar o seu contedo ou ignorar a mensagem;  Tipos
 Toast notification;  Dialog notification;  Status Bar notification;

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Notification
 Toast notification
 para exibir mensagens breves (ex: Arquivo Salvo );  mostrada na tela brevemente sobre a aplicao que est em foco;  aparece e desaparece automaticamente e no tem interao com o usurio.

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Notification
 Dialog notification
 janela pequena apresentada na frente da tela em foco;  apresenta mensagens relacionadas com a aplicao em execuo;  usos:
 apresentar uma barra de progresso;  mostrar uma mensagem que requer confirmao do usurio (ex: botes de Ok e Cancelar );

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Notification
 Status Bar notification
 cones/mensagens mostradas na barra de status do celular e mensagens expandidas na janela de notificaes;  pode ser configurada para alertar o usurio com som, acender as luzes e fazer o celular vibrar;  indicada quando a aplicao est executando em background (no est em foco) e o usurio precisa ser notificado sobre algum evento;
Barra de status com um cone de notificao Mensagem expandida na janela de Notificaes

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Broadcast Receiver

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Marcionlia F. Villefort

Broadcast Receiver
Broadcast receivers so componentes da aplicao que:  So disparados por eventos (intents) internos ou externos aplicao;  Rodam em segundo plano. Portanto, deve executar em no mximo 10 segundos. Caso contrrio, a plataforma informar ao usurio que a aplicao no est respondendo e dar opo para o usurio termin-la;  No tm interface grfica e no deve executar nenhuma tarefa que atualiza a UI da aplicao.
VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Marcionlia F. Villefort

Broadcast Receiver - Configurao


1. Via AndroidManifest.xml

2. Via cdigo

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Marcionlia F. Villefort

Broadcast Receiver Envio e Recebimento


1. Enviando broadcast

2. Recebendo broadcast

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Marcionlia F. Villefort

Broadcast Receiver Exemplo UI SMS

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/SmsMessageReceiver.html

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Marcionlia F. Villefort

Content Provider

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Marcionlia F. Villefort

Content Provider
Provedor de contedo pblico, isto , exporta sua base de dados de forma que suas informaes sejam acessadas de forma padronizada; Possui suporte nativo ao SQLite; Acesso feito atravs de uma URI imutvel.

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Marcionlia F. Villefort

Content Provider Provedores Nativos


Contacts URI:
content://contacts/people Contacts.People.CONTENT_URI

Gallery URI:
content://media/internal/images/media MediaStore.Images.Media.INTERNAL_CONTENT_URI

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Marcionlia F. Villefort

Content Provider - Operaes


Permite as seguintes operaes sobre os dados:
Consulta Insero Alterao Remoo

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Marcionlia F. Villefort

Service

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Marcionlia F. Villefort

Service
Servios so componentes da aplicao que:  Rodam em segundo plano por tempo indeterminado;  Podem rodar em processos separados da aplicao;  Expem suas funcionalidades para que outras aplicaes possam utiliz-las.

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Marcionlia F. Villefort

Service - Ciclo de Vida


 Podem ser iniciados via startService ou bindService ;  So destrudos quando no houver nenhuma atividade pendente ou cliente conectado.

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Marcionlia F. Villefort

Servios Locais e Remotos


 Servio local  Roda no mesmo processo que a aplicao, bem como todos os demais componentes que no exportam suas interfaces para outras aplicaes;  Servio remoto  Roda em outro processo;  Exporta uma interface AIDL ou faz uso do Messenger (Handler ou IBinder).

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Marcionlia F. Villefort

Servios Locais

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Marcionlia F. Villefort

Handler

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Marcionlia F. Villefort

Handler
 Mecanismo criado pela plataforma Android que facilita a implementao do padro produtorconsumidor;  Permite que mensagens geradas por outras threads sejam colocados em uma fila nica;  Executa na thread principal da aplicao;  As mensagens so consumidas conforme disponibilidade da thread principal.

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Marcionlia F. Villefort

Handler
H dois usos principais para um handler: 1. Agendar mensagens e tarefas para serem executadas em algum ponto no futuro, e 2. Enfileirar uma ao a ser executada em outra thread diferente da sua. Permite a comunicao com threads rodando em background. Em ambos os casos, o objeto enviado pode ser tratado: 1. To cedo quanto possvel; 2. Depois de decorrido um tempo estipulado.

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Marcionlia F. Villefort

Referncias Bibliogrficas
 Android Developers. Common Layout Objects. Disponvel em: http://developer.android.com/guide/topics/ui/layoutobjects.html. Acesso em: 18/06/2010.  Android Developers. Using the Dalvik Debug Monitor. Disponvel em: http://developer.android.com/guide/developing/tools/ddms.html . Acesso em: 21/06/2010.  Android Developers. Hierarchy Viewer. Disponvel em: http://developer.android.com/guide/developing/tools/hierarchyviewer.html. Acesso em 23/06/2010. Acesso em 23/06/2010.

Referncias Bibliogrficas
 Android Developers. Notifying the User. Disponvel em: http://developer.android.com/guide/topics/ui/notifiers/index.ht ml. Acesso em: 23/06/2010.  Wiki AndroidPT.com. ADB. Disponvel em: http://www.androidpt.info/index.php?title=ADB. Acesso em: 18/06/2010.  infiniteZest. Debugging an Android Application. Disponvel em: http://www.infinitezest.com/articles/debugging-an-androidapplication.aspx. Acesso em: 21/06/2010.

Referncias Bibliogrficas
 Botskool. Create Toast Notification in Android. Disponvel em: http://www.botskool.com/geeks/create-toast-notificationandroid. Acesso em: 23/06/2010.  LECHETA, Ricardo R. Google Android: Aprenda a criar aplicaes para dispositivos mveis com o Android SDK. So Paulo: Novatec Editora, 2009.  BURNETTE, Ed. Hello, Android: Introducing Google`s Mobile Development Plataform. Pragmatic Bookshelf, 2008.

Backup

Tamanho do mercado

Hierarchy Viewer
 Estrutura inicial

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Hierarchy Viewer
 Estrutura revisada

VNT/PQ:111

Rev. B

Data: 23/06/2010

Preparado por: Esther M. de Freitas

Anda mungkin juga menyukai