Você está na página 1de 73

 

|||  

O
 

@ O mini-curso tem por objetivo apresentar os


conceitos básicos da plataforma Android,
familiarizando os alunos com o ambiente de
desenvolvimento.
 

@ 3ntrodução
@ Arquitetura e conceitos básicos
@ 3nterfaces gráficas
@ Emulação e degugging
@ Broadcast Receiver
@ Service
@ Handler
@ Content provider

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonçalves


3ntrodução
O     

@ Android é uma plataforma de software para


dispositivos móveis
@ Criada pela Open Handset Alliance, um conjunto de
empresas lideradas pela Google
@ Objetivo de acelerar a inovação e oferecer aos
consumidores uma experiência mais rica
@ A plataforma Android foi publicada como código
aberto em 2008

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonçalves




@ Android evoluiu rapidamente desde seu


lançamento
@ 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á são mais de 50 modelos
http://en.wikipedia.org/wiki/List_of_Android_devices

ë 
           

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonçalves


        
  

@ Desenvolvedores podem publicar e vender suas


aplicações no Android Market
@ Taxa de registro de U$25,00
@ Desenvolvedor recebe 70%, operadora 30% e Google 0%

@ Android Market com 70.000 aplicações, 60% gratuitas


http://www.androlib.com

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonçalves


Arquitetura e conceitos básicos
  

@ Android é uma plataforma de software para


dispositivos móveis que inclui:
@ Sistema operacional;
@ Middleware;
@ Aplicações chave.

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonçalves


 

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonçalves


*  

@ Android utiliza um kernel Linux que abstrai o


sistema do hardware do dispositivo
@ Responsável por tarefas básicas do sistema
@ Gerenciamento de memória, processos, threads,
sistema de arquivos, redes, drivers, etc.
@ Baseado na versão Linux 2.6
@ Com modificações específicas para atender requisitos
de uma plataforma móvel
@ Não suporta conjunto padrão de bibliotecas de
uma distribuição Linux convencional

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonçalves


*
 

@ O próximo nível, acima do kernel, é composto


por bibliotecas nativas
@ As bibliotecas são escritas em C ou C++ e compiladas
para o hardware específico do dispositivo
@ Oferecem funções comuns do sistema
@ Surface manager: gerenciamento do display
@ Media Framework: para suporte a audio e video
@ SQL Lite: para persistência de informações
@ OpenGL: para renderizaçãode conteúto 3D
@ WebKit: para renderização de conteúdo web
@ ...

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonçalves


½  

@ 3nclui a máquina virtual e bibliotecas Java


básicas
@ Máquina virtual Dalvik, implementada pela Google,
otimizada para execução em dispositivos móveis
@ Executa classes Java compiladas para o formato Dalvik
Executable (.dex)
@ Toda aplicação é executada em seu próprio processo e
instância da máquina virtual

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonçalves


   |

@ Conjunto de AP3s que abstraem detalhes do


sistema
@ Aplicações instaláveis tem acesso as mesmas AP3s
utilizadas pelas aplicações pré-instaladas
@ Arquitetura projetada para simplificar o reuso de
componentes
@ Qualquer aplicação pode publicar suas ͞capabilities͟
que poderão ser usadas por outras aplicações

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonçalves


 

@ Aplicações são escritas na linguagem Java


@ O código Java compilado, assim como os recursos da
aplicação, é compactado num arquivo ͞.apk͟
@ O arquivo .apk pode ser instalado nos dispositivos
móveis
@ Cada .apk representa uma aplicação única
@ Android inclui algumas aplicações básicas
@ Email, calendário, mapas, contatos, browser, etc.

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonçalves


Ñ   

@ Tarefas com requisitos críticos de performance


