Niektóre aplikacje, np. gry lub aplikacje do odtwarzania filmów, wymagają, aby ekran był włączony. Niektóre interfejsy API Androida automatycznie utrzymują włączony ekran. W innych przypadkach możesz ustawić flagę, aby ręcznie utrzymać włączony ekran.
Ręczne utrzymywanie włączonego ekranu
Aby ekran urządzenia był cały czas włączony, ustaw flagę FLAG_KEEP_SCREEN_ON w aktywności. Tę flagę można ustawić tylko w aktywności, nigdy w usłudze ani innym komponencie aplikacji. Przykład:
class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } }
Innym sposobem na utrzymanie włączonego ekranu jest ustawienie atrybutu android:keepScreenOn w pliku XML układu aplikacji:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:keepScreenOn="true"> ... </RelativeLayout>
Użycie android:keepScreenOn="true" jest równoważne użyciu FLAG_KEEP_SCREEN_ON.
Możesz użyć dowolnego podejścia, które najlepiej pasuje do Twojej aplikacji. Zaletą programowego ustawiania flagi w aktywności jest to, że później możesz ją programowo wyczyścić, co pozwoli na wyłączenie ekranu.
Jeśli aplikacja z flagą FLAG_KEEP_SCREEN_ON przejdzie w tło, system pozwoli na normalne wyłączenie ekranu. W takim przypadku nie musisz
wyraźnie usuwać flagi. Jeśli aplikacja nie musi już utrzymywać włączonego ekranu, należy wyczyścić flagę, wywołując metodę clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON).
Tryb nieaktywny na telewizorze
Na telewizorach używaj FLAG_KEEP_SCREEN_ON, aby zapobiec przechodzeniu urządzenia w tryb nieaktywny podczas aktywnego odtwarzania filmu. Jeśli aktywność na pierwszym planie nie ustawia właściwości FLAG_KEEP_SCREEN_ON, urządzenie automatycznie przechodzi w tryb nieaktywny po okresie braku aktywności.