Как выключить экран или отправить устройство в спящий режим

Я хочу отправить устройство в спящий режим или выключить экран. Я исследовал и нашел эту тему: Отключить экран на Android

В основном, это три способа сделать это, но я обнаружил проблемы для трех:

a) Вариант 1:

PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE);
manager.goToSleep(int amountOfTime);

Проблема : Это вызывает FC. Я прочитал, что мне нужны разрешения DEVICE_POWER , но они не могут быть предоставлены для обычных приложений.

б) Вариант 2:

PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Your Tag");
wl.acquire();
wl.release();

Проблема: У меня это не работает. Не знаю почему. Это не дает мне FC, но безобидно.

c) Вариант 3:

WindowManager.LayoutParams params = getWindow().getAttributes();
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);

Проблема: Я могу заставить его работать, но при попытке включить устройство он делает странные вещи, например, не хочет возвращаться, или если мои приложения находятся впереди, автоматически переходит в спящий режим сразу после нажатия кнопки. Это больше похоже на совет или обходной путь, чем на обычное решение.

Может ли кто-нибудь подсказать мне какой-нибудь хороший способ отправить устройство в спящий режим или выключить экран, который работал бы без проблем? Мне редко кажется, что такая простая функциональность не имеет хорошего способа ее использования (или, по крайней мере, хорошо документирована)

13
задан Community 23 May 2017 в 12:08
поделиться