Alan adı seçim hizmeti

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

domain-selection-architecture

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

Örnekler ve kaynak

Android, AOSP'deki alan seçimi özelliği için TelephonyDomainSelectionService adresinde referans bir uygulama sağlar. DomainSelectionService API'nin 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 cihazlarda uygulamak için aşağıdaki adımlar gerekir:

  1. Bir alan adı seçim 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 seçimi özelliği için gerekli radyo HAL arayüzlerini destekleyin.

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

AndroidManifest.xml dosyasına hizmet girişi ekle

Alan seçimi uygulamanızın DomainSelectionService hizmetini çerçeveye kaydettirmesi için manifest dosyasına aşağıdaki biçimi kullanarak 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 öğesindeki 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 keşfedilmesini ve çalıştırılmasını sağlar. Hizmet, kullanıcı cihazın kilidini açmadan cihazla şifrelenmiş depolama alanına erişemez. Daha fazla bilgi için Doğrudan önyükleme modunu destekleme ve Dosya tabanlı şifreleme başlıklı makaleleri inceleyin.

  • persistent="true": Hizmetin sürekli olarak çalışmasını sağlar ve sistem tarafından bellek kazanmak için kapatılmasını engeller. Bu özellik yalnızca uygulama sistem uygulaması olarak oluşturulmuşsa çalışır.

  • permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE": Yalnızca kendisine BIND_DOMAIN_SELECTION_SERVICE iznine sahip olan bir işlemin uygulamaya bağlanabilmesini sağlar. Çerçeve tarafından sadece sistem uygulamalarına izin verilebileceği için, sahte bir uygulamanın hizmete bağlanmasını önlersiniz.

Hizmet, android.telephony.DomainSelectionService işlemiyle intent-filter öğesini 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ğlanabilmesi için cihaz yer paylaşımına aşağıdaki yapılandırmayı ekleyin:

Android, indirilebilir üçüncü taraf DomainSelectionService uygulamalarını desteklemediğinden alan 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, önceden yüklenmiş uygulamaların bağlandığından emin olmak için uygulamanın paket adının cihaz yer paylaşımı 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 çerçevesinin DomainSelectionService arayüzüne doğru şekilde yanıt verdiğini test etmek için DomainSelectionServiceTestOnMockModem'de CTS testlerini çalıştırın.