Certaines applications, comme les jeux ou les applications de films, doivent maintenir l'écran allumé. Certaines API Android maintiennent automatiquement l'écran allumé. Dans d'autres cas, vous pouvez définir un indicateur pour maintenir l'écran allumé manuellement.
Garder l'écran allumé manuellement
Pour que l'écran de l'appareil reste allumé, définissez l'indicateur FLAG_KEEP_SCREEN_ON dans votre activité. Cet indicateur ne peut être défini que dans une activité, jamais dans un service ou un autre composant d'application. Exemple :
class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } }
Vous pouvez également maintenir l'écran allumé en définissant 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" équivaut à 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 de manière programmatique dans votre activité est que vous pouvez l'effacer de manière programmatique ultérieurement, 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 autorise l'écran à s'éteindre normalement. Dans ce cas, vous n'avez pas besoin d'effacer explicitement l'indicateur. Si votre application n'a plus besoin de garder l'écran allumé, vous devez effacer l'indicateur en appelant clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON).
Mode ambiant pour la TV
Sur les téléviseurs, utilisez FLAG_KEEP_SCREEN_ON pour empêcher l'appareil de passer en mode Veille pendant la lecture d'une vidéo. Si l'activité de premier plan ne définit pas FLAG_KEEP_SCREEN_ON, l'appareil passe automatiquement en mode ambiant après une période d'inactivité.