Untuk perangkat yang menjalankan Android 15 atau yang lebih baru, Anda dapat
menerapkan pemilihan domain
antara layanan IMS dan layanan lama melalui
jaringan beralih sirkuit menggunakan
API sistem DomainSelectionService
. DomainSelectionService
adalah antarmuka yang didefinisikan dengan baik antara platform Android dan vendor yang disediakan
implementasi pemilihan domain. Antarmuka ini memungkinkan
implementasi vendor
memberikan informasi sinyal, seperti domain yang melakukan panggilan keluar dan SMS
ditempatkan dan 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 detail
dokumentasi untuk DomainSelectionService
API, lihat
DomainSelectionService
dan class lain di API.
Implementasi
Untuk mengimplementasikan fitur pemilihan domain di perangkat Android, langkah-langkah yang diperlukan:
Buat aplikasi pemilihan domain. Layanan harus didefinisikan dalam File
AndroidManifest.xml
.Tambahkan konfigurasi ke overlay perangkat agar platform dapat diikat ke Implementasi
DomainSelectionService
.Mendukung antarmuka HAL radio yang diperlukan untuk fitur pemilihan domain.
Bagian ini memberikan detail lebih lanjut tentang langkah-langkah tersebut.
Menambahkan entri layanan di AndroidManifest.xml
Agar aplikasi pemilihan domain Anda dapat mendaftarkan layanan DomainSelectionService
dengan framework, tambahkan entri layanan ke dalam file manifes menggunakan
format:
<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 hal-hal 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 dienkripsi perangkat sebelum pengguna membuka kunci perangkat. Untuk selengkapnya informasi, lihat Mendukung mode Direct Boot dan Enkripsi Berbasis File.persistent="true"
: Memungkinkan layanan berjalan terus-menerus dan tidak dimatikan oleh sistem untuk mendapatkan kembali memori. Atribut ini hanya berfungsi jika aplikasi dibangun sebagai aplikasi sistem.permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
: Memastikan bahwa hanya proses yang memiliki izinBIND_DOMAIN_SELECTION_SERVICE
yang diberikan untuknya dapat mengikat ke aplikasi. Hal ini mencegah aplikasi jahat mengikat layanan, karena hanya aplikasi sistem yang dapat diberi izin oleh Google Workspace for Education.
Layanan juga harus menentukan elemen intent-filter
dengan elemen
Tindakan android.telephony.DomainSelectionService
. Hal ini memungkinkan kerangka kerja menemukan
layanan DomainSelectionService
.
Menentukan konfigurasi di overlay perangkat
Agar platform dapat mengikat ke layanan DomainSelectionService
dengan aman, tambahkan
konfigurasi berikut ke overlay perangkat:
config_domain_selection_service_component_name
: nama komponen (stringComponentName
yang disatukan) untuk LayananDomainSelectionService
Karena Android tidak mendukung aplikasi dengan pihak ketiga yang dapat didownload
DomainSelectionService
, aplikasi pemilihan domain harus berupa
aplikasi sistem yang berada di /system_ext/priv-app/
atau /product/priv-app/
folder tersebut. Framework akan memverifikasi apakah nama paket implementasi
mencocokkan nilai overlay perangkat untuk memastikan hanya aplikasi bawaan tepercaya yang
terikat.
Mendukung antarmuka HAL radio
Untuk mengaktifkan fitur pemilihan domain, dukung HAL radio yang diperlukan berikut antarmuka:
-
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 kerangka kerja telepon merespons permintaan
DomainSelectionService
, jalankan uji CTS dalam
DomainSelectionServiceTestOnMockModem
.