Chcę wysłać urządzenie do trybu uśpienia lub wyłączyć ekran. Mam zbadać i znaleźć ten temat: Turn off screen on AndroidJak wyłączyć ekran lub wysłać urządzenie do uśpienia
Zasadniczo są trzy sposoby, aby to zrobić, ale znalazłem problemy dla trzech:
a) Wybór 1:
PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE);
manager.goToSleep(int amountOfTime);
Problem : Powoduje FC. Czytałem, że potrzebuję uprawnień DEVICE_POWER
, ale nie można go przyznać zwykłym aplikacjom.
b) Wybór 2:
PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Your Tag");
wl.acquire();
wl.release();
Problem: ta nie działa dla mnie. Nie wiem dlaczego. Nie daje mi FC, ale jest nieszkodliwy.
c) Wybór 3:
WindowManager.LayoutParams params = getWindow().getAttributes();
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);
Problem: mogę zmusić go do pracy, ale podczas próby, aby włączyć urządzenie to nie dziwne rzeczy, jakby nie chciał wrócić, czy moje aplikacje jest z przodu, automatycznie przechodzi w stan uśpienia zaraz po naciśnięciu przycisku. Wygląda to bardziej jak wskazówka lub obejście niż normalne rozwiązanie.
Czy ktoś może mi powiedzieć jakąś dobrą metodę wysłania urządzenia do trybu uśpienia lub wyłączenia ekranu, który może działać bez problemów? Rzadko zdarza mi się, że prosta funkcjonalność, taka jak ta, nie jest dobrym sposobem na jej wykorzystanie (lub co najmniej dobrze udokumentowane).
Co jeśli chcę go wyłączyć ekran i nie zablokować do moich czasów blokady ekranu na zewnątrz? –