Menambahkan notifikasi ke aplikasi media

Saat mem-build aplikasi media yang memproses audio atau video, penting untuk menggunakan saluran notifikasi dan notifikasi yang benar. Cara ini memastikan notifikasi memiliki fitur bermanfaat berikut:

  • Memiliki prioritas notifikasi
  • Tidak dapat ditutup
  • Menggunakan atribut audio untuk nada dering

Gunakan NotificationChannel.Builder untuk menyiapkan dua saluran notifikasi: satu untuk panggilan masuk dan satu lagi untuk panggilan aktif.

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

Untuk menampilkan notifikasi di mana saja dan memungkinkannya memutar audio untuk nada dering, tetapkan nilai penting saluran notifikasi masuk ke tinggi.

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

Hanya panggilan aktif yang mengharuskan nilai penting disetel ke default. Gunakan gaya panggilan masuk berikut agar notifikasi panggilan masuk tidak dapat ditutup.

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

Untuk mengatasi kasus penggunaan jika perangkat pengguna terkunci selama panggilan masuk, gunakan notifikasi layar penuh untuk menampilkan aktivitas yang memungkinkan pengguna menjawab panggilan.

// 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,
)

Baca Membuat notifikasi gaya panggilan untuk aplikasi panggilan untuk mengetahui petunjuk cara menggunakan CallStyle guna membedakan notifikasi panggilan dari jenis notifikasi lainnya.