Impostazione del comportamento di blocco della piega

Gli OEM possono configurare un'opzione sui dispositivi pieghevoli che consente agli utenti di scegliere il comportamento dello schermo esterno quando piegano il dispositivo da uno stato sbloccato e aperto.

L'impostazione si trova in Impostazioni > Display > Continua a usare le app quando chiuso. L'utente ha le seguenti tre opzioni:

  • Sempre: quando l'utente chiude il dispositivo, il display frontale si accende sempre e rimane sbloccato.
  • Scorri verso l'alto per continuare:quando l'utente chiude il dispositivo, questo mostra la tastiera protetta senza richiedere l'autenticazione, a meno che un'app non mantenga un wakelock, nel qual caso il dispositivo rimane attivo sull'app. Questa è l'impostazione predefinita.
  • Mai: quando l'utente chiude il dispositivo, questo si blocca e il display frontale si spegne.

Pagina delle impostazioni del comportamento di chiusura

Figura 1. Impostazione del comportamento di blocco della piega.

Configurare l'impostazione del comportamento di blocco della piega

Per visualizzare l'impostazione del comportamento di blocco della piega in Impostazioni, compila il valore booleano config_fold_lock_behavior nel file di overlay config.xml del dispositivo:

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

Dettagli di implementazione

Il comportamento di blocco della piega è controllato da un'impostazione e da diverse classi di backend.

Impostazioni e UI

Il valore dell'impostazione FOLD_LOCK_BEHAVIOR viene mantenuto come stringa, che corrisponde alla selezione dell'utente in Impostazioni > Display > Continua a usare le app quando chiuso:

L'impostazione è stata aumentata da display_settings.xml. La UI della pagina delle impostazioni è implementata nel fragmento FoldLockBehaviorSettings e la preferenza è gestita da FoldLockBehaviorPreferenceController.

Logica back-end

Quando il dispositivo è chiuso, LogicalDisplayMapper e PowerManager controllano il comportamento del dispositivo come segue:

  1. LogicalDisplayMapper legge il valore dell'impostazione FOLD_LOCK_BEHAVIOR utilizzando FoldSettingProvider.
  2. In base al valore dell'impostazione:
    • Se il valore è stay_awake_on_fold_key, il dispositivo rimane attivo.
    • Se il valore è selective_stay_awake_key o sleep_on_fold_key, LogicalDisplayMapper invia un indicatore #goToSleep a PowerManager.
      • Per selective_stay_awake_key, il segnale #goToSleep include il flag PowerManager.GO_TO_SLEEP_FLAG_SOFT_SLEEP. In questo modo il dispositivo mostra la schermata di blocco senza richiedere l'autenticazione.
      • Per sleep_on_fold_key, il segnale #goToSleep viene inviato senza questo flag, causando il blocco del dispositivo.