【SystemUI】锁屏界面快捷入口的实现

发布于:2025-08-30 ⋅ 阅读:(20) ⋅ 点赞:(0)
<!-- 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 的锁屏快捷入口是一个灵活且可定制的功能,设备制造商可以通过覆盖资源文件来设置默认选项,而开发者也可以通过创建新的实现来扩展其功能。


网站公告

今日签到

点亮在社区的每一天
去签到