Mam trzy aktywności w mojej aplikacji. Chcę, żeby ekran się obudził, gdy jest w drugim działaniu. Ekran nie powinien wyłączać się podczas mojej drugiej aktywności, chyba że przycisk "blokada" zostanie naciśnięty ręcznie. Przeszedłem wiele linków, ale wydają mi się one niejasne.Utrzymuj ekran przez całą moją aktywność
Odpowiedz
Jak wspomniano w tutorialu Android Keep the Screen On, możesz to zrobić na kilka sposobów. Można ustawić FLAG_KEEP_SCREEN_ON na oknie za aktywność:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Równoważny XML do tego celu jest dodanie atrybutu android:keepScreenOn="true"
do widoku głównego układu swoją aktywność użytkownika. Zaletą ustawienie flagi programowo jest to, że można użyć
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
gdy nie jest już potrzebna, aby wymusić, aby pozostać na ekranie w czasie, gdy działalność jest uruchomiony.
Innym sposobem kontrolowania ekranu (i niektórych innych zasobów) jest użycie 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ędą musiały zawierać to uprawnienie:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
Jednakże, jak wspomniano w samouczku blokada wybudzenia jest bardziej odpowiednia dla innych przypadków użycia (takich jak usługa lub zadanie w tle wymagające, aby procesor działał, gdy ekran jest wyłączony).
działa idealnie! dzięki! – user838522
Pierwszy wybór to ** dużo ** lepsze ... nie używaj blokady wybudzania !!Wymaga dodatkowej zgody w manifeście! http://stackoverflow.com/a/2134602/844882 –
@AlexLockwood - W przypadku aplikacji OP pierwsze podejście jest lepsze. Jednak błędem jest przyjęcie zasady "nie używaj blokady wybudzania!" Blokada wybudzania zapewnia większą kontrolę nad stanem ekranu. Gdy działanie wymaga jedynie utrzymania ekranu przez krótki czas, blokada wybudzania może zostać zwolniona, co oszczędza baterię. Przy pierwszym podejściu ekran jest utrzymywany przez cały czas, gdy aktywność jest na pierwszym planie. Ponadto pierwsze podejście nie może być stosowane przez usługę wykonującą pracę w imieniu działania. –
Jak rozumiem twoje pytanie, myślę, że musisz użyć WAKE_LOCK
dla niego w swojej aplikacji.
Coś,
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"");
mWakeLock.acquire();
I manifest.xml Plik w używanej aplikacji dodać to,
<uses-permission android:name="android.permission.WAKE_LOCK" />
to działa też .. dzięki! – user838522
Spróbuj skorzystać z tej
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Czy możesz dodać trochę więcej wyjaśnień, w jaki sposób Twoje rozwiązanie rozwiązuje problem? Pomoże OP lepiej zrozumieć Twoje rozwiązanie. – KLee1
znajdę rozwiązanie to znacznie łatwiejsze:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" // Whatever your layout is
...
android:keepScreenOn="true"> // Add this line
Wystarczy dodać do swojej aktywności układu XML.
To jest ładne i czyste. – OneWorld
Ten kod jest przestarzała, użyj zamiast tego:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
Po zakończeniu z użytkowania, call (najlepszym rozwiązaniem jest wywołanie tej metody w metodzie onDestroy jakiejś aktywności):
wl.release();
Więcej informacji na ten temat na temat tego link
[PowerManager.SCREEN_DIM_WAKE_LOCK] (http://developer.android.com/reference/android/os/PowerManager.html#SCREEN_DIM_WAKE_LOCK) został przestarzały na rzecz [WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON] (http://developer.android. com/reference/android/view/WindowManager.LayoutParams.html # FLAG_KEEP_SCREEN_ON) na poziomie API 17. – anon
- 1. onSuggestionClick odtwarza moją aktywność
- 2. Jak wyświetlić aktywność, gdy ekran jest zablokowany?
- 3. Dlaczego lxml.etree.iterparse() pochłania całą moją pamięć?
- 4. Promise.all zużywa całą moją pamięć RAM
- 5. Aktywność pokazuje pusty ekran zamiast mapy
- 6. JIRA: znajdź całą moją zarejestrowaną pracę z zeszłego tygodnia.
- 7. Jak wykluczyć moją własną aktywność z Activity.startActivity (Intent) Chooser?
- 8. Aktywność Java Keyboard/Mouse (nawet poza moją aplikacją)
- 9. Ustaw pełny ekran onCreate
- 10. Android proguard, utrzymuj wewnętrzną klasę
- 11. Przez pewien czas miga czarny ekran
- 12. Jak wyświetlić "Zrzut ekranu: dostępny przez ekran"?
- 13. Pusta aktywność kontra pusta aktywność
- 14. Android natywny ekran blokady ICS
- 15. Aktywność fragmentu paska działania
- 16. Fragmenty - Czy musisz używać Owijacza aktywności wokół fragmentu, który obejmuje całą Aktywność?
- 17. Aktywność nie jest renderowana losowo, pokazuje tylko biały ekran na Samsungu
- 18. metoda C# asynchroniczny dzwonić przez całą drogę do Main
- 19. Wydrukuj tylko pasujące słowo, nie całą linię przez grep
- 20. Zastępowanie wszystkich NaN zerami bez przechodzenia przez całą macierz?
- 21. Jak wznowić ekran (ekran GNU)
- 22. obchodzenia lub uniknąć błędów z upaść moją całą aplikację node.js na Heroku
- 23. Dlaczego ten kod constexpr powoduje, że GCC pobiera całą moją pamięć RAM?
- 24. Jak zrobić działalności, nie obejmujące pełny ekran
- 25. Utrzymuj nieprzetworzoną Java Enum przy użyciu Hibernate
- 26. Utrzymuj pozycję kursora w contenteditable div
- 27. Szyny - Utrzymuj tabelę poza strukturą.sql podczas migracji
- 28. Julia - uruchom skrypt i utrzymuj tłumacza.
- 29. Zawsze utrzymuj kursor w środku Vim
- 30. Aktywność w androidTest nie jest uruchamiany przez ActivityTestRule
Zobacz szczegółową odpowiedź tutaj ... http://stackoverflow.com/questions/5712849/how-do-i-keep-the-screen-on-in-my-app/24261889# 24261889 – Nepster