音频开关认证准则

认证准备

  • 准备测试设备。
    • 您需要 5 部 Android 设备。
      • 这些设备必须包括:
        • 至少一个 Android T (13) 和一个 Android V (15)。
        • 至少一个 Samsung 设备和一个 Pixel 设备。
        • 例如:
          • 1 OnePlus(Android 10)。
          • 3 部 Samsung 设备(Android 11、12、13)。
          • 1 Pixel(Android 15)。
    • 一台没有音频切换功能的设备:
      • 任何 iPhone、PC、支持蓝牙 (BT) 的笔记本电脑或已停用音频切换功能的 Android 手机。
        • 您可以在蓝牙设备详情设置中关闭“音频切换”。
      • 多点 (MP) 测试用例 2.8 除了需要 5 部测试手机外,还需要一部没有音频切换功能的设备。
  • 使用测试账号加入音频切换测试组,以便在测试手机上显示调试通知。

    • 这还允许 Google 通过 Google Analytics 收集测试数据。

经典版,支持 A2DP+HFP

  • 确保所有 Android 设备都已安装 GmsCore 版本 23.xx.xx 或更高版本。

支持 LE 音频的 BLE

  • 至少有两部参考手机必须支持 LE 音频。
    • 例如,一部支持 LE 音频的三星手机和一部支持 LE 音频的 Pixel 手机。
  • 确保所有 Android 设备都已安装 GmsCore 版本 24.33.xx 或更高版本。

认证标准

  • 在所有测试用例中,目标切换成功率必须超过 95%。
  • 在需要切换的测试中,在至少 75% 的情况下,配置文件连接和切换有效状态必须在触发音频事件后 3 秒内完成。

经典版,支持 A2DP+HFP

必须按以下组合执行自检:

  • 手机 A=Android S (12) + 手机 B=Android T (13)
  • 手机 A=Android T (13) + 手机 B=Android S (12)

支持 LE 音频的 BLE

必须按以下组合执行自检:

  • 手机 A:传统蓝牙,手机 B:传统蓝牙
  • 手机 A:LE 音频,手机 B:传统蓝牙
  • 手机 A:传统蓝牙,手机 B:LE 音频

(可选)支持双 LE 音频连接的提供方应测试:

  • 手机 A:LE 音频,手机 B:LE 音频

测试指南

被测设备 (DUT) 准备

  • 验证蓝牙设备之前是否未与任何已登录测试 Google 账号的手机配对。
    • 如果设备已与测试 Google 账号配对,请执行以下操作来清除配对:
      • 在已配对的设备中:
        • 前往蓝牙设置。
        • 选择“忘记设备”。
        • 开启和关闭飞行模式。
    • 确保“自动保存设备”处于开启状态。
      • 此开关默认处于关闭状态。
      • 您可以在“设置”>“Google”>“设备”>“已保存的设备”(每个 DUT 一个)中找到此选项。
    • 让蓝牙设备进入配对模式。
    • 配对初始蓝牙设备 (A)。
    • 将后续蓝牙设备与其他设备(B、C、D 等)配对。

范围

  • 所有头戴式耳机都会在 BT ClassicBT LE 音频 自检报告的各个标签页中运行测试。
  • 仅支持 SinglePoint (SP) 模式的头戴式耳机运行以下命令:
    • Generic_test 标签页。
  • 支持 MP 模式的耳机运行以下命令:
    • Generic_test 标签页。
    • Multipoint_only 标签页。
  • 可切换到 SP 模式的 MP 耳机运行以下命令:
    • “Generic_test”标签页,MP 处于关闭状态。
    • 启用 MP 的 Generic_test 标签页。
    • 启用多点连接功能后,系统会显示“仅限多点连接”标签页。

完成自我测试和自我测试报告

  • 复制 BT ClassicBT LE 音频 自检报告。
  • 至少运行两次所有测试用例。
  • 测试应以以下形式执行:

经典版,支持 A2DP+HFP

  • 设备 B 将是主要 DUT。
    • 模板顶部的“手机”和“操作系统”字段中输入设备 B 的详细信息。

测试用例示例:

  • 测试手机:

    • 设备 1:Samsung(Android 13)
    • 设备 2:Pixel(Android 12 或 13)和其他设备。
  • 已执行的测试:

    • 运行 1. 设备 A=Samsung S10+ (12),设备 B=Pixel 7 pro (13) 列 D:手机=Pixel 7 pro,操作系统=Android 13
    • 运行 2. 设备 A=Pixel 7 Pro (13),设备 B=Pixel 6(12) 列 E:手机=Pixel 6,操作系统=Android 12

