Respostas:
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:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
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.
Esta pergunta já tem uma ótima resposta por @hackbod!
Estou respondendo a esta pergunta com duas soluções adicionais!
Solução existente:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
Soluções Adicionais:
podemos usar keepScreenOn
1. implementation
usandosetKeepScreenOn() in java code
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// or any View (in case generated programmatically )
View v = getLayoutInflater().inflate(R.layout.driver_home, null);
v.setKeepScreenOn(true);
setContentView(v);
}
Documentos http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)
2. Adicionando keepScreenOn
axml layout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true" >
Documentos http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn
Nota (alguns pontos úteis):
1. Não importa o que keepScreenOn
deve ser usado Main/Root/Parent View
, pode ser usado com qualquer child view
funcionará Assim como funciona emParent view
2. A única coisa que importa é que de View's Visibility must be visible
outro modo não funcionará!
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.