拨号器配有内置的调试和测试框架,借助该框架,您可以验证拨号器应用的功能,而无需使用支持通话功能的设备。这样就不必使用蓝牙功能,也不必连接支持移动网络服务的手机。该拨号器测试框架 (DTF) 可简化以下流程:
- 设置实际设备以快速验证想法的过程通常会很耗时。
- 如需测试多方通话功能,至少需要三部配有 SIM 卡的手机,其中两部手机仅用于拨打电话。
- 调试拨号器及其依赖项。
由于拨号器的功能取决于多个技术栈(包括电信、电话和蓝牙免触摸操作配置文件 [HFP]),因此这些依赖项中出现的 bug 和问题可能会导致拨号器功能不稳定。借助 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"
模拟器 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