Setelan perilaku kunci lipatan

OEM dapat mengonfigurasi opsi di perangkat foldable yang memungkinkan pengguna memilih cara layar luar berperilaku saat mereka melipat perangkat dari kondisi tidak terkunci dan dibentangkan.

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

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

Halaman setelan perilaku kunci lipatan

Gambar 1. Setelan perilaku kunci lipatan.

Mengonfigurasi setelan perilaku kunci lipatan

Untuk menampilkan setelan perilaku kunci lipatan di Setelan, isi boolean config_fold_lock_behavior di file config.xml overlay 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 lipatan 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 diperbesar 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 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 mencakup flag PowerManager.GO_TO_SLEEP_FLAG_SOFT_SLEEP. Hal ini menyebabkan perangkat menampilkan pelindung tombol tanpa memerlukan autentikasi.
      • Untuk sleep_on_fold_key, sinyal #goToSleep dikirim tanpa tanda ini, sehingga menyebabkan perangkat terkunci.