Existe alguma maneira de receber uma notificação quando o usuário se desloca fora do dispositivo?
-
25-09-2019 - |
Pergunta
Preciso saber quando o usuário se afasta do telefone. Existem transmissões (ou similares) que notificam quando o telefone do usuário está desligado?
Solução
Você pode usar o ACTION_SHUTDOWN
Intenção que é transmitido quando o telefone está prestes a desligar. A documentação diz:
Os aplicativos normalmente não precisam lidar com isso, pois a atividade de primeiro plano também será interrompida.
Em outras palavras, se você responder a todos os eventos do ciclo de vida para sua atividade adequadamente, não há necessidade de usar isso, a menos que você realmente queira fazer algo específico relacionado ao desligamento.
o ACTION_SHUTDOWN
A intenção foi introduzida no nível 4 da API, em outras palavras Só será enviado em telefones executando o Android 1.6 ou mais tarde.
Você prenderá a transmissão com um BroadcastReceiver
. Vai parecer algo assim:
public class ShutdownReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Insert code here
}
}
Você também precisará de uma entrada no seu manifesto, como o seguinte:
<receiver android:name=".ShutdownReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_SHUTDOWN" />
</intent-filter>
</receiver>
Dependendo do que você está fazendo, outra opção seria usar o ACTION_BOOT_COMPLETED
Intenção que é enviado quando o telefone é reiniciado.
Outras dicas
Além de ACTION_SHUTDOWN
, você deve adicionar android.intent.action.QUICKBOOT_POWEROFF
para o seu filtro de intenção.
ACTION_SHUTDOWN
Nem sempre é transmitido em alguns dispositivos HTC (por exemplo, o EVO 4G).
Para ser mais específico, se você escolher reiniciar, ACTION_SHUTDOWN
é transmitido, mas se você escolher desligar, QUICKBOOT_POWEROFF
é transmitido.
Expandir o que Dave Webb disse que é a maneira apropriada de lidar com isso:
Você pode substituir as funções do ciclo de vida da atividade Android:
protected void onPause();
protected void onResume();
Na maioria dos cenários, implementá -los deve ser suficiente e não exigirá que você lide especificamente nos eventos "Power Off".
Há muito mais informações sobre o Site Android E na resposta para Esta questão do ciclo de vida.