伴侣设备配置文件

伴侣设备配置文件是在 Android 12 中引入的一项功能,允许伴侣应用请求一组特定于伴侣设备类型的权限,例如智能手表。通过使用伴侣设备配置文件,应用只需向移动设备上的用户显示一个提示,即可请求一组已定义的权限,而无需显示多个提示来单独请求权限,从而简化注册流程。这可以为伴侣应用带来更顺畅的设置体验和更高的选择加入率。

要使用伴侣设备配置文件,伴侣应用必须满足以下要求

  • 管理伴侣设备(例如智能手表)。
  • 具有需要伴侣设备配置文件定义的所有权限的应用功能或调用 Android API。

每个伴侣设备配置文件都对应一个 Android 角色。如需详细了解每个配置文件的权限和相应的 Android 角色,请参阅第三方应用的伴侣设备配置文件

如需详细了解伴侣设备,请参阅伴侣设备配对

设备行为

本部分介绍使用伴侣设备配置文件时的设备行为。

当用户接受应用发出的与伴侣设备建立关联的请求时,CompanionDeviceManager (CDM) 服务会将设备配置文件角色(例如 watch)分配给伴侣应用,并授予为该指定配置文件角色定义的所有权限。图 1 显示了一个应用请求 COMPANION_DEVICE_WATCH 设备配置文件权限的示例。

Watch device profile dialog prompt

图 1. 请求手表设备配置文件权限的对话框。

当用户在“设置”中清除软件包数据或移除伴侣应用中的所有设备时,CDM 会在应用未在前台运行且没有前台服务运行时撤消配置文件。撤消配置文件也会撤消该配置文件的所有已定义权限。

在用户接受应用发出的授予特定设备配置文件权限的请求后,用户可以撤消已授予的单个权限。当权限被用户撤消时,应用仍会与伴侣设备关联,但某些功能可能变得不可用。如果应用需要该权限才能运行,则应用必须通过正常的权限请求来请求该权限。

第三方应用的伴侣设备配置文件

手表配置文件

手表配置文件是在 Android 12 中引入的。

下表描述了为 COMPANION_DEVICE_WATCH 设备配置文件定义的权限以及使用这些权限的要求。

权限 伴侣应用和设备要求
通知

POST_NOTIFICATIONS(在 Android 15 中添加)
  • 使用蓝牙和/或 Wi-Fi 连接的设备
  • 具有能够显示通知的屏幕(不包括使用触觉反馈代替屏幕的设备)
  • 提供面向用户的通知体验,例如,在伴侣设备屏幕上显示手机通知。
  • 发布用于设备管理的手机通知。例如,当手表连接或启用特定功能时。
手机
  • 使用蓝牙和/或 Wi-Fi 连接的设备
  • 具有内置麦克风和扬声器,可实现语音对话
  • 具有显示来电者信息的屏幕
  • 提供面向用户的电话呼叫体验(伴侣应用桥接电话呼叫)
短信
  • 使用蓝牙和/或 Wi-Fi 连接的设备
  • 具有显示短信消息的屏幕
  • 提供面向用户的短信体验
联系人
  • 使用蓝牙和/或 Wi-Fi 连接的设备
  • 具有显示屏
  • 使用联系人信息作为呼叫或消息体验的一部分
日历
  • 使用蓝牙和/或 Wi-Fi 连接的设备
  • 具有显示屏
  • 在手表上提供面向用户的日历体验
附近的设备
  • 使用蓝牙和/或 Wi-Fi 连接的设备
  • 具有显示屏
  • 在手表上提供面向用户的配对/连接体验
eSIM 预配置
  • 使用蓝牙和/或 Wi-Fi 连接的设备
  • 具有显示屏
  • 在手表上提供面向用户的体验,以管理运营商的用户服务
