Kerangka kerja Android Telecom mengelola panggilan audio dan video pada perangkat Android. Ini termasuk panggilan berbasis SIM (mis. Menggunakan framework Telephony) serta panggilan VOIP yang disediakan oleh pelaksana ConnectionService
API.
Dua komponen utama yang berhubungan dengan Telecom adalah ConnectionService
dan InCallService
. Implementasi ConnectionService
bertanggung jawab untuk menghubungkan panggilan ke pihak lain menggunakan beberapa cara (mis. VOIP). Implementasi ConnectionService
yang paling umum pada telepon adalah Layanan Koneksi Telephony yang bertanggung jawab untuk menghubungkan panggilan operator. Implementasi InCallService
bertanggung jawab untuk menyediakan antarmuka pengguna untuk panggilan yang dikelola oleh Telecom dan untuk menyediakan sarana bagi pengguna guna mengontrol dan berinteraksi dengan panggilan ini. Aplikasi Telepon yang dipaket dengan perangkat adalah contoh paling umum dari penerapan InCallService
.
Telecom bertindak sebagai switchboard, yang merutekan panggilan yang disediakan oleh implementasi ConnectionService
ke antarmuka pengguna panggilan yang disediakan oleh implementasi InCallService
.
Anda mungkin ingin menerapkan Telecom API jika:
- Anda ingin membuat pengganti untuk aplikasi Telepon sistem.
- Anda ingin membuat solusi panggilan yang terintegrasi ke dalam pengalaman panggilan Android.
Membuat aplikasi telepon pengganti
Jika Anda ingin membuat pengganti untuk aplikasi Telepon default pada perangkat Android, terapkan InCallService
API. Penting untuk dicatat bahwa InCallService
seharusnya tidak memiliki kemampuan panggilan dan hanya terdiri dari antarmuka pengguna untuk panggilan. Sebuah InCallService
harus menangani semua Panggilan yang disadari oleh framework Telecom. Tidak boleh membuat asumsi tentang sifat panggilan (mis. mengasumsikan panggilan adalah panggilan telepon berbasis SIM), dan tidak boleh menerapkan pembatasan panggilan berdasarkan salah satu ConnectionService
(mis. seharusnya tidak menerapkan pembatasan Telepon untuk panggilan video).
Untuk informasi selengkapnya, lihat InCallService
.
Mengintegrasikan solusi panggilan
Jika Anda ingin mengintegrasikan solusi panggilan Anda ke Android, Anda memiliki opsi berikut:
- Mengimplementasikan
ConnectionService
API - sangat ideal untuk pengembang aplikasi panggilan standalone yang tidak ingin menunjukkan panggilan mereka dalam aplikasi telepon default, dan tidak ingin memiliki panggilan lain yang ditampilkan di antarmuka pengguna mereka. Secara tradisional, aplikasi panggilan standalone mengandalkan pada mendengarkan status ponsel untuk mencoba menentukan apakah panggilan lain sedang berlangsung. Ini bermasalah karena status ponsel tidak memperhitungkan aplikasi panggilan lain yang mungkin dipasang oleh pengguna. MenggunakanConnectionService
swakelola membantu Anda memastikan bahwa aplikasi Anda akan beroperasi tidak hanya dengan telepon asli yang memanggil perangkat, tetapi juga aplikasi panggilan standalone lainnya yang mengimplementasikan API ini. API ConnectionService Swakelola juga mengelola perutean audio dan fokus untuk Anda. Untuk detailnya, lihat Layanan Koneksi Swakelola - Terapkan
ConnectionService
API terkelola - mendukung pengembangan solusi panggilan yang mendasarkan pada aplikasi ponsel perangkat yang sudah ada (lihatgetDefaultDialerPackage()
) guna menyediakan antarmuka pengguna untuk panggilan. Contohnya mungkin berupa implementasi pihak ketiga dari panggilan SIP, atau layanan panggilan VOIP.ConnectionService
sendiri hanya menyediakan sarana untuk menghubungkan panggilan, tetapi tidak memiliki antarmuka pengguna yang terkait. Untuk detailnya, lihatConnectionService
. - Implementasikan
InCallService
danConnectionService
API - ideal jika Anda ingin membuat solusi panggilan berbasisConnectionService
Anda sendiri, lengkap dengan antarmuka penggunanya sendiri, selain juga menampilkan semua panggilan Android lainnya di antarmuka pengguna yang sama. Dengan menggunakan pendekatan ini, Anda harus tetap memastikan bahwaInCallService
Anda tidak membuat asumsi tentang sumber panggilan yang ditampilkan. Anda juga harus memastikan bahwa implementasiConnectionService
Anda masih dapat berfungsi tanpa aplikasi telepon default disetel ke kustom AndaInCallService
.
Panggilan layar
Perangkat yang menjalankan Android 10 (level API 29) dan yang lebih tinggi memberi aplikasi Anda sarana untuk mengidentifikasi panggilan yang tidak ada dalam buku alamat pengguna sebagai panggilan spam potensial, dan membuat panggilan spam ditolak secara diam-diam atas nama pengguna. Informasi tentang panggilan yang diblokir ini dicatat sebagai panggilan yang diblokir dalam log panggilan untuk memberikan transparansi yang lebih besar kepada pengguna ketika mereka kehilangan panggilan. Penggunaan API baru ini menghilangkan persyaratan untuk mendapatkan izin READ_CALL_LOG
dari pengguna untuk menyediakan penyaringan panggilan dan fungsionalitas ID penelepon.
Mengalihkan panggilan
Pada perangkat yang menjalankan Android 10 (level API 29) dan yang lebih tinggi, intent panggilan ditangani secara berbeda dari perangkat yang menjalankan Android 9 dan lebih rendah. Siaran NEW_OUTGOING_CALL
sudah dihentikan dan diganti dengan CallRedirectionService API
. CallRedirectionService
API menyediakan antarmuka bagi Anda untuk memodifikasi panggilan keluar yang dibuat oleh platform Android. Misalnya, aplikasi pihak ketiga mungkin membatalkan panggilan dan mengalihkannya melalui VoIP.