web-dev-qa-db-fra.com

Méthode correcte pour setKeepScreenOn / FLAG_KEEP_SCREEN_ON

J'utilise la méthode setKeepScreenOn (true) et je n'ai pas pu comprendre comment appeler cela par rapport à l'activité en cours (qui a un ensemble d'affichage de contenu). J'ai pu le faire fonctionner en l'appelant sur l'un de mes boutons qui est toujours présent dans la vue, mais cela ne va pas - et je suis sûr qu'il doit y avoir un moyen de contourner cela. J'ai essayé de référencer le focus actuel comme ceci:

getCurrentFocus().setKeepScreenOn(true);

mais cela a provoqué une exception NullPointerException. Peut-être qu'il n'y avait pas de concentration actuelle. Alors, quelqu'un peut-il me dire comment référencer la classe de vue dans laquelle je travaille? Merci :)

25
Emma Assin

Essayez cette réponse :

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

getWindow est une méthode définie pour les activités, et ne vous demandera pas de trouver un View d'abord.

58
Matthew Willis

Comme l'a dit Hawk mais mal expliqué.

Vous pouvez aussi utiliser FLAG_KEEP_SCREEN_ON dans votre fichier de disposition XML.

Noter la Android:keepScreenOn="true"

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:keepScreenOn="true"
    Android:orientation="vertical" >

    <!-- whatever is in your layout -->

</LinearLayout>

J'ai maintenant écrit tous les choix pour garder l'écran allumé dans un article de blog:
http://blog.blundellapps.com/tut-keep-screen-onawake-3-possible-ways/

37
Blundell

Ensemble Android:keepScreenOn en XML

4
Hawk

Si vous le faites sur une classe étend View. Vous pouvez simplement:

this.setKeepScreenOn(true);
1
Marcos Vasconcelos

Selon Google Docs pour les développeurs Android ont deux façons pour ce faire:

Première voie:

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}

La deuxième façon consiste à ajouter dans votre présentation de fichier xml cet attribut: Android:keepScreenOn="true"

0
Yacine