Alan seçimi hizmeti

Android 15 veya sonraki sürümlerin yüklü olduğu cihazlarda, DomainSelectionService sistem API'sini kullanarak devre anahtarlamalı ağlar üzerinden IMS hizmeti ile eski hizmetler arasında alan seçimi uygulayabilirsiniz. DomainSelectionService Android platformu ile satıcı tarafından sağlanan alan seçimi uygulaması arasında iyi tanımlanmış bir arayüzdür. Bu arayüz, satıcı uygulamasının giden aramaların ve SMS'lerin yerleştirildiği alan adı ile ağ taramasında ağ türü tercihi gibi sinyal bilgilerini platforma sağlamasına olanak tanır.

Alan adı seçimi hizmetinin Android platformu ve satıcı uygulamalarıyla etkileşimini gösteren mimari şeması

Şekil 1. Alan seçimi özelliği için mimari şeması

Örnekler ve kaynak

Android, Android Açık Kaynak Projesi'ndeki (AOSP) alan seçimi özelliği için TelephonyDomainSelectionService adresinde referans uygulama sağlar. DomainSelectionService API'siyle ilgili ayrıntılı dokümanlar için DomainSelectionService ve API'deki diğer sınıflara bakın.

Uygulama

Alan seçimi özelliğini Android destekli bir cihazda uygulamak için aşağıdaki adımlar gereklidir:

  1. Alan adı seçimi uygulaması oluşturun. Hizmet, AndroidManifest.xml dosyasında tanımlanmalıdır.

  2. Platformun DomainSelectionService uygulamasına bağlanmasına izin vermek için cihaz yer paylaşımına bir yapılandırma ekleyin.

  3. Alan adı seçimi özelliği için gerekli radyo donanım soyutlama katmanı (HAL) arayüzlerini destekleyin.

Bu bölümde, bu adımlarla ilgili daha ayrıntılı bilgi verilmektedir.

AndroidManifest.xml dosyasına hizmet girişi ekleyin

Alan seçimi uygulamanızın DomainSelectionService hizmetini çerçeveye kaydetmesi için aşağıdaki biçimi kullanarak manifest dosyasına bir hizmet girişi ekleyin:

<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>

AndroidManifest.xml içindeki hizmet tanımı, alan seçimi özelliğinin çalışması için aşağıdaki özellikleri tanımlamalıdır:

  • directBootAware="true": Kullanıcı cihazın kilidini açmadan önce hizmetin telefon tarafından bulunup çalıştırılmasına olanak tanır. Hizmet, kullanıcı cihazın kilidini açmadan önce cihazda şifrelenmiş depolamaya erişemez. Daha fazla bilgi için Doğrudan başlatma modunu destekleme ve Dosya tabanlı şifreleme başlıklı makaleleri inceleyin.
  • persistent="true": Hizmetin sürekli olarak çalışmasına ve sistem tarafından bellek geri kazanmak için sonlandırılmamasına olanak tanır. Bu özellik yalnızca uygulama sistem uygulaması olarak oluşturulduysa çalışır.
  • permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE": Yalnızca BIND_DOMAIN_SELECTION_SERVICE izni verilen bir işlemin uygulamaya bağlanabileceğini doğrular. Bu, kötü amaçlı bir uygulamanın hizmete bağlanmasını engeller. Çünkü yalnızca sistem uygulamalarına çerçeve tarafından izin verilebilir.

Hizmet, intent-filter öğesini android.telephony.DomainSelectionService işlemiyle de belirtmelidir. Bu, çerçevenin DomainSelectionService hizmetini bulmasını sağlar.

Cihaz yer paylaşımında yapılandırmayı tanımlama

Platformun DomainSelectionService hizmetine güvenli bir şekilde bağlanması için cihaz yer paylaşımına aşağıdaki yapılandırmayı ekleyin:

Android, üçüncü taraf indirilebilir DomainSelectionService uygulamalarını desteklemediğinden alan adı seçimi uygulaması, /system_ext/priv-app/ veya /product/priv-app/ klasöründe bulunan bir sistem uygulaması olmalıdır. Çerçeve, yalnızca güvenilir ve önceden yüklenmiş uygulamaların bağlanmasını sağlamak için uygulamanın paket adının cihaz yerleşimi değeriyle eşleşip eşleşmediğini doğrular.

Radyo HAL arayüzlerini destekleme

Alan seçimi özelliğini etkinleştirmek için aşağıdaki zorunlu radyo HAL arayüzlerini destekleyin:

  • 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);
    

Doğrulama

Telefon görüşmesi çerçevesinin DomainSelectionService arayüzüne düzgün şekilde yanıt verdiğini test etmek için DomainSelectionServiceTestOnMockModem'de Compatibility Test Suite (CTS) testlerini çalıştırın.