podem ser implementadas em código nativo
@ Aplicações Java podem acessar rotinas nativas, não é
possível desenvolver aplicações apenas nativas
@ Rotinas nativas desenvolvidas em C ou C++ e acessíveis
ao Java utilizando JN3 (Java Native 3nterface)
@ Uso de rotinas nativas deve ser tratado com
parcimônia
@ Complexidade da solução pode não resultar em
melhora da performance
@ Operações de consumo intenso de CPU, como
processamento de sinais, são candidatos

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonçalves


   

@ Android SDK provê ferramentas e AP3s


necessárias para o desenvolvimento de
aplicações em Java
@ SDK disponível para Windows, Mac OS e Linux
http://developer.android.com/sdk/index.html

@ ADT Plugin para Eclipse 3DE permite a criação de


um ambiente integrado pada desenvolvimento
de aplicações http://developer.android.com/sdk/eclipse-adt.html
@ Android NDK para desenvolvimento de
operações nativas
http://developer.android.com/sdk/ndk/index.html#overview

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonçalves



    

@ Activity: representa uma tela ou janela da


interface de usuário. Composta por objetos
gráficos, Views, organizados hierarquicamente
@ Service: executa tarefa em ͞background͟, sem
interação direta do usuário
@ BroadcastReceiver: recebem a notificações do
sistema e/ou aplicações
@ ContentProviders: disponibilizam dados para
outras aplicações

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonçalves


         

@ Running: activity está


executando em primeiro plano Starting
com foco
onCreate()
@ Paused: activity está em segundo onStart()
plano, sem foco, mas visível onResume()

@ Stoped: activity não está visível, onResume() Running


onPause()
pode potencialmente ser onStart()
destruída pelo sistema onRestart()
onResume()

Stoped Paused
onStop()

onDestroy() <<Process Killed>>


<<Process Killed>>
Destroyed

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonçalves


½  

@ Uma aplicação pode fazer uso de componentes


de outras aplicações
@ Código do componente não é incorporado pela
aplicação ͞cliente͟
@ O sistema inicia uma aplicação quando um de seus
componentes for necessário
@ Aplicações Android não 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 Gonçalves


   

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Frederico Gonçalves


3nterfaces Gráficas
    | *

@ Criação de tela
@ arquivo XML (abordado neste curso);
@ classes da AP3 Java similar ao Swing;
@ Activity (android.app.Activity)
@ representa uma tela da aplicação;
@ trata os eventos gerados nessa tela (ex: pressionamento
de um botão);
@ deve implementar o método onCreate(bundle);
@ deve ser declarada no arquivo AndroidManifest.xml;

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Esther M. de Freitas


    | *

@ View (android.view.View) у Componente


@ elementos visuais da tela (ex: botão, caixa de texto,
checkbox, imagem, ...);
@ Criação estática ou dinâmica;
@ setContentView(view)
@ elo de ligação entre a activity e a view;
@ parâmetro: view que será exibida na tela;
@ chamada: método onCreate(bundle) da activity;

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Esther M. de Freitas


    | *

@ Gerenciadores de layout
@ organiza a disposição 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


    | *

@ Principais layouts (AP3 Demos > Views > Layouts)


@ AbsoluteLayout
@ componentes são 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


    | *

