技术详情

下图说明了与“拨号器”互动的系统组件

Components that interact with Dialer

图 1. 与“拨号器”互动的组件

  • 系统 UI。较低的导航面用于托管“电话”按钮,该按钮注册 intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;package=com.android.car.dialer;launchFlags=0x10000000;end intent。这将启动用户的主 Activity,TelecomActivity

  • 应用启动器。管理整个应用列表。“拨号器”使用 android.intent.category.LAUNCHER 声明 TelecomActivity。从启动器的应用列表中选择“电话”应用会显示 TelecomActivity。

  • 主屏幕微件。在 AOSP 参考中,没有主屏幕微件。OEM 可能需要考虑为主屏幕微件添加“拨号器”,以显示当前已连接电话的状态(以及其他信息)。

  • 通知中心

    • 平视通知 (HUN) 显示来电。当“拨号器”InCallServiceImpl 收到来电时,“拨号器”会向通知中心发布 HUN,其中显示来电详情,例如电话号码或联系人信息。“拨号器”还会显示两个操作按钮:“接听”和“拒接”。通过点按“接听”按钮,电话会被接听,并且 InCallServiceImpl 会处理活动通话以显示“拨号器”的通话中界面并关闭 HUN。点击 HUN 会显示包含“接听”和“拒接”按钮的全屏通话页面。

    • 通知会显示未读的未接来电。点击通知会显示“通话记录”页面,并将未接来电标记为已读。点按“回拨”按钮会拨打电话并显示“拨号器”的通话中用户界面。

  • 助理。用户可以要求助理拨打电话,这可能会显示“拨号器”通话中用户界面。

  • Google 地图。从 Google 地图致电商家会发送带有电话号码彩蛋的 DIAL intent,这将启动“拨号盘”页面以进行快速拨号。

  • CarInputService。监控方向盘上的“呼叫”和“结束通话”物理按键。按下

    • 方向盘上的“呼叫”按钮时,如果没有来电,则会发送 DIAL intent 并显示“拨号器”的“拨号盘”页面。

    • 方向盘上的“呼叫”按钮在有来电时会导致 TelecomManager 接听电话。

    • 方向盘上的“结束通话”按钮在有来电时,TelecomManager 会结束通话。

  • 蓝牙

    • PBAPClient。从电话下载联系人并写入联系人提供程序。对于连接的每部电话,都会使用设备的蓝牙 MAC 地址作为帐号名称和 com.android.bluetooth.pbapsinkpackages/apps/Bluetooth 中定义的 @string/pbap_account_type)作为帐号类型来创建帐号。写入联系人提供程序的联系人会随帐号信息一起写入,并在电话断开连接时清除。PBAPClient 不会直接与“拨号器”互动,而是将联系人写入联系人提供程序。“拨号器”从联系人提供程序读取联系人。

    • HfpClientConnectionService通过 HFP 管理蓝牙通话,并将通话报告给电信服务。

  • 电信。Android 电信框架管理 Android 设备上的音频和视频通话。由于“拨号器”是默认电话应用,因此它会实现 InCallService API,并且 InCallController 将绑定“拨号器”的 InCallService 实现以处理通话。如需了解详情,请参阅创建替换电话应用成为默认电话应用

  • 系统设置。“拨号器”会监控 HFP 连接的设备列表,并在没有电话通过蓝牙连接到拨号器时显示错误消息。在 AOSP 参考中,“连接到蓝牙”按钮会将用户链接到系统蓝牙“设置”页面,以配对新设备或连接到已配对的设备。

  • 驾驶员分心引擎。此 Android 系统服务根据汽车的驾驶状态施加 UX 限制。“拨号器”必须执行所有 UX 驾驶分心限制。为此,“拨号器”必须侦听 CarUXRestrictionManager 并实施所有政策。“拨号器”必须

    • 连接到 Car 库并获取 CarUxRestrictionsManager 的实例。

    • 订阅 CarUxRestrictions 列表中的更新并按照文档实施。

    • 对“拨号器”尤其重要

      • “设置”页面针对车辆进行了优化。用户在驾驶时无法访问“拨号器设置”页面。通过点按操作栏中的“设置”菜单,会显示一个阻止屏幕,以防止用户在驾驶时访问“设置”。如果“设置”页面已显示,则阻止屏幕将弹出以阻止用户互动。

      • 驾驶时无法访问系统设置。在“错误”页面上,当没有蓝牙设备连接时,“连接到蓝牙”按钮会显示系统蓝牙设置页面。此按钮的 UXR 完全受限。驾驶时,点击此按钮会显示一条错误消息,告知用户首先停车,然后再执行操作。

      • 用户在驾驶时无法启动添加到收藏夹流程。“添加收藏夹”按钮已停用。

用户流程

拨号器主界面

下面提供了“拨号器”的不同页面。

Main Dialer page

图 2. “拨号器”主页面

通话处理

下面介绍了通话处理过程流程

Call Handling

图 3. 通话处理

通知

下面显示了不同的通知页面

Notifications

图 4. 通知

通话中状态

下面显示了“通话中”页面流程

InCall page

图 5. “通话中”页面

“搜索”显示如下:

Search

图 6. 搜索

设置

“设置”选项如下:

Settings

图 7. 设置