You are on page 1of 37

Universidade Federal do Maranhão – UFMA

Programa de Pós-graduação em Engenharia de Eletricidade – PPGEE


Área de Concentração: Ciência da Computação
Disciplina: Introdução a Computação Móvel
Professor: Dr. Francisco José da Silva e Silva

PLATAFORMA ANDROID
Ariel Soares Teles
arielsoaresteles@gmail.com
Agenda
✔ Conceitos
✔ Principais Características Técnicas
✔ Arquitetura
✔ Blocos de Construção (de uma aplicação)
✔ Ciclo de Vida (Aplicação e Atividade)
✔ Como desenvolver para Android?
✔ Exemplo Simples de Aplicação
✔ Referências
23/09/2010 Plataforma Android 2
O que é o Android?
● É uma plataforma de software de código aberto que
inclui um sistema operacional para dispositivos
móveis baseado em Linux;
● É uma plataforma completa para dispositivos móveis,
e inclui:
● Sistema Operacional (Kernel GNU Linux)
● Middleware
● Aplicações
● Android surgiu da parceria da Google com a Open
Handset Alliance (OHA), aliança onde figuram os
principais atores do mercado móvel mundial.
23/09/2010 Plataforma Android 3
Open Handset Alliance
● Criada e fundada pela Google, nasceu para o
desenvolvimento e implementação do Android em
terminais móveis;
● Atualmente é formada por mais de 30 organizações do
setor móvel, com o objetivo de acelerar as inovações nas
comunicações móveis e oferecer a seus consumidores um
melhor serviço;
● Dentre as empresas que a formam estão:
● Fabricantes de Dispositivos Móveis – Samsung, LG, HTC, Motorola...
● Fabricantes de Componentes – Texas Instruments, Intel, Nvidia...
● Fabricantes de Software – PV, Ebay, Esmertec...
● Operadoras Móveis de todo mundo – T-Mobile. Italia Telecom, China Mobile...
● Empresas de Comercialização – Aplix, Noser, Systems...
23/09/2010 Plataforma Android 4
Filosofia de Desenvolvimento
● Android nasceu com uma filosofia de código aberto;
● A ideia é que programadores de todo o mundo contribuam
de maneira livre e constante com o seu desenvolvimento;
● É liberado também para que os fabricantes desenvolvam
aplicações específicas para seus telefones;
● É importante ressaltar que não é pelo fato da licença ser
de código aberto que os desenvolvedores não cobrem
pelos programas que venham a desenvolver.

23/09/2010 Plataforma Android 5


Principais Características Técnicas
● Baseado em Linux, onde todos os serviços básicos, como
gerenciamento de drivers, memória e segurança, estão
baseados nesse SO de código aberto;
● Dalvik é o nome da máquina virtual onde executam as
aplicações;
● Ela é otimizada para requerer pouca memoria e poder usar
várias instancias simultaneamente sem que o dispositivo fique
lento;
● Os executáveis tem uma extensão .dex, que é uma versão
otimizada do .class;
● A linguagem em que se programa é Java (estratégia da Google).

23/09/2010 Plataforma Android 6


Principais Características Técnicas
● Navegador web integrado, baseado no projeto open source
Webkit – o mesmo do iPhone e Nokia série 60;
● Ele é de código aberto;
● Atua como base para varias aplicações que existem atualmente no
mercado, como o navegador Safari.
● Utiliza o SQLite para armazenamento de dados estruturados;
● Já vem incluído na SDK;
● Pode acessar totalmente as suas classes;
● É possível utilizar também outros BDs.
● Bluetooth, EDGE, 3G e WiFi: foco nas principais tecnologias de
transmissão de dados sem fio;
● Câmera e GPS: Ter o celular como uma ferramenta para interação
com redes sociais;
23/09/2010 Plataforma Android 7
Principais Características Técnicas
● Biblioteca de gráficos otimizada para
dispositivos móveis: biblioteca para gráficos 2d
e 3d baseada na especificação OpenGL ES
1.0;
● Suporte multimídia: compatibilidade com os
principais formatos existentes, dentre eles:
mpeg4, mp3, aac, amr, jpg, png e gif.
● Telefonia com tecnologia GSM: As aplicações
podem manipular operações telefônicas, caso
o fabricante permita esse acesso;
23/09/2010 Plataforma Android 8
Principais Características Técnicas
● Framework de desenvolvimento de aplicações:
● Reutilização de código;
● Facilidade de acesso a recursos exclusivos e
manutenção;
● Ambiente de desenvolvimento com plugin para
Eclipse, incluindo:
● Emulador;
● Ferramentas para debug e supervisão de memória
e desempenho.

