Parámetro de configuración del comportamiento de bloqueo de plegado

Los OEM pueden configurar una opción en los dispositivos plegables que permite a los usuarios elegir cómo se comporta la pantalla externa cuando pliegan el dispositivo desde un estado desbloqueado y desplegado.

El parámetro de configuración se encuentra en Configuración > Pantalla > Continuar usando apps con el dispositivo plegado. El usuario tiene las siguientes tres opciones:

  • Siempre: Cuando el usuario pliega el dispositivo, la pantalla frontal siempre se enciende y permanece desbloqueada.
  • Desliza el dedo hacia arriba para continuar: Cuando el usuario pliega el dispositivo, este muestra el bloqueo de pantalla sin requerir autenticación, a menos que una app mantenga un bloqueo de activación, en cuyo caso el dispositivo permanece activo en la app. Este es el parámetro de configuración predeterminado.
  • Nunca: Cuando el usuario pliega el dispositivo, este se bloquea y la pantalla frontal se apaga.

Página de configuración del comportamiento de bloqueo de pliegue

Figura 1: Es el parámetro de configuración del comportamiento de bloqueo de plegado.

Cómo configurar el parámetro de configuración de comportamiento de bloqueo de plegado

Para mostrar el parámetro de configuración de comportamiento de bloqueo de pliegue en Configuración, completa el valor booleano config_fold_lock_behavior en el archivo de superposición config.xml de tu dispositivo:

  <!-- Whether to show Fold lock behavior setting feature in Settings app -->
  <bool name="config_fold_lock_behavior">true</bool>

Detalles de implementación

El comportamiento de bloqueo de plegado se controla con un parámetro de configuración y varias clases de backend.

Configuración y IU

El valor del parámetro de configuración FOLD_LOCK_BEHAVIOR se conserva como una cadena, que corresponde a la selección del usuario en Configuración > Pantalla > Continuar usando apps con el dispositivo plegado:

El parámetro de configuración se infla desde display_settings.xml. La IU de la página de configuración se implementa en el fragmento FoldLockBehaviorSettings, y la preferencia se administra con FoldLockBehaviorPreferenceController.

Lógica de backend

Cuando el dispositivo está plegado, LogicalDisplayMapper y PowerManager controlan el comportamiento del dispositivo de la siguiente manera:

  1. LogicalDisplayMapper lee el valor de configuración de FOLD_LOCK_BEHAVIOR con FoldSettingProvider.
  2. Según el valor del parámetro de configuración:
    • Si el valor es stay_awake_on_fold_key, el dispositivo permanece activo.
    • Si el valor es selective_stay_awake_key o sleep_on_fold_key, LogicalDisplayMapper envía un indicador #goToSleep a PowerManager.
      • Para selective_stay_awake_key, el indicador #goToSleep incluye la marca PowerManager.GO_TO_SLEEP_FLAG_SOFT_SLEEP. Esto hace que el dispositivo muestre el bloqueo de teclas sin requerir autenticación.
      • En el caso de sleep_on_fold_key, el indicador #goToSleep se envía sin este indicador, lo que provoca que el dispositivo se bloquee.