Setelan perilaku kunci lipatan

OEM dapat mengonfigurasi opsi di perangkat foldable yang memungkinkan pengguna memilih perilaku layar luar saat mereka melipat perangkat dari status tidak terkunci dan tidak dilipat.

Setelan ini terletak di Setelan > Layar > Lanjutkan penggunaan aplikasi saat dilipat. Pengguna memiliki tiga opsi berikut:

  • Selalu: Saat pengguna melipat perangkat, layar depan selalu menyala dan tetap tidak terkunci.
  • Geser ke atas untuk melanjutkan: Saat pengguna melipat perangkat, perangkat akan menampilkan keyguard tanpa memerlukan autentikasi, kecuali jika aplikasi menahan wakelock, yang dalam hal ini perangkat akan tetap aktif di aplikasi. Ini adalah setelan default.
  • Tidak pernah: Saat pengguna melipat perangkat, perangkat akan terkunci dan layar depan akan mati.

Halaman setelan perilaku kunci lipatan

Gambar 1. Setelan perilaku kunci lipat.

Mengonfigurasi setelan perilaku kunci lipat

Untuk menampilkan setelan perilaku kunci lipat di Setelan, isi boolean config_fold_lock_behavior di file overlay config.xml perangkat Anda:

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

Detail implementasi

Perilaku kunci lipat dikontrol oleh setelan dan beberapa class backend.

Setelan dan UI

Nilai setelan FOLD_LOCK_BEHAVIOR dipertahankan sebagai string, yang sesuai dengan pilihan pengguna di Setelan > Layar > Lanjutkan penggunaan aplikasi saat dilipat:

Setelan ini di-inflate dari display_settings.xml. UI halaman setelan diimplementasikan dalam fragmen FoldLockBehaviorSettings, dan preferensi dikelola oleh FoldLockBehaviorPreferenceController.

Logika backend

Saat perangkat dilipat, LogicalDisplayMapper dan PowerManager mengontrol perilaku perangkat sebagai berikut:

  1. LogicalDisplayMapper membaca nilai setelan FOLD_LOCK_BEHAVIOR menggunakan FoldSettingProvider.
  2. Berdasarkan nilai setelan:
    • Jika nilainya adalah stay_awake_on_fold_key, perangkat akan tetap aktif.
    • Jika nilainya adalah selective_stay_awake_key atau sleep_on_fold_key, LogicalDisplayMapper akan mengirimkan sinyal #goToSleep ke PowerManager.
      • Untuk selective_stay_awake_key, sinyal #goToSleep menyertakan flag PowerManager.GO_TO_SLEEP_FLAG_SOFT_SLEEP. Hal ini menyebabkan perangkat menampilkan keyguard tanpa memerlukan autentikasi.
      • Untuk sleep_on_fold_key, sinyal #goToSleep dikirim tanpa flag ini, sehingga menyebabkan perangkat terkunci.