23/09/2010 Plataforma Android 9


23/09/2010 Plataforma Android 10
Arquitetura do Android
● A arquitetura da plataforma Android é dividida
em quatro camadas:
● Kernel GNU Linux;
● Bibliotecas.
● Framework para aplicações;
● As próprias aplicações;
● Além da porção runtime, necessária para a
execução dos aplicativos no dispositivo.

23/09/2010 Plataforma Android 11


23/09/2010 Plataforma Android 12
Linux Kernel
● A camada mais baixa da arquitetura, Kernel Linux, é a
responsável por gerenciar:
● Processos e threads;
● Memória;
● Arquivos e pastas
● Redes;
● Drivers dos dispositivos;
● Energia.
● Os drivers de dispositivo fornecidos incluem Display,
câmera, teclado, WiFi, memória Flash, áudio, etc.

23/09/2010 Plataforma Android 13


Android Runtime
● A base de desenvolvimento do Android é Java,
porém não existe uma JVM e sim outra maquina
virtual, a Dalvik, otimizada para interpretar códigos
em dispositivos móveis;
● Ao compilar o bytecode (.class), este é convertido
para o formato específico da máquina virtual Dalvik,
o .dex (Dalvik Executable), que representa a
aplicação compilada;
● Depois da aplicação Android ter sido compilada é
gerado um arquivo único, neste caso com a
extensão .apk (Android Package File).
23/09/2010 Plataforma Android 14
Native Libraries
● A camada de Bibliotecas é formada por um
conjunto de bibliotecas escritas em C/C++;
● Tudo disponível para os desenvolvedores
através do Framework de aplicações;
● Entre as mais importantes encontra-se o
SQLite, OpenGL, WebKit, FreeType, Secure
Sockets Layer (SSL) e as bibliotecas de mídia
que permitem reproduzir arquivos de áudio,
vídeo e imagem.

23/09/2010 Plataforma Android 15


Java SDK
● O Framework é uma base para as aplicações, onde os
desenvolvedores tem acesso completo;
● Pensando na reutilização dos componentes, uma aplicação
pode capturar funcionalidades de outra criada anteriormente
para o seu desenvolvimento;
● Nele estão inclusos:
● Telephony manager: gerência de hardware do dispositivo;
● View system: conjunto de telas (componentes gráficos) para
desenvolver uma aplicação;
● Content providers: dados que são compartilhados entre várias
aplicações, como por exemplo, a agenda;
● Resource Manager: administrador de recursos que permite acessar a
recursos como Strings, gráficos, arquivos de layout;
23/09/2010 Plataforma Android 16
Java SDK
● Notification Manager: administrador de notificações
para mostrar alertas. As aplicações podem adicionar
eventos numa barra de de notificações;
● Activity Manager: administrador de atividades. Este
gerencia o ciclo de vida das aplicações e da
navegação entre elas;
● Location Manager: serviço de localização. Permite o
celular receber avisos, notificações, eventos, etc. de
um lugar específico ou de sua localização atual;
● Serviço XMPP. Envio de mensagens para aplicações
entre terminais Android. Pode ser utilizado entre jogos
multiusuário, por exemplo.
23/09/2010 Plataforma Android 17
Applications
● Conjunto de aplicações do Android, dentre as
básicas encontra-se um navegador Web, um
cliente de e-mail, um calendário, entre outras;
● Todas feitas em linguagem Java.

