Benachrichtigungen zu einer Medien-App hinzufügen

Wenn Sie eine Medien-App erstellen, die Audio oder Video verarbeitet, ist es wichtig, die richtigen Benachrichtigungs- und Benachrichtigungskanäle zu verwenden. Dadurch haben Benachrichtigungen die folgenden wichtigen Funktionen:

  • Haben Benachrichtigungspriorität
  • die sich nicht schließen lassen.
  • Audioattribute für Klingeltöne verwenden

Mit NotificationChannel.Builder können Sie zwei Benachrichtigungskanäle einrichten: einen für eingehende Anrufe und einen für aktive Anrufe.

internal companion object {
    const val TELECOM_NOTIFICATION_ID = 200
    const val TELECOM_NOTIFICATION_ACTION = "telecom_action"
    const val TELECOM_NOTIFICATION_INCOMING_CHANNEL_ID = "telecom_incoming_channel"
    const val TELECOM_NOTIFICATION_ONGOING_CHANNEL_ID = "telecom_ongoing_channel"

    private val ringToneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE)
}

Damit die Benachrichtigung überall angezeigt wird und Audio für den Klingelton abgespielt werden kann, legen Sie die Wichtigkeit des eingehenden Benachrichtigungskanals auf „Hoch“ fest.

val incomingChannel = NotificationChannelCompat.Builder(
        TELECOM_NOTIFICATION_INCOMING_CHANNEL_ID,
        NotificationManagerCompat.IMPORTANCE_HIGH,
    ).setName("Incoming calls")
        .setDescription("Handles the notifications when receiving a call")
        .setVibrationEnabled(true).setSound(
            ringToneUri,
            AudioAttributes.Builder()
                .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                .setLegacyStreamType(AudioManager.STREAM_RING)
                .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE).build(),
        ).build()

Nur aktive Anrufe erfordern eine Standardeinstellung für die Wichtigkeit. Verwenden Sie den folgenden Stil für eingehende Anrufe, damit Benachrichtigungen für eingehende Anrufe nicht geschlossen werden können.

val ongoingChannel = NotificationChannelCompat.Builder(
        TELECOM_NOTIFICATION_ONGOING_CHANNEL_ID,
        NotificationManagerCompat.IMPORTANCE_DEFAULT,
    )
    .setName("Ongoing calls")
    .setDescription("Displays the ongoing call notifications")
    .build()

Für Anwendungsfälle, bei denen das Gerät des Nutzers während eines eingehenden Anrufs gesperrt ist, können Sie eine Vollbildbenachrichtigung verwenden, in der eine Aktivität angezeigt wird, über die der Nutzer den Anruf annehmen kann.

// on the notification
val contentIntent = PendingIntent.getActivity(
    /* context = */ context,
    /* requestCode = */ 0,
    /* intent = */ Intent(context, TelecomCallActivity::class.java),
    /* flags = */ PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE,
)

Unter Benachrichtigung im Anrufstil für Anruf-Apps erstellen finden Sie eine Anleitung dazu, wie Sie mit CallStyle Anrufbenachrichtigungen von anderen Arten von Benachrichtigungen unterscheiden können.