Como impedir que um dispositivo Android entre no modo de suspensão por meio de programação?
Uma opção é usar um bloqueio de ativação . Exemplo dos documentos:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
// screen and CPU will stay awake during this section
wl.release();
Há também uma tabela nesta página que descreve os diferentes tipos de wakelocks.
Esteja ciente de que é necessário tomar cuidado ao usar os bloqueios de ativação. Certifique-se de que você sempre release()
bloqueia quando terminar (ou não em primeiro plano). Caso contrário, seu aplicativo poderá causar um sério consumo de bateria e uso da CPU.
A documentação também contém uma página útil que descreve diferentes abordagens para manter um dispositivo acordado e quando você pode optar por usá-lo. Se "impedir que o dispositivo entre no modo de suspensão" se refere apenas à tela (e não mantém a CPU ativa), provavelmente um bloqueio de ativação é mais do que você precisa.
Você também precisa ter a permissão WAKE_LOCK definida em seu manifesto para usar esse método.
Se você quiser apenas para evitar que o modo de hibernação em um específico
View
, basta ligarsetKeepScreenOn(true)
em queView
ou definir akeepScreenOn
propriedade paratrue
. Isso impedirá que a tela se apague enquantoView
estiver na tela. Nenhuma permissão especial é necessária para isso.fonte
setKeepScreenOn(true)
efeito entrará em vigor somente quandoView
estiver visível.Encontrei outra solução funcional: adicione a seguinte linha ao seu aplicativo no evento onCreate.
Meu projeto Cordova de amostra é assim:
Depois disso, meu aplicativo não dormia enquanto estava aberto. Obrigado pela resposta vai para xSus.
fonte
android:keepScreenOn="true"
poderia ser a melhor opção para ter do layout XML.Mais informações: https://developer.android.com/training/scheduling/wakelock.html
fonte
Defina sinalizadores na janela da atividade como abaixo
fonte
No shell raiz (por exemplo, shell adb), você pode bloquear com:
Após o qual o dispositivo permanecerá acordado, até que você faça:
Com a mesma string para 'mylockname'.
Observe que isso não impedirá que a tela fique preta, mas impedirá a CPU de dormir.
Observe que / sys / power / wake_lock é leitura / gravação para o rádio do usuário (1001) e sistema de grupo (1000) e, é claro, raiz.
Uma referência está aqui: http://lwn.net/Articles/479841/
fonte
o que o @eldarerathis disse está correto em todos os aspectos, a trava de ativação é a maneira correta de impedir que o dispositivo entre no modo de suspensão.
Não sei o que o aplicativo precisa fazer, mas é realmente importante que você pense em como arquitetar o aplicativo para não forçar o telefone a ficar acordado por mais do que precisa, ou a duração da bateria sofrerá muito.
Eu indicaria este exemplo realmente bom de como usar
AlarmManager
para disparar eventos e ativar o telefone e (seu aplicativo) para executar o que você precisa fazer e depois voltar a dormir: Gerenciador de Alarmes (fonte: commonsware.com)fonte
Se você é um usuário do Xamarin, esta é a solução:
fonte