调试和测试

拨号器配有内置的调试和测试框架,借助该框架,您可以验证拨号器应用的功能,而无需使用支持通话功能的设备。这样就不必使用蓝牙功能,也不必连接支持移动网络服务的手机。该拨号器测试框架 (DTF) 可简化以下流程:

  • 设置实际设备以快速验证想法的过程通常会很耗时。
  • 如需测试多方通话功能,至少需要三部配有 SIM 卡的手机,其中两部手机仅用于拨打电话。
  • 调试拨号器及其依赖项。

由于拨号器的功能取决于多个技术栈(包括电信、电话和蓝牙免触摸操作配置文件 [HFP]),因此这些依赖项中出现的 bug 和问题可能会导致拨号器功能不稳定。借助 DTF,拨号器可独立于这些依赖项运行。

功能

DTF 提供以下功能:

  • 接打电话。无需使用支持通话功能的设备,通过具有 Android 调试桥 (adb) 广播功能的终端即可接打电话。
  • 模拟通话。系统可模拟通话功能,包括保持通话、将通话静音、合并通话和断开通话。

使用 DTF

注意:DTF 仅适用于 Android 11 或更高版本。

如需使用 DTF,请执行以下操作:

  1. 按以下方式构建和安装 CarDialerAppForTesting build 变体:
    cd %rRepoRoo%/packages/apps/Car/Dialer
    
    m CarDialerAppForTesting
    
    adb install %rRepoRoo%/out/target/product/%buildTarget%/system/priv-app/CarDialerAppForTesting/CarDialerAppForTesting.apk
    

    因此,CarDialerAppForTesting 会替换测试设备上的原始拨号器应用。

    CarDialerAppForTesting 不适用于实际设备。如需使用实际设备进行测试,请重新安装 CarDialerApp.apk

命令

以下 adb 命令仅在拨号器首次启动后才能发挥作用,并且要求对广播接收器进行初始化。启动拨号器后,必须连接模拟蓝牙设备。为此,请使用以下“(设置)连接设备”命令。

(设置)连接设备

与拨号器建立模拟蓝牙连接;必须先调用该命令,以便启用对所有通话相关命令的访问权限。

如需连接设备,请执行以下操作:

adb shell am broadcast -a com.android.car.dialer.intent.action.adb --es "action" "connect"

注意:只有在连接模拟蓝牙设备后,才能使用以下每项命令。

拨出电话

如需拨出电话,请执行以下操作:

adb shell am broadcast -a com.android.car.dialer.intent.action.adb --es "action" "addCall" --es "id" "4085524874"

接听来电

如需接听来电,请执行以下操作:

adb shell am broadcast -a com.android.car.dialer.intent.action.adb --es "action" "rcvCall" --es "id" "4085524874"

结束通话

如需结束通话,请执行以下操作:

adb shell am broadcast -a com.android.car.dialer.intent.action.adb --es "action" "endCall" --es "id" "4085524874"

保持当前通话

如需将当前通话置于保持状态,请运行以下命令:

adb shell am broadcast -a com.android.car.dialer.intent.action.adb --es "action" "holdCall"

恢复当前通话

如需让当前通话退出保持状态,请执行以下操作:

adb shell am broadcast -a com.android.car.dialer.intent.action.adb --es "action" "unholdCall"

合并通话

将主要通话和次要通话合并到电话会议中。该命令仅在主要通话和次要通话都存在时才有效。系统会将现有电话会议视为单个实体。

如需合并通话,请执行以下操作:

adb shell am broadcast -a com.android.car.dialer.intent.action.adb --es "action" "unholdCall"

清除所有通话

如需移除通话列表中的所有通话,请执行以下操作:

adb shell am broadcast -a com.android.car.dialer.intent.action.adb --es "action" "clearAll"

模拟器 build

有时,开发者可能想要测试模拟器界面的更改。在这种情况下,与功能更强大的 DTF 项目,CarDialerAppEmulatorBuild 简化了设置流程,并可提供部分功能。

测试数据

拨号器启动后,系统会绕过蓝牙错误页面,并显示 TelecomActivity 的主要内容。通讯录和通话记录会显示在本地设备上。开发者可使用原生“通讯录”应用来创建测试联系人或导入 .vcf 文件。

通话模拟

如需模拟来电,请使用 Android 模拟器来发送 Telnet 命令。如需了解详情,请参阅在 Android 模拟器上运行应用发送模拟器控制台命令

telnet localhost 5554
gsm call xxx-xxx-xxxx

在拨号器应用中拨打电话或广播通话 intent,即可启动外拨电话。

adb shell am start -a android.intent.action.CALL tel:xxx-xxx-xxxx