В Android 7.0 функциональность уведомлений о вызовах перенесена из системной службы Telecom на платформе Android в приложение Dialer. Ранее ответственность за отображение уведомлений о вызовах была разделена между Telecom и стандартным приложением Dialer, что приводило к несоответствиям в работе. В Android 7.0 вся ответственность за обработку уведомлений о вызовах ложится на Dialer.
Поведение в Android 6.x и ниже
В более ранних версиях Android функции Telecom и Dialer были разделены, как описано в следующей таблице:
| Функциональность | Сделано Телекомом | Сделано Dialer |
|---|---|---|
| Уведомление о входящем звонке | Да (звонок, вибрация) | Да (отображение уведомлений, идентификатор вызывающего абонента) |
| Отправить на голосовую почту | Да | Нет |
| Пользовательский рингтон | Да | Нет |
| Уведомления о пропущенных вызовах | Да | Нет |
| Индикатор ожидающего сообщения (вызов голосовой почты) | Да (телефония) | Нет |
| Визуальные уведомления голосовой почты | Нет | Да |
Примеры непоследовательного поведения, вызванного таким разделением ответственности, включают в себя:
- Телекоммуникация отвечала за включение звонка/вибрации, а номеронабиратель — за отображение уведомления о входящем вызове. Если номеронабиратель запускается медленно, это может привести к тому, что звонок начнётся за несколько секунд до отображения уведомления о входящем вызове.
- Компания Telecom отвечала за отображение уведомлений о пропущенных вызовах. Поскольку фирменные функции (например, идентификатор вызывающего абонента Google) не работают с этими уведомлениями, это могло привести к несоответствиям между уведомлениями Telecom и пользовательским интерфейсом Dialer (например, журналом вызовов).
Поведение в Android 7.0 и выше
Новая функциональность реализована в Android Open Source Project (AOSP) Dialer. Подробнее см. в следующей документации:
- Уведомления о пропущенных вызовах
Telecom/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
Dialer/android/dialer/calllog/MissedCallNotificationReceiver.java
Dialer/android/dialer/calllog/MissedCallNotifier.java - Воспроизведение рингтонов:
frameworks/base/telecomm/java/android/telecom/InCallService.java
Телеком/src/com/android/server/telecom/InCallController.java
Номеронабиратель/java/com/android/incallui/ringtone/
Dialer/java/com/android/incallui/StatusBarNotifier.java - Уведомления VVM
frameworks/base/telephony/java/android/telephony/TelephonyManager.java
Телефония/src/com/android/phone/PhoneInterfaceManager.java
Dialer/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java
Стиль уведомлений о вызовах в Android 12 и выше
Для устройств под управлением Android 12 и выше, чтобы обеспечить единообразный пользовательский интерфейс при звонках, мы рекомендуем приложениям использовать стиль уведомлений CallStyle для входящих и текущих вызовов. Подробнее см. в статье Новые уведомления о телефонных звонках, позволяющие ранжировать важность входящих вызовов .
Выполнение
Разработчикам устройств может потребоваться обновить компоненты телекоммуникаций/телефонии, которые предоставляют API, доступные для использования средством набора номера по умолчанию.