Série da semana: Angular, API RESTful e Banco de Dados

Veja mais
O projeto está inativo

Android: Reagindo ao status da bateria com um BroadcastReceiver

Veja um exemplo prático de receptor de transmissão e como fazer com que ele ouça o evento disparado quando a bateria do dispositivo chega a 10% da sua carga total.

8

Conhecendo o projeto

Android Simulator Android Simulator

Destaques do projeto

  • Aplicativo nativo Android (Java)
  • Execução de tarefas em background (Broadcast Receiver)
  • Monitoramento de transmissões do sistema

Visão geral

Receptores de transmissão são uma proposta menos custosa para o dispositivo, se comparados aos serviços, para monitorar uma certa condição e iniciar uma tarefa de curta duração em segundo plano.

Considere que estamos trabalhando em um aplicativo de e-mail que precisa verificar por novas mensagens em um servidor. Dado que o usuário pode ligar o modo avião a qualquer momento, impedindo essa funcionalidade de executar por falta de uma conexão com a internet, desajamos alertá-lo sobre a possibilidade dele não ser mais notificado sobre atualizações. Uma forma de fazer isso é permitir ao aplicativo saber quando o modo avião foi ativado e implementar o que será feito a partir disso.

Esse e muitos outros cenários semelhantes em aplicativos podem ser solucionados com receptores de transmissão. Com esse mecanismo aplicativos podem trocar mensagens entre si e responder a outras disparadas pelo sistema operacional. Para isso é necessário se inscrever como ouvinte de uma transmissão, a exemplo de ACTION_AIRPLANE_MODE_CHANGED, que indica que o usuário ativou o modo avião. A partir disso, quando essa transmissão for feita todos os aplicativos registrados como ouvintes serão notificados.

Explicando o projeto

Usando um receptor de transmissão programamos um aplicativo que responde ao estado de bateria do dispositivo em baixa carga com uma mensagem de tela. Ele consiste de uma subclasse de Activity, a tela principal do aplicativo, bem como uma subclasse de BroadcastReceiver, que ouve a transmissão ACTION_BATTERY_LOW.

  • MainActivity instancia e registra o receptor de transmissão para que ao disparo de ACTION_BATTERY_LOW o aplicativo seja notificado.
  • BatteryBroadcastReceiver é o receptor de transmissão, em cujo método onReceive() implementamos a ação de adicionar na tela uma notificação para o usuário avisando que a bateria está com a carga baixa.

ACTION_BATTERY_LOW é emitido unicamente pelo sistema, gerando um diálogo de aviso, que vemos na segunda imagem do Slide 1. Assim que ele é disparado o sistema roteia uma notificação para todos os aplicativos registrados para este tipo especifico de transmissão. Dessa forma, os receptores de transmissão criam um sistema de mensageria, no qual aplicativos podem emitir suas próprias transmissões, bem como se registrar para ouvir as emitidas por outros aplicativos e pelo sistema operacional.

Saiba mais Veja a Série #partiu programar para Android?
Suporte ao aluno - Deixe a sua dúvida.
Assinatura Devmedia
Faça parte dessa comunidade 100% focada em programação e tenha acesso ilimitado. Nosso compromisso é tornar a sua experiência de estudo cada vez mais dinâmica e eficiente. Portanto, se você quer programar de verdade seu lugar é aqui. Junte-se a mais de...
+ 800 Mil programadores
,90* / mês
  • Séries
  • Projetos completos
  • Cursos
  • Guias de carreiras
  • DevCasts
  • Desafios
  • Artigos
  • App
  • Suporte em tempo real
A assinatura é cobrado através do seu cartão de crédito. *Tempo minimo de assinatura: 12 meses.
Assinatura Devmedia
Faça parte dessa comunidade 100% focada em programação e tenha acesso ilimitado. Nosso compromisso é tornar a sua experiência de estudo cada vez mais dinâmica e eficiente. Portanto, se você quer programar de verdade seu lugar é aqui. Junte-se a mais de...
+ 800 Mil programadores
Conheça agora!
,90* / mês
  • Séries
  • Projetos completos
  • Cursos
  • Guias de carreiras
  • DevCasts
  • Desafios
  • Artigos
  • App
  • Suporte em tempo real
A assinatura é cobrada através do seu cartão de crédito. *Tempo mínimo de assinatura: 12 meses.