Buscar

Android - Aula 3 - Dispositvos Móveis

Prévia do material em texto

Erisvaldo Gadelha Saraiva Júnior
Faculdade de Tecnologia de João Pessoa (FATEC-JP)
Especialização em Desenvolvimento para Dispositivos Móveis
Disciplina: Tecnologias para Dispositivos Móveis
Android (Parte 3)
E-mail: erisvaldojunior@gmail.com
Site: http://erisvaldojunior.com
Twitter: @erisvaldojunior
Roteiro da Aula
Recursos e Técnicas importantes para Android
TÉCNICAS E 
EXEMPLOS
LOG, LOCALES E 
WIDGETS
LOCALIZAÇÃO 
E MAPAS
TÉCNICAS E EXEMPLOS
Diversas Técnicas e Exemplos de Código em Android
Sp
la
sh
 S
cr
e
e
n
Como criar uma Splash Screen
Basta ter uma Activity declarada na categoria LAUNCHER no
AndroidManifest.xml que, após 3 segundos, invoca outra.
SplashScreen.java
AndroidManifest.xml
Sp
la
sh
 S
cr
e
e
n
Exemplo Clássico de Splash Screen
Imagem no meio da tela
splash.xml
Te
la
 C
h
e
ia
 (
Fu
ll 
Sc
re
e
n
)
Activity em Tela Cheia (Full Screen)
Invocar o método abaixo no onCreate() da Activity ou, opcionalmente, definir 
um android:theme de FullScreen no AndroidManifest.xml
Modo 1 – Chamar setFullScreen() no onCreate() da Activity
Modo 2 – Definir android:theme na tag <activity> do AndroidManifest.xml
Le
it
u
ra
 d
e
 X
M
L
org.xml.sax.helpers.DefaultHandler
Cria-se uma classe que herda de Default Handler e
implementa-se os métodos startElement(), characters() e
endElement().
O
b
je
to
s 
In
te
n
t
Objetos Intent
São compostos por Component Name, Action, Data e Category.
In
vo
ca
n
d
o
 a
p
lic
aç
õ
e
s 
G
o
o
gl
e Intents invocando aplicações Google
Log, Locales e Widgets
Log, Internacionalização e Widgets em Android
Tr
ab
al
h
an
d
o
 c
o
m
 L
o
g
android.util.Log
Ferramenta de Log do Android. Permite imprimir logs de até
cinco tipos:
Tr
ab
al
h
an
d
o
 c
o
m
 L
o
g
LogCat
Permite a visualização do Log. Disponível na perspectiva de
Debug do ADT Plugin no Eclipse.
In
te
rn
ac
io
n
al
iz
aç
ão
Adaptando a aplicação para diferentes linguagens
O primeiro passo é planejar como a aplicação deve aparecer
(textos e imagens) em diferentes regiões e línguas. Nesse
planejamento, estabelece-se também um comportamento/local
padrão.
In
te
rn
ac
io
n
al
iz
aç
ão
Organizando os recursos
O segundo passo é mapear, para cada linguagem/país suportado,
o caminho do arquivo strings.xml que irá conter os textos naquela
linguagem bem como a pasta de imagens específica para a
linguagem desejada.
Dica: pode-se criar, por exemplo, res/drawable-de/ para englobar
todos os aparelhos com a língua definida como Alemão,
independente da sua localização.
In
te
rn
ac
io
n
al
iz
aç
ão
Criando o strings.xml para cada linguagem
Cria-se um novo “Android XML File” a partir do plugin ADT no
Eclipse. No assistente, defin-se o nome do arquivo como
strings.xml e seleciona-se a configuração “Language” com um
qualificador de duas letras indicando a linguagem desejada. Isso
fará com que o assistente crie o arquivo na pasta correta.
In
te
rn
ac
io
n
al
iz
aç
ão
Criando o strings.xml para cada linguagem
In
te
rn
ac
io
n
al
iz
aç
ão
Testando a aplicação no emulador
A
p
p
 W
id
ge
ts
App Widgets
São aplicações em miniatura que podem ser embutidas em
outras aplicações (como a Home) e receber atualizações
periódicas. São referenciadas como Widgets na interface do
usuário.
Para criar um App Widget, necessita-se do seguinte:
• AppWidgetProviderInfo – objeto que descreve os metadados do
Widget, como o layout, frequência de atualização e a classe
AppWidgetProvider. É definido em XML;
• AppWidgetProvider – Define os métodos básicos que permitem a
programação do Widget. Baseado em eventos de Broadcast. Recebe-
se mensagens de broadcast quando o App Widget é ativado,
atualizado, desativado e removido.
A
p
p
 W
