144 votes

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

245voto

silentbang Points 1162

Ajouter 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);
}
 

130voto

Pooja Kansal Points 6049

Beaucoup de Réponses Existe Déjà ici ! je suis de répondre à cette question grâce à des Solutions Fiables :

À l'aide de PowerManager.WakeLock est Pas si Solution Fiable que l'app Nécessite une permission Supplémentaire

<uses-permission android:name="android.permission.WAKE_LOCK" />

Aussi si par hasard il Reste maintenant le Sillage de Verrouillage peut sortir de l'écran sur

donc, je Recommande de ne pas utiliser PowerManager.WakeLock Solution au lieu de cela, utiliser Toute Solution de la suite de la

D'abord :

on peut utiliser getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); en onCreate()

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

Deuxième

on peut utiliser keepScreenOn

1. implementation l'aide setKeepScreenOn() in java code

@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);
       }

Docs http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(booléen)

2. L'ajout d' keepScreenOn de xml layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:keepScreenOn="true" >

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

Note ( Quelques Points Utiles) :

1. il N'est pas question qu' keepScreenOn doit être utilisé sur Main/Root/Parent View il peut être utilisé avec n'importe quel child view fonctionnera Comme même car il fonctionne en Parent view

2. La Seule Chose importe, c'est que View's Visibility must be visible autres sage, il ne fonctionnera pas !

104voto

Dinesh Sharma Points 7098

Utilisez la classe PowerManager.WakeLock afin d'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:

 <uses-permission android:name="android.permission.WAKE_LOCK" />
 

J'espère que cela résoudra votre problème ... :)

57voto

Nepster Points 893

Ne pas Utiliser la fonction Wake Lock.

Il nécessite une autorisation et d'autres choses et peut causer si vous oubliez de régler en temps et en heure.

Le plus simple est d'utiliser le code ci-dessous lorsque vous souhaitez garder votre écran..

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

Un plus pour la réponse si vous souhaitez supprimer ou de mettre fin keep_Screen_on

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

vous pouvez aussi voir ici..

Et le meilleur moyen et .. l'Aide d' android:keepScreenOn="true" dans la mise en forme de la racine de votre activité fait la même chose sans code supplémentaire. Mais il restera dans Keep_Scree_on État..

13voto

Kartik Points 12151

Regardez cette discussion Force Screen On

hackbod a une excellente réponse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X