Apresentação do PowerPoint - Campus Monte Castelo

Propaganda
Desenvolvimento de um aplicativo básico usando o Google Android
(BroadcastReceiver)
Programação de Dispositivos Móveis
Mauro Lopes Carvalho Silva
Professor EBTT
DAI – Departamento de Informática
Campus Monte Castelo
Instituto Federal de Educação Ciência e Tecnologia do Maranhão
Programação de Dispositivos Móveis – 7º Período
Objetivos
• Nesta aula iremos apresentar uma classe que em
conjunto com as classes Notification e Service são
utilizadas para criação de aplicações mais
robustas. Esta classe é a BroadcastReceiver. O
BroadcastReceiver é um componente do Android
que responde a determinados anúncios enviados
pelo sistema operacionail. Vamos entender como
utilizá-la. Nosso objetivo principal é aproximar o
aluno do desenvolvimento de um aplicativo básico.
Programação de Dispositivos Móveis – 7º Período
Plano de Aula
• BroadcastReceiver






O que é?
Onde usar?
Opções para Configuração;
Usando o método sendBroadcast;
Ciclo de Vida;
Interação com o usuário
Programação de Dispositivos Móveis – 7º Período
BroadcastReceiver
O que é um BroadcastReceiver?
• Quando a bateria do dispositivo está fraca o Android envia uma mensagem
(broadcast) para todo o sistema informando que a carga da bateria está
acabando, para que os aplicativos que têm interesse em receber essa
mensagem possam executar uma determinada ação a partir desta informação.
Programação de Dispositivos Móveis – 7º Período
BroadcastReceiver
O que é um BroadcastReceiver?
• Um BroadcastReceiver é utilizada para que aplicações
possam reagir a determinados eventos gerados por um
intent, que nada mais é que uma mensagem enviada
ao sistema operacional;
• Características:
• Sempre é executada em segundo plano e durante pouco
tempo e sem utilizar interface gráfica;
• Seu objetivo é receber uma mensagem e processá-la sem que
o usuário perceba.
• É um importante passo para integrar aplicações, uma vez que
elas podem trocar mensagens em segundo plano sem
atrapalhar o usuário;
Programação de Dispositivos Móveis – 7º Período
BroadcastReceiver
Onde usar?
• Já percebemos que uma mensagem (intent) enviada
por exemplo, no modelo broadcast, pode ser
interceptada por um BroadcastReceiver;
• O Android por exemplo dispara diversas mensagens, no
estilo broadcast:
•
•
•
•
•
•
Ao receber uma mensagem SMS;
Ao receber uma ligação telefônica;
Quando a tela do dispositivo é desligada;
Quando o carregador é plugado ao dispositivo;
Quando um fone de ouvido é conectado ao dispositivo;
Quando o sistema é iniciado e vários outros.
Programação de Dispositivos Móveis – 7º Período
BroadcastReceiver
Opções para Configuração
• Existem
duas
formas
de
BroadcastReceiver no Android:
configurar
um
• Estática: configurado no arquivo AndroidManifest.xml;
• Dinâmica: configurado no código de uma classe do aplicativo.
• As duas formas são válidas, porém existe uma grande
diferença: apenas a forma estática permite que um
BroadcastReceiver seja invocado mesmo que o
aplicativo esteja fechado.
Programação de Dispositivos Móveis – 7º Período
BroadcastReceiver
Configuração – 1º Passo
• O 1º passo é criar uma classe que estenda uma classe
BroadcastReceiver, o método que vamos que ter que
implementar é o onReceive, que será chamado pelo Sistema
Operacional quando a ação que você deseja interceptar for
executada.
• O código para uma classe que inicie uma Activity é o seguinte:
public class ExemploReceiver01 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(“FAZER_ALGO”);
i.addCategory(“CATEGORIA”);
context.startActivity(i);
}
}
• Geralmente o BroadcastReceiver será usado para: Realizar uma
notificação / Iniciar um serviço / Iniciar uma aplicação.
Programação de Dispositivos Móveis – 7º Período
BroadcastReceiver
Configuração – 2º Passo
• O 2º passo é utilizar a tag <receiver> no arquivo
AndroidManifest.xml, em conjunto com a tag <intent-filter> para
definir uma ação e categoria;
<receiver android:name=“ExemploReceiver01”>
<intent-filter>
<action android:name=“FAZER_ALGO” />
<category android:name=“android.intent.category.DEFAULT” />
</intent-filter>
</receiver>
• Quando alguma intent/mensagem com a ação fazer FAZER_ALGO
for disparada, a classe ExemploReceiver01 será executada em
segundo plano sem interferir na tela do usuário;
• O método chamado será o onReceive (context, intent) que
recebe como parâmetro a intent que foi utilizada para enviar
uma mensagem.
Programação de Dispositivos Móveis – 7º Período
BroadcastReceiver
Usando o método sendBroadcast
• Para que uma classe BroadcastReceiver seja executada,
alguma mensagem (intent) deve ser enviada;
• Para abrir uma tela usamos o método startActivity(intent);
• No caso de um BroadcastReceiver o método utilizado para
acioná-lo é sendBroadcast(intent);
• O método sendBroadcast dispara uma mensagem para
todas as aplicações instaladas no celular (um broadcast);
• O termo broadcast é um termo comum para uma mensagem que é
enviada para todo mundo ao mesmo tempo;
• Uma intent usada para acionar uma activity não pode ser
usada para acionar um BroadcastReceiver;
• Lembrando: uma intent é uma mensagem enviada ao sistema
operacional e todas as aplicações instaladas podem responder a ela!!!
Programação de Dispositivos Móveis – 7º Período
BroadcastReceiver
Ciclo de Vida
• Um BroadcastReceiver é válido somente durante a
chamada ao método onReceive(context,intent);
• Esse método deve consumir rapidamente a intent
(mensagem) recebida e retornar rapidamente;
• Caso o BroadcastReceiver demore mais de 10 segundos
para executar, o Android exibirá um erro chamado ANR
(Application Not Responding), que nada mais é que um
timeout;
• O que fazer com ações que serão executadas em segundo
plano e que demorem mais que esse tempo (10 segundos)?
• Usaremos
a
classe
android.app.Service
ou
simplesmente Service;
Programação de Dispositivos Móveis – 7º Período
BroadcastReceiver
Interação com o usuário
• Um BroadcastReceiver não deve interagir diretamente com
o usuário (usando um Toast, por exemplo);
• Pois o usuário pode estar fazendo algo interessante e pode
não querer ser incomodado;
• Então qual a maneira mais indicada de uma aplicação que
esta executando em segundo plano interagir com o usuário?
• A resposta é: por meio de uma notificação.
Programação de Dispositivos Móveis – 7º Período
BroadcastReceiver
Interação com o usuário
Programação de Dispositivos Móveis – 7º Período
Dúvidas
Página do Professor Mauro:
http://www.dai.ifma.edu.br/~mlcsilva
Programação de Dispositivos Móveis – 7º Período
Próxima Aula
• Desenvolvimento de um aplicativo básico usando o
Google Android: Notification
Programação de Dispositivos Móveis – 7º Período
Referências
• Google Android: aprenda a criar aplicações para
dispositivos móveis com o Android SDK - Ricardo
R. Lacheta, São Paulo: Novatec, 2010.
• Sites:
• http://blog.globalcode.com.br/2010/05/respondendo-eventos-noandroid.html
Programação de Dispositivos Móveis – 7º Período
Download