Niektóre aplikacje, takie jak gry czy aplikacje do filmów, wymagają włączonego ekranu. Niektóre interfejsy API Androida automatycznie utrzymują ekran włączony. W innych przypadkach możesz ustawić flagę, aby ręcznie włączyć tryb wyświetlania.
Ręczne pozostawianie ekranu włączonego
Aby utrzymać ekran urządzenia włączony, ustaw w swojej aktywności flagę FLAG_KEEP_SCREEN_ON
. Ten parametr może być ustawiany tylko w aktywności, nigdy w usłudze ani innym komponencie aplikacji. Może to obejmować np. te funkcje:
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); } }
Innym sposobem na utrzymanie ekranu w stanie włączonym 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ównoznaczne z użyciem FLAG_KEEP_SCREEN_ON
.
Możesz użyć dowolnego podejścia, które najlepiej pasuje do Twojej aplikacji. Zaletą ustawiania flagi w ramach aktywności jest to, że możesz ją później wyczyścić programowo, a tym samym wyłączyć ekran.
Jeśli aplikacja z flagą FLAG_KEEP_SCREEN_ON
przechodzi do działania w tle, system pozwala na normalne wyłączenie ekranu. W tym przypadku nie musisz wyraźnie usuwać flagi. Jeśli aplikacja nie musi już utrzymywać ekranu włączonego, usuń flagę, wywołując funkcję clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
.
Tryb nieaktywny na telewizorze
Na urządzeniach telewizyjnych użyj FLAG_KEEP_SCREEN_ON
, aby urządzenie nie przechodziło w tryb nieaktywny podczas aktywnego odtwarzania filmu. Jeśli aktywność na pierwszym planie nie jest ustawiona na FLAG_KEEP_SCREEN_ON
, po pewnym czasie bezczynności urządzenie automatycznie przejdzie w tryb Ambient.