Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Modo de espera de TV

En androide 11, el sueño de falta de atención es una función de ahorro de energía que permite un tiempo de espera de inactividad del usuario que se fijará después de lo cual la pantalla se apaga, aunque haya ventanas con FLAG_KEEP_SCREEN_ON son visibles o wakelocks de nivel FULL_WAKE_LOCK , SCREEN_BRIGHT_WAKE_LOCK o SCREEN_DIM_WAKE_LOCK se llevan a cabo. Wakelocks con nivel PARTIAL_WAKE_LOCK no se ven afectados por esta función. Poco antes de que expire el tiempo de espera, se puede mostrar un mensaje que advierte al usuario que el dispositivo se suspenderá si no interactúa con el dispositivo.

En este contexto, la actividad del usuario se refiere a cualquier cosa que desencadena una llamada a PowerManager#userActivity (sin el USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS bandera), incluyendo pero no limitado a:

  • Interactuar con la pantalla táctil
  • Presionando un botón físico
  • Ingrese eventos desde un accesorio externo (por ejemplo, teclado conectado, control remoto bluetooth, control remoto IR)
  • Interacción de voz
  • Recibir ciertos mensajes HDMI CEC, como One Touch Play
  • Iniciar una nueva sesión de reparto

Personalización

Si la función está habilitada, el dispositivo muestra una advertencia en pantalla después de un tiempo específico de inactividad del usuario. Si no se realiza ninguna acción, la pantalla se apaga. Puede personalizar la función utilizando estas opciones de configuración.

Configurar el tiempo de espera

Para configurar el tiempo de espera, actualizar el elemento siguiente en frameworks/base/core/res/res/values/config.xml :

  • config_attentiveTimeout
    • Especifica el tiempo predeterminado en milisegundos de inactividad del usuario después del cual la pantalla se apaga (incluso si hay activaciones de bloqueo de pantalla).
    • Establecer en el momento de la construcción.
    • Si el valor está entre 0 y config_minimumScreenOffTimeout , el tiempo de espera se establece en config_minimumScreenOffTimeout para evitar que el dispositivo se apague la pantalla poco después de levantarse.
    • Por defecto: -1 , que desactiva esta función.

Anulando el tiempo de espera predeterminado

Para anular la configuración de tiempo de espera predeterminada, actualice el siguiente elemento.

  • Settings.Secure.ATTENTIVE_TIMEOUT
    • Si se establece, anula el conjunto de tiempo de espera del sueño falta de atención por defecto config_attentiveTimeout .
    • Se puede configurar en tiempo de ejecución.

Configurar la duración antes de que aparezca la advertencia

Para configurar la duración, actualizar el elemento siguiente en frameworks/base/core/res/res/values/config.xml :

  • config_attentiveWarningDuration
    • Cuánto tiempo se debe mostrar un mensaje de advertencia al usuario antes de que la pantalla se apague después de una inactividad prolongada del usuario.
    • El valor debe estar muy por debajo del tiempo de espera de inactividad establecido, de lo contrario, el cuadro de diálogo de advertencia se muestra constantemente y no se puede descartar.
    • Por defecto: 30000 (30s).

Mostrar las preferencias de tiempo de espera en TvSettings

Para mostrar las preferencias de tiempo de espera, actualizar el elemento siguiente en packages/apps/TvSettings/Settings/res/values/config.xml :

  • config_show_standby_timeout
    • Si mostrar un elemento de preferencia para permitir apagar la pantalla durante la reproducción de medios.
    • Por defecto: false .

Recursos para la interfaz de usuario de advertencia

  • El diseño del cuadro de diálogo de advertencia se define en frameworks/base/packages/SystemUI/res/layout/inattentive_sleep_warning.xml .
  • Las siguientes cadenas para el cuadro de diálogo se definen en frameworks/base/packages/SystemUI/res/values/strings.xml y frameworks/base/packages/SystemUI/res-product/values/strings.xml .
    • inattentive_sleep_warning_title
    • inattentive_sleep_warning_message

Las configuraciones de tiempo de construcción y los recursos se pueden cambiar mediante superposiciones de recursos.

Implementación

Habilite la función usando lo siguiente.

  1. Sustituir el valor predeterminado config_attentiveTimeout .
  2. Si el uso de dichos PSE TvSettings :
    • Desactivar la función de configuración anulando config_show_standby_timeout .
    • Aplicar su propia configuración que establecen Settings.Secure.ATTENTIVE_TIMEOUT .

Validación

Las pruebas de CTS para la función están en cts/hostsidetests/os/src/android/os/cts/InattentiveSleepTests.java .

Ejemplos y fuente

  • frameworks/base/packages/SystemUI/src/com/android/systemui/power/InattentiveSleepWarningView.java contiene la implementación de interfaz de usuario de advertencia predeterminado.
  • packages/apps/TvSettings proporciona un ejemplo de cómo exponer la función de configuración.

Ejemplo de caso de prueba manual

  1. Asegúrese de que el stay_on_while_plugged_in entorno desarrollador está apagado si los informes de HAL salud del dispositivo que el dispositivo tiene una batería ( battery_present es true ) ya que esto podría impedir que la función de apagar la pantalla.
    adb shell settings put global stay_on_while_plugged_in 0

  2. Establezca un tiempo de espera de inactividad para dormir unos segundos más que la duración del cuadro de diálogo de advertencia.
    adb shell settings put secure attentive_timeout 32000
  3. Comience a reproducir un video (para adquirir un wakelock de pantalla).
  4. Verifique que el cuadro de diálogo de advertencia de suspensión aparezca después de unos segundos.
  5. Verifique que la pantalla se apague después de que expire el tiempo de espera establecido.