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.
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:
- Luôn luôn:
stay_awake_on_fold_key
- Vuốt lên để tiếp tục:
selective_stay_awake_key
- Không bao giờ:
sleep_on_fold_key
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, LogicalDisplayMapper
và PowerManager
sẽ kiểm soát hành vi của thiết bị như sau:
LogicalDisplayMapper
đọc giá trị của chế độ cài đặtFOLD_LOCK_BEHAVIOR
bằng cách sử dụngFoldSettingProvider
.- 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ặcsleep_on_fold_key
,LogicalDisplayMapper
sẽ gửi tín hiệu#goToSleep
đếnPowerManager
.- Đố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á.
- Đối với
- Nếu giá trị là