Certaines applications, telles que des jeux ou des applications de films, doivent laisser 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.
Maintenir manuellement l'écran allumé
Pour garder l'écran de l'appareil 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); } }
Vous pouvez également garder 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"
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 qu'elle vous permet d'effacer l'indicateur par programmation plus tard et de permettre ainsi à 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 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é.