Saat membuat aplikasi media yang memproses audio atau video, penting untuk menggunakan notifikasi dan saluran notifikasi yang benar. Ini memastikan bahwa notifikasi memiliki fitur berharga berikut:
- Memiliki prioritas notifikasi
- Tidak dapat ditutup
- Menggunakan atribut audio untuk nada dering
Gunakan NotificationChannel.Builder
untuk menyiapkan dua saluran notifikasi: satu untuk
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 mengizinkannya memutar audio untuk nada dering, atur tingkat kepentingan saluran notifikasi yang 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 tingkat kepentingannya disetel ke default. Gunakan mengikuti gaya panggilan masuk untuk memungkinkan notifikasi 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 ketika perangkat pengguna terkunci selama panggilan masuk, gunakan notifikasi layar penuh untuk menampilkan aktivitas agar pengguna dapat menjawab panggilan tersebut.
// 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 guna mengetahui petunjuk tentang
menggunakan CallStyle
untuk membedakan notifikasi panggilan dari jenis
notifikasi.