调试和测试

拨号器配备了集成的调试和测试框架,使您无需使用可用于通话的设备即可验证拨号器应用功能。这样就无需蓝牙和连接具有蜂窝网络的手机。拨号器测试框架 (DTF) 简化了这些流程

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

由于拨号器的功能依赖于多个技术堆栈(包括电信、电话和蓝牙免提规范 (HFP)),因此这些依赖项中出现的错误和问题可能会导致拨号器不稳定。DTF 使拨号器能够独立于这些依赖项运行。

功能

DTF 提供以下功能

  • 呼叫放置。通过终端使用 Android 调试桥 (adb) 广播,无需可用于通话的设备即可拨打和接听电话。
  • 模拟呼叫。呼叫功能是模拟的。这包括保持、静音、合并和断开连接。

使用 DTF

注意:DTF 仅在 Android 11 或更高版本中可用。

要使用 DTF

  1. 按如下所示构建并安装 CarDialerAppForTesting build 变体
    cd %rRepoRoot%/packages/apps/Car/Dialer
    
    m CarDialerAppForTesting
    
    adb install %rRepoRoot%/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"

模拟器版本

有时,开发者可能希望在模拟器上测试界面更改。在这种情况下,与功能更强大的 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