В Android 7.0 функции, связанные с уведомлениями о звонках, перенесены из системного сервиса Telecom платформы Android в приложение "Телефон". Ранее за показ уведомлений о звонках отвечали и Telecom, и приложение "Телефон", что приводило к несогласованности в работе. В Android 7.0 приложение "Телефония" отвечает за обработку всех уведомлений о звонках.
Поведение в Android 6.x и более ранних версиях
В более ранних версиях Android обязанности Telecom и Dialer разделены, как описано в следующей таблице:
| функциональные возможности. | Выполняется оператором связи | Выполнено приложением "Телефон" |
|---|---|---|
| Уведомление при входящем вызове | Да (звонок, вибрация) | Да (уведомления, идентификатор вызывающего абонента) |
| Отправлять на голосовую почту | Да | Нет |
| Собственный рингтон | Да | Нет |
| Уведомления о пропущенных вызовах | Да | Нет |
| Индикатор ожидания сообщения (прослушать голосовую почту) | Да (телефонная связь) | Нет |
| Уведомления о голосовой почте | Нет | Да |
Примеры несогласованного поведения, вызванного разделением ответственности:
- Telecom отвечал за запуск звонка/вибрации, а номеронабиратель – за показ уведомления о входящем вызове. Если приложение для звонков запускается медленно, то звонок может начаться за несколько секунд до появления уведомления о входящем вызове.
- За показ уведомлений о пропущенных вызовах отвечал Telecom. Поскольку в таких уведомлениях не работают фирменные функции (например, АОН от Google), между уведомлениями Telecom и интерфейсом приложения "Телефон" (например, списком вызовов) могут возникать несоответствия.
Поведение в Android 7.0 и более поздних версиях
Новые функции реализованы в приложении "Телефония" из проекта Android Open Source Project (AOSP). Подробную информацию можно найти в следующих статьях:
- Уведомления о пропущенных вызовах
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
Telecom/src/com/android/server/telecom/InCallController.java
Dialer/java/com/android/incallui/ringtone/
Dialer/java/com/android/incallui/StatusBarNotifier.java - Уведомления о голосовой почте
frameworks/base/telephony/java/android/telephony/TelephonyManager.java
Telephony/src/com/android/phone/PhoneInterfaceManager.java
Dialer/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java
Стиль уведомлений о звонках в Android 12 и более поздних версиях
Чтобы обеспечить единообразие интерфейса на устройствах с Android 12 и более поздними версиями, мы рекомендуем использовать для уведомлений о входящих и текущих вызовах стиль
CallStyle.
Подробнее
о новых уведомлениях о телефонных звонках, позволяющих ранжировать входящие вызовы по важности…
Реализация
Производителям устройств может потребоваться обновить компоненты Telecom/Telephony, которые предоставляют API для использования в приложении Телефон по умолчанию.