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é.