OEM 可以在可折叠设备上配置一个选项,让用户选择在将设备从解锁且展开状态折叠起来时,外屏的运行方式。
该设置位于设置 > 显示 > 折叠时继续使用应用中。 用户有以下三种选择:
- 始终:当用户折叠设备时,外屏始终会开启并保持解锁状态。
- 向上滑动以继续:当用户折叠设备时,设备会显示锁屏界面,而无需进行身份验证,除非某个应用持有唤醒锁,在这种情况下,设备会保持唤醒状态并停留在该应用中。这是默认设置。
- 永不:当用户折叠设备时,设备会锁定,外屏会关闭。
图 1. 折叠锁定行为设置。
配置折叠锁定行为设置
如需在设置中显示折叠锁定行为设置,请在设备的叠加层 config.xml
文件中填充 config_fold_lock_behavior
布尔值:
<!-- Whether to show Fold lock behavior setting feature in Settings app -->
<bool name="config_fold_lock_behavior">true</bool>
实现细节
折叠锁定行为由一项设置和多个后端类控制。
设置和界面
FOLD_LOCK_BEHAVIOR
设置的值会以字符串形式保留,对应于用户在设置 > 显示 > 折叠时继续使用应用中的选择:
- 始终:
stay_awake_on_fold_key
- 向上滑动即可继续:
selective_stay_awake_key
- 从不:
sleep_on_fold_key
该设置是从 display_settings.xml
扩充的。设置页面界面在 FoldLockBehaviorSettings
fragment 中实现,偏好设置由 FoldLockBehaviorPreferenceController
管理。
后端逻辑
当设备折叠时,LogicalDisplayMapper
和 PowerManager
会按如下方式控制设备行为:
LogicalDisplayMapper
使用FoldSettingProvider
读取FOLD_LOCK_BEHAVIOR
设置值。- 根据设置值:
- 如果值为
stay_awake_on_fold_key
,则设备保持唤醒状态。 - 如果值为
selective_stay_awake_key
或sleep_on_fold_key
,LogicalDisplayMapper
会向PowerManager
发送#goToSleep
信号。- 对于
selective_stay_awake_key
,#goToSleep
信号包含标志PowerManager.GO_TO_SLEEP_FLAG_SOFT_SLEEP
。这会导致设备显示锁屏界面,而无需进行身份验证。 - 对于
sleep_on_fold_key
,系统会发送不带此标志的#goToSleep
信号,导致设备锁定。
- 对于
- 如果值为