Untuk perangkat yang menjalankan Android 15 atau yang lebih tinggi, Anda dapat
menerapkan pemilihan domain
antara layanan IMS dan layanan lama melalui jaringan yang dialihkan sirkuit menggunakan
API sistem DomainSelectionService. DomainSelectionService
adalah antarmuka yang ditentukan dengan baik antara platform Android dan penerapan pemilihan domain yang disediakan vendor. Antarmuka ini memungkinkan penerapan vendor memberikan informasi sinyal, seperti domain tempat panggilan keluar dan SMS ditempatkan serta preferensi jenis jaringan dalam pemindaian jaringan, ke platform.
Gambar 1. Diagram arsitektur untuk fitur pemilihan domain
Contoh dan sumber
Android menyediakan penerapan referensi untuk fitur pemilihan domain di
Project Open Source Android (AOSP) di TelephonyDomainSelectionService.
Untuk dokumentasi mendetail tentang DomainSelectionService API, lihat
DomainSelectionService dan class lainnya di API.
Penerapan
Untuk menerapkan fitur pemilihan domain di perangkat yang didukung Android, langkah-langkah berikut diperlukan:
Buat aplikasi pemilihan domain. Layanan harus ditentukan dalam file
AndroidManifest.xml.Tambahkan konfigurasi ke overlay perangkat agar platform dapat terikat ke penerapan
DomainSelectionService.Dukung antarmuka hardware abstraction layer (HAL) radio yang diperlukan untuk fitur pemilihan domain.
Bagian ini memberikan detail lebih lanjut tentang langkah-langkah ini.
Menambahkan entri layanan di AndroidManifest.xml
Agar aplikasi pemilihan domain Anda dapat mendaftarkan layanan DomainSelectionService dengan framework, tambahkan entri layanan di file manifes menggunakan format berikut:
<service
android:name="com.example.domainselection.DomainSelectionService"
android:directBootAware="true"
android:persistent="true"
…
android:permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
…
<intent-filter>
<action android:name="android.telephony.DomainSelectionService"/>
</intent-filter>
…
</service>
Definisi layanan di AndroidManifest.xml harus menentukan atribut berikut agar fitur pemilihan domain dapat beroperasi:
directBootAware="true": Memungkinkan layanan ditemukan dan dijalankan oleh teleponi sebelum pengguna membuka kunci perangkat. Layanan tidak dapat mengakses penyimpanan terenkripsi perangkat sebelum pengguna membuka kunci perangkat. Untuk mengetahui informasi selengkapnya, lihat Mendukung mode Direct Boot dan Enkripsi Berbasis File.persistent="true": Memungkinkan layanan dijalankan secara terus-menerus dan tidak dihentikan oleh sistem untuk mengklaim kembali memori. Atribut ini hanya berfungsi jika aplikasi dibuat sebagai aplikasi sistem.permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE": Memverifikasi bahwa hanya proses yang memiliki izinBIND_DOMAIN_SELECTION_SERVICEyang diberikan kepadanya yang dapat terikat ke aplikasi. Hal ini mencegah aplikasi berbahaya terikat ke layanan, karena hanya aplikasi sistem yang dapat diberikan izin oleh framework.
Layanan juga harus menentukan elemen intent-filter dengan tindakan android.telephony.DomainSelectionService. Hal ini memungkinkan framework menemukan layanan DomainSelectionService.
Menentukan konfigurasi di overlay perangkat
Agar platform dapat terikat dengan aman ke layanan DomainSelectionService, tambahkan konfigurasi berikut ke overlay perangkat:
config_domain_selection_service_component_name: Nama komponen (stringComponentNameyang diratakan) untuk layananDomainSelectionService.
Karena Android tidak mendukung aplikasi dengan penerapan DomainSelectionService yang dapat didownload pihak ketiga, aplikasi pemilihan domain harus berupa aplikasi sistem yang berada di folder /system_ext/priv-app/ atau /product/priv-app/. Framework memverifikasi apakah nama paket penerapan cocok dengan nilai overlay perangkat untuk memverifikasi bahwa hanya aplikasi tepercaya yang telah diinstal yang terikat.
Mendukung antarmuka HAL radio
Untuk mengaktifkan fitur pemilihan domain, dukung antarmuka HAL radio yang diperlukan berikut:
-
void setEmergencyMode(int serial, EmergencyMode emcModeType); void triggerEmergencyNetworkScan(int serial, EmergencyNetworkScanTrigger request); void cancelEmergencyNetworkScan(int serial, boolean resetScan); void exitEmergencyMode(int serial); -
void emergencyNetworkScanResult(RadioIndicationType type, EmergencyRegResult result);
Validasi
Untuk menguji bahwa framework teleponi merespons dengan benar antarmuka
DomainSelectionService, jalankan pengujian Compatibility Test Suite (CTS)
di DomainSelectionServiceTestOnMockModem.