A partir de 27 de março de 2025, recomendamos usar android-latest-release em vez de aosp-main para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
No Android 11, o modo de suspensão involuntário é um recurso de economia de energia
que permite definir um tempo limite de inatividade do usuário após o qual a tela é desligada, mesmo
se janelas com FLAG_KEEP_SCREEN_ON
estiver visível ou wakelocks de nível
FULL_WAKE_LOCK,
SCREEN_BRIGHT_WAKE_LOCK ou
SCREEN_DIM_WAKE_LOCK
estiver mantido.
Os wakelocks com nível PARTIAL_WAKE_LOCK não são afetados por esse recurso.
Pouco antes do tempo limite expirar, uma mensagem pode ser exibida alertando
o usuário de que o dispositivo vai entrar em suspensão se ele não interagir com ele.
Nesse contexto, a atividade do usuário se refere a qualquer coisa que aciona uma chamada para
PowerManager#userActivity (sem a flag
USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS), incluindo, mas não se limitando a:
Como interagir com a tela touch
Pressionar um botão físico
Eventos de entrada de um acessório externo (por exemplo, teclado conectado, controle remoto Bluetooth,
controle remoto por infravermelho)
Interação por voz
Receber determinadas mensagens HDMI CEC, como o recurso One Touch Play
Como iniciar uma nova sessão de transmissão
Personalização
Se o recurso estiver ativado, o dispositivo vai mostrar um aviso na tela após um período especificado de
inatividade do usuário. Se nenhuma ação for realizada, a tela será desligada. É possível personalizar o recurso
usando essas opções de configuração.
Configurar o tempo limite
Para configurar o tempo limite, atualize o seguinte elemento em
frameworks/base/core/res/res/values/config.xml:
config_attentiveTimeout
Especifica o tempo padrão em milissegundos de inatividade do usuário após o qual a tela é desligada,
mesmo que wakelocks de tela estejam em vigor.
Definido no momento do build.
Se o valor estiver entre 0 e config_minimumScreenOffTimeout,
o tempo limite será definido como config_minimumScreenOffTimeout para evitar que o dispositivo
desligue a tela logo após ativar.
Padrão: -1, que desativa esse recurso.
Substituir o tempo limite padrão
Para substituir a configuração padrão de tempo limite, atualize o elemento a seguir.
Settings.Secure.ATTENTIVE_TIMEOUT
Se definido, substitui o tempo limite de suspensão padrão definido por
config_attentiveTimeout.
Pode ser definido no momento da execução.
Configurar a duração antes que o aviso apareça
Para configurar a duração, atualize o seguinte elemento em
frameworks/base/core/res/res/values/config.xml:
config_attentiveWarningDuration
Tempo de exibição de uma mensagem de aviso para o usuário antes que a tela seja desligada após
um período prolongado de inatividade.
O valor precisa estar bem abaixo do tempo limite de suspensão de desatenção definido. Caso contrário, a
caixa de diálogo de aviso será mostrada constantemente e não poderá ser dispensada.
Padrão: 30000 (30s).
Mostrar as preferências de tempo limite em TvSettings
Para mostrar as preferências de tempo limite, atualize o seguinte elemento em
packages/apps/TvSettings/Settings/res/values/config.xml:
config_show_standby_timeout
Indica se um item de preferência será mostrado para permitir que a tela seja desligada durante a reprodução de mídia.
Padrão: false.
Recursos para a interface de aviso
O layout da caixa de diálogo de aviso é definido em
frameworks/base/packages/SystemUI/res/layout/inattentive_sleep_warning.xml.
As strings a seguir para a caixa de diálogo são definidas em
frameworks/base/packages/SystemUI/res/values/strings.xml e
frameworks/base/packages/SystemUI/res-product/values/strings.xml.
inattentive_sleep_warning_title
inattentive_sleep_warning_message
As configurações e os recursos do tempo de build podem ser alterados por sobreposições de recursos.
Implementação
Ative o recurso usando o seguinte.
Substitua o config_attentiveTimeout padrão.
Se estiver usando o TvSettings do AOSP:
Desative o recurso nas configurações
substituindo config_show_standby_timeout.
Implemente suas próprias configurações
que definem Settings.Secure.ATTENTIVE_TIMEOUT.
Validação
Os testes do CTS para o recurso estão em
cts/hostsidetests/os/src/android/os/cts/InattentiveSleepTests.java.
Exemplos e origem
frameworks/base/packages/SystemUI/src/com/android/systemui/power/InattentiveSleepWarningView.java
contém a implementação padrão da interface de aviso.
packages/apps/TvSettings mostra um exemplo de como expor o recurso nas
configurações.
Exemplo de caso de teste manual
Verifique se a configuração de desenvolvedor stay_on_while_plugged_in
está desativada se o HAL de integridade do dispositivo informar que ele tem
uma bateria (battery_present é true), já que isso pode impedir que o
recurso desligue a tela. adb shell settings put global stay_on_while_plugged_in 0
Defina um tempo limite de suspensão involuntária para ser alguns segundos a mais do que a duração da caixa de diálogo de aviso. adb shell settings put secure attentive_timeout 32000
Comece a reproduzir um vídeo (para adquirir um wakelock de tela).
Verifique se a caixa de diálogo de aviso de suspensão aparece após alguns segundos.
Verifique se a tela é desligada após o tempo limite definido.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-27 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."]]