Membuat notifikasi gaya panggilan untuk aplikasi panggilan

Di Android 12.0 (API level 31) dan yang lebih baru, sistem menyediakan template notifikasi CallStyle untuk membedakan notifikasi panggilan dengan jenis notifikasi lainnya. Gunakan template ini untuk membuat notifikasi panggilan masuk atau yang sedang berlangsung. Template ini mendukung notifikasi format besar yang menyertakan informasi penelepon dan tindakan yang diperlukan seperti menjawab atau menolak panggilan.

Karena panggilan masuk dan sedang berlangsung merupakan peristiwa berprioritas tinggi, notifikasi ini menerima prioritas utama di menu notifikasi. Peringkat ini juga memungkinkan sistem untuk meneruskan panggilan yang diprioritaskan ini ke perangkat lain.

Template notifikasi CallStyle menyertakan tindakan yang diperlukan berikut:

  • Jawab atau Tolak untuk panggilan masuk.
  • Menutup panggilan telepon untuk panggilan yang sedang berlangsung.
  • Jawab atau Tutup untuk penyaringan panggilan.

Tindakan dengan gaya ini muncul sebagai tombol, dan sistem akan otomatis menambahkan ikon dan teks yang sesuai. Pelabelan tombol secara manual tidak didukung. Untuk informasi selengkapnya tentang prinsip-prinsip desain notifikasi, lihat Notifikasi.

Notifikasi gaya panggilan dengan tombol berlabel
Gambar 1. Template CallStyle untuk panggilan masuk dan yang sedang berlangsung.

Tindakan yang diperlukan akan diteruskan sebagai intent, seperti hangupIntent dan answerIntent di bagian berikut. Masing-masing adalah referensi ke token yang dikelola oleh sistem. Token adalah objek ringan yang dapat diteruskan antara berbagai aplikasi dan proses. Sistem bertanggung jawab untuk mengelola masa pakai token dan memastikan bahwa PendingIntent dapat digunakan meskipun aplikasi yang membuatnya tidak lagi berjalan. Saat memberi aplikasi lain PendingIntent, Anda memberinya izin untuk menjalankan operasi yang ditentukan, seperti menolak atau menjawab. Izin ini diberikan meskipun aplikasi yang membuat intent saat ini tidak berjalan. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi untuk PendingIntent.

Mulai Android 14 (API level 34), Anda dapat mengonfigurasi notifikasi panggilan agar tidak dapat ditutup. Untuk melakukannya, gunakan notifikasi CallStyle dengan Notification.FLAG_ONGOING_EVENT hingga Notification.Builder#setOngoing(true).

Berikut adalah contoh penggunaan berbagai metode dengan notifikasi CallStlye.

Kotlin

// Create a new call, setting the user as the caller.
val incomingCaller = Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build()

Java

// Create a new call with the user as the caller.
Person incomingCaller = new Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build();

Panggilan masuk

Gunakan metode forIncomingCall() untuk membuat notifikasi gaya panggilan untuk panggilan masuk.

Kotlin

// Create a call style notification for an incoming call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incomingCaller)

Java

// Create a call style notification for an incoming call.
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incomingCaller);

Panggilan sedang berlangsung

Gunakan metode forOngoingCall() untuk membuat notifikasi gaya panggilan untuk panggilan yang sedang berlangsung.

Kotlin

// Create a call style notification for an ongoing call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forOngoingCall(caller, hangupIntent))
    .addPerson(second_caller)

Java

// Create a call style notification for an ongoing call.
Notification.Builder builder = new Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forOngoingCall(caller, hangupIntent))
    .addPerson(second_caller);

Saring panggilan

Gunakan metode forScreeningCall() untuk membuat notifikasi gaya panggilan guna menyaring panggilan.

Kotlin

// Create a call style notification for screening a call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller)

Java

// Create a call style notification for screening a call.
Notification.Builder builder = new Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller);

Menyediakan kompatibilitas di lebih banyak versi Android

Mengaitkan notifikasi CallStyle di API versi 30 atau yang lebih lama dengan layanan latar depan untuk menetapkan peringkat tinggi yang diberikan dalam API level 31 atau yang lebih baru. Selain itu, notifikasi CallStyle di API versi 30 atau yang lebih lama dapat mencapai peringkat serupa dengan menandai notifikasi sebagai diwarnai, menggunakan metode setColorized().

Gunakan Telecom API dengan notifikasi CallStyle. Untuk mengetahui informasi selengkapnya, lihat Ringkasan framework telekomunikasi.