Ringkasan framework Telecom

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:

  1. Anda ingin membuat pengganti untuk aplikasi Telepon sistem.
  2. 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:

  1. 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. Menggunakan ConnectionService 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
  2. Terapkan ConnectionService API terkelola - mendukung pengembangan solusi panggilan yang mendasarkan pada aplikasi ponsel perangkat yang sudah ada (lihat getDefaultDialerPackage()) 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, lihat ConnectionService.
  3. Implementasikan InCallService dan ConnectionService API - ideal jika Anda ingin membuat solusi panggilan berbasis ConnectionService 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 bahwa InCallService Anda tidak membuat asumsi tentang sumber panggilan yang ditampilkan. Anda juga harus memastikan bahwa implementasi ConnectionService Anda masih dapat berfungsi tanpa aplikasi telepon default disetel ke kustom Anda InCallService.

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.