下图说明了与“拨号器”互动的系统组件
图 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.pbapsink
(packages/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 完全受限。驾驶时,点击此按钮会显示一条错误消息,告知用户首先停车,然后再执行操作。
-
用户在驾驶时无法启动添加到收藏夹流程。“添加收藏夹”按钮已停用。
-
-
用户流程
拨号器主界面
下面提供了“拨号器”的不同页面。
图 2. “拨号器”主页面
通话处理
下面介绍了通话处理过程流程
图 3. 通话处理
通知
下面显示了不同的通知页面
图 4. 通知
通话中状态
下面显示了“通话中”页面流程
图 5. “通话中”页面
搜索
“搜索”显示如下:
图 6. 搜索
设置
“设置”选项如下:
图 7. 设置