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.
Projeto já adicionado aos favoritos. Clique aqui para ver todos seus favoritos
Obrigado pela sua avaliação, deixe o seu feedback nos comentários :D
Conhecendo o projeto
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?