Je crée l'application où un lancement d'activité est planifié par AlarmManager. Je voudrais apparaître même si l'écran est éteint et l'appareil est verrouillé.Android allume l'écran
Pour un ensemble ce ACHIVE les drapeaux de fenêtre
final Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
et essayer d'obtenir pour l'écran de verrouillage
if(_lock == null)
{
PowerManager pm = (PowerManager)App.getAppContext()
.getSystemService(Context.POWER_SERVICE);
_lock = pm.newWakeLock(
PowerManager.FULL_WAKE_LOCK, "ScreenOn");
_lock.acquire();
}
Le _lock est PowerManager.WakeLock qui est libéré dans OnPause
protected void onPause()
{
if(_lock != null)
{
_lock.release();
}
}
Ce code est exécuté dans onCreate et onRestart. Tout fonctionne bien si l'activité n'est pas encore lancée. Mais s'il a été lancé plus tôt, l'écran n'est pas éteint.
- onRestart est appelé en premier
- onResume est alors appelé
- OnPause est appelée immédiatement
Ainsi, l'activité ne démarre pas. Ma question est de savoir comment allumer l'écran dans une telle situation. (J'utilise API 15).
Publiez plus de votre code - tout cela. Quoi - où est _lock? et vous voulez probablement dire "l'écran n'est pas allumé *** sur ***" –
Alors le verrou est un _private static member_? Êtes-vous sûr que _Everything fonctionne bien si l'activité n'est pas encore lancée_? Même lorsque le téléphone est alsep? Essayez d'augmenter l'heure d'alarme initiale - je parie que l'activité ne fonctionnera pas. Quand je dis plus de code, je veux dire aussi l'alarme et le récepteur pour l'alarme - vous utilisez un récepteur pour l'ararm non? Et _again, vous voulez probablement dire "l'écran n'est pas activé ** sur **" _ –