Итак, долгое время я думал, что знаю, как остановить переход экрана в спящий режим, я просто использовал этот код в своей Activity:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Однако я понял, что это работало только тогда, когда мой телефон находился в «режиме разработчика», то есть когда отладка USB (Настройки -> Параметры разработчика -> Отладка USB) была включена / проверена. Тогда приведенные выше коды действительно останавливают экран/устройство, чтобы перейти в спящий режим.
Когда эта отладка не проверяется, мой экран засыпает, как будто завтра не наступит. Я использую Android 4.04 на своем устройстве, и
android:minSdkVersion="12"
android:targetSdkVersion="16"
Кто-нибудь слышал об этой проблеме?
ИЗМЕНИТЬ
Я протестировал с предложением Commonswares и добавил setKeepScreenOn() в код, поэтому он выглядит так:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
View root = findViewById(android.R.id.content);
if (root != null)
root.setKeepScreenOn(true);
Я также проверил, чтобы этот код действительно выполнялся, и это так. Но это ничего не меняет...
FLAG_KEEP_SCREEN_ONи когда-либо использовал толькоsetKeepScreenOn()(поскольку он проще), я не могу комментировать эффективность вашего кодаFLAG_KEEP_SCREEN_ON. - person CommonsWare   schedule 04.03.2013setKeepScreenOn()для отложенного тайм-аута, когда вы хотите, чтобы экран горел некоторое время, но не бесконечно, если пользователь не использует активно ваше приложение. Этот образец успешно работал на всех аппаратных средствах, на которых я его пробовал. - person CommonsWare   schedule 07.03.2013OnCreate(). Он работает с использованием любого метода (флагFLAG_KEEP_SCREEN_ONилиView.setKeepScreenOn(true)). Если я попытаюсь оставить экран включенным где-то послеOnCreate()(например, на основе ввода пользователя), это не сработает. - person mikejonesguy   schedule 26.01.2017