Layanan pemilihan domain

Untuk perangkat yang menjalankan Android 15 atau yang lebih tinggi, Anda dapat menerapkan pemilihan domain antara layanan IMS dan layanan lama melalui jaringan circuit switched menggunakan API sistem DomainSelectionService. DomainSelectionService adalah antarmuka yang terdefinisi 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 dilakukan dan preferensi jenis jaringan dalam pemindaian jaringan, ke platform.

domain-selection-architecture

Gambar 1. Diagram arsitektur untuk fitur pemilihan domain

Contoh dan sumber

Android menyediakan implementasi referensi untuk fitur pemilihan domain di 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, langkah-langkah berikut diperlukan:

  1. Buat aplikasi pemilihan domain. Layanan harus ditentukan dalam file AndroidManifest.xml.

  2. Tambahkan konfigurasi ke overlay perangkat agar platform dapat mengikat ke penerapan DomainSelectionService.

  3. Mendukung antarmuka HAL radio yang diperlukan untuk fitur pemilihan domain.

Bagian ini memberikan detail lebih lanjut tentang langkah-langkah tersebut.

Tambahkan 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 telefoni sebelum pengguna membuka kunci perangkat. Layanan tidak dapat mengakses penyimpanan yang dienkripsi perangkat sebelum pengguna membuka kunci perangkat. Untuk mengetahui informasi selengkapnya, lihat Mendukung mode Boot Langsung dan Enkripsi Berbasis File.

  • persistent="true": Memungkinkan layanan dijalankan secara persisten dan tidak dihentikan oleh sistem untuk mendapatkan kembali memori. Atribut ini berfungsi hanya jika aplikasi dibangun sebagai aplikasi sistem.

  • permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE": Memastikan bahwa hanya proses yang memiliki izin BIND_DOMAIN_SELECTION_SERVICE yang 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 dalam overlay perangkat

Agar platform dapat terikat dengan aman ke layanan DomainSelectionService, tambahkan konfigurasi berikut ke overlay perangkat:

Karena Android tidak mendukung aplikasi dengan implementasi 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 memastikan hanya aplikasi bawaan yang tepercaya yang terikat.

Mendukung antarmuka HAL radio

Untuk mengaktifkan fitur pemilihan domain, dukung antarmuka HAL radio wajib berikut:

  • IRadioNetwork

    void setEmergencyMode(int serial, EmergencyMode emcModeType);
    void triggerEmergencyNetworkScan(int serial,
            EmergencyNetworkScanTrigger request);
    void cancelEmergencyNetworkScan(int serial, boolean resetScan);
    void exitEmergencyMode(int serial);
    
  • IRadioNetworkIndication

    void emergencyNetworkScanResult(RadioIndicationType type,
            EmergencyRegResult result);
    

Validasi

Untuk menguji apakah framework teleponi merespons dengan benar antarmuka DomainSelectionService, jalankan pengujian CTS di DomainSelectionServiceTestOnMockModem.