Android 9 提供 API,可進一步支援第三方通話應用程式。第三方通話應用程式通常會依賴電話 API (例如 PHONE_STATE
廣播),才能與電信業者的電話通話共存。因此,第三方通話應用程式必須將優先順序給予電信業者通話,並經常在應用程式中靜默拒絕來電,或終止進行中的通話,以便讓電信業者通話順利進行。
Android 9 中的 API 支援第三方應用程式和電信業者呼叫之間的並行呼叫情境。舉例來說,這可讓您在進行電信業者通話時,接聽第三方來電。當使用者與第三方通話時,架構會負責確保電信業者通話處於保留狀態。
在 Android 9 中,我們建議第三方通話應用程式實作自行管理的 ConnectionService
API。如要進一步瞭解如何使用此 API 建構通話應用程式,請參閱「建構通話應用程式」。
自行管理的 ConnectionService
API 也可讓開發人員選擇將呼叫記錄在系統呼叫記錄中 (請參閱 EXTRA_LOG_SELF_MANAGED_CALLS
)。根據 Android 相容性定義說明文件 (CDD) 中的要求 (第 7.4.1.2 節) 的規定,請務必確保撥號應用程式或手機應用程式如何顯示這些呼叫記錄應用程式,並向第三方呼叫應用程式顯示呼叫記錄項目。
應用程式負責在其連線中設定 CAPABILITY_SUPPORT_HOLD
和 CAPABILITY_HOLD
。不過,在某些情況下,應用程式可能無法保留通話。這個架構包含解決這類案件的條款。
情況
您應修改撥號應用程式,以便處理下列情境。
處理會中斷進行中通話的來電
如果有未支援保留的第三方通話 (例如 SuperCaller 通話) 正在進行,且使用者收到行動電話通話 (例如使用電信業者 FooCom),您的撥號或電話應用程式應向使用者指出,接聽行動網路通話會結束正在進行的第三方通話。
這項使用者體驗很重要,因為第三方通話應用程式可能會有持續通話,而這類通話無法由架構保留。接聽新的行動電話來電會導致正在進行的第三方通話中斷。
請參閱下圖中的使用者介面:
圖 1. 來電導致正在進行的第三方通話中斷。
撥號程式應用程式可以檢查通話額外資訊,判斷是否有來電導致另一通電話中斷。請確認 EXTRA_ANSWERING_DROPS_FG_CALL
已設為 TRUE
,而 EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME
已設為在接聽來電時中斷通話的應用程式名稱。
第三方通話應用程式的通話記錄項目
第三方通話應用程式的開發人員可以選擇讓應用程式中的通話記錄在系統通話記錄中 (請參閱 EXTRA_LOG_SELF_MANAGED_CALLS
)。這表示通話記錄中可能會出現非行動網路通話的項目。
當 AOSP 撥號應用程式顯示與第三方通話應用程式相關的通話記錄項目時,通話記錄會顯示通話發生時所用的應用程式名稱,如圖所示:
圖 2. 通話紀錄項目,其中包含在撥號應用程式中第三方通話應用程式的名稱。
如要判斷與通話記錄項目相關聯的應用程式名稱,請使用通話記錄供應器中的 PHONE_ACCOUNT_COMPONENT_NAME
和 PHONE_ACCOUNT_ID
欄,建立 PhoneAccountHandle
的例項,這可識別通話記錄項目的來源。請查詢 TelecomManager
,取得 PhoneAccount 的詳細資料。
如要判斷通話記錄項目是否來自第三方通話應用程式,請檢查 PhoneAccount
功能 ,看看是否已設定 CAPABILITY_SELF_MANAGED
。
傳回的 PhoneAccount
的 getLabel
方法會傳回與第三方呼叫應用程式中的通話記錄項目相關聯的應用程式名稱。
驗證
如要測試裝置是否支援第三方通話應用程式,請使用 Telecomm 測試應用程式,該應用程式會實作自行管理的 ConnectionService API。應用程式位於 /packages/services/Telecomm/testapps/
。
使用以下方式,從 Android 來源存放區的根目錄建構測試應用程式:
mmma packages/services/Telecomm/testapps/
使用
adb install -g -r <apk path>
安裝建構 APK。系統會將「Self-Managed Sample」圖示新增至啟動器。輕觸圖示即可開啟測試應用程式。
處理會中斷進行中通話的來電
請按照下列步驟操作,確認來電會中斷正在進行的第三方通話。
圖 3. 使用 ConnectionService API 的範例實作項目測試應用程式。
- 取消勾選「Holdable」選項。
- 輕觸「結束」即可啟動新的撥出電話範例。
- 輕觸「已啟用」按鈕,將通話設為啟用狀態。
- 使用其他手機撥打測試中裝置的電話號碼。這會叫用撥號程式提供應用程式名稱的情況,而應用程式名稱會中斷通話。
- 完成後,請輕觸測試應用程式中的「中斷連線」按鈕。
第三方通話應用程式的通話記錄項目
完成上述步驟後,測試應用程式應已將系統呼叫記錄記錄到系統呼叫記錄中。如要確認裝置是否記錄第三方通話應用程式的通話,請開啟撥號應用程式,確認通話是否顯示在系統通話記錄中。