В Android 11 функция inattentive sleep (неактивный сон) — это функция энергосбережения, которая позволяет установить тайм-аут бездействия пользователя, по истечении которого экран отключается, даже если видны окна с FLAG_KEEP_SCREEN_ON или установлены wakelock-ы уровня FULL_WAKE_LOCK , SCREEN_BRIGHT_WAKE_LOCK или SCREEN_DIM_WAKE_LOCK . Wakelock-ы уровня PARTIAL_WAKE_LOCK не затрагиваются этой функцией. Незадолго до истечения тайм-аута может отображаться сообщение, предупреждающее пользователя о том, что устройство перейдёт в спящий режим, если пользователь не будет с ним взаимодействовать.
 В этом контексте активность пользователя означает все, что инициирует вызов PowerManager#userActivity (без флага USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS ), включая, помимо прочего:
- Взаимодействие с сенсорным экраном
 - Нажатие физической кнопки
 - Входные события от внешнего устройства (например, подключенной клавиатуры, пульта Bluetooth, ИК-пульта)
 - Голосовое взаимодействие
 - Прием определенных сообщений HDMI CEC, таких как One Touch Play
 - Начало нового сеанса кастинга
 
Настройка
Если эта функция включена, устройство отображает экранное предупреждение по истечении заданного времени бездействия пользователя. При отсутствии действий экран отключается. Вы можете настроить функцию с помощью следующих параметров конфигурации.
Настройте тайм-аут
 Чтобы настроить время ожидания, обновите следующий элемент в frameworks/base/core/res/res/values/config.xml :
-  
config_attentiveTimeout - Задает время бездействия пользователя по умолчанию в миллисекундах, по истечении которого экран выключается (даже если установлены блокировки экрана).
 - Устанавливается во время сборки.
 -  Если значение находится в диапазоне от 
0доconfig_minimumScreenOffTimeout, тайм-аут устанавливается наconfig_minimumScreenOffTimeout, чтобы предотвратить отключение экрана устройства вскоре после пробуждения. -  По умолчанию: 
-1, что отключает эту функцию. 
Переопределить тайм-аут по умолчанию
Чтобы переопределить настройку времени ожидания по умолчанию, обновите следующий элемент.
-  
Settings.Secure.ATTENTIVE_TIMEOUT -  Если установлено, переопределяет тайм-аут сна по невнимательности по умолчанию, установленный параметром 
config_attentiveTimeout. - Может быть установлено во время выполнения.
 
Настройте длительность отображения предупреждения
 Чтобы настроить длительность, обновите следующий элемент в frameworks/base/core/res/res/values/config.xml :
-  
config_attentiveWarningDuration - Как долго показывать пользователю предупреждающее сообщение, прежде чем экран выключится после длительного бездействия пользователя.
 - Значение должно быть значительно ниже установленного времени ожидания при невнимательности, в противном случае диалоговое окно с предупреждением будет появляться постоянно и его невозможно будет закрыть.
 -  По умолчанию: 
30000(30 с). 
Показать настройки времени ожидания в настройках телевизора
 Чтобы отобразить настройки времени ожидания, обновите следующий элемент в packages/apps/TvSettings/Settings/res/values/config.xml :
-  
config_show_standby_timeout - Показывать ли элемент настроек, разрешающий отключение экрана во время воспроизведения мультимедиа.
 -  По умолчанию: 
false. 
Ресурсы для пользовательского интерфейса предупреждений
-  Макет диалогового окна предупреждения определен в 
frameworks/base/packages/SystemUI/res/layout/inattentive_sleep_warning.xml. -  Следующие строки для диалога определены в 
frameworks/base/packages/SystemUI/res/values/strings.xmlиframeworks/base/packages/SystemUI/res-product/values/strings.xml. -  
inattentive_sleep_warning_title -  
inattentive_sleep_warning_message 
Конфигурации времени сборки и ресурсы можно изменить с помощью наложений ресурсов.
Выполнение
Включите эту функцию, выполнив следующие действия.
-  Переопределить значение по умолчанию 
config_attentiveTimeout. -  При использовании AOSP 
TvSettings: -  Отключите эту функцию в настройках, переопределив 
config_show_standby_timeout. -  Реализуйте собственные настройки, устанавливающие 
Settings.Secure.ATTENTIVE_TIMEOUT. 
Проверка
 Тесты CTS для этой функции находятся по адресу cts/hostsidetests/os/src/android/os/cts/InattentiveSleepTests.java .
Примеры и источники
-  
frameworks/base/packages/SystemUI/src/com/android/systemui/power/InattentiveSleepWarningView.javaсодержит реализацию пользовательского интерфейса предупреждений по умолчанию. -  
packages/apps/TvSettingsсодержит пример того, как включить эту функцию в настройки. 
Пример ручного тестового случая
Убедитесь, что параметр разработчика
stay_on_while_plugged_inотключен, если HAL состояния устройства сообщает, что устройство имеет аккумулятор (battery_presentимеетtrue), так как это может помешать функции отключить экран.
adb shell settings put global stay_on_while_plugged_in 0-  Установите тайм-аут сна по невнимательности на несколько секунд больше, чем длительность диалогового окна с предупреждением.
adb shell settings put secure attentive_timeout 32000 - Начните воспроизведение видео (чтобы активировать блокировку экрана).
 - Убедитесь, что через несколько секунд появится диалоговое окно с предупреждением о переходе в спящий режим.
 - Убедитесь, что экран выключается по истечении заданного времени ожидания.