Usługa wyboru domeny

Na urządzeniach z Androidem 15 lub nowszym możesz wdrożyć wybór domeny między usługą IMS a starszymi usługami w sieciach przełączonych obwodowych za pomocą systemowy interfejs API DomainSelectionService. DomainSelectionService to dobrze zdefiniowany interfejs między platformą Androida a dostawcą na temat wyboru domeny. Dzięki niemu dostawca może dostarczanie informacji sygnalizujących, takich jak domena, z której pochodzą połączenia wychodzące i SMS-y i preferencje typu sieci podczas skanowania sieci.

architektura wyboru domen

Rysunek 1. Diagram architektury dla funkcji wyboru domeny

Przykłady i źródło

Android zapewnia implementację referencyjną dla funkcji wyboru domeny w AOSP o TelephonyDomainSelectionService. Szczegółowe informacje dokumentacji interfejsu DomainSelectionService API znajdziesz w DomainSelectionService i inne klasy w interfejsie API.

Implementacja

Aby wdrożyć funkcję wyboru domeny na urządzeniu z Androidem, wykonaj te czynności kroki są wymagane:

  1. Utwórz aplikację do wybierania domeny. Usługa musi być zdefiniowana w AndroidManifest.xml.

  2. Dodaj konfigurację do nakładki urządzenia, aby umożliwić powiązanie platformy z Implementacja DomainSelectionService.

  3. Obsługuj wymagane interfejsy radiowe HAL na potrzeby funkcji wyboru domeny.

Ta sekcja zawiera więcej informacji na temat tych kroków.

Dodaj wpis usługi w pliku AndroidManifest.xml

Rejestracja usługi DomainSelectionService w aplikacji do wyboru domeny za pomocą platformy, dodaj do pliku manifestu wpis usługi za pomocą polecenia 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>

Definicja usługi w AndroidManifest.xml musi określać te elementy dostępne do działania funkcji wyboru domeny.

  • directBootAware="true": umożliwia wykrywanie i uruchamianie usługi przez telefonii, zanim użytkownik odblokuje urządzenie. Usługa nie ma dostępu szyfrowane przez urządzenie pamięci, zanim użytkownik odblokuje urządzenie. Więcej informacji, zapoznaj się z sekcjami Obsługa trybu bezpośredniego rozruchu i Szyfrowanie oparte na plikach.

  • persistent="true": umożliwia trwałe działanie usługi, a nie zabitego przez system, żeby odzyskać pamięć. Ten atrybut działa tylko wtedy, gdy atrybut jest przeznaczona do aplikacji systemowej.

  • permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE": zapewnia że tylko proces z uprawnieniami BIND_DOMAIN_SELECTION_SERVICE można powiązać z aplikacją. Zapobiega to powiązaniu nieuczciwej aplikacji z usługi, ponieważ tylko aplikacje systemowe mogą przyznawać te uprawnienia platformy.

Usługa musi również określać element intent-filter z parametrem Działanie android.telephony.DomainSelectionService. Dzięki temu platforma znajdzie usługę DomainSelectionService.

Zdefiniuj konfigurację w nakładce na urządzeniu

Aby platforma została bezpiecznie powiązana z usługą DomainSelectionService, dodaj tę konfigurację do nakładki na urządzeniu:

Ponieważ Android nie obsługuje aplikacji innych firm, które można pobrać DomainSelectionService, aplikacja do wyboru domeny musi być aplikacja systemowa pakietu /system_ext/priv-app/ lub /product/priv-app/ folderu Dysku. Platforma sprawdza, czy nazwa pakietu implementacji pasuje do wartości nakładki na urządzeniu, aby mieć pewność, że tylko zaufane, wstępnie zainstalowane aplikacje związane.

Obsługa interfejsów radiowych HAL.

Aby można było włączyć funkcję wyboru domeny, włącz obsługę następującego wymaganego radia HAL interfejsy:

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

Weryfikacja

Aby sprawdzić, czy platforma telefoniczna prawidłowo reaguje na w interfejsie DomainSelectionService, uruchom testy CTS w DomainSelectionServiceTestOnMockModem