@ Principais layouts (AP3 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


    | *

@ Principais layouts (AP3 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


    | *

@ Principais layouts (AP3 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


    | *

@ Principais layouts: TableLayout

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Esther M. de Freitas


    | *

@ Principais layouts (AP3 Demos > Views > Layouts)


@ RelativeLayout
@ um componente é posicionado relativamente a outro
(acima, abaixo, do lado, ...);
@ os componentes devem possuir um 3D;

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Esther M. de Freitas


    | *

@ Principais layouts: Relative Layout

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Esther M. de Freitas


    | *

@ 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


Emulação e debugging


@ 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


  
   Ñ
  

@ Ferramenta de depuração;
@ 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


  
   Ñ
  

@ Listar os emuladores/dispositivos
@ adb devices
@ 3nstalar 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


  
   Ñ
  

@ 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 informação de Debug


@ adb logcat
o!"##$$$%  !%  #  %!o!& ' (

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Esther M. de Freitas


Ñ

       

@ Classe Log
@ Log.e( ): Erros (errors)
@ Log.w( ): Advertências (warnings)
@ Log.i( ): 3nformação (information)
@ Log.d( ): Depuração (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


Ñ

    Ñ
 

@ 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 botão direito sobre o projeto > Debug As >
Android;
@ selecionar o botão ͞bug͟ na barra de ferramentas >
escolher o aplicativo apropriado;

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Esther M. de Freitas


Ñ

    Ñ
 

@ Depurar no Eclipse
@ no menu, selecionar Run > Debug;
@ clicar com o botão 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


ÑÑ Ñ  Ñ
    

@ Ferramenta localizada na pasta ͞tools͟ do SDK


(ddms.bat);
@ controlar o emulador/dispositivo;
@ simular o envio de uma mensagem SMS/Ligação;
@ capturar imagem da tela do emulador/dispositivo;
@ visualizar os logs da aplicação;
@ 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 (android > tools > hierarchyviewer.dat)


@ representação visual da arquitetura dos layouts da
View;
@ inspeção refinada do display (posicionamento dos
objetos ʹ Pixel Perfect View);
@ Trace View (android > tools > traceview.dat)
@ identificar gargalos na aplicação;
@ interação entre os métodos e tempo de execução de
cada um deles;

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Esther M. de Freitas


Notification
0   

@ Usada para avisar o usuário sobre um evento que


ocorreu na aplicação;
@ Usuário pode visualizar o seu conteúdo 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


0   

@ Toast notification
@ para exibir mensagens breves (ex: ͞Arquivo Salvo͟);
@ mostrada na tela brevemente sobre a aplicação que está
em foco;
@ aparece e desaparece automaticamente e não tem
interação com o usuário.

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Esther M. de Freitas


0   

@ Dialog notification
@ janela pequena apresentada na frente da tela em foco;
@ apresenta mensagens relacionadas com a aplicação em
execução;
@ usos:
@ apresentar uma barra de progresso;
@ mostrar uma mensagem que requer confirmação do
usuário (ex: botões de ͞Ok͟ e ͞Cancelar͟);

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Esther M. de Freitas


0   

@ Status Bar notification


@ ícones/mensagens mostradas na barra de status do
celular e mensagens expandidas na janela de notificações;
@ pode ser configurada para alertar o usuário com som,
acender as luzes e fazer o celular vibrar;
@ indicada quando a aplicação está executando em
background (não está em foco) e o usuário precisa ser
notificado sobre algum evento;

Barra de status com um Mensagem expandida


ícone de notificação na janela de
͞Notificações͟

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: Marcionília F. Villefort


  ½ 
Broadcast receivers são componentes da aplicação
que:
@ São disparados por eventos (intents) internos ou
externos à aplicação;
@ Rodam em segundo plano. Portanto, deve executar
em no máximo 10 segundos. Caso contrário, a
plataforma informará ao usuário que a aplicação não
está respondendo e dará opção para o usuário
terminá-la;
@ Não têm interface gráfica e não deve executar
nenhuma tarefa que atualiza a U3 da aplicação.

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Marcionília F. Villefort


  ½   
1. Via AndroidManifest.xml

2. Via código

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Marcionília F. Villefort


  ½ 
   ½

1. Enviando broadcast

2. Recebendo broadcast

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Marcionília F. Villefort


  ½ 
  

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: Marcionília F. Villefort


Content Provider

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Marcionília F. Villefort


  

— Provedor de conteúdo público, isto é, exporta sua


base de dados de forma que suas informações
sejam acessadas de forma padronizada;
— Possui suporte nativo ao SQLite;
— Acesso feito através de uma UR3 imutável.

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Marcionília F. Villefort


  
  0 
Contacts UR3: Gallery UR3:
content://contacts/people content://media/internal/images/media

Contacts.People.CONTENT_UR3 MediaStore.3mages.Media.3NTERNAL_CONTENT_UR3

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Marcionília F. Villefort


   O
Permite as seguintes operações sobre os dados:
— Consulta
— 3nserção
— Alteração
— Remoção

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Marcionília F. Villefort


Service

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Marcionília F. Villefort


 
Serviços são componentes da aplicação que:
@ Rodam em segundo plano por tempo
indeterminado;
@ Podem rodar em processos separados da aplicação;
@ Expõem suas funcionalidades para que outras
aplicações possam utilizá-las.

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Marcionília F. Villefort


      
@ Podem ser iniciados via ͞startService͟ ou
͞bindService͟;
@ São destruídos quando não houver nenhuma
atividade pendente ou cliente conectado.

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Marcionília F. Villefort


  *   ½

@ Serviço local
@ Roda no mesmo processo que a aplicação, bem
como todos os demais componentes que não
exportam suas interfaces para outras
aplicações;
@ Serviço remoto
@ Roda em outro processo;
@ Exporta uma interface A3DL ou faz uso do
Messenger (Handler ou 3Binder).

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Marcionília F. Villefort


  * 

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: Marcionília F. Villefort


Handler

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Marcionília F. Villefort


ë 

@ Mecanismo criado pela plataforma Android que


facilita a implementação do padrão produtor-
consumidor;
@ Permite que mensagens geradas por outras
threads sejam colocados em uma fila única;
@ Executa na thread principal da aplicação;
@ As mensagens são consumidas conforme
disponibilidade da thread principal.

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Marcionília F. Villefort


ë 
Há dois usos principais para um handler:
1. Agendar mensagens e tarefas para serem
executadas em algum ponto no futuro, e
2. Enfileirar uma ação a ser executada em outra
thread diferente da sua. Permite a comunicação
com threads rodando em background.

Em ambos os casos, o objeto enviado pode ser tratado:


1. Tão cedo quanto possível;
2. Depois de decorrido um tempo estipulado.

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Marcionília F. Villefort


Referências Bibliográficas
@ Android Developers.  * O
. Disponível em:
http://developer.android.com/guide/topics/ui/layout-
objects.html. Acesso em: 18/06/2010.

@ Android Developers.     Ñ  Ñ


   Disponível
em:
http://developer.android.com/guide/developing/tools/ddms.html
. Acesso em: 21/06/2010.

@ Android Developers. ë    | Disponível em:


http://developer.android.com/guide/developing/tools/hierarchy-
viewer.html. Acesso em 23/06/2010. Acesso em 23/06/2010.
Referências Bibliográficas
@ Android Developers. 0      Disponível em:
http://developer.android.com/guide/topics/ui/notifiers/index.ht
ml. Acesso em: 23/06/2010.

@ Wiki AndroidPT.com. Ñ . Disponível em:


http://www.androidpt.info/index.php?title=ADB. Acesso em:
18/06/2010.

@ infiniteZest. Ñ
        Disponível em:
http://www.infinitezest.com/articles/debugging-an-android-
application.aspx. Acesso em: 21/06/2010.
Referências Bibliográficas
@ Botskool.   0       Disponível em:
http://www.botskool.com/geeks/create-toast-notification-
android. Acesso em: 23/06/2010.

@ LECHETA, Ricardo R. [    ! Aprenda a criar aplicações


para dispositivos móveis com o Android SDK. São Paulo: Novatec
Editora, 2009.

@ BURNETTE, Ed. ë   ! 3ntroducing Google`s Mobile


Development Plataform. Pragmatic Bookshelf, 2008.
Backup
    
ë    |

@ Estrutura inicial

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Esther M. de Freitas


ë    |

@ Estrutura revisada

VNT/PQ:111 Rev. B Data: 23/06/2010 Preparado por: Esther M. de Freitas

Você também pode gostar