通話アプリ向けの通話スタイル通知を作成する

Android 12.0(API レベル 31)以降では、 CallStyle 通知テンプレート(着信通知と できます。このテンプレートを使用して、VPC ファイアウォールの 進行中の着信通知。テンプレートは大きな形式の通知をサポートしている 応答や応答などの必要なアクションを含む 通話を拒否できます。

着信と通話は優先度の高いイベントであるため、これらの通知は 通知シェードで最優先されます。このランキングによって 優先通話が他のデバイスに転送されます。

CallStyle 通知テンプレートには、次の必要なアクションが含まれています。

  • 着信を [応答] または [拒否] します。
  • 通話中は通話を終了します。
  • 電話に出る電話を切って、通話スクリーニングを行います。

このスタイルのアクションはボタンとして表示され、システムによってアクションが自動的に 適切なアイコンとテキストが必要です。ボタンに手動でラベルを付けることはできません。 通知の設計原則について詳しくは、このモジュールの 通知

ラベル付きのボタンを使用した通話スタイルの通知
図 1. 着信および通話中用の CallStyle テンプレート。

必要なアクションは、hangupIntent や 以降のセクションで answerIntent を使用します。これらはそれぞれが 維持します。トークンは軽量のオブジェクトで、 渡すことが可能です。このシステムは トークンの存続期間を管理し、トークンの有効期間が PendingIntent は、作成元のアプリが不要になった場合でも使用可能 できます。別のアプリに PendingIntent を割り当てると、 拒否や応答など、指定された操作を実行する権限。 この権限は、インテントを作成したアプリであっても付与されます。 は現在実行されていません。詳細については、リファレンス ドキュメントをご覧ください。 PendingIntent

Android 14(API レベル 34)以降では、着信通知を設定できます 閉じることができないようにします。これを行うには、CallStyle 通知を使用して、 Notification.FLAG_ONGOING_EVENTNotification.Builder#setOngoing(true)

CallStyle でのさまざまなメソッドの使用例を次に示します。 通知を受け取ります。

Kotlin

// Create a new call, setting the user as the caller.
val incomingCaller = Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build()

Java

// Create a new call with the user as the caller.
Person incomingCaller = new Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build();

着信

forIncomingCall() メソッドを使用して、特定の通話タイプの通知を作成します。 着信を通知します。

Kotlin

// Create a call style notification for an incoming call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incomingCaller)

Java

// Create a call style notification for an incoming call.
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incomingCaller);

通話中

forOngoingCall() メソッドを使用して、特定の通話タイプの通知を作成します。 通話中です。

Kotlin

// Create a call style notification for an ongoing call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forOngoingCall(caller, hangupIntent))
    .addPerson(second_caller)

Java

// Create a call style notification for an ongoing call.
Notification.Builder builder = new Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forOngoingCall(caller, hangupIntent))
    .addPerson(second_caller);

通話をスクリーニングする

forScreeningCall() メソッドを使用して、以下の通話スタイル通知を作成します。 通話をスクリーニングします。

Kotlin

// Create a call style notification for screening a call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller)

Java

// Create a call style notification for screening a call.
Notification.Builder builder = new Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller);

より多くの Android バージョン間で互換性を提供する

API バージョン 30 以前の CallStyle 通知を、 API で提供された高いランクを割り当てるためにフォアグラウンド サービスを使用 レベル 31 以降である必要があります。さらに、API バージョン 30 での CallStyle 通知 以前のようにランキングを上げるには、通知を 色を付けるには setColorized() メソッドを使用します。

CallStyle 通知で Telecom API を使用します。詳細については、次をご覧ください: 通信フレームワークの概要