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 Telepon seperti siaran PHONE_STATE untuk dapat berjalan bersamaan dengan panggilan telepon operator. Akibatnya, aplikasi panggilan pihak ketiga harus memprioritaskan panggilan operator dan sering kali menolak panggilan masuk secara diam-diam di aplikasi, atau mengakhiri 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 masuk pihak ketiga saat sedang melakukan panggilan operator. Framework ini mengasumsikan tanggung jawab untuk memastikan panggilan operator ditahan saat pengguna terlibat dalam panggilan pihak ketiga.

Di Android 9, aplikasi panggilan pihak ketiga dianjurkan untuk menerapkan API ConnectionService yang dikelola sendiri. Untuk mengetahui informasi selengkapnya tentang cara membangun aplikasi panggilan menggunakan API ini, lihat Membangun aplikasi panggilan.

API ConnectionService yang dikelola sendiri juga memberi developer kesempatan 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 (CDD) Android (bagian 7.4.1.2), Anda harus memastikan aplikasi telepon atau dialer Anda menampilkan entri log panggilan ini dan menunjukkan nama aplikasi panggilan pihak ketiga tempat panggilan berasal (untuk contoh cara aplikasi dialer AOSP memenuhi persyaratan ini, lihat Entri log panggilan dari aplikasi panggilan pihak ketiga).

Aplikasi bertanggung jawab untuk menyetel CAPABILITY_SUPPORT_HOLD dan CAPABILITY_HOLD pada koneksi aplikasi mereka. 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 dialer untuk menangani skenario berikut.

Menangani panggilan masuk yang mengakhiri panggilan yang sedang berlangsung

Dalam skenario saat ada panggilan pihak ketiga yang sedang berlangsung (misalnya, dalam panggilan SuperCaller) yang tidak mendukung penundaan, dan pengguna menerima panggilan seluler (misalnya, menggunakan FooCom operatornya), aplikasi Telepon atau Dialer 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 sedang melakukan panggilan yang tidak dapat ditahan oleh framework. Menjawab panggilan seluler baru akan menyebabkan panggilan pihak ketiga yang sedang berlangsung terputus.

Lihat antarmuka pengguna dalam gambar untuk melihat contohnya:

Panggilan masuk yang mengakhiri panggilan pihak ketiga yang sedang berlangsung

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

Aplikasi dialer Anda dapat memeriksa apakah panggilan masuk menyebabkan panggilan lain terputus dengan memeriksa ekstra panggilan. Pastikan EXTRA_ANSWERING_DROPS_FG_CALL disetel ke TRUE, dan EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME disetel ke nama aplikasi yang panggilannya terputus saat 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 dalam log panggilan sistem (lihat EXTRA_LOG_SELF_MANAGED_CALLS). Artinya, entri dalam log panggilan mungkin 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 dialer.

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. 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 disetel.

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 berada di /packages/services/Telecomm/testapps/.

  1. Bangun 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 Self-Managed Sample akan ditambahkan ke peluncur Anda.

  3. Ketuk ikon untuk membuka aplikasi pengujian.

Menangani panggilan masuk yang mengakhiri panggilan yang sedang berlangsung

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

Menguji aplikasi untuk aplikasi panggilan pihak ketiga

Gambar 3. Menguji aplikasi dengan contoh penerapan ConnectionService API.

  1. Hapus opsi Dapat Ditahan.
  2. Ketuk KELUAR untuk memulai panggilan keluar contoh baru.
  3. Ketuk tombol AKTIF untuk mengaktifkan panggilan.
  4. Hubungi nomor telepon perangkat yang sedang diuji dengan ponsel lain. Hal ini memulai skenario saat aplikasi telepon Anda diberi nama aplikasi, yang akan terputus 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 akan mencatat panggilan ke log panggilan sistem. Untuk mengonfirmasi bahwa perangkat mencatat panggilan dari aplikasi panggilan pihak ketiga, buka aplikasi dialer Anda dan konfirmasi bahwa panggilan muncul di log panggilan sistem.