Android mantenga la pantalla en la aplicación
-
27-10-2019 - |
Pregunta
Tengo una aplicación de Android que ejecuta un servicio en primer plano y, mientras ese servicio se ejecuta, me gustaría darle al usuario la opción de mantener la pantalla encendida.
Agregué a mis preferencias de configuración, una preferencia de casilla de verificación y, si es cierto, me gustaría mantener la pantalla encendida, pero tengo que desactivarlo de forma predeterminada. Es algo que mis usuarios han pedido. Actualmente tengo la preferencia, pero cuando ejecuto el servicio, mi pantalla todavía se cierra aquí es lo que he hecho
variable global
private static final String PREFS_DEVICE = "DeviceInfo";
Código e IF Declaración
SharedPreferences settings = getSharedPreferences(PREFS_DEVICE, 0);
if(settings.getBoolean("screenPref", false)) {
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
this.mWakeLock.acquire();
}
Y luego agregué esto a mi manifiesto
<uses-permission android:name="android.permission.WAKE_LOCK" />
¿Hay algo que estoy haciendo mal? ¿Hay una forma diferente de hacer esto desde un servicio o simplemente no es posible en un servicio (espero que ese no sea el caso)?
Solución
Prueba esto:
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,
"");
mWakeLock.acquire();
Otros consejos
Puede usar Flag Flag_Keep_Screen_on
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Y cuando no quieres seguir
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
De esta manera es mucho mejor, porque de usar Menos permisos, servicios y batería de OFC:
public void setWakelock(Activity Target, boolean State)
{
if (State) Target.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
else Target.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
return;
}
Editado
Siga el patrón que Mark Murphy proporciona con el WakefulfulFinInservice. y puedes encontrar la explicación en su libro muy buena