Per i dispositivi con Android 15 o versioni successive, puoi
implementare la selezione del dominio
tra il servizio IMS e i servizi legacy su reti a commutazione di circuito utilizzando
l'API di sistema DomainSelectionService
. DomainSelectionService
è un'interfaccia ben definita tra la piattaforma Android e un'implementazione della selezione del dominio fornita dal fornitore. Questa interfaccia consente all'implementazione del fornitore
di fornire alla piattaforma informazioni di segnalazione, come il dominio in cui vengono effettuate chiamate e inviati SMS
in uscita e la preferenza del tipo di rete nella scansione della rete.
Figura 1. Diagramma dell'architettura per la funzionalità di selezione del dominio
Esempi e origine
Android fornisce un'implementazione di riferimento per la funzionalità di selezione del dominio in
AOSP all'indirizzo TelephonyDomainSelectionService
. Per la documentazione
dettagliata dell'API DomainSelectionService
, consulta
DomainSelectionService
e le altre classi dell'API.
Implementazione
Per implementare la funzionalità di selezione del dominio su un dispositivo Android, sono necessari i seguenti passaggi:
Crea un'app di selezione del dominio. Il servizio deve essere definito nel file
AndroidManifest.xml
.Aggiungi una configurazione all'overlay del dispositivo per consentire alla piattaforma di eseguire il binding all'implementazione di
DomainSelectionService
.Supporta le interfacce HAL radio richieste per la funzionalità di selezione del dominio.
Questa sezione fornisce ulteriori dettagli su questi passaggi.
Aggiungi la voce di servizio in AndroidManifest.xml
Affinché l'app di selezione del dominio registri il servizio DomainSelectionService
con il framework, aggiungi una voce di servizio nel file manifest utilizzando il seguente formato:
<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>
La definizione del servizio in AndroidManifest.xml
deve definire i seguenti
attributi per il funzionamento della funzionalità di selezione del dominio.
directBootAware="true"
: consente al servizio di essere rilevato ed eseguito dalla telefonia prima che l'utente sblocchi il dispositivo. Il servizio non può accedere allo spazio di archiviazione criptato sul dispositivo prima che l'utente sblocchi il dispositivo. Per maggiori informazioni, vedi Supportare la modalità Avvio diretto e Crittografia basata su file.persistent="true"
: consente al servizio di essere eseguito in modo persistente e non essere interrotto dal sistema per recuperare memoria. Questo attributo funziona solo se l'app è creata come app di sistema.permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
: garantisce che solo un processo a cui è stata concessa l'autorizzazioneBIND_DOMAIN_SELECTION_SERVICE
possa essere associato all'app. In questo modo si impedisce a un'app canaglia di associarsi al servizio, perché solo alle app di sistema può essere concessa l'autorizzazione dal framework.
Il servizio deve specificare anche l'elemento intent-filter
con l'azione
android.telephony.DomainSelectionService
. In questo modo il framework può trovare
il servizio DomainSelectionService
.
Definisci la configurazione nell'overlay del dispositivo
Affinché la piattaforma si associ in modo sicuro al servizio DomainSelectionService
, aggiungi
la seguente configurazione all'overlay del dispositivo:
config_domain_selection_service_component_name
: il nome del componente (una stringaComponentName
piatta) per il servizioDomainSelectionService
Poiché Android non supporta app con implementazioni di DomainSelectionService
scaricabili di terze parti, l'app di selezione del dominio deve essere un'app di sistema che si trova nella cartella /system_ext/priv-app/
o /product/priv-app/
. Il framework verifica se il nome del pacchetto dell'implementazione
corrisponde al valore dell'overlay del dispositivo per garantire che vengano associati solo
app preinstallate e attendibili.
Supporta le interfacce HAL radio
Per attivare la funzionalità di selezione del dominio, supporta le seguenti interfacce HAL radio obbligatorie:
-
void setEmergencyMode(int serial, EmergencyMode emcModeType); void triggerEmergencyNetworkScan(int serial, EmergencyNetworkScanTrigger request); void cancelEmergencyNetworkScan(int serial, boolean resetScan); void exitEmergencyMode(int serial);
-
void emergencyNetworkScanResult(RadioIndicationType type, EmergencyRegResult result);
Convalida
Per verificare che il framework di telefonia risponda correttamente all'interfaccia
DomainSelectionService
, esegui i test CTS in
DomainSelectionServiceTestOnMockModem
.