Gardez l'écran allumé

Certaines applications doivent maintenir l'écran allumé, comme les jeux ou les applications de films. Certaines API Android maintiennent automatiquement l'écran allumé. Dans d'autres cas, vous pouvez définir un indicateur pour maintenir manuellement l'écran allumé.

Maintenir l'écran allumé manuellement

Pour que l'écran de l'appareil reste allumé, définissez l'indicateur FLAG_KEEP_SCREEN_ON dans votre activité. Ce flag ne peut être défini que dans une activité, et jamais dans un service ou un autre composant d'application. Exemple :

Kotlin

class MainActivity : Activity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
    }
}

Java

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

Une autre façon de maintenir l'écran allumé consiste à définir l'attribut android:keepScreenOn dans le fichier XML de mise en page de votre application:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:keepScreenOn="true">
    ...
</RelativeLayout>

L'utilisation de android:keepScreenOn="true" est équivalente à l'utilisation de FLAG_KEEP_SCREEN_ON. Vous pouvez utiliser l'approche la plus adaptée à votre application. L'avantage de définir l'indicateur par programmation dans votre activité est que vous pouvez effacer l'indicateur par programmation plus tard, ce qui permet à l'écran de s'éteindre.

Si une application avec l'indicateur FLAG_KEEP_SCREEN_ON passe en arrière-plan, le système permet à l'écran de s'éteindre normalement. Dans ce cas, vous n'avez pas besoin d'effacer explicitement l'indicateur. Si votre application n'a plus besoin de maintenir l'écran allumé, vous devez effacer l'indicateur en appelant clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON).

Mode Veille pour TV

Sur les téléviseurs, utilisez FLAG_KEEP_SCREEN_ON pour empêcher l'appareil de passer en mode Veille pendant la lecture vidéo active. Si l'activité de premier plan ne définit pas FLAG_KEEP_SCREEN_ON, l'appareil passe automatiquement en mode Veille après une période d'inactivité.

Voir aussi