Aggiungere notifiche a un'app multimediale
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Quando si crea un'app multimediale che elabora audio o video, è importante utilizzare
le notifiche e i canali di notifica corretti. Questo
garantisce che le notifiche includano le seguenti importanti funzionalità:
- Hanno la priorità delle notifiche.
- Non possono essere ignorate
- Utilizza gli attributi audio per le suonerie
Usa NotificationChannel.Builder
per configurare due canali di notifica: uno per
per le chiamate in arrivo e l'altra per le chiamate attive.
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)
}
Per visualizzare la notifica ovunque e consentire la riproduzione dell'audio per
suoneria, imposta l'importanza del canale di notifica in arrivo su alta.
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()
Solo per le chiamate attive è necessario impostare l'importanza predefinita. Utilizza la
seguire lo stile di chiamata in arrivo per consentire le notifiche per le chiamate in arrivo
non ignorabile.
val ongoingChannel = NotificationChannelCompat.Builder(
TELECOM_NOTIFICATION_ONGOING_CHANNEL_ID,
NotificationManagerCompat.IMPORTANCE_DEFAULT,
)
.setName("Ongoing calls")
.setDescription("Displays the ongoing call notifications")
.build()
Per risolvere i casi d'uso in cui il dispositivo dell'utente è bloccato durante una chiamata in arrivo:
utilizzare una notifica a schermo intero per visualizzare un'attività a cui l'utente può
rispondi alla chiamata.
// 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,
)
Per istruzioni su come procedere, consulta l'articolo Creare una notifica per lo stile di chiamata per le app di chiamata
utilizzando CallStyle
per distinguere gli avvisi di chiamata dagli altri tipi di
notifiche.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-07-27 UTC."],[],[],null,["# Add notifications to a media app\n\nWhen building a media app that processes audio or video, it's important to use\nthe correct notifications and notification channels. This\nensures that notifications have the following valuable features:\n\n- Have notification priority\n- Are non-dismissable\n- Use audio attributes for ringtones\n\nUse `NotificationChannel.Builder` to set up two notification channels: one for\nincoming calls and the other for active calls. \n\n internal companion object {\n const val TELECOM_NOTIFICATION_ID = 200\n const val TELECOM_NOTIFICATION_ACTION = \"telecom_action\"\n const val TELECOM_NOTIFICATION_INCOMING_CHANNEL_ID = \"telecom_incoming_channel\"\n const val TELECOM_NOTIFICATION_ONGOING_CHANNEL_ID = \"telecom_ongoing_channel\"\n\n private val ringToneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE)\n }\n\nTo display the notification everywhere and allow it to play audio for the\nringtone, set the importance of the incoming notification channel to high. \n\n val incomingChannel = NotificationChannelCompat.Builder(\n TELECOM_NOTIFICATION_INCOMING_CHANNEL_ID,\n NotificationManagerCompat.IMPORTANCE_HIGH,\n ).setName(\"Incoming calls\")\n .setDescription(\"Handles the notifications when receiving a call\")\n .setVibrationEnabled(true).setSound(\n ringToneUri,\n AudioAttributes.Builder()\n .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)\n .setLegacyStreamType(AudioManager.STREAM_RING)\n .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE).build(),\n ).build()\n\nOnly active calls requires the importance to be set to default. Use the\nfollowing incoming call style to allow notifications for incoming calls to be\nnon-dismissable. \n\n val ongoingChannel = NotificationChannelCompat.Builder(\n TELECOM_NOTIFICATION_ONGOING_CHANNEL_ID,\n NotificationManagerCompat.IMPORTANCE_DEFAULT,\n )\n .setName(\"Ongoing calls\")\n .setDescription(\"Displays the ongoing call notifications\")\n .build()\n\nTo address use cases where the user's device is locked during an incoming call,\nuse a full-screen notification to display an activity to allow the user to\nanswer the call. \n\n // on the notification\n val contentIntent = PendingIntent.getActivity(\n /* context = */ context,\n /* requestCode = */ 0,\n /* intent = */ Intent(context, TelecomCallActivity::class.java),\n /* flags = */ PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE,\n )\n\nRead [Create a call style notification for call apps](/develop/ui/views/notifications/call-style) for instructions on\nusing [`CallStyle`](/reference/android/app/Notification.CallStyle) to distinguishing call notifications from other types of\nnotifications."]]