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:
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:
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/
.
Bangun aplikasi pengujian dari root repositori sumber Android Anda menggunakan:
mmma packages/services/Telecomm/testapps/
Instal APK build menggunakan
adb install -g -r <apk path>
. Ikon Self-Managed Sample akan ditambahkan ke peluncur Anda.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.
Gambar 3. Menguji aplikasi dengan contoh penerapan ConnectionService API.
- Hapus opsi Dapat Ditahan.
- Ketuk KELUAR untuk memulai panggilan keluar contoh baru.
- Ketuk tombol AKTIF untuk mengaktifkan panggilan.
- 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.
- 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.