Untuk perangkat yang menjalankan Android 15 atau yang lebih tinggi, Anda dapat
mengimplementasikan pemilihan domain
antara layanan IMS dan layanan lama melalui jaringan yang beralih sirkuit menggunakan
sistem API DomainSelectionService
. DomainSelectionService
adalah antarmuka yang ditentukan dengan baik antara platform Android dan implementasi pemilihan domain
yang disediakan vendor. Antarmuka ini memungkinkan implementasi 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 implementasi referensi untuk fitur pemilihan domain dalam
AOSP di TelephonyDomainSelectionService
. Untuk dokumentasi
mendetail tentang DomainSelectionService
API, lihat
DomainSelectionService
dan class lainnya di API.
Implementasi
Untuk menerapkan fitur pemilihan domain di perangkat Android, diperlukan langkah-langkah berikut:
Buat aplikasi pemilihan domain. Layanan harus ditentukan dalam file
AndroidManifest.xml
.Tambahkan konfigurasi ke overlay perangkat agar platform dapat terikat dengan penerapan
DomainSelectionService
.Mendukung antarmuka 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 mendaftarkan layanan DomainSelectionService
dengan framework, tambahkan entri layanan dalam 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 telepon sebelum pengguna membuka kunci perangkat. Layanan tidak dapat mengakses penyimpanan yang dienkripsi dengan 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 mengambil kembali memori. Atribut ini hanya berfungsi jika aplikasi di-build sebagai aplikasi sistem.permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
: Memastikan bahwa hanya proses yang memiliki izinBIND_DOMAIN_SELECTION_SERVICE
yang diberikan kepadanya yang dapat terikat ke aplikasi. Hal ini mencegah aplikasi nakal terikat ke layanan, karena hanya aplikasi sistem yang dapat diberi 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 terikat dengan aman ke layanan DomainSelectionService
, tambahkan
konfigurasi berikut ke overlay perangkat:
config_domain_selection_service_component_name
: Nama komponen (stringComponentName
yang diratakan) untuk layananDomainSelectionService
Karena Android tidak mendukung aplikasi dengan implementasi DomainSelectionService
pihak ketiga yang dapat didownload, aplikasi pemilihan domain harus berupa
aplikasi sistem yang berada di folder
/system_ext/priv-app/
atau /product/priv-app/
. Framework memverifikasi apakah nama paket implementasi
cocok dengan nilai overlay perangkat untuk memastikan hanya aplikasi bawaan tepercaya
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 apakah framework telephony merespons antarmuka
DomainSelectionService
dengan benar, jalankan pengujian CTS di
DomainSelectionServiceTestOnMockModem
.