Existe uma maneira de desabilitar o protetor de tela enquanto meu aplicativo está em execução?
O escurecimento da tela é o que quero dizer.
Existe uma maneira de desabilitar o protetor de tela enquanto meu aplicativo está em execução?
O escurecimento da tela é o que quero dizer.
Respostas:
Você deseja usar algo assim:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Eu usei:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
para desativar o tempo limite da tela e
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
para reativá-lo.
Também existe uma maneira XML que o Google recomenda:
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true">
Verifique o Google Slides - Slide 16.
"Wakelocks são caros se esquecidos (...) Considere o uso de android: keepScreenOn para garantir a correção"
PowerManager.newWakeLocke getWindow().addFlagsnão funcionar por algum motivo, funcionou.
É importante observar que todos esses métodos devem ser executados a partir do thread da IU para funcionarem. Consulte alterando KeepScreenOn de javascript no aplicativo Android Cordova
Simplesmente adicione a linha abaixo em MainActivityseu aplicativo e nunca apague as luzes.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Em uma visualização, no meu caso uma subclasse SurfaceView, você pode definir a tela sempre ligada. Queria que a tela permanecesse ligada enquanto essa visualização ainda estivesse desenhando coisas.
public class MyCoolSurfaceView extends SurfaceView {
@Override
protected void onAttachedToWindow (){
super.onAttachedToWindow();
this.setKeepScreenOn(true);
}
@Override
protected void onDetachedFromWindow(){
super.onDetachedFromWindow();
this.setKeepScreenOn(false);
}
Coloque isso em onStart
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "no sleep"); wakeLock.acquire();
E isso em você se manifesta
<uses-permission android:name="android.permission.WAKE_LOCK" />
Não se esqueça de
wakeLock.release();
em onStop
PARTIAL_WAKE_LOCKpermite que a tela apague.
esta é a melhor maneira de resolver isso
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
android:keepScreenOn="true"
éa melhor maneira de lidar com isto se quisermos fazer com que qualquer tela em particular fique ativa o tempo todo, caso contrário, teremos que cuidar de si mesmo quando ativá-la e desativá-la
https://developer.android.com/training/scheduling/wakelock.html
procedure SetSleep(aEnable:Boolean);
var
vFlags: integer;
begin
vFlags := TJWindowManager_LayoutParams.JavaClass.FLAG_TURN_SCREEN_ON or
TJWindowManager_LayoutParams.JavaClass.FLAG_DISMISS_KEYGUARD or
TJWindowManager_LayoutParams.JavaClass.FLAG_SHOW_WHEN_LOCKED or
TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON;
if aEnable then
begin
CallInUIThread ( // uses FMX.Helpers.Android
procedure
begin
TAndroidHelper.Activity.getWindow.setFlags (vFlags, vFlags);
end );
end
else
CallInUIThread (
procedure
begin
TAndroidHelper.Activity.getWindow.clearFlags (vFlags);
end );
end;
1.getWindow (). AddFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); é a melhor solução para Android nativo.
2. se você quiser fazer com o aplicativo Android React, use o código abaixo.
@ReactMethod
public void activate() {
final Activity activity = getCurrentActivity();
if (activity != null) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
});
}
}
Isso pode ser feito adquirindo um Wake Lock.
Eu não testei sozinho, mas aqui está um pequeno tutorial sobre isso.
View#setKeepScreenOnou seu atributo de layout xml equivalente,android:keepScreenOn="true"
WakeLock.
android:keepScreenOn="true"é a única resposta válida para atividades em minha opinião. Fique longe de wakelocks, a menos que seja absolutamente necessário.
View.setKeepScreenOn()[link] [1] ?. Eu mesmo nunca usei. [1]: developer.android.com/reference/android/view/…