23/09/2010 Plataforma Android 18


Blocos de Construção
● Na hora de desenvolver aplicações, estes são
construídos com baseados em blocos de
construção básicos, onde se pode citar os mais
importantes:
● Activity;
● Intent e IntentReceiver;
● Service;
● Content Provider.
● Nem todas aplicações necessitam de todos os
blocos.
23/09/2010 Plataforma Android 19
Activity
● É o mais utilizado;
● Uma definição para este bloco seria uma tarefa que é executada
com a aplicação e tem uma interação com o usuário;
● Se implementa extendendo a classe “activity” e cada uma delas
tem um processo de vida próprio;
● Funcionamento:
● A maioria das aplicações tem telas múltiplas e cada vez que se adiciona
uma nova, a anterior é retirada e guardada numa pilha;
● Graças a essa pilha o usuário pode navegar “para trás” pelas activities
que estão ativas;
● Se o Android considerar melhor, pode priorizar ou excluir uma activity
da pilha por questões de memória;
● Exemplo: Mensagem SMS x Calculadora.
23/09/2010 Plataforma Android 20
Intent
● Intent é um pedido para realizar uma ação;
● É como “fazer uma tentativa de algo” ou dizer
“quero fazer uma coisa”;
● É um evento genérico de uma aplicação, criado
por ela mesma;
● Pode ser um evento predefinido pelo Android,
como fazer chamada, abrir um navegador, enviar
um e-mail;
● Intent é necessário para navegar entre as telas de
uma aplicação.
23/09/2010 Plataforma Android 21
IntentReceiver
● Um IntentReceiver é chamado para executar
uma aplicação, por um Intent de outra
aplicação que já está em execução;
● Diferentemente de um Intent, a aplicação não
tem que está em execução para que execute
um IntentReceiver;
● Ou seja, o usuário não tem que está interagindo
com o programa no momento da chamada de um
IntentReceiver.

23/09/2010 Plataforma Android 22


Service
● Um serviço é equivalente a uma Daemon ou
serviço de um sistema operacional tradicional;
● É executado em background sem necessidade
de interagir com o usuário.

23/09/2010 Plataforma Android 23


Content Provider
● Um provedor de conteúdo é usado quando os
dados de uma aplicação são compartilhados
com outras;
● Essa classe implementa um conjunto de
métodos padrões para as aplicações que
compartilham dados armazenados e extraem a
informação que contém no Content Provider.

23/09/2010 Plataforma Android 24


Ciclo de Vida de uma Aplicação
● No Android é o sistema que determina o cliclo de vida de
uma aplicação e não ela mesma;
● Ou seja, ele determina sua duração baseado nas partes
da aplicação que estão rodando no momento e a
importância destas para o usuário e na memória
disponível;
● Ele classifica os processos de maneira hierárquica de
acordo com sua importância num determinado momento
para o sistema, da seguinte maneira:
● Foreground process: processo em primeiro plano no qual o
usuário pode está interagindo, utiliza uma Activity e o sistema
só o “mata” em última opção – alta prioridade;
23/09/2010 Plataforma Android 25
Ciclo de Vida de uma Aplicação
● Visible process: é um processo que utiliza uma Activity,
mas não está em primeiro plano, apesar de visível;
● Um exemplo sería uma tela lançada como diálogo, onde se
interage com ele, mas se continua vento a tela principal por trás.
● Este tipo de processo também tem prioridade e só é eliminado
em estados de memória muito crítico, igual um Foreground
process.
● Background process: processo que utiliza uma Activity, mas
não está visível na tela;
● Ou seja, se esse processo for morto não terá uma repercussão
direta para o usuário.

