Forçar tela ligada
Como faço para forçar a tela a permanecer ativa e não desligar enquanto meu aplicativo está em execução?
veja a resposta detalhada aqui .. stackoverflow.com/questions/5712849/…
POR FAVOR, NÃO USE UM WAKE LOCK
Isso requer que você dê ao seu aplicativo uma permissão adicional, e é muito fácil introduzir bugs nos quais você acidentalmente permanece segurando o wake lock e, portanto, deixa a tela ligada.
É muito, muito melhor usar o sinalizador de janela FLAG_KEEP_SCREEN_ON, que você pode habilitar na janela de sua atividade da onCreate()seguinte maneira:
Isso garantirá que a tela permaneça ligada enquanto a janela estiver em primeiro plano e apenas enquanto estiver em primeiro plano. Isso simplifica muito esse caso de uso comum, eliminando qualquer malabarismo necessário para fazer as transições do aplicativo entre os estados.
Isso evita que o dispositivo hiberne? Nesse caso, a banalidade de WAKE_LOCK me parece um erro chocante!
Sim, mantém a tela ligada e evita que o dispositivo hiberne.
Sim, você pode remover o sinalizador, com a API de janela apropriada. Você não precisa se preocupar em fazer com que nada seja desenhado, a estrutura faz isso, se necessário.
— hackbod de
@hakbod: isso funcionaria para manter a tela viva, mas e a tela que está adormecida, ela acordaria e manteria viva ??
@ KC202 você pode usar WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON para fazer com que a tela ligue quando sua janela for exibida. Também é frequentemente usado com FLAG_DISMISS_KEYGUARD e / ou FLAG_SHOW_WHEN_LOCKED.
Esta pergunta já tem uma ótima resposta por @hackbod!
Estou respondendo a esta pergunta com duas soluções adicionais!
Solução existente:
1. implementation usandosetKeepScreenOn() in java code
2. Adicionando keepScreenOnaxml layout
Nota (alguns pontos úteis):
1. Não importa o que keepScreenOndeve ser usado Main/Root/Parent View , pode ser usado com qualquer child viewfuncionará Assim como funciona emParent view
2. A única coisa que importa é que de View's Visibility must be visibleoutro modo não funcionará!
nota v.setKeepScreenOn(true);parece ser a única maneira de fazer isso para um fragmento de diálogo em tela cheia
Outra solução é adicionar android:keepScreenOn="true"( documentação ) às visualizações que precisam para manter a tela ligada.
Permite um controle um pouco mais granular em termos de quais visualizações permanecem ativadas e quais não. Você pode até mesmo fazer referência a uma configuração de um arquivo de recurso dessa maneira.