id
ge
ts
App Widgets
Além disso, é preciso definir o View Layout, correspondente ao
layout inicial do App Widget, em XML.
Adicionalmente, pode-se implementar uma Activity de configuração
do App Widget. Trata-se de um Activity opcional que é aberto
quando o usuário adiciona o Widget e permite que o usuário
modifique as configurações do mesmo em tempo de criação.
A
p
p
 W
id
ge
ts
Declarando-se um App Widget
Primeiramente, declara-se a classe que herda de
AppWidgetProvider no AndroidManifest.xml, conforme
mostrado abaixo.
• <receiver> – elemento que especifica o AppWidgetProvider usado
pelo App Widget, através do atributo android:name;
• <intent-filter> - inclui uma <action> que especifica que o
AppWidgetProvider aceita o broadcast APPWIDGET_UPDATE;
• <meta-data> - especifica o AppWidgetProviderInfo e é definido
pelos atributos android:name e android:resource.
A
p
p
 W
id
ge
ts
Declarando o AppWidgetProviderInfo
Define as características de um App Widget, como dimensões
mínimas, XML do Layout, frequência de atualização e,
opcionalmente, uma Activity de configuração para ser
instanciada quando da criação do App Widget.
• minWidth e minHeight especificam a área mínima requerida pelo
layout do App Widget.;
• updatePeriodMillis é o tempo de chamada do método onUpdate()
do AppWidgetProvider. Deve ser longo para que não prejudique o
consumo de bateria;
• initialLayout aponta para o arquivo de layout do Widget;
• configure especifica a Activity de configuração que deve ser iniciada
quando o usuário adiciona o Widget. É opcional.
A
p
p
 W
id
ge
ts
Criando o layout de um App Widget
Layouts de App Widgets são baseados em RemoteViews. Estes
não suportam todos os tipos de layout e views. Um objeto
RemoteView (e, consequentemente, um App Widget) só
suporta os seguintes layouts e views:
A
p
p
 W
id
ge
ts
Criando o layout de um App Widget
Layouts de App Widgets são baseados em RemoteViews. Estes
não suportam todos os tipos de layout e views. Um objeto
RemoteView (e, consequentemente, um App Widget) só
suporta os seguintes layouts e views:
A
p
p
 W
id
ge
ts
Usando a classe AppWidgetProvider
A classe AppWidgetProvider herda de BroadcastReceiver pois
se trata de uma especialização para tratar os broadcasts para
App Widgets. Quando um evento de broadcast para o App
Widget ocorre, um dos seguintes métodos é invocado:
• onUpdate() – chamado para atualizar o App Widget em intervalos
definidos por updatePeriodMillis no AppWidgetProviderInfo.
Também é chamado quando o usuário adiciona o Widget, exceto
quando foi definido um Activity de configuração;
• onDeleted() – Chamado quando o Widget é removido do seu
aplicativo hospedeiro;
• onEnabled() – chamado quando uma instância do App Widget é
criada pela primeira vez;
• onDisabled() – chamado quando a última instância do App Widget
é excluída do hospedeiro;
• onReceive() – padrão de Broadcast Receivers. Geralmente não há
necessidade de implementar pois os métodos acima são
automaticamente invocados pelo AppWidgetProvider.
A
p
p
 W
id
ge
ts
Exemplo de AppWidgetProvider
App Widget com um botão que inicia uma Activity quando é
clicado.
A
p
p
 W
id
ge
ts
Criando uma Activity de configuração
Para permitir que o usuário realize configurações ao adicionar
um App Widget, cria-se um Activity de configuração. Essa
Activity é automaticamente chamada em tempo de criação do
App Widget.
Declarando o Activity de Configuração no AndroidManifest.xml
Declarando o Activity de Configuração no AppWidgetProviderInfo
A
p
p
 W
id
ge
ts
Atualizando o App Widget a partir do Activity de 
Configuração
Após realizar a configuração, o Activity tem a responsabilidade
de atualizar o App Widget, conforme os passos abaixo.
1. Pega o ID do App Widget a partir do Intent que iniciou a Activity
2. Realiza as configurações necessárias
3. Ao completar a configuração, atualiza o App Widget.
4. Cria-se o Intent de retorno com o resultado da Activity e finaliza a Activity.
Localização e Mapas
Integrando a sua aplicação com o Google Maps
Lo
ca
liz
aç
ão
 e
 M
