Você está na página 1de 36
Erisvaldo Gadelha Saraiva Júnior Faculdade de Tecnologia de João Pessoa (FATEC-JP) Especialização em Desenvolvimento para Dispositivos
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

TÉCNICAS E EXEMPLOS LOG, LOCALES E WIDGETS LOCALIZAÇÃO E MAPAS
TÉCNICAS E
EXEMPLOS
LOG, LOCALES E
WIDGETS
LOCALIZAÇÃO
E MAPAS
Roteiro da Aula TÉCNICAS E EXEMPLOS LOG, LOCALES E WIDGETS LOCALIZAÇÃO E MAPAS Recursos e Técnicas
Roteiro da Aula TÉCNICAS E EXEMPLOS LOG, LOCALES E WIDGETS LOCALIZAÇÃO E MAPAS Recursos e Técnicas
Roteiro da Aula TÉCNICAS E EXEMPLOS LOG, LOCALES E WIDGETS LOCALIZAÇÃO E MAPAS Recursos e Técnicas

Recursos e Técnicas importantes para Android

TÉCNICAS E EXEMPLOS Diversas Técnicas e Exemplos de Código em Android
TÉCNICAS E EXEMPLOS Diversas Técnicas e Exemplos de Código em Android

TÉCNICAS E EXEMPLOS

Diversas Técnicas e Exemplos de Código em Android

Splash Screen

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

Splash Screen Como criar uma Splash Screen Basta ter uma Activity declarada na categoria LAUNCHER no

AndroidManifest.xml

Splash Screen Como criar uma Splash Screen Basta ter uma Activity declarada na categoria LAUNCHER no

Splash Screen

Exemplo Clássico de Splash Screen

Imagem no meio da tela

Splash Screen Exemplo Clássico de Splash Screen Imagem no meio da tela splash.xml

splash.xml

Tela Cheia (Full Screen)

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

Tela Cheia (Full Screen) Activity em Tela Cheia (Full Screen) Invocar o método abaixo no onCreate()

Modo 2 Definir android:theme na tag <activity> do AndroidManifest.xml

Tela Cheia (Full Screen) Activity em Tela Cheia (Full Screen) Invocar o método abaixo no onCreate()

Leitura de XML

org.xml.sax.helpers.DefaultHandler

Cria-se

uma

classe

que

herda

de

Default

Handler

e

implementa-se

os

métodos

startElement(),

characters()

e

endElement().

Leitura de XML org.xml.sax.helpers.DefaultHandler Cria-se uma classe que herda de Default Handler e implementa-se os métodos
Leitura de XML org.xml.sax.helpers.DefaultHandler Cria-se uma classe que herda de Default Handler e implementa-se os métodos
Leitura de XML org.xml.sax.helpers.DefaultHandler Cria-se uma classe que herda de Default Handler e implementa-se os métodos

Objetos Intent

Objetos Intent

São compostos por Component Name, Action, Data e Category.

Objetos Intent Objetos Intent São compostos por Component Name , Action , Data e Category .
Intents invocando aplicações Google Invocando aplicações Google
Intents invocando aplicações Google
Invocando aplicações Google
Log, Locales e Widgets Log, Internacionalização e Widgets em Android
Log, Locales e Widgets Log, Internacionalização e Widgets em Android

Log, Locales e Widgets

Log, Internacionalização e Widgets em Android

Trabalhando com Log

android.util.Log

Ferramenta de Log do Android. Permite imprimir logs de até cinco tipos:

Trabalhando com Log android.util.Log Ferramenta de Log do Android. Permite imprimir logs de até cinco tipos:

LogCat

Permite a visualização do Log. Disponível na perspectiva de Debug do ADT Plugin no Eclipse.

Trabalhando com Log
Trabalhando com Log

Internacionalizaçã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.

Internacionalizaçã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.

Internacionalização Organizando os recursos O segundo passo é mapear, para cada linguagem/país suportado, o caminho do

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.

Internacionalizaçã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.

Internacionalização Criando o strings.xml para cada linguagem Cria-se um novo “Android XML File” a partir do
Internacionalização Criando o strings.xml para cada linguagem Cria-se um novo “Android XML File” a partir do

Criando o strings.xml para cada linguagem

Internacionalização
Internacionalização

Testando a aplicação no emulador

Testando a aplicação no emulador Internacionalização
Internacionalização
Internacionalização
Testando a aplicação no emulador Internacionalização

App Widgets

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.

App Widgets App Widgets São aplicações em miniatura que podem ser embutidas em outras aplicações (como

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.

App Widgets

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.

App Widgets

Declarando-se um App Widget

Primeiramente, AppWidgetProvider mostrado abaixo.

declara-se

no

a

classe

que

AndroidManifest.xml,

herda

de

conforme

App Widgets Declarando-se um App Widget Primeiramente, AppWidgetProvider mostrado abaixo. declara-se no a classe que AndroidManifest.xml

<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.

App Widgets

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.

App Widgets Declarando o AppWidgetProviderInfo Define as características de um App Widget, como dimensões mínimas, XML

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.

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:

App Widgets
App Widgets
Criando o layout de um App Widget Layouts de App Widgets são baseados em RemoteViews. Estes

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:

App Widgets
App Widgets
Criando o layout de um App Widget Layouts de App Widgets são baseados em RemoteViews. Estes

App Widgets

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.

Exemplo de AppWidgetProvider

App Widget com um botão que inicia uma Activity quando é clicado.

App Widgets
App Widgets

App Widgets

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

App Widgets Criando uma Activity de configuração Para permitir que o usuário realize configurações ao adicionar

Declarando o Activity de Configuração no AppWidgetProviderInfo

App Widgets Criando uma Activity de configuração Para permitir que o usuário realize configurações ao adicionar

App Widgets

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

App Widgets Atualizando o App Widget a partir do Activity de Configuração Após realizar a configuração,
  • 2. Realiza as configurações necessárias

  • 3. Ao completar a configuração, atualiza o App Widget.

App Widgets Atualizando o App Widget a partir do Activity de Configuração Após realizar a configuração,
App Widgets Atualizando o App Widget a partir do Activity de Configuração Após realizar a configuração,
  • 4. Cria-se o Intent de retorno com o resultado da Activity e finaliza a Activity.

App Widgets Atualizando o App Widget a partir do Activity de Configuração Após realizar a configuração,
Localização e Mapas Integrando a sua aplicação com o Google Maps
Localização e Mapas Integrando a sua aplicação com o Google Maps

Localização e Mapas

Integrando a sua aplicação com o Google Maps

Localização e Mapas

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ção do 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.

Localização e Mapas

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.

Localização e Mapas

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.

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). Localização
não há tempo ou distância mínima para notificação (as
notificações serão tão frequentes quanto possível).
Localização e Mapas

Localização e Mapas

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.

Tutoriais e aplicações a serem desenvolvidas

Há diversos tutoriais que podem complementar os estudos

iniciais de desenvolvimento e aplicações em Android.

SDK. Explica o desenvolvimento • Notepad Tutorial – Aplicação de bloco de notas que originou a
SDK. Explica o desenvolvimento
• Notepad Tutorial – Aplicação de bloco de notas que
originou a aplicação NotePad de exemplo do Android
-
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
um
-
Audio
Player
-
Tutorial
de
como
programar
player
de
música
passo
a
passo
-
http://www.helloandroid.com/tutorials/musicdroid-audio-player-
part-i.
Para estudos posteriores

Referências

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!
What’s Your Message?
OBRIGADO!