Odpowiedzi:
Wymaga to nadania aplikacji dodatkowego pozwolenia i bardzo łatwo jest wprowadzić błędy, w których przypadkowo przytrzymujesz blokadę wybudzania, a tym samym pozostawiasz włączony ekran.
O wiele lepiej jest użyć flagi okna FLAG_KEEP_SCREEN_ON, którą możesz włączyć w oknie swojej aktywności w onCreate()następujący sposób:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
Dzięki temu ekran pozostanie włączony, gdy okno będzie na pierwszym planie i tylko wtedy, gdy będzie na pierwszym planie. To znacznie upraszcza ten typowy przypadek użycia, eliminując żonglowanie, które musisz wykonywać, gdy aplikacja przechodzi między stanami.
To pytanie ma już świetną odpowiedź od @hackbod!
Odpowiadam na to pytanie dwoma dodatkowymi rozwiązaniami!
Istniejące rozwiązanie:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
Dodatkowe rozwiązania:
możemy użyć keepScreenOn
1. implementation za pomocąsetKeepScreenOn() in java code
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// or any View (in case generated programmatically )
View v = getLayoutInflater().inflate(R.layout.driver_home, null);
v.setKeepScreenOn(true);
setContentView(v);
}
Dokumenty http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)
2. Dodawanie keepScreenOndoxml layout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true" >
Dokumenty http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn
Uwaga (kilka przydatnych punktów):
1. nie ma znaczenia, że keepScreenOnpowinno być na nim używane Main/Root/Parent View , może być używane z każdym child viewbędzie działać Tak samo, jak działaParent view
2. Jedyną rzeczą jest to, że View's Visibility must be visibleinaczej nie zadziała!
v.setKeepScreenOn(true);wydaje się być jedynym sposobem na zrobienie tego w przypadku pełnoekranowego fragmentu dialogowego
Innym rozwiązaniem jest dodanie android:keepScreenOn="true"( dokumentacji ) do widoków, które muszą mieć włączony ekran.
Pozwala na nieco bardziej szczegółową kontrolę pod względem tego, które widoki pozostają, a które nie. W ten sposób możesz nawet odwołać się do ustawienia z pliku zasobów.