Créer une notification de style d'appel pour les applications d'appel

Sur Android 12.0 (niveau d'API 31) ou version ultérieure, le système fournit le CallStyle modèle de notification pour distinguer les notifications d'appel des d'autres types de notifications. Utilisez ce modèle pour créer notifications d'appel en cours. Le modèle est compatible avec les notifications en grand format qui incluent des informations sur l'appelant et les actions requises, comme répondre à un appel ou la baisse des appels.

Les appels entrants et en cours étant des événements à priorité élevée, ces notifications sont prioritaires dans le volet des notifications. Ce classement permet également pour transférer ces appels prioritaires vers d'autres appareils.

Le modèle de notification CallStyle inclut les actions obligatoires suivantes:

  • Décrocher ou Refuser pour les appels entrants
  • Raccrocher pour les appels en cours
  • Répondre ou Raccrocher pour filtrer les appels

Les actions de ce style apparaissent sous forme de boutons, et le système ajoute automatiquement des icônes et du texte appropriés. L'étiquetage manuel des boutons n'est pas accepté. Pour en savoir plus sur les principes de conception des notifications, consultez Notifications :

Notifications de style d'appel avec des boutons libellés
Figure 1. Modèle CallStyle pour les appels entrants et en cours.

Les actions requises sont transmises en tant qu'intents, comme hangupIntent et answerIntent dans les sections suivantes. Chacun de ces éléments fait référence à géré par le système. Le jeton est un objet léger peuvent être transmises entre différentes applications et processus. Le système est responsable de la gestion de la durée de vie du jeton et de s'assurer que le PendingIntent est utilisable même si l'appli qui l'a créé n'est plus en cours d'exécution. Lorsque vous attribuez un PendingIntent à une autre application, vous lui accordez l'autorisation d'effectuer l'opération spécifiée, comme refuser ou répondre. Cette autorisation est accordée même si l'application qui a créé l'intent n'est pas en cours d'exécution. Pour en savoir plus, consultez la documentation de référence pour PendingIntent.

À partir d'Android 14 (niveau d'API 34), vous pouvez configurer les notifications d'appel. ne peuvent pas être ignorées. Pour ce faire, utilisez les notifications CallStyle avec le paramètre De Notification.FLAG_ONGOING_EVENT à Notification.Builder#setOngoing(true)

Vous trouverez ci-dessous des exemples d'utilisation de différentes méthodes avec 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();

Appel entrant

Utilisez la méthode forIncomingCall() pour créer une notification de style d'appel pour une appel entrant.

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);

Appel en cours

Utilisez la méthode forOngoingCall() pour créer une notification de style d'appel pour une appel en cours.

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);

Filtrer un appel

Utilisez la méthode forScreeningCall() afin de créer une notification de style d'appel pour filtrer un appel.

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);

Assurer la compatibilité avec un plus grand nombre de versions d'Android

Associer les notifications CallStyle sur les versions 30 ou antérieures de l'API à un un service de premier plan afin de lui attribuer le classement le plus élevé qui lui est attribué dans l'API niveau 31 ou ultérieur. En outre, CallStyle notifications sur la version 30 de l'API peuvent obtenir un classement similaire en la marquant comme à l'aide de la méthode setColorized().

Utilisez les API Telecom avec les notifications CallStyle. Pour en savoir plus, consultez Présentation du framework de télécommunications