下图展示了与拨号器交互的系统组件:
图 1. 与拨号器交互的组件
-
系统界面:降低导航 Facet 来托管“电话”按钮,这会注册
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 可能需要考虑为拨号器添加一个主屏幕 widget,以显示当前已连接手机的状态(以及其他信息)。
-
通知中心
-
收到来电时,系统会显示浮动通知 (HUN)。当拨号器
InCallServiceImpl
收到来电时,拨号器会将 HUN 发布到通知中心,HUN 会显示来电详情(例如电话号码或联系信息)。拨号器还会显示两个操作按钮:“接听”和“挂断”。点按“接听”按钮即可接听来电,并且InCallServiceImpl
会处理活跃通话以显示拨号器的通话界面并关闭 HUN。点击 HUN 时会显示全屏通话页面,其中包含“接听”和“挂断”按钮。 -
如有未读的未接来电提醒,系统会显示通知。点击通知会显示“通话记录”页面,并将未接来电标记为已读。点按“回拨”按钮可拨打电话并显示拨号器的通话界面。
-
-
助理:用户可以让智能助理拨打电话,它可以显示拨号器的通话界面。
-
Google 地图:从 Google 地图中致电商家时,系统会发送 DIAL intent 以及电话号码的额外信息,这会启动拨号键盘页面以供快速拨号。
-
CarInputService:监控方向盘上“通话”和“结束通话”实体按键。按键对应的操作如下:
-
当没有来电时,按下方向盘上的“通话”按钮会发送 DIAL intent 并显示拨号器的拨号键盘页面。
-
当有来电时,按下方向盘上的“通话”按钮会使 TelecomManager 接听来电。
-
当有来电时,按下方向盘上的“结束通话”按钮会使 TelecomManager 挂断电话。
-
-
蓝牙
-
PBAPClient。从手机下载联系人并将其写入联系人提供程序。对于连接的每部手机,系统会创建一个帐号,并以设备的蓝牙 MAC 地址作为帐号名称,以
com.android.bluetooth.pbapsink
(packages/apps/Bluetooth
中定义的@string/pbap_account_type
)作为帐号类型。写入联系人提供程序的联系人会使用帐号信息写入,并在手机断开连接时清除。PBAPClient
不与拨号器直接交互,而是将联系人写入联系人提供程序。拨号器从联系人提供程序读取联系人。 -
HfpClientConnectionService
:通过 HFP 管理蓝牙通话,并向 Telecom 服务程序报告来电。
-
-
Telecom:Android Telecom 框架管理 Android 设备上的音频和视频通话。由于拨号器是默认手机应用,因此它实现了
InCallService
API,而InCallController
会绑定拨号器的 InCallService 实现来处理通话。如需了解详情,请参阅创建替代电话应用和成为默认电话应用。 -
系统设置:拨号器会监控已连接 HFP 的设备列表,并会在没有手机通过蓝牙连接到拨号器时显示错误消息。在 AOSP 参考中,“连接到蓝牙”按钮会将用户链接到系统“蓝牙设置”页面,以配对新设备或连接到配对的设备。
-
防止驾驶员分心的引擎:此 Android 系统服务根据汽车的行驶状态施加用户体验限制。拨号器必须执行所有防止驾驶员分心的用户体验限制。为此,拨号器必须监听 CarUXRestrictionManager 并实现所有政策。拨号器必须:
-
连接到 Car 库并获取 CarUXRestrictionManager 实例。
-
订阅 CarUxRestrictions 列表中的更新,并按照文档中的说明实现这些更新。
-
以下这些方面对拨号器而言极为重要:
-
“设置”页面针对车辆进行了优化。用户在驾车时无法访问拨号器“设置”页面。从操作栏中点按“设置”菜单,系统会显示阻止屏幕,以防止用户在驾车时访问“设置”。如果“设置”页面已显示,则系统会弹出阻止屏幕以阻止用户互动。
-
驾车时无法访问系统设置。在“错误”页面上,未连接任何蓝牙设备时,点按“连接到蓝牙”按钮会显示系统蓝牙设置页面。系统会全面执行此按钮的用户体验限制。 驾车时,点击此按钮会显示错误消息,以便告知用户先停车,然后再执行相应操作。
-
用户在驾车时无法启动“添加常用联系人”流程。“添加常用联系人”按钮处于停用状态。
-
-
用户流
拨号器主页面
下面提供了拨号器的各个页面。
图 2.拨号器主页面
来电处理
来电处理流程如下所示:
图 3.来电处理
通知
各个通知页面如下所示:
图 4.通知
通话状态
通话页面流程如下所示:
图 5.通话页面
搜索
搜索界面如下所示:
图 6.搜索
设置
“设置”选项如下所示:
图 7.设置