Comment puis-je garder l’écran dans mon application?

Pour mon application Android, je ne veux jamais que le téléphone se verrouille ou que le rétroéclairage s’éteigne

Utilisez la classe PowerManager.WakeLock pour effectuer cette opération. Voir le code suivant:

import android.os.PowerManager; public class MyActivity extends Activity { protected PowerManager.WakeLock mWakeLock; /** Called when the activity is first created. */ @Override public void onCreate(final Bundle icicle) { setContentView(R.layout.main); /* This code together with the one in onDestroy() * will make the screen be always on until this Activity gets destroyed. */ final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag"); this.mWakeLock.acquire(); } @Override public void onDestroy() { this.mWakeLock.release(); super.onDestroy(); } } 

Utilisez l’autorisation suivante dans le fichier manifeste:

  

J’espère que cela va résoudre votre problème … 🙂

Ajoutez une ligne de code après setContentView () dans onCreate ()

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_flag); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } 

Beaucoup de réponses existent déjà ici! Je réponds à cette question avec des solutions supplémentaires et fiables:

L’utilisation de PowerManager.WakeLock n’est pas une solution fiable, car l’application nécessite des permissions supplémentaires.

  

De plus, si le locking du sillage persiste, il peut restr allumé.

Je recommande donc de ne pas utiliser la solution PowerManager.WakeLock . Au lieu de cela, utilisez l’une des solutions suivantes:

Premier:

Nous pouvons utiliser getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); dans onCreate()

 @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } 

Seconde:

nous pouvons utiliser keepScreenOn

1. implémentation à l’aide de setKeepScreenOn() dans le code Java:

 @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); View v = getLayoutInflater().inflate(R.layout.driver_home, null);// or any View (incase generated programmatically ) v.setKeepScreenOn(true); setContentView(v); } 

Documents http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)

2. Ajout de keepScreenOn à la présentation xml

 < ?xml version="1.0" encoding="utf-8"?>  

Documents http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn

Notes (quelques points utiles):

  1. Peu importe que keepScreenOn soit utilisé dans une vue principale / racine / parent. Il peut être utilisé avec n’importe quelle vue enfant et fonctionnera de la même manière que dans une vue parent.
  2. La seule chose qui compte, c’est que la visibilité de la vue doit être visible. Sinon, ça ne marchera pas!

N’utilisez pas Wake Lock.

 It requires permission and other stuff and may cause error if you forget to set it in right time. 

Le moyen le plus simple consiste à utiliser le code ci-dessous lorsque vous souhaitez garder votre écran allumé.

  getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

Un ajout à la réponse si vous souhaitez supprimer ou mettre fin à keep_Screen_on

 getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

vous pouvez aussi voir ici ..

Et the best and easiest way .. Utiliser android:keepScreenOn="true" dans la racine de mise en page de votre activité fait la même chose sans code supplémentaire. Mais il le restra dans Keep_Scree_on State ..

Il peut varier selon votre demande Voir ici

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

getWindow est une méthode définie pour les activités et ne nécessite pas de rechercher d’abord une View .

Jetez un oeil à cette discussion Force Screen On

hackbod a une excellente réponse.

Vous pouvez simplement utiliser setKeepScreenOn() partir de la classe View.

Ajouter android:keepScreenOn="true" dans le XML de l’activité (ou des activités) que vous souhaitez conserver l’écran est la meilleure option. Ajoutez cette ligne à la disposition principale de l’activité.

Quelque chose comme ça

  ...  

Vous devez utiliser Power Manager pour acquérir un verrou de réveil dans votre application.

Vous êtes probablement intéressé par un FULL_WAKE_LOCK :

 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag"); wl.acquire(); .... wl.release(); 

Il y a plusieurs façons de le faire:

Solution 1:

 class MainActivity extends AppCompactActivity { @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } } 

Solution 2:

Dans le fichier activity_main.xml, ajoutez simplement:

  

Mon conseil: n’utilisez pas WakeLock. Si vous l’utilisez, vous devez définir une autorisation supplémentaire, et cette chose est surtout utile dans l’environnement de développement du processeur.

Veillez également à éteindre l’écran pendant la fermeture de l’activité. Vous pouvez le faire de cette manière:

 public void onDestry() { getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } 

À ce stade, la méthode

 final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag"); this.mWakeLock.acquire(); 

est déconseillé.

Vous devez utiliser getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); et getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Pas besoin d’append des permissions et de faire des trucs. Utilisez simplement le texte ci-dessous dans votre présentation principale.

  android:keepScreenOn="true"