拨号器配备了集成的调试和测试框架,使您无需使用可用于通话的设备即可验证拨号器应用功能。这样就无需蓝牙和连接具有蜂窝网络的手机。拨号器测试框架 (DTF) 简化了这些流程
- 设置真机来快速验证想法通常会耗费时间。
- 测试多方通话功能至少需要三部配备 SIM 卡的手机,其中两部仅用于拨打电话。
- 调试拨号器及其依赖项。
由于拨号器的功能依赖于多个技术堆栈(包括电信、电话和蓝牙免提规范 (HFP)),因此这些依赖项中出现的错误和问题可能会导致拨号器不稳定。DTF 使拨号器能够独立于这些依赖项运行。
功能
DTF 提供以下功能
- 呼叫放置。通过终端使用 Android 调试桥 (adb) 广播,无需可用于通话的设备即可拨打和接听电话。
- 模拟呼叫。呼叫功能是模拟的。这包括保持、静音、合并和断开连接。
使用 DTF
注意:DTF 仅在 Android 11 或更高版本中可用。
要使用 DTF
- 按如下所示构建并安装
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