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 dari jenis notifikasi lainnya. Gunakan {i>template<i} ini untuk membuat notifikasi panggilan yang sedang berlangsung. Template mendukung notifikasi berformat besar yang mencakup informasi penelepon dan tindakan yang diperlukan, seperti menjawab atau menolak panggilan.

Karena panggilan masuk dan sedang berlangsung adalah acara berprioritas tinggi, notifikasi ini menerima prioritas utama di bayangan notifikasi. Peringkat ini juga memungkinkan untuk meneruskan panggilan yang diprioritaskan ini ke perangkat lain.

Template notifikasi CallStyle menyertakan tindakan yang diperlukan berikut ini:

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

Tindakan dalam gaya ini muncul sebagai tombol, dan sistem secara 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 sedang berlangsung.

Tindakan yang diperlukan diteruskan sebagai intent, seperti hangupIntent dan answerIntent di bagian berikut. Masing-masing {i>tool<i} ini merupakan referensi ke token yang dikelola oleh sistem. Token tersebut adalah objek ringan yang dapat diteruskan di antara berbagai aplikasi dan proses. Sistem ini adalah bertanggung jawab untuk mengelola masa pakai token dan memastikan bahwa PendingIntent dapat digunakan meskipun aplikasi yang membuatnya tidak lagi sedang berjalan. Jika Anda memberi aplikasi lain PendingIntent, Anda memberi izin untuk melakukan operasi tertentu, seperti menolak atau menjawab. Izin ini diberikan meskipun aplikasi yang membuat intent sedang tidak berjalan. Untuk informasi selengkapnya, lihat dokumentasi referensi untuk PendingIntent.

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

Berikut adalah contoh penggunaan berbagai metode dengan CallStyle notifikasi.

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

Menyaring panggilan

Gunakan metode forScreeningCall() untuk membuat notifikasi gaya panggilan untuk 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

Kaitkan notifikasi CallStyle di API versi 30 atau sebelumnya dengan layanan latar depan agar dapat menetapkan rating tinggi yang diberikan di API level 31 atau yang lebih tinggi. Selain itu, notifikasi CallStyle di API versi 30 atau sebelumnya dapat mencapai peringkat serupa dengan menandai notifikasi sebagai diwarnai, menggunakan metode setColorized().

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