Domainauswahl

Auf Geräten mit Android 15 oder höher können Sie die Auswahl der Domain zwischen dem IMS-Dienst und Legacy-Diensten über leitungsvermittelte Netzwerke mithilfe der System-API DomainSelectionService implementieren. DomainSelectionService ist eine genau definierte Schnittstelle zwischen der Android-Plattform und einer vom Anbieter bereitgestellten Implementierung der Domänenauswahl. Über diese Schnittstelle kann die Anbieterimplementierung der Plattform Signalisierungsinformationen wie die Domain, über die ausgehende Anrufe und SMS abgesetzt werden, und die bevorzugte Art des Netzwerks beim Scannen des Netzwerks bereitstellen.

domain-selection-architecture

Abbildung 1: Architekturdiagramm für die Funktion zur Auswahl von Domains

Beispiele und Quelle

Android bietet eine Referenzimplementierung für die Funktion zur Auswahl von Domains in AOSP unter TelephonyDomainSelectionService. Eine detaillierte Dokumentation der DomainSelectionService API finden Sie unter DomainSelectionService und in den anderen Klassen der API.

Implementierung

So implementieren Sie die Funktion zur Auswahl der Domain auf einem Android-Gerät:

  1. Erstellen Sie eine App zur Auswahl von Domains. Der Dienst muss in der Datei AndroidManifest.xml definiert werden.

  2. Fügen Sie dem Geräte-Overlay eine Konfiguration hinzu, damit die Plattform an die DomainSelectionService-Implementierung gebunden werden kann.

  3. Unterstützen Sie die erforderlichen Radio-HAL-Schnittstellen für die Funktion zur Auswahl von Domains.

In diesem Abschnitt finden Sie weitere Informationen zu diesen Schritten.

Diensteintrag in AndroidManifest.xml hinzufügen

Damit Ihre App zur Auswahl der Domain den DomainSelectionService-Dienst im Framework registriert, fügen Sie der Manifestdatei einen Diensteintrag im folgenden Format hinzu:

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

In der Dienstdefinition in AndroidManifest.xml müssen die folgenden Attribute definiert sein, damit die Funktion zur Auswahl der Domain funktioniert.

  • directBootAware="true": Ermöglicht es dem Telefondienst, den Dienst zu erkennen und auszuführen, bevor der Nutzer das Gerät entsperrt. Der Dienst kann nicht auf den verschlüsselten Gerätespeicher zugreifen, bevor der Nutzer das Gerät entsperrt. Weitere Informationen finden Sie unter Direct Boot-Modus unterstützen und Dateibasierte Verschlüsselung.

  • persistent="true": Ermöglicht, dass der Dienst dauerhaft ausgeführt wird und nicht vom System beendet wird, um Speicher freizugeben. Dieses Attribut funktioniert nur, wenn die App als System-App erstellt wird.

  • permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE": Sorgt dafür, dass nur ein Prozess, dem die Berechtigung BIND_DOMAIN_SELECTION_SERVICE gewährt wurde, eine Bindung an die App vornehmen kann. Dadurch wird verhindert, dass eine betrügerische App eine Bindung an den Dienst vornehmen kann, da nur System-Apps die Berechtigung vom Framework erhalten können.

Der Dienst muss auch das intent-filter-Element mit der Aktion android.telephony.DomainSelectionService angeben. So kann das Framework den Dienst DomainSelectionService finden.

Konfiguration im Geräte-Overlay definieren

Damit die Plattform sicher an den DomainSelectionService-Dienst gebunden werden kann, fügen Sie dem Geräte-Overlay die folgende Konfiguration hinzu:

Da Android keine Apps mit herunterladbaren DomainSelectionService-Implementierungen von Drittanbietern unterstützt, muss die App zur Auswahl der Domain eine System-App sein, die sich im Ordner /system_ext/priv-app/ oder /product/priv-app/ befindet. Das Framework prüft, ob der Paketname der Implementierung mit dem Wert des Geräte-Overlays übereinstimmt, um sicherzustellen, dass nur vertrauenswürdige, vorinstallierte Apps gebunden werden.

Unterstützung von Radio-HAL-Schnittstellen

Damit die Funktion zur Auswahl von Domains aktiviert werden kann, müssen die folgenden erforderlichen Radio HAL-Schnittstellen unterstützt werden:

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

Zertifizierungsstufe

Um zu testen, ob das Telefonie-Framework richtig auf die DomainSelectionService-Schnittstelle reagiert, führen Sie die CTS-Tests in DomainSelectionServiceTestOnMockModem aus.