Comment empêcher un appareil Android de se mettre en veille par programmation?
Une option consiste à utiliser un verrou de réveil . Exemple tiré de la documentation:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
// screen and CPU will stay awake during this section
wl.release();
Il y a aussi un tableau sur cette page qui décrit les différents types de wakelocks.
Sachez que certaines précautions doivent être prises lors de l'utilisation des verrous de réveil. Assurez-vous de toujours release()
verrouiller lorsque vous en avez terminé (ou pas au premier plan). Sinon, votre application peut potentiellement provoquer une grave décharge de la batterie et une utilisation du processeur.
La documentation contient également une page utile qui décrit différentes approches pour garder un appareil éveillé, et quand vous pouvez choisir d'en utiliser une. Si «empêcher l'appareil de se mettre en veille» se réfère uniquement à l' écran (et ne pas maintenir le processeur actif), alors un verrouillage de réveil est probablement plus que ce dont vous avez besoin.
Vous devez également vous assurer que l' autorisation WAKE_LOCK est définie dans votre manifeste pour utiliser cette méthode.
Si vous souhaitez simplement empêcher le mode veille sur un élément spécifique
View
, appelez-setKeepScreenOn(true)
le simplementView
ou définissez lakeepScreenOn
propriété surtrue
. Cela empêchera l'écran de s'éteindre tant que leView
est à l'écran. Aucune autorisation spéciale requise pour cela.la source
setKeepScreenOn(true)
ne prendra effet que lorsqu'ilView
est visible.J'ai trouvé une autre solution de travail: ajoutez la ligne suivante à votre application sous l'événement onCreate.
Mon exemple de projet Cordova ressemble à ceci:
Après cela, mon application ne s'endormit plus tant qu'elle était ouverte. Merci pour la réponse à xSus.
la source
android:keepScreenOn="true"
pourrait être une meilleure option à avoir à partir du format XML.Plus d'informations: https://developer.android.com/training/scheduling/wakelock.html
la source
Définissez des indicateurs sur la fenêtre d'activité comme ci-dessous
la source
Depuis le shell racine (par exemple le shell adb), vous pouvez verrouiller avec:
Après quoi, l'appareil restera éveillé jusqu'à ce que vous:
Avec la même chaîne pour 'mylockname'.
Notez que cela n'empêchera pas l'écran de devenir noir, mais cela empêchera le processeur de dormir.
Notez que / sys / power / wake_lock est en lecture-écriture pour la radio utilisateur (1001) et le système de groupe (1000), et, bien sûr, root.
Une référence est ici: http://lwn.net/Articles/479841/
la source
ce que @eldarerathis a dit est correct dans tous les aspects, le verrouillage de réveil est le bon moyen d'empêcher l'appareil de s'endormir.
Je ne sais pas ce que votre application doit faire, mais il est vraiment important que vous réfléchissiez à la façon dont votre application doit être conçue pour ne pas forcer le téléphone à rester éveillé pendant plus que ce dont vous avez besoin, sinon la durée de vie de la batterie en souffrira énormément.
Je vous indiquerais ce très bon exemple sur la façon d'utiliser
AlarmManager
pour déclencher des événements et réveiller le téléphone et (votre application) pour effectuer ce que vous devez faire, puis vous rendormir : Alarm Manager (source: commonsware.com)la source
Si vous êtes un utilisateur Xamarin, voici la solution:
la source