Android 7.0 將與呼叫通知相關的功能從 Android 平台中的 Telecom 系統服務移至 Dialer 應用程序。以前,顯示與呼叫相關的通知的責任由 Telecom 和默認的 Dialer 應用程序分擔,從而造成行為不一致。在 Android 7.0 中,撥號器承擔處理呼叫通知的所有責任。
Android 6.x 及更早版本中的行為
在較早的 Android 版本中,Telecom 和 Dialer 劃分職責如下所述:
功能性 | 由電信完成 | 由撥號器完成 |
---|---|---|
來電通知 | 是(響鈴、振動) | 是(通知顯示,來電顯示) |
發送到語音信箱 | 是的 | 不 |
自定義鈴聲 | 是的 | 不 |
未接來電通知 | 是的 | 不 |
留言等待指示燈(呼叫語音信箱) | 是(電話) | 不 |
可視語音郵件通知 | 不 | 是的 |
這種責任劃分導致的不一致行為的例子包括:
- 電信負責啟動振鈴器/振動器,但撥號器負責顯示來電通知。如果撥號程序啟動緩慢,這可能會導致在顯示來電通知前幾秒鐘開始響鈴。
- 電信負責顯示未接來電通知。由於專有功能(例如 Google 來電顯示)不適用於這些通知,這可能會導致 Telecom 通知和 Dialer UI(例如通話記錄)之間出現不一致。
Android 7.0 及更高版本中的行為
Android 開源項目 (AOSP) 撥號器實現了新功能。有關詳細信息,請參閱以下文檔:
- 未接來電通知
電信/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
撥號器/android/dialer/calllog/MissedCallNotificationReceiver.java
撥號器/android/dialer/calllog/MissedCallNotifier.java - 播放鈴聲:
frameworks/base/telecomm/java/android/telecom/InCallService.java
電信/src/com/android/server/telecom/InCallController.java
撥號器/java/com/android/incallui/鈴聲/
撥號器/java/com/android/incallui/StatusBarNotifier.java - VVM 通知
框架/base/telephony/java/android/telephony/TelephonyManager.java
電話/src/com/android/phone/PhoneInterfaceManager.java
撥號器/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java
Android 12 或更高版本中的來電通知樣式
對於運行 Android 12 或更高版本的設備,為了提供一致的通話用戶體驗,我們建議應用使用CallStyle
通知樣式來處理來電和正在進行的通話。有關更多信息,請參閱允許對來電重要性進行排名的新電話通知。
執行
設備實現者可能需要更新 Telecom/Telephony 組件,這些組件公開了可供默認撥號器使用的 API。