ap
as
android.location.LocationManager
Android provê acesso aos serviços de localização suportados
pelo dispositivo através do pacote android.locator, que provê
APIs para determinar a localizaçãodo dispositivo.
Usa-se o método getSystemService() para obter uma instância de
LocationManager. A partir desta, a aplicação pode fazer três coisas:
• Consultar a lista de todos os LocationProviders para saber qual foi a
última localicação do usuário;
• Registro/desregistro de atualizações periódicas da localização do
usuário a partir de um provedor de local (especificado pelo critério
ou nome);
• Registro/desregistro de um dado Intent para ser lançado se o
dispositivo estiver a uma certa proximidade de um dado destino.
Lo
ca
liz
aç
ão
 e
 M
ap
as
Biblioteca externa do Google Maps
Através do pacote com.google.android.maps (parte do add-on
Google APIs para Android SDK) é possível baixar e renderizar
mapas do Google, com uma variedade de opções e controles.
A classe chave do pacote é com.google.android.maps.MapView, que
é uma subclasse de ViewGroup. Um MapView mostra o mapa com os
dados obtidos diretamente do serviço Google Maps.
• Quando o MapView está com foco, os toques e teclas são
capturados para mover e efetuar zoom no mapa automaticamente,
incluindo requisições de rede para obtenção de novas áreas do
mapa;
• O MapView provê todos os elementos de interface necessários
para controlar o mapa;
• A aplicação também pode usar a classe MapView para desenhar
diversos marcadores sobre o mapa.
Lo
ca
liz
aç
ão
 e
 M
ap
as
Requisitando atualização de localização
Através do método requestLocationUpdates() de
LocationManager, passando um LocationListener como
parâmetro que deve implementar diversos métodos que são
invocados quando há mudança de localização ou status do
serviço.
Os parâmetros de requestLocationUpdates() estão explicitados a
seguir:
• O primeiro parâmetro é o tipo de provedor de localização a ser
usado, GPS_PROVIDER ou NETWORK_PROVIDER;
• O segundo parâmetro é o tempo mínimo para notificar
atualizações;
• O terceiro parâmetro é a distância mínima para notificar
atualizações;
• Por fim, o quarto e último parâmetro é o LocationListener que
recebe as chamadas callback de notificação das atualizações.
Lo
ca
liz
aç
ão
 e
 M
ap
as
Requisitando atualização de localização
Exemplo de como implementar um LocationListener e utilizá-lo
com o método requestLocationUpdates() de LocationManager.
Nesse exemplo, usa-se o Android Network Location Provider e
não há tempo ou distância mínima para notificação (as
notificações serão tão frequentes quanto possível).
Lo
ca
liz
aç
ão
 e
 M
ap
as
Requisitando permissões ao usuário
Para que se possa receber as notificações de localização, seja
através de NETWORK_PROVIDER ou GPS_PROVIDER, é
necessário que essa permissão seja requisitada ao usuário,
declarando-se ACCESS_COARSE_LOCATION (apenas
NETWORK_PROVIDER) ou ACCESS_FINE_LOCATION (ambos os
provedores, rede e GPS) no AndroidManifest.xml.
P
ar
a 
e
st
u
d
o
s 
p
o
st
e
ri
o
re
s
Tutoriais e aplicações a serem desenvolvidas
Há diversos tutoriais que podem complementar os estudos
iniciais de desenvolvimento e aplicações em Android.
• Notepad Tutorial – Aplicação de bloco de notas que
originou a aplicação NotePad de exemplo do Android
SDK. Explica o desenvolvimento passo a passo -
http://developer.android.com/resources/tutorials/notepa
d/index.html;
• Hello Testing e Activity Testing – Testes em Android -
http://developer.android.com/resources/tutorials;
• MusicDroid - Audio Player - Tutorial de como
programar um player de música passo a passo -
http://www.helloandroid.com/tutorials/musicdroid-audio-player-
part-i.
R
ef
e
rê
n
ci
as
Links
• developer.android.com – Portal oficial de
desenvolvimento para Android. SDK, Guia de
Desenvolvimento, Documentação completa;
• helloandroid.com – Notícias, Tutoriais de
Desenvolvimento, Aplicações, Dispositivos e mais sobre
Android;
• androidsnippets.org – Trechos de código abordando
diversos recursos do Android;
• code.google.com/p/krvarma-android-samples -
Diversas aplicações de exemplo (com código-fonte)
englobando câmera, GPS, gestos, Text to Speech,
detecção de face e etc.
What’s Your Message?OBRIGADO!

Outros materiais