Chế độ cài đặt hành vi khoá khi gập

Các OEM có thể định cấu hình một lựa chọn trên thiết bị có thể gập lại để cho phép người dùng chọn cách màn hình ngoài hoạt động khi họ gập thiết bị từ trạng thái đã mở khoá và mở ra.

Chế độ cài đặt này nằm trong phần Cài đặt > Màn hình > Tiếp tục dùng ứng dụng sau khi gập điện thoại. Người dùng có 3 lựa chọn sau:

  • Luôn luôn: Khi người dùng gập thiết bị, màn hình ngoài sẽ luôn bật và vẫn ở trạng thái mở khoá.
  • Vuốt lên để tiếp tục: Khi người dùng gập thiết bị, thiết bị sẽ hiện khoá màn hình mà không yêu cầu xác thực, trừ phi một ứng dụng đang giữ wakelock. Trong trường hợp đó, thiết bị sẽ luôn bật ứng dụng. Đây là chế độ cài đặt mặc định.
  • Không bao giờ: Khi người dùng gập thiết bị, thiết bị sẽ khoá và màn hình ngoài sẽ tắt.

Trang cài đặt chế độ khoá khi gập

Hình 1. Chế độ cài đặt hành vi khoá khi gập.

Định cấu hình chế độ cài đặt hành vi khoá khi gập

Để hiển thị chế độ cài đặt hành vi khoá gập trong phần Cài đặt, hãy điền giá trị boolean config_fold_lock_behavior vào tệp config.xml lớp phủ của thiết bị:

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

Thông tin chi tiết về việc triển khai

Hành vi khoá khi gập được kiểm soát bằng một chế độ cài đặt và một số lớp phụ trợ.

Chế độ cài đặt và giao diện người dùng

Giá trị của chế độ cài đặt FOLD_LOCK_BEHAVIOR được duy trì dưới dạng một chuỗi, tương ứng với lựa chọn của người dùng trong phần Cài đặt > Màn hình > Tiếp tục dùng ứng dụng sau khi gập điện thoại:

Chế độ cài đặt này được tăng cường từ display_settings.xml. Giao diện người dùng trang cài đặt được triển khai trong mảnh FoldLockBehaviorSettings và lựa chọn ưu tiên được quản lý bằng FoldLockBehaviorPreferenceController.

Logic Phần cuối

Khi thiết bị ở trạng thái gập, LogicalDisplayMapperPowerManager sẽ kiểm soát hành vi của thiết bị như sau:

  1. LogicalDisplayMapper đọc giá trị của chế độ cài đặt FOLD_LOCK_BEHAVIOR bằng cách sử dụng FoldSettingProvider.
  2. Dựa trên giá trị cài đặt:
    • Nếu giá trị là stay_awake_on_fold_key, thiết bị sẽ vẫn ở trạng thái bật.
    • Nếu giá trị là selective_stay_awake_key hoặc sleep_on_fold_key, LogicalDisplayMapper sẽ gửi tín hiệu #goToSleep đến PowerManager.
      • Đối với selective_stay_awake_key, tín hiệu #goToSleep bao gồm cờ PowerManager.GO_TO_SLEEP_FLAG_SOFT_SLEEP. Điều này khiến thiết bị hiển thị khoá bảo vệ mà không yêu cầu xác thực.
      • Đối với sleep_on_fold_key, tín hiệu #goToSleep được gửi mà không có cờ này, khiến thiết bị bị khoá.