Starting March 27, 2025, we recommend using android-latest-release instead of aosp-main to build and contribute to AOSP. For more information, see Changes to AOSP.
Stay organized with collections
Save and categorize content based on your preferences.
In Android 11, inattentive sleep is a power-saving feature
that allows a user inactivity timeout to be set after which the screen turns off, even
if windows with FLAG_KEEP_SCREEN_ON
are visible or wakelocks of level
FULL_WAKE_LOCK,
SCREEN_BRIGHT_WAKE_LOCK or
SCREEN_DIM_WAKE_LOCK
are held.
Wakelocks with level PARTIAL_WAKE_LOCK aren't affected by this feature.
Shortly before the timeout expires, a message can be shown that warns
the user that the device will go to sleep if they don't interact with the device.
In this context, user activity refers to anything that triggers a call to
PowerManager#userActivity (without the USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS
flag), including but not limited to:
Interacting with the touchscreen
Pressing a physical button
Input events from an external accessory (for example, connected keyboard, bluetooth remote,
IR remote)
Voice interaction
Receiving certain HDMI CEC messages, such as One Touch Play
Starting a new cast session
Customization
If the feature is enabled, the device shows an onscreen warning after a specified time of
user inactivity. If no action is taken, the screen turns off. You can customize the feature
using these configuration options.
Configure the timeout
To configure the timeout, update the following element in
frameworks/base/core/res/res/values/config.xml:
config_attentiveTimeout
Specifies the default time in milliseconds of user inactivity after which the screen turns off
(even if screen wakelocks are in place).
Set at build time.
If the value is between 0 and config_minimumScreenOffTimeout,
the timeout is set to config_minimumScreenOffTimeout to prevent the device from
turning off its screen shortly after waking up.
Default: -1, which disables this feature.
Override the default timeout
To override the default timeout setting, update the following element.
Settings.Secure.ATTENTIVE_TIMEOUT
If set, overrides the default inattentive sleep timeout set by
config_attentiveTimeout.
Can be set at runtime.
Configure the duration before warning appears
To configure the duration, update the following element in
frameworks/base/core/res/res/values/config.xml:
config_attentiveWarningDuration
How long to show a warning message to the user before the screen turns off after
prolonged user inactivity.
The value should be well below the set inattentive sleep timeout, otherwise the
warning dialog shows constantly and can't be dismissed.
Default: 30000 (30s).
Show the timeout preferences in TvSettings
To show the timeout preferences, update the following element in
packages/apps/TvSettings/Settings/res/values/config.xml:
config_show_standby_timeout
Whether to show a preference item for allowing turning the screen off during media playback.
Default: false.
Resources for the warning UI
The layout of the warning dialog is defined in
frameworks/base/packages/SystemUI/res/layout/inattentive_sleep_warning.xml.
The following strings for the dialog are defined in
frameworks/base/packages/SystemUI/res/values/strings.xml and
frameworks/base/packages/SystemUI/res-product/values/strings.xml.
inattentive_sleep_warning_title
inattentive_sleep_warning_message
The build time configurations and resources can be changed by resource overlays.
Implementation
Enable the feature using the following.
Override the default config_attentiveTimeout.
If using the AOSP TvSettings:
Disable the feature in settings by
overriding config_show_standby_timeout.
Implement your own settings
that set Settings.Secure.ATTENTIVE_TIMEOUT.
Validation
The CTS tests for the feature are at
cts/hostsidetests/os/src/android/os/cts/InattentiveSleepTests.java.
Examples and source
frameworks/base/packages/SystemUI/src/com/android/systemui/power/InattentiveSleepWarningView.java
contains the default warning UI implementation.
packages/apps/TvSettings provides an example of how to expose the feature in
settings.
Manual test case example
Make sure the stay_on_while_plugged_in
developer setting is off if the device's health HAL reports that the device has a
battery (battery_present is true) as this might prevent the
feature from turning off the screen. adb shell settings put global stay_on_while_plugged_in 0
Set an inattentive sleep timeout to be a few seconds more than the warning dialog duration. adb shell settings put secure attentive_timeout 32000
Start playing back a video (to acquire a screen wakelock).
Verify that the sleep warning dialog appears after a few seconds.
Verify that the screen turns off after the set timeout expires.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-06-12 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-06-12 UTC."],[],[],null,["# TV standby\n\nIn Android 11, inattentive sleep is a power-saving feature\nthat allows a user inactivity timeout to be set after which the screen turns off, even\nif windows with [FLAG_KEEP_SCREEN_ON](https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_KEEP_SCREEN_ON)\nare visible or wakelocks of level\n[FULL_WAKE_LOCK](https://developer.android.com/reference/android/os/PowerManager#FULL_WAKE_LOCK),\n[SCREEN_BRIGHT_WAKE_LOCK](https://developer.android.com/reference/android/os/PowerManager#SCREEN_BRIGHT_WAKE_LOCK) or\n[SCREEN_DIM_WAKE_LOCK](https://developer.android.com/reference/android/os/PowerManager#SCREEN_DIM_WAKE_LOCK)\nare held.\nWakelocks with level [PARTIAL_WAKE_LOCK](https://developer.android.com/reference/android/os/PowerManager#PARTIAL_WAKE_LOCK) aren't affected by this feature.\nShortly before the timeout expires, a message can be shown that warns\nthe user that the device will go to sleep if they don't interact with the device.\n\nIn this context, user activity refers to anything that triggers a call to\n`PowerManager#userActivity` (without the `USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS`\nflag), including but not limited to:\n\n- Interacting with the touchscreen\n- Pressing a physical button\n- Input events from an external accessory (for example, connected keyboard, bluetooth remote, IR remote)\n- Voice interaction\n- Receiving certain HDMI CEC messages, such as One Touch Play\n- Starting a new cast session\n\nCustomization\n-------------\n\nIf the feature is enabled, the device shows an onscreen warning after a specified time of\nuser inactivity. If no action is taken, the screen turns off. You can customize the feature\nusing these configuration options.\n| **Caution:** If a similar power-saving feature is already implemented, enabling this feature might lead to unintended consequences, such as duplicate warning UI.\n\n### Configure the timeout\n\nTo configure the timeout, update the following element in\n`frameworks/base/core/res/res/values/config.xml`:\n\n- `config_attentiveTimeout`\n - Specifies the default time in milliseconds of user inactivity after which the screen turns off (even if screen wakelocks are in place).\n - Set at build time.\n - If the value is between `0` and `config_minimumScreenOffTimeout`, the timeout is set to `config_minimumScreenOffTimeout` to prevent the device from turning off its screen shortly after waking up.\n - Default: `-1`, which disables this feature.\n\n### Override the default timeout\n\nTo override the default timeout setting, update the following element.\n\n- `Settings.Secure.ATTENTIVE_TIMEOUT`\n - If set, overrides the default inattentive sleep timeout set by `config_attentiveTimeout`.\n - Can be set at runtime.\n\n### Configure the duration before warning appears\n\nTo configure the duration, update the following element in\n`frameworks/base/core/res/res/values/config.xml`:\n\n- `config_attentiveWarningDuration`\n - How long to show a warning message to the user before the screen turns off after prolonged user inactivity.\n - The value should be well below the set inattentive sleep timeout, otherwise the warning dialog shows constantly and can't be dismissed.\n - Default: `30000` (30s).\n\n### Show the timeout preferences in TvSettings\n\nTo show the timeout preferences, update the following element in\n`packages/apps/TvSettings/Settings/res/values/config.xml`:\n\n- `config_show_standby_timeout`\n - Whether to show a preference item for allowing turning the screen off during media playback.\n - Default: `false`.\n\n### Resources for the warning UI\n\n- The layout of the warning dialog is defined in `frameworks/base/packages/SystemUI/res/layout/inattentive_sleep_warning.xml`.\n- The following strings for the dialog are defined in `frameworks/base/packages/SystemUI/res/values/strings.xml` and `frameworks/base/packages/SystemUI/res-product/values/strings.xml`.\n - `inattentive_sleep_warning_title`\n - `inattentive_sleep_warning_message`\n\nThe build time configurations and resources can be changed by resource overlays.\n\nImplementation\n--------------\n\nEnable the feature using the following.\n\n1. Override the default `config_attentiveTimeout`.\n2. If using the AOSP `TvSettings`:\n - Disable the feature in settings by overriding `config_show_standby_timeout`.\n - Implement your own settings that set `Settings.Secure.ATTENTIVE_TIMEOUT`.\n\nValidation\n----------\n\nThe CTS tests for the feature are at\n`cts/hostsidetests/os/src/android/os/cts/InattentiveSleepTests.java`.\n\nExamples and source\n-------------------\n\n- `frameworks/base/packages/SystemUI/src/com/android/systemui/power/InattentiveSleepWarningView.java` contains the default warning UI implementation.\n- `packages/apps/TvSettings` provides an example of how to expose the feature in settings.\n\nManual test case example\n------------------------\n\n1. Make sure the `stay_on_while_plugged_in`\n developer setting is off if the device's health HAL reports that the device has a\n battery (`battery_present` is `true`) as this might prevent the\n feature from turning off the screen. \n\n `adb shell settings put global stay_on_while_plugged_in 0`\n\n2. Set an inattentive sleep timeout to be a few seconds more than the warning dialog duration. \n `adb shell settings put secure attentive_timeout 32000`\n3. Start playing back a video (to acquire a screen wakelock).\n4. Verify that the sleep warning dialog appears after a few seconds.\n5. Verify that the screen turns off after the set timeout expires."]]