¿Cuál es la manera apropiada, no obsoleta de despertar el dispositivo?
Mi requisito es: después de que llegue un mensaje de GCM , el dispositivo debe despertar para mostrar una notificación de alta prioridad. El dispositivo debe encender la pantalla .
Actualmente estoy usando WakeLock para lograr esto. El método newWakeLock()
espera que se pase un nivel de bloqueo Y un indicador (como el 1 º param, bit a bit or'd).
- Compruebe si onStop se llama desde la interacción del usuario, o se atenúa la pantalla
- Deshabilitar el bloqueo de pantalla (Power) en Android
- BroadcastReceiver, Servicio y Wakelock
- Android: Activar y desbloquear el teléfono
- ¿Google Analytics agrega permiso de wakelock?
Estoy usando PowerManager.ACQUIRE_CAUSES_WAKEUP
flag ya que hace exactamente lo que necesito. Sin embargo, estoy un poco frustrado por el nivel de bloqueo. Así que según los documentos , tengo las siguientes opciones:
-
PARTIAL_WAKE_LOCK
: no es compatible conACQUIRE_CAUSES_WAKEUP
/ noACQUIRE_CAUSES_WAKEUP
la pantalla -
SCREEN_DIM_WAKE_LOCK
– obsoleto -
SCREEN_BRIGHT_WAKE_LOCK
– obsoleto -
FULL_WAKE_LOCK
: obsoleto
El FLAG_KEEP_SCREEN_ON
sugerido es completamente inútil en este escenario. Terminé simplemente suprimiendo la advertencia de la depreciación:
@SuppressWarnings("deprecation") PowerManager.WakeLock screenOn = ((PowerManager) c.getSystemService(Context.POWER_SERVICE)).newWakeLock( PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, TAG); screenOn.acquire(); mNotifyMgr.notify(mNotificationId, mBuilder.build()); screenOn.release();
La pregunta : ¿hay una manera confiable no obsoleta de despertar el dispositivo en el caso descrito?
EDIT No estoy pidiendo soluciones para despertar el dispositivo. Mi pregunta es si esto es posible para despertar el dispositivo desde el fondo (sin una Activity
ejecución) sin utilizar APIs obsoletas
- ¿El sistema operativo Android libera un wakelock si la aplicación o el servicio que lo contiene se destruye?
- ¿Se demorará un Handler postDelayed a no ser disparado cuando la CPU duerme?
- La función "Optimización de aplicaciones" de Samsung mata aplicaciones de fondo después de 3 días
- Mi Huawei mata a mi aplicación wakelock android
- Android - Wake lock no se está adquiriendo correctamente, la aplicación debe seguir funcionando en modo de espera
- ¿Cómo hacer que el dispositivo Android siempre esté en modo despertar?
- Programación de alarma por segundo en android 5.1
- ¿La cerradura de WiFi no trabaja, cómo prevenir el ahorro de la energía del wifi?
Utilice el código que obtuve de mi pregunta y, a continuación, acaba de terminar la actividad, debe dejar la pantalla para los usuarios la cantidad normal de tiempo. Confía en mí esta es la única manera, después de pasar una buena semana en este problema. Siempre se puede configurar la actividad a transparente con notitlebar, el usuario nunca sabrá.
@Override protected void onCreate(Bundle savedInstanceState) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON); finish(); }
- SetMaxDate () no funciona perfectamente en Lollipop 5.0.1 android y necesita una solución adecuada
- Cómo construir solo buildType con Android Studio y / o Gradle