Mendukung aplikasi panggilan pihak ketiga

Android 9 menyediakan API untuk mendukung aplikasi panggilan pihak ketiga dengan lebih baik. Aplikasi panggilan pihak ketiga biasanya mengandalkan API Layanan Telepon seperti siaran PHONE_STATE untuk berdampingan bersama panggilan telepon operator. Sebagai akibatnya, aplikasi panggilan pihak ketiga harus memberikan prioritas pada panggilan operator dan sering kali menolak panggilan masuk secara diam-diam di aplikasi, atau menghentikan panggilan yang sedang berlangsung untuk memberi jalan bagi panggilan operator.

API di Android 9 mendukung skenario panggilan serentak antara aplikasi pihak ketiga dan panggilan operator. Hal ini memungkinkan, misalnya, untuk menerima panggilan pihak ketiga yang masuk saat melakukan panggilan operator. Framework ini bertanggung jawab untuk memastikan panggilan operator dijeda saat pengguna melakukan panggilan pihak ketiga.

Di Android 9, aplikasi panggilan pihak ketiga dianjurkan untuk mengimplementasikan ConnectionService API yang dikelola sendiri. Untuk informasi selengkapnya tentang cara mem-build aplikasi panggilan menggunakan API ini, lihat Mem-build aplikasi panggilan.

ConnectionService API yang dikelola sendiri juga memberi developer peluang untuk memilih ikut serta agar panggilan di aplikasi mereka dicatat dalam log panggilan sistem (lihat EXTRA_LOG_SELF_MANAGED_CALLS). Sesuai dengan persyaratan dalam Dokumen Definisi Kompatibilitas Android (CDD) (bagian 7.4.1.2), Anda harus memastikan aplikasi telepon atau keypad menampilkan entri log panggilan ini dan menampilkan nama aplikasi panggilan pihak ketiga tempat panggilan berasal (untuk contoh cara aplikasi keypad AOSP memenuhi persyaratan ini, lihat Entri log panggilan dari aplikasi panggilan pihak ketiga).

Aplikasi bertanggung jawab untuk menetapkan CAPABILITY_SUPPORT_HOLD dan CAPABILITY_HOLD pada koneksi aplikasinya. Namun, ada kemungkinan aplikasi tidak dapat menahan panggilan dalam beberapa situasi. Framework ini mencakup ketentuan untuk menyelesaikan jenis kasus ini.

Skenario

Anda harus mengubah aplikasi telepon untuk menangani skenario berikut.

Menangani panggilan masuk yang memutuskan panggilan yang sedang berlangsung

Dalam skenario saat ada panggilan pihak ketiga yang sedang berlangsung (misalnya, dalam panggilan SuperCaller) yang tidak mendukung penangguhan, dan pengguna menerima panggilan seluler (misalnya, menggunakan operator FooCom), aplikasi Telepon atau Telepon Anda harus menunjukkan kepada pengguna bahwa menjawab panggilan jaringan seluler akan mengakhiri panggilan pihak ketiga yang sedang berlangsung.

Pengalaman pengguna ini penting karena aplikasi panggilan pihak ketiga mungkin memiliki panggilan yang sedang berlangsung yang tidak dapat ditahan oleh framework. Menjawab panggilan seluler baru akan menyebabkan panggilan pihak ketiga yang sedang berlangsung terputus.

Lihat antarmuka pengguna pada gambar untuk mengetahui contohnya:

Panggilan masuk memutuskan panggilan pihak ketiga yang sedang berlangsung

Gambar 1. Panggilan masuk memutuskan panggilan pihak ketiga yang sedang berlangsung.

Aplikasi dialler Anda dapat memeriksa apakah panggilan masuk menyebabkan panggilan lain terputus dengan memeriksa tambahan panggilan. Pastikan EXTRA_ANSWERING_DROPS_FG_CALL ditetapkan ke TRUE, dan EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME ditetapkan ke nama aplikasi yang panggilannya terputus setelah menjawab panggilan seluler masuk.

Entri log panggilan dari aplikasi panggilan pihak ketiga

Developer aplikasi panggilan pihak ketiga dapat memilih untuk mencatat panggilan di aplikasi mereka ke dalam log panggilan sistem (lihat EXTRA_LOG_SELF_MANAGED_CALLS). Artinya, Anda dapat memiliki entri dalam log panggilan yang bukan untuk panggilan jaringan seluler.

Saat aplikasi dialer AOSP menampilkan entri log panggilan yang terkait dengan aplikasi panggilan pihak ketiga, nama aplikasi tempat panggilan dilakukan akan ditampilkan di log panggilan, seperti yang diilustrasikan dalam gambar:

Entri log panggilan dengan aplikasi panggilan pihak ketiga

Gambar 2. Entri log panggilan dengan nama aplikasi panggilan pihak ketiga di aplikasi telepon.

Untuk menentukan nama aplikasi yang terkait dengan entri log panggilan, gunakan kolom PHONE_ACCOUNT_COMPONENT_NAME dan PHONE_ACCOUNT_ID di penyedia log panggilan untuk membuat instance PhoneAccountHandle, yang mengidentifikasi sumber entri log panggilan. Buat kueri TelecomManager untuk mendapatkan detail PhoneAccount.
Untuk menentukan apakah entri log panggilan berasal dari aplikasi panggilan pihak ketiga, periksa kemampuan PhoneAccount untuk melihat apakah CAPABILITY_SELF_MANAGED telah ditetapkan.

Metode getLabel dari PhoneAccount yang ditampilkan akan menampilkan nama aplikasi yang terkait dengan entri log panggilan dari aplikasi panggilan pihak ketiga.

Validasi

Untuk menguji apakah perangkat Anda mendukung aplikasi panggilan pihak ketiga, gunakan aplikasi pengujian Telecomm, yang menerapkan ConnectionService API yang dikelola sendiri. Aplikasi terletak di /packages/services/Telecomm/testapps/.

  1. Build aplikasi pengujian dari root repositori sumber Android Anda menggunakan:

    mmma packages/services/Telecomm/testapps/

  2. Instal apk build menggunakan adb install -g -r <apk path>. Ikon Contoh Pengelolaan Mandiri kemudian ditambahkan ke peluncur Anda.

  3. Ketuk ikon untuk membuka aplikasi pengujian.

Menangani panggilan masuk yang memutuskan hubungan panggilan yang sedang berlangsung

Ikuti langkah-langkah berikut untuk memverifikasi bahwa panggilan masuk memutuskan koneksi panggilan pihak ketiga yang sedang berlangsung.

Menguji aplikasi untuk aplikasi panggilan pihak ketiga

Gambar 3. Menguji aplikasi dengan implementasi contoh ConnectionService API.

  1. Hapus opsi Holdable.
  2. Ketuk KELUAR untuk memulai contoh panggilan keluar baru.
  3. Ketuk tombol AKTIF untuk mengaktifkan panggilan.
  4. Hubungi nomor telepon perangkat yang sedang diuji dengan ponsel lain. Tindakan ini akan memanggil skenario saat dialer Anda diberi nama aplikasi, yang akan memutuskan panggilannya.
  5. Setelah selesai, ketuk tombol DISCONNECT di aplikasi pengujian.

Entri log panggilan dari aplikasi panggilan pihak ketiga

Setelah menyelesaikan langkah-langkah di atas, aplikasi pengujian seharusnya sudah mencatat panggilan ke log panggilan sistem. Untuk mengonfirmasi bahwa perangkat mencatat log panggilan dari aplikasi panggilan pihak ketiga, buka aplikasi telepon dan pastikan panggilan muncul di log panggilan sistem.