23/09/2010 Plataforma Android 26


Ciclo de Vida de uma Aplicação
● Empty process: processo que não utiliza nenhum
componente visualmente ativo;
● O sistema os eliminará com frequência e pode mantê-los vivos
se haver memória suficiente para melhor o tempo de ativação
de outro componente dessa aplicação.
● É importante ressaltar que Activity, IntentReceiver e
Services influenciam de maneira importante no tempo de
execução das aplicações;
● Possíveis erros no uso deste podem fazer que processos
importantes para o usuário finalizem antes do tempo.

23/09/2010 Plataforma Android 27


Ciclo de Vida de uma Atividade (Activity)
● Parecido com o ciclo de vida de uma aplicação,
porém trabalha com uma “pilha de activities”;
● Nela o sistema empilha exclusivamente activities que
estão em execução;
● Quando se muda de uma Activity para outra, a nova
Activity que é criada, é colocada na parte superior da
pilha e passa a ser a Activity que executa nesse
momento, enquanto a anterior fica por baixo na pilha;
● Com isso, deve-se preocupar para que a Activity
principal que está no topo da pilha não seja
eliminada (morta) da pilha.
23/09/2010 Plataforma Android 28
Ciclo de Vida de uma Atividade (Activity)
● Uma Activity pode ter quatro estados, de acordo com sua
interação com o usuário:
● Ativa ou em execução: ocorre quando a Activity está em execução
na parte superior da pilha, sendo a última Activity criada pela
aplicação e última que o sistema tentará eliminar;
● Em pausa: ocorre quando a Activity deixa de ser a principal, mas
ainda continua visível na tela. Isto é possível em activities
transparentes que deixam ver a inferior. Ela continua viva
mantendo toda informação do usuário;
● Parada: diferencia de pausa por não ser visível na tela. Continua
mantendo toda informação do usuário, mas pode ser eliminada
pelo sistema para liberar memória;
● Eliminada: Activity “morta” caso o sistema necessite de memória ou
simplesmente porque a aplicação tenha pedido.
23/09/2010 Plataforma Android 29
23/09/2010 Plataforma Android 30
23/09/2010 Plataforma Android 31
Ciclo de Vida
● Se pode ver que o ciclo de vida de uma
aplicação está diretamente relacionado com o
ciclo de vida de uma Activity, dando prioridade
para os processos que tem pelo menos uma
ativa;
● Conclui-se então que o Android considera com
prioridade aqueles processos que o usuário
está interagindo e faz o possível para que não
seja afetado em estados críticos de memória.

23/09/2010 Plataforma Android 32


O que é necessário para desenvolver
para a plataforma Android?
● JDK;
● Eclipse;
● Android SDK;
● Plug-in ADT (Android Development Tools) para
o Eclipse;
● Configuração de variáveis de ambiente.

23/09/2010 Plataforma Android 33


Exemplo Simples
● Localizador GPS

23/09/2010 Plataforma Android 34


Referências
● Rick Rogers, John Lombardo, Zigurd Mednieks, and
Blake Meike. Android Application Development. First
Edition. USA, Sebastopol, CA. O’Reilly Media, Inc., 2009.
● Judit Balaguero Peña. Trabalho de Conclusão de Curso:
Ingeniería Técnica de Telecomunicaciones, especialidad
Telemática. Estudio de la plataforma Android.
Orientador: Antoni Oller Arcas. 2008
● Ed Burnette. Hello, Android: Introducing Google’s
Mobile Development Platform. 3rd Edition. The
Pragmatic Bookshelf Raleigh, USA, 2010.
● Sayed Hashimi, Satya Komatineni and Dave MacLean.
Pro Android 2. USA, 2010.
23/09/2010 Plataforma Android 35
Dúvidas?

Perguntas?

Sugestões?

23/09/2010 Plataforma Android 36


Obrigado ! ! !

23/09/2010 Plataforma Android 37

You might also like