<!-- A collection of defaults for the quick affordances on the lock screen. Each item must be a
string with two parts: the ID of the slot and the comma-delimited list of affordance IDs,
separated by a colon ':' character. For example: <item>bottom_end:home,wallet</item>. The
default is displayed by System UI as long as the user hasn't made a different choice for that
slot. If the user did make a choice, even if the choice is the "None" option, the default is
ignored. -->
<string-array name="config_keyguardQuickAffordanceDefaults" translatable="false">
<item>bottom_start:home</item>
<item>bottom_end:wallet</item>
</string-array>
android systemui中的锁屏界面左右二个快捷入口是如何实现的,需要如何配置config_keyguardQuickAffordanceDefaults,都有哪些选项?
Android 锁屏快捷入口:揭秘其实现与配置
Android 锁屏界面左右下角的两个快捷入口,官方称之为“快速访问(Quick Affordances)”,是 SystemUI 的一部分,为用户提供了无需解锁设备即可快速执行操作的便利。开发者和设备制造商可以通过特定的配置,自定义这些快捷入口的默认行为和可选项。
实现原理
锁屏快捷入口的实现基于 Android SystemUI 中的“Keyguard”(锁屏)模块。系统定义了不同的“槽位(Slots)”,用于放置这些快捷入口。在标准的 AOSP(Android 开源项目)中,默认提供了两个槽位:bottom_start
(左下角)和 bottom_end
(右下角)。
每个快捷入口的功能由一个 KeyguardQuickAffordanceConfig
的实现来定义。这些实现包含了快捷入口的图标、名称以及点击后执行的操作。当用户与锁屏快捷入口交互时,SystemUI 会调用相应 KeyguardQuickAffordanceConfig
中定义的逻辑。
如何配置 config_keyguardQuickAffordanceDefaults
设备制造商(OEM)可以通过修改资源文件来预设锁屏界面的默认快捷入口。这通过覆盖位于 packages/SystemUI/res/values/config.xml
文件中的 config_keyguardQuickAffordanceDefaults
字符串数组来实现。
该数组的每一项都遵循“槽位ID:快捷入口ID列表
”的格式。其中,槽位 ID 和快捷入口 ID 之间用冒号分隔。如果一个槽位支持多个快捷入口,它们的 ID 会用逗号分隔(尽管 AOSP 默认的槽位容量为 1)。
配置示例:
<string-array name="config_keyguardQuickAffordanceDefaults" translatable="false">
<item>bottom_start:home</item>
<item>bottom_end:wallet</item>
</string-array>
在上述示例中:
bottom_start
槽位(左下角)的默认快捷入口被设置为home
。bottom_end
槽位(右下角)的默认快捷入口被设置为wallet
。
需要注意的是,用户一旦在设备的设置中对该槽位的快捷方式进行了更改(即使是选择了“无”),此默认配置将不再生效。
可用的快捷入口选项
AOSP 内置了一些默认的快捷入口选项。通过分析 AOSP 源码和相关文档,可以找到以下常见的快捷入口 ID:
home
: 用于智能家居设备控制。wallet
: 快速访问电子钱包或支付服务。camera
: 启动相机应用。在一些版本中,可能还存在如camera_video
这样直接进入录像模式的选项。flashlight
: 打开或关闭手电筒。qr_code_scanner
: 启动二维码扫描器。voice_assist
: 激活语音助手。
除了这些内置的选项,开发者也可以创建新的“快速访问”功能。通过在 SystemUI 代码中添加 KeyguardQuickAffordanceConfig
的新实现,并将其添加到 KeyguardDataQuickAffordanceModule
中定义的数据集,即可让系统识别并将其作为用户的可选项。
此外,从 Android O(8.0)开始,Google 引入了通过 System UI Tuner 让用户自定义锁屏快捷方式的功能,允许用户从已安装的应用中选择快捷方式。这为用户提供了更高程度的个性化设置。
总而言之,Android 的锁屏快捷入口是一个灵活且可定制的功能,设备制造商可以通过覆盖资源文件来设置默认选项,而开发者也可以通过创建新的实现来扩展其功能。