Bei der Entwicklung einer Medien-App, die Audio oder Video verarbeitet, ist es wichtig, die richtigen Benachrichtigungs- und Benachrichtigungskanäle. Dieses sorgt dafür, dass Benachrichtigungen die folgenden nützlichen Funktionen haben:
- haben Benachrichtigungspriorität
- Sie können nicht geschlossen werden.
- Audioattribute für Klingeltöne verwenden
Verwenden Sie NotificationChannel.Builder
, um zwei Benachrichtigungskanäle einzurichten: einen für
eingehende Anrufe und der andere 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)
}
Um die Benachrichtigung überall anzuzeigen und die Audiowiedergabe für die Klingelton verwenden, stellen Sie die Wichtigkeit des Kanals für eingehende Benachrichtigungen auf "Hoch" ein.
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 bei aktiven Anrufen muss die Wichtigkeit auf die Standardeinstellung gesetzt werden. Verwenden Sie die Methode wenn Sie den Stil für eingehende Anrufe verwenden, damit Benachrichtigungen nicht schließbar.
val ongoingChannel = NotificationChannelCompat.Builder(
TELECOM_NOTIFICATION_ONGOING_CHANNEL_ID,
NotificationManagerCompat.IMPORTANCE_DEFAULT,
)
.setName("Ongoing calls")
.setDescription("Displays the ongoing call notifications")
.build()
So beheben Sie Anwendungsfälle, bei denen das Gerät eines Nutzers während eines eingehenden Anrufs gesperrt ist: eine Vollbildbenachrichtigung verwenden, um eine Aktivität anzuzeigen, damit der Nutzer und nehmen Sie den Anruf an.
// 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,
)
Eine Anleitung dazu finden Sie im Artikel Benachrichtigungen über Anrufstil für Anruf-Apps erstellen.
mithilfe von CallStyle
, um Anrufbenachrichtigungen von anderen Arten von
Benachrichtigungen.