Android 7.0 では、通話の通知に関連する機能が、Android プラットフォームの通信システム サービスから電話アプリに移行されています。以前は、通話に関連する通知を表示する役割が通信サービスとデフォルトの電話アプリに分かれていたため、動作に一貫性がありませんでした。Android 7.0 では、電話アプリが通話の通知に関するすべての処理を行います。
Android 6.x 以前の動作
古い Android リリースでは、通信サービスと電話アプリは以下のように役割が分かれていました。
機能 | 通信サービスが処理 | 電話アプリが処理 |
---|---|---|
着信通知 | ○(着信音、バイブレーション) | ○(通知の表示、発信者番号) |
ボイスメールへの転送 | ○ | × |
カスタム着信音 | ○ | × |
不在着信通知 | ○ | × |
メッセージ待機中インジケーター(ボイスメール呼び出し) | ○(電話) | × |
ビジュアル ボイスメール通知 | × | ○ |
役割がこのように分かれていたために動作の一貫性が保たれなかった例として、次のようなものがあります。
- 着信音 / バイブレーションの起動を通信サービスが担っていたが、着信通知の表示は電話アプリが処理していた。電話アプリの起動が遅い場合、呼び出し音が鳴ってから数秒後に着信通知が表示されていた。
- 不在着信通知を表示する役割を通信サービスが担っていた。独自の機能(Google 発信者 ID など)はこれらの通知では機能しないため、通信サービスの通知と電話アプリの UI (通話ログなど)の間に矛盾が生じる場合があった。
Android 7.0 以降の動作
Android オープンソース プロジェクト(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 - VVM 通知
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
通知スタイルを使用することをおすすめします。詳しくは、着信の重要度をランク付けできる新しい着信通知をご覧ください。
実装
デバイスに実装する場合、デフォルトの電話アプリで使用可能な API を公開する通信 / 通話コンポーネントの更新が必要になる場合があります。