Nie zasypiaj ekranu podczas mojej aktywności
Mam trzy aktywności w mojej aplikacji. Chcę, aby ekran nie zasnął, gdy jest w drugiej aktywności. Ekran nie powinien zgasnąć w mojej drugiej aktywności, chyba że klawisz "lock" zostanie naciśnięty ręcznie. Przejrzałem wiele linków, ale wydają mi się niejasne.
5 answers
Jak omówiono w samouczku Androida trzymaj ekran włączony , możesz to zrobić na kilka sposobów. Możesz ustawić FLAG_KEEP_SCREEN_ON w oknie aktywności:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Odpowiednikiem XML jest dodanie atrybutu android:keepScreenOn="true"
do głównego widoku układu Twojej aktywności. Zaletą programowego ustawiania flagi jest to, że można użyć
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Gdy nie musisz już wymuszać, aby ekran pozostawał włączony podczas aktywności.
Inny sposób kontroli ekran (i niektóre inne zasoby) ma używać blokady budzenia:
mWakeLock = ((PowerManager) getContext().getSystemService(Context.POWER_SERVICE))
.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
mWakeLock.acquire();
// screen stays on in this section
mWakeLock.release();
Manifest będzie musiał zawierać to pozwolenie:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
Jednak, jak opisano w samouczku, blokada budzenia jest bardziej odpowiednia dla innych przypadków użycia(takich jak usługa lub zadanie w tle wymagające działania procesora, gdy ekran jest wyłączony).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-20 13:16:46
Uważam to rozwiązanie za dużo łatwiejsze:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" // Whatever your layout is
...
android:keepScreenOn="true"> // Add this line
Po prostu dodaj to do układu aktywności XML.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-01 12:28:50
Jak rozumiem twoje pytanie, myślę, że musisz użyć WAKE_LOCK
do tego w swojej aplikacji.
Coś w rodzaju,
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"");
mWakeLock.acquire();
I w manifeście Twojego podania.XML file file add this,
<uses-permission android:name="android.permission.WAKE_LOCK" />
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-09 07:06:36
Spróbuj użyć tego
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-09 07:07:31
Ten kod jest przestarzały, użyj tego zamiast:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
Po zakończeniu użycia, call (najlepszym rozwiązaniem jest wywołanie tej metody w metodzie onDestroy jakiejś aktywności):
wl.release();
Więcej o tym na tym linku
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-04 10:03:18