技術細節

下圖說明了與 Dialer 交互的系統組件:

與撥號器交互的組件

圖 1.與 Dialer 交互的組件

  • 系統用戶界面。較低的導航面以託管電話按鈕,該按鈕註冊intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;package=com.android.car.dialer;launchFlags=0x10000000;end意圖。這將啟動用戶的主要活動TelecomActivity

  • 應用啟動器。管理整個應用程序列表。 Dialer 使用android.intent.category.LAUNCHER聲明 TelecomActivity。從啟動器的應用程序列表中選擇電話應用程序會顯示 TelecomActivity。

  • 主頁小部件。在 AOSP 參考中,沒有 Home 小部件。 OEM 可能需要考慮為 Dialer 添加 Home 小部件,以顯示當前連接電話的狀態(以及其他信息)。

  • 通知中心

    • 來電顯示抬頭通知 (HUN)。當 Dialer InCallServiceImpl收到來電時,Dialer 會將 HUN 發佈到通知中心,通知中心會顯示呼叫詳細信息,例如電話號碼或聯繫信息。撥號器還顯示了兩個操作按鈕,應答和拒絕。通過點擊應答按鈕,呼叫被應答, InCallServiceImpl處理活動呼叫以顯示撥號器的呼叫 UI 並關閉 HUN。單擊 HUN 會顯示帶有應答和拒絕按鈕的全屏 InCall 頁面。

    • 未讀未接來電顯示通知。單擊通知會顯示呼叫歷史記錄頁面並將未接來電標記為已讀。點擊 Call Back 按鈕可撥打電話並顯示 Dialer 的 InCall 用戶界面。

  • 助手。用戶可以要求助手撥打可能會顯示 Dialer InCall 用戶界面的呼叫。

  • 谷歌地圖。從 Google 地圖呼叫商家會發送帶有額外電話號碼的 DIAL 意圖,這些電話號碼將啟動 Dialpad 頁面以進行快速撥號。

  • 汽車輸入服務。監控方向盤上呼叫和結束呼叫按鈕的物理鍵。按下:

    • 無來電時方向盤上的呼叫按鈕發送 DIAL 意圖並顯示 Dialer 的 Dialpad 頁面。

    • 有來電時方向盤上的呼叫按鈕使 TelecomManager 接聽電話。

    • 有來電時方向盤上的結束通話按鈕,TelecomManager 結束通話。

  • 藍牙

    • PBAP 客戶端。從手機下載聯繫人並寫入聯繫人提供程序。對於連接的每部手機,都會創建一個帳戶,其中設備的藍牙 MAC 地址作為帳戶名稱, com.android.bluetooth.pbapsink (在packages/apps/Bluetooth中定義的@string/pbap_account_type )作為帳戶類型。寫入聯繫人提供者的聯繫人與帳戶信息一起寫入,並在電話斷開連接時被清除。 PBAPClient不直接與 Dialer 交互,而是將聯繫人寫入 Contacts Provider。 Dialer 從 Contacts Provider 讀取聯繫人。

    • HfpClientConnectionService通過 HFP 管理藍牙呼叫並將呼叫報告給電信服務。

  • 電信。 Android Telecom 框架管理 Android 設備上的音頻和視頻通話。由於 Dialer 是默認的電話應用程序,它實現了InCallService API,並且InCallController將綁定 Dialer 的 InCallService 實現以處理呼叫。有關更多詳細信息,請參閱創建替換手機應用成為默認手機應用

  • 系統設置。 Dialer 監控 HFP 連接的設備列表,並在沒有電話通過藍牙連接到 dialer 時顯示錯誤消息。在 AOSP 參考中,連接到藍牙按鈕將用戶鏈接到系統藍牙設置頁面以配對新設備或連接到配對設備。

  • 駕駛員分心引擎。此 Android 系統服務根據汽車的駕駛狀態施加 UX 限制。 Dialer 必須執行所有 UX 駕駛分心限制。為此,Dialer 必須監聽CarUXRestrictionManager並實施所有策略。撥號器必須:

    • 連接到Car庫並獲取CarUXRestrictionManager的實例。

    • 訂閱CarUxRestrictions列表中的更新並按照文檔實施它們。

    • 對撥號器特別重要的:

      • 設置頁面針對車輛進行了優化。用戶在駕駛時無法訪問撥號器設置頁面。通過點擊操作欄中的“設置”菜單,會顯示一個阻止屏幕,以防止用戶在駕駛時訪問“設置”。如果設置頁面已經顯示,則會彈出阻止屏幕以停止用戶交互。

      • 駕駛時無法訪問系統設置。在錯誤頁面上,當沒有連接藍牙設備時,連接到藍牙按鈕會顯示系統藍牙設置頁面。此按鈕的 UXR 是完全受限的。駕駛時,單擊此按鈕會顯示一條錯誤消息,通知用戶先停車,然後再執行操作。

      • 用戶在駕駛時無法啟動添加到收藏的流程。添加收藏夾按鈕被禁用。

用戶流

撥號器主

下面提供了 Dialer 的不同頁面。

主撥號器頁面

圖 2.主撥號器頁面

呼叫處理

呼叫處理流程如下所示:

呼叫處理

圖 3.呼叫處理

通知

不同的通知頁面如下所示:

通知

圖 4.通知

通話狀態

InCall 頁面流程如下所示:

呼叫頁面

圖 5. InCall 頁面

搜索顯示為:

搜索

圖 6.搜索

設置

設置選項是:

設置

圖 7.設置