A plataforma Android: Uma Introdução Android - PUC-Rio

Propaganda
A plataforma Android: Uma
Introdução
© Markus Endler
Android
ƒ Iniciativa da Google de prover uma plataforma
aberta para Web móvel
ƒ Open
p Handset Alliance
ƒ Associação de um grupo bastante heterogêneo
de empresas (operadoras, fabricantes de celulares)
ƒ > 30 companhias
ƒ Força do projeto se baseia no conceito de
colaboração
ƒ Set
Set./08:
/08: Google anunciou o Andoid Market
para comercialização de aplicações
ƒ Set./08: É lançado G1
ƒ Primeiro dispositivo para plataforma Android
2
1
O que é Android?
ƒ
Pilha de softwares para dispositivos móveis:
ƒ
ƒ
ƒ
ƒ
Android SDK:
ƒ
ƒ
ƒ
ƒ
ƒ
Um sistema operacional
Um middleware
Conjunto de aplicações
Projetos
Ferramentas de desenvolvimento
Emulador
Conjunto de bibliotecas
Linguagem de programação:
ƒ Java
ƒ Máquina virtual:
ƒ Dalvik (Kernel GNU/Linux)
3
Android → Definição
Características
ƒ Application Framewok:
ƒ Permite o reuso e a substituição de componentes
ƒ Máquina virtual Dalvik:
ƒ Otimizada para dispositivos móveis
ƒ Um navegador integrado:
ƒ Baseado no projeto WebKit (código aberto)
ƒ Gráficos otimizados:
ƒ Bibliotecas gráficas 2D
ƒ Gráficos 3D baseado na especificação OpenGL 1.0
ƒ SQLite:
ƒ Para armazenamento de dados estruturados
ƒ Suporte para mídias:
ƒ Aúdio, vídeo, formatos de imagens (MPEG4, H.264, MP3, AAC, AMR,
JPG, PNG e GIF)
4
Android → Características
2
Características
ƒ Questões dependentes do hardware:
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
Telefonia
T
l f i GPRS/GSM e EDGE
Telefonia 3G
WiFi
Câmera
GPS
Bússola
Acelerômetro
5
Android → Características
Arquitetura
© Markus Endler
3
Aplicações
ƒ
ƒ
ƒ
ƒ
Cliente de email
Programa SMS
Calendário
Mapas
ƒ Navegador
ƒ Contatos
ƒ Entre outros.
7
Android → Arquitetura → Aplicações
Framework
ƒ
ƒ
ƒ
ƒ
ƒ
View
Content Providers
Resource Manager
Notification Manager
Activity Manager
8
Android → Arquitetura → Framework
4
Bibliotecas
Andróid inclui um conjunto de bibliotecas C/C++ usadas por
diversos componentes do sistema:
System C Library
Media Libraries
Surface Manager
LibWebCore
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
SGL
3D Libraries
FreeType
SQLite
9
Android → Arquitetura → Bibliotecas
Bibliotecas
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
System C library – uma implementação derivada da biblioteca C padrão
sistema (libc) do BSD adaptada para dispositivos rodando Linux.
Media Libraries – baseado no PacketVideo’s OpenCORE; as bibliotecas
suportam os mais populares formatos de audio e video, bem como
imagens estáticas.
Surface Manager –acesso ao subsistema de exibição bem como as
múltiplas camadas de aplicações 2D e 3D;
LibWebCore – um web browser engine utilizado no Android Browser
SGL – o engine de gráficos 2D
3D libraries – uma implementação baseada no OpenGL 1.0; as
bibliotecas utilizam aceleração 3D via hardware (quando disponível) ou o
software
ft
d
de renderização
d i
ã 3D altamente
lt
t otimizado
ti i d iincluído
l íd no A
Android.
d id
FreeType – renderização de fontes bitmap e vector
SQLite – um poderoso e leve engine de banco de dados relacional
disponível para todas as aplicações
© Markus Endler
5
Android Runtime
ƒ Aplicação Android:
ƒ É um processo Linux
ƒ Possui sua própria instância da máquina virtual
Dalvik
ƒ Executa arquivos .dex (ferramenta dx)
11
Android → Arquitetura → Android Runtime
Linux Kernel
ƒ Versão do kernel:
ƒ 2.6
ƒ O kernel atua como
uma camada de
abstração entre o
hardware e o resto da
pilha de software
ƒ Serviços:
ƒ Segurança
ƒ Gerenciamento de
memória
ƒ Gerenciamento de
processos
ƒ Pilha de protocolos de rede
ƒ Modelo de drives
12
Android → Arquitetura → Linux Kernel
6
Estrutura de uma aplicação Android
Existem 4(5) tipos básicos de elementos:
ƒ Activities
ƒ Intents e IntentFilters (e
( BroadcastReceivers))
ƒ Services
ƒ Content Providers
Nem toda aplicação precisa ter todos os tipos, mas terá
alguma combinação destes
destes.
Os componentes que compõem a aplicação são
declarados no arquivo AndroidManifest.xml.
© Markus Endler
Android Manifest
ƒ AndroidManifest.xml é necessário p/ cada aplicação.
ƒ Descreve os elementos da aplicação: (Activities,
Content Providers, Services, and Intent Receivers)
globalmente visíveis, as classes de implementação
de cada componente, e qual tipo de dado este pode
tratar, quando pode ser ativado, etc.
ƒ Compara-se cada Intent gerado com os Intentfilters
registrados para identificar qual é a atividade mais
apropriada
p p
p
para tratar este intent
ƒ Pode-se também descrever as permissões e
parâmetros de instrumentação
© Markus Endler
7
Tipos de Elementos
Activity = uma tela de sua aplicação; cada uma é uma
especialização da classe base Activity. Sua classe
será composta de views que respondem a eventos;
uma atividade pode retornar um valor para outra
atividade;
Intent = classe usada para passar o controle de uma
atividade para outra; um intent consiste de uma ação
(evento/requisição) e uma URI indicando um dado
sobre o qual a ação deve ser executada. Valores
comuns para ações:
õ
MAIN ((entrada
t d d
da aplicação),
li
ã )
VIEW, PICK, EDIT, etc.
ƒ Exemplo: para visualizar informação de contato criase um intent com açãoVIEW e a URI indicando os
dados associados a uma pessoa.
© Markus Endler
Tipos de Elementos
IntentFilter = desrição de quais intents uma Activity (ou
B d
BroadcastReceiver)
tR
i ) é capaz d
de ttratar
t e são
ã
publicados no arquivo AndroidManifest.xml
ƒ Exemplo: Uma Activity capaz de mostrar dados de
uma pessoa iria publicar um IntentFilter com a
capacidade VIEW para determinados dados;
ƒ Obs: Activities com IntentFilters equivalentes podem
ser trocadas a qualquer instante
© Markus Endler
8
Tipos de Elementos
BroadcastReceiver deve ser usado quando a aplicação
deve reagir a eventos externos à aplicação (e.g.
ligação telefônica,
telefônica timer,
timer rede wifi
ifi disponí
disponível,
el etc
etc.))
ƒ BroadcastReceivers são definidos no
AndroidManifest.xml, ou são registrados usando
método Context.registerReceiver().
ƒ Obs: A aplicação não precisa estar executando; o
sistema vai inciá-la quando o BroadcastReceiver é
di
disparado
d
ƒ Aplicações também podem enviar seus
IntentBroadcasts para outras aplicações
© Markus Endler
Tipos de Elementos
Serviço = uma thread (processo) executando em
background, independentemente de uma Interface do
usuário (p.ex. tocar músicas de uma playlist)
ƒ Activities (para escolha do album) podem se conectar a
um serviço usando Context.bindService() para inicia-lo
(se já não executa) .Uma vez conectado, pode-se
interagir com ele através da interface exportada pelo
mesmo (p.ex. p/ “pause”)
ContentProvider = uma classe usada p
para q
que aplicações
p ç
compartilhem dados entre sí ; implementa um conjunto
de métodos padrão para armazenar e recuperar dados
de um determinado tipo;
ƒ Obs: aplicações também podem interagir através de um
banco de dados SQL ou de arquivos
© Markus Endler
9
Aplicação Android
Obs: Cada Activity representa uma tela
Intent
GUI Commands & Display
y
Act1
Act2
Act3
Act4
BcastReceiver
Content
Provider
Manifest
Act1
Act2
Manifest
Intent Fiter
Act3
CntxtBindService
Service
A
Content
Provider
IntentBcast
put/ get
Android Application Framework/
Dalvik/ C libraries
Linux
Memory
© Markus Endler
Instalação do SDK
Após realizar o download do SDK, descompactar o
arquivo .zip
zip
ƒ
ƒ
Por exemplo, android_sdk_windows_m3-rc22a.zip
Instalando o plugin para Eclipse (ADT)
ƒ
ƒ
https://dl-ssl.google.com/android/eclipse/
20
Data Funneling → Fases
10
Para saber mais...
ƒ Leia a documentação
ƒ Developer Toolbox
http://code.google.com/android/toolbox/index.html
ƒ Developing Applications:
http://code.google.com/android/devel/index.html
ƒ Consulte os grupos de discussão:
ƒ http://code.google.com/android/groups.html
http://code google com/android/groups html
ƒ http://forum.portalandroid.org/
21
11
Download