Я хочу отправить устройство в спящий режим или выключить экран. Я исследовал и нашел эту тему: Отключить экран на 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);
Проблема: Я могу заставить его работать, но при попытке включить устройство он делает странные вещи, например, не хочет возвращаться, или если мои приложения находятся впереди, автоматически переходит в спящий режим сразу после нажатия кнопки. Это больше похоже на совет или обходной путь, чем на обычное решение.
Может ли кто-нибудь подсказать мне какой-нибудь хороший способ отправить устройство в спящий режим или выключить экран, который работал бы без проблем? Мне редко кажется, что такая простая функциональность не имеет хорошего способа ее использования (или, по крайней мере, хорошо документирована)