管理正在进行的通话
  • 使用蓝牙和/或 Wi-Fi 连接的设备
  • 具有内置麦克风和扬声器,可实现语音对话
  • 具有显示来电者信息的屏幕
  • 提供面向用户的电话呼叫体验(伴侣应用桥接电话呼叫)

眼镜配置文件

眼镜配置文件在 Android 14 中引入。

下表描述了为 COMPANION_DEVICE_GLASSES 设备配置文件定义的权限以及使用这些权限的要求。

权限 伴侣应用和设备要求
通知

POST_NOTIFICATIONS
  • 使用蓝牙和/或 Wi-Fi 连接的设备
  • 具有能够显示通知的屏幕(不包括使用触觉反馈代替屏幕的设备)
  • 提供面向用户的通知体验,例如,在伴侣设备屏幕上显示手机通知。
  • 发布用于设备管理的手机通知,例如,当眼镜设备连接或启用特定功能时。
手机
  • 使用蓝牙和/或 Wi-Fi 连接的设备
  • 具有内置麦克风和扬声器,可实现语音对话
  • 具有显示来电者信息的屏幕
  • 提供面向用户的电话呼叫体验(伴侣应用桥接电话呼叫)
短信
  • 使用蓝牙和/或 Wi-Fi 连接的设备
  • 具有显示短信消息的屏幕
  • 提供面向用户的短信体验
联系人
  • 使用蓝牙和/或 Wi-Fi 连接的设备
  • 具有显示屏
  • 使用联系人信息作为呼叫或消息体验的一部分
麦克风
  • 使用蓝牙和/或 Wi-Fi 连接的设备
  • 具有显示屏
  • 在眼镜上提供面向用户的麦克风体验
附近的设备
  • 使用蓝牙和/或 Wi-Fi 连接的设备
  • 具有显示屏
  • 在眼镜上提供面向用户的配对/连接体验
管理正在进行的通话
  • 使用蓝牙和/或 Wi-Fi 连接的设备
  • 具有内置麦克风和扬声器,可实现语音对话
  • 具有显示来电者信息的屏幕
  • 提供面向用户的电话呼叫体验(伴侣应用桥接电话呼叫)

实现

对于实施伴侣应用并请求 DEVICE_PROFILE_WATCH 配置文件的第三方开发者,请执行以下操作

  1. 调用 setDeviceProfile 方法。

  2. 传入配置文件(例如,在构建 AssociationRequest 时传入 DEVICE_PROFILE_WATCH)。

对于实施具有特定设备的伴侣应用的设备制造商,请使用以下必需的 Android 系统配置来认证伴侣应用,这允许该应用跳过为用户显示用户同意对话框。

  1. 使用以下命令检索证书

    keytool  -printcert -jarfile PATH/TO/APK
    
  2. 替换配置文件中显示的以下示例输入中的软件包名称和证书

    <!-- A list of packages managing companion device(s) by the same manufacturers as the main device.
    It will not create the association without prompting if the association has been called multiple
    times in a short period. Note that config_companionDeviceManagerPackage and config_companionDeviceCerts
    are parallel arrays. -->
    
    <string-array name="config_companionDevicePackages" translatable="false">
        <item>YOUR_COMPANION_APP_PACKAGE_NAME</item>
    </string-array>
    
    <!-- A list of SHA256 Certificates managing companion device(s) by the same manufacturers as the
    main device. It will fall back to showing a prompt if the association has been called multiple
    times in a short period. Note that config_companionDeviceCerts and config_companionDeviceManagerPackage
    are parallel arrays.
    Example: "1A:2B:3C:4D" -->
    
    <string-array name="config_companionDeviceCerts" translatable="false">
        <item>YOUR_COMPANION_APP_CERTIFICATE</item>
    </string-array>
    
  3. 使用 AssociationRequest 向单个伴侣设备发出关联请求。

验证

要测试伴侣设备配置文件功能的行为,请使用 cts/tests/tests/companion/ 中的 CTS 测试。