¿Hay alguna forma de desactivar el protector de pantalla mientras mi aplicación se está ejecutando?
La atenuación de la pantalla es lo que quiero decir.
¿Hay alguna forma de desactivar el protector de pantalla mientras mi aplicación se está ejecutando?
La atenuación de la pantalla es lo que quiero decir.
Respuestas:
Quieres usar algo como esto:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Solía:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
para deshabilitar el tiempo de espera de la pantalla y
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
para volver a habilitarlo.
También hay una forma XML que recomienda Google:
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true">
Consulte Presentaciones de Google - Diapositiva 16.
"Los Wakelocks son costosos si se olvidan (...) Considere usar android: keepScreenOn para garantizar la corrección"
PowerManager.newWakeLocky getWindow().addFlagsno funcionó por alguna razón, esto sí lo hizo.
Es importante tener en cuenta que todos estos métodos deben ejecutarse desde el hilo de la interfaz de usuario para que funcionen. Vea cómo cambiar KeepScreenOn desde javascript en la aplicación Android cordova
Simplemente agregue la línea de abajo en su MainActivityy su aplicación nunca apague las luces.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
En una vista, en mi caso una subclase de SurfaceView, puede configurar la pantalla siempre encendida. Quería que la pantalla permaneciera encendida mientras esta vista todavía dibujaba cosas.
public class MyCoolSurfaceView extends SurfaceView {
@Override
protected void onAttachedToWindow (){
super.onAttachedToWindow();
this.setKeepScreenOn(true);
}
@Override
protected void onDetachedFromWindow(){
super.onDetachedFromWindow();
this.setKeepScreenOn(false);
}
Pon esto en onStart
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "no sleep"); wakeLock.acquire();
Y esto en ti manifiesta
<uses-permission android:name="android.permission.WAKE_LOCK" />
No te olvides de
wakeLock.release();
en onStop
PARTIAL_WAKE_LOCKpermite que la pantalla se apague.
esta es la mejor manera de resolver esto
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
android:keepScreenOn="true"
es la mejor manera de manejar esto si queremos hacer que una pantalla en particular se despierte todo el tiempo, de lo contrario, tendremos que manejar usted mismo cuándo habilitarla y deshabilitarla
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); es la mejor solución para Android nativo.
2. Si desea hacerlo con la aplicación de Android React, utilice el siguiente código.
@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);
}
});
}
}
Esto se puede hacer adquiriendo un Wake Lock.
No lo probé yo mismo, pero aquí hay un pequeño tutorial sobre esto.
View#setKeepScreenOno su atributo de diseño xml equivalente,android:keepScreenOn="true"
WakeLock.
android:keepScreenOn="true"es la única respuesta válida para actividades en mi opinión. Manténgase alejado de los wakelocks a menos que sea absolutamente necesario.
View.setKeepScreenOn()[enlace] [1] ?. Aunque nunca lo he usado yo mismo. [1]: developer.android.com/reference/android/view/…