以下是自测模板中已完成测试的示例:

此图片显示了示例测试的结果

支持 LE 音频的 BLE

  1. 设备 A=Android V (15) + 设备 B=Android T (13)
  2. 设备 A=Android T (13) + 设备 B=Android V (15)
  3. 设备 A=Android T (13) + 设备 B=Android S (12)
  4. 设备 A=Android T (15) + 设备 B=Android V (15)
  5. 设备 B 将是主要 DUT。
    • 模板顶部的“手机”和“操作系统”字段中输入设备 B 的详细信息。

测试用例示例:

  • 测试手机:

    • 设备 1:Samsung(Android 13)
    • 设备 2:Pixel(Android 15)和其他设备。
  • 已执行的测试:

    • [LEA+BT]:设备 A= Pixel 8 (15),设备 B=Pixel 7 pro (13) 列 D:手机=Pixel 7 pro,操作系统=Android 13
    • [BT+LEA]:设备 A=Pixel 7 (13),设备 B=Pixel 8 (Android 15) 列 E:手机=Pixel 8,操作系统=Android 15
    • [BT+BT]:设备 A=Pixel 7 pro (13),设备 B=Samsung S10+ (12) 列<0x0AE:手机=Samsung S10+,操作系统=Android 12
    • [LEA+LEA]:设备 A=Pixel 8 (15),设备 B=Pixel 8(15) 列 E: 手机=Pixel 8,操作系统=Android 15

以下是自测模板中已完成测试的示例:

此图片显示了示例测试的结果

音频事件:

  • 以下是 4 种经过测试的音频事件和推荐的测试应用:

    1. 通话:
      1. 内置的电话应用。
    2. VoIP:任何 VoIP 应用均可使用,例如:
      1. 音频切换测试应用。
      2. Facebook Messenger。
      3. Line。
      4. WhatsApp。
      5. Google Meet。
      6. Google Meet。
    3. 媒体:任何音频播放器均可,例如:
      1. 音频切换测试应用。
      2. YouTube Music。
      3. Apple Music。
      4. Spotify。
      5. Google 播客。
    4. 游戏:
      1. 音频切换测试应用。

调试信息:

  • 加入 fp-sass-partner-test 群组后,通知功能会启用。下面是一些示例:

    • 最新状态通知:

    图 1:此图显示了“最新状态通知”消息。

    • 无开关通知:

    图 2:此图显示了“无切换通知”消息。

    • 切换延迟时间通知:

    图 3:此图显示了“切换延迟通知”消息。

延迟时间测量

  • 切换延迟时间分为两种:
    1. 将蓝牙配置文件连接到已断开连接的 Seeker。
      • 这包括所有 SinglePoint 案例,以及一些目标搜索器(设备 B)已断开连接的 MP 案例。
    2. 切换已连接的活跃 Seeker。
      • 这包括目标 Seeker(设备 B)已连接的一些 MP 案例。
  • 您可以通过以下两种方式检索延迟时间信息:
    1. 所有延迟都可以通过 adb 命令转储。
      • 如需了解详情,请参阅内存转储延迟时间部分。
      • 此命令可在完成至少一个测试用例后提供并记录延迟时间。
    2. 使用音频切换测试应用
      • 在目标 Seeker 上运行的应用会在切换后显示延迟。
      • 如果没有切换,应用将显示“无切换”原因。

音频切换测试应用:

  • 在自检期间使用应用触发 VoIP/媒体/游戏音频事件将简化测试设置并减少 Seeker 的事件延迟时间。
    • 您可以点击此处下载最新版本。
    • LE 音频 VoIP 测试需要手动启用政策: > adb root > adb shell settings put global hidden_api_policy 1 > adb reboot
  • 应用安装:
    • 将 APK 复制到测试手机并打开。
    • 或者,您也可以使用 adb install audio_test_app.apk
  • 如果您看到一个要求授予通知访问权限的对话框,请执行以下操作:
    1. 点击“确定”
    2. 在应用列表中选择“FP SASS test”
    3. 授予通知使用权。

应用概览:

此图片显示了应用运行的示例

  • 目标提供方

    • 点击此按钮会显示已配对的蓝牙设备列表。 选择要测试的广告。
    • “连接”和“断开连接”按钮的作用与蓝牙设置的设备详情中的按钮相同。
  • 当前状态

    • 此字段显示了 Seeker 上次通过 BLE 广播或事件流从提供方收到的连接状态。
    • 音频切换调试通知也会显示在此处。
  • 求职者类型

    • 此选项用于在音频流之间切换设备。

音频类型

经典版,支持 A2DP+HFP

  • VoIP
    • 选择此模式会将音频模式更改为 AudioManager.MODE_IN_COMMUNICATION 并调用 AudioManager.startBluetoothSco,然后使用 USAGE_VOICE_COMMUNICATION 播放音频。
    • 音频流类型为 STREAM_VOICE_CALL
    • 提供程序连接状态应在 5 秒内切换为 CONNECTED_HFP
  • 媒体
    • 选择此模式后,系统会播放支持 AVRCP 的音频。音频使用类型为:USAGE_MEDIA
    • 提供商连接状态应在 5 秒内切换为 CONNECTED_A2DP_WITH_AVRCP
    • 在启动或停止时,连接状态可能会暂时切换到 CONNECTED_A2DP_ONLY
  • 游戏

    • 选择此模式会播放不支持 AVRCP 的音频。音频使用类型为:USAGE_GAME
    • 提供程序连接状态应在 5 秒内切换为 CONNECTED_A2DP_ONLY

支持 LE 音频的 BLE

  • VoIP

    • 选择此模式会将音频模式更改为 AudioManager.MODE_IN_COMMUNICATION,并以 USAGE_VOICE_COMMUNICATION 播放音频。
    • 音频流类型为 STREAM_VOICE_CALL
    • 提供商连接状态应在 5 秒内切换为 CONNECTED_LE_AUDIO_CALL
  • 媒体

    • 选择此模式将播放流类型为 STREAM_MUSIC 的音频。 音频使用类型为:USAGE_MEDIA
    • 提供商连接状态应在 5 秒内切换为 CONNECTED_LE_AUDIO_MEDIA_WITH_CONTROL
    • 连接状态在启动或停止时可能会短暂切换到 CONNECTED_LE_AUDIO_MEDIA_WITHOUT_CONTROL
  • 游戏

    • 选择此模式会播放用户无法直接控制的音频。音频使用类型为:USAGE_GAME
    • 提供商连接状态应在 5 秒内切换为 CONNECTED_LE_AUDIO_MEDIA_WITHOUT_CONTROL
  • “播放”和“停止”按钮

    • “播放”和“停止”按钮用于开始或停止播放音频。
  • 切换结果

    • 此字段显示 Connect 和 Switch 的有效延迟时间。如果触发了音频事件但未发生切换,该方法还会显示拒绝切换的原因。
    • 延迟时间以毫秒 (ms) 为单位。
    • 一般来说,延迟时间是从音频切换触发开始到收到已连接的蓝牙配置文件或通知多点切换事件的时间。
    • 提供方触发的切换测量从音频开始时的延迟。

转储延迟时间

  • 以下命令允许用户在运行手动测试时捕获延迟时间测量结果: adb shell dumpsys activity service com.google.android.gms/.nearby.discovery.service.DiscoveryService
    • 延迟时间衡量指标会显示在 NearbyDeviceManagerSwitchHistory 部分下:
            NearbyDeviceManager
              Nearby Sass device count: 1
                Sass device - address:XX:XX:XX:XX:XX:XX, name:Googler's Pixel Buds, accountKey:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, modelId:6edaf7
                  SwitchHistory
                    15:30:21:166 - 15:30:25:201, latency 3035ms, Succeed, SASS_TRIGGERED_CONNECT, SASS switch, A2DP
                    15:34:58:568 - 15:34:58:568, latency 0ms, Succeed, SWITCH_ACTIVE_TO_SELF, SASS switch, HFP
                    15:36:26:615 - 15:36:31:603, latency 1988ms, Succeed, SASS_TRIGGERED_CONNECT, SASS switch, A2DP
                    15:37:56:108 - 15:37:56:250, latency 142ms, Succeed, SWITCH_ACTIVE_TO_SELF, SASS switch, A2DP"
  • GmsCore 无法衡量的任何切换(例如 HFP 的有效切换)都将记录为 0 毫秒延迟。

日志模式参考:

延迟时间测试的日志示例

已知问题:

以下是 Seeker 导致的已知 bug:

  1. 游戏音频切换不正确。
    • 三星手机在玩游戏时会将连接状态设置为 CONNECTED_A2DP_WITH_AVRCP,而不是 CONNECTED_A2DP_ONLY
    • 某些游戏(例如 Candy Crush)可能会在没有用户输入的情况下重放背景音乐并触发新的音频事件。已连接的手机可能会在每次打开游戏时不断切换音频。