Android 15 이상을 실행하는 기기의 경우 DomainSelectionService
시스템 API를 사용하여 회선 교환 네트워크를 통해 IMS 서비스와 기존 서비스 간에 도메인 선택을 구현할 수 있습니다. DomainSelectionService
는 Android 플랫폼과 공급업체 제공 도메인 선택 구현 간의 잘 정의된 인터페이스입니다. 이 인터페이스를 통해 공급업체 구현은 발신 전화 및 SMS가 배치되는 도메인, 네트워크 스캔의 네트워크 유형 환경설정과 같은 신호 정보를 플랫폼에 제공할 수 있습니다.
그림 1. 도메인 선택 기능의 아키텍처 다이어그램
예 및 소스
Android는 TelephonyDomainSelectionService
에서 AOSP의 도메인 선택 기능에 관한 참조 구현을 제공합니다. DomainSelectionService
API에 관한 자세한 문서는 DomainSelectionService
및 API의 다른 클래스를 참고하세요.
구현
Android 기기에서 도메인 선택 기능을 구현하려면 다음 단계가 필요합니다.
도메인 선택 앱을 만듭니다. 서비스는
AndroidManifest.xml
파일에 정의되어야 합니다.플랫폼이
DomainSelectionService
구현에 바인딩할 수 있도록 기기 오버레이에 구성을 추가합니다.도메인 선택 기능에 필요한 라디오 HAL 인터페이스를 지원합니다.
이 섹션에서는 이러한 단계에 대해 자세히 설명합니다.
AndroidManifest.xml에 서비스 항목 추가
도메인 선택 앱이 프레임워크에 DomainSelectionService
서비스를 등록하려면 다음 형식을 사용하여 매니페스트 파일에 서비스 항목을 추가합니다.
<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
의 서비스 정의는 도메인 선택 기능이 작동하도록 다음 속성을 정의해야 합니다.
directBootAware="true"
: 사용자가 기기를 잠금 해제하기 전에 전화 통신에서 서비스를 검색하고 실행할 수 있습니다. 서비스는 사용자가 기기를 잠금 해제하기 전에 암호화된 기기 저장소에 액세스할 수 없습니다. 자세한 내용은 직접 부팅 모드 지원 및 파일 기반 암호화를 참고하세요.persistent="true"
: 서비스를 지속적으로 실행하고 시스템에서 메모리를 회수할 목적으로 서비스를 종료하지 않도록 합니다. 이 속성은 앱이 시스템 앱으로 빌드된 경우에만 작동합니다.permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
:BIND_DOMAIN_SELECTION_SERVICE
권한이 부여된 프로세스만 앱에 바인딩할 수 있도록 합니다. 프레임워크에서 시스템 앱만 권한을 부여할 수 있기 때문에 불량 앱이 서비스에 바인딩되는 것을 방지합니다.
또한 서비스는 android.telephony.DomainSelectionService
작업을 사용하여 intent-filter
요소를 지정해야 합니다. 이렇게 하면 프레임워크에서 DomainSelectionService
서비스를 찾을 수 있습니다.
기기 오버레이에서 구성 정의
플랫폼이 DomainSelectionService
서비스에 안전하게 바인딩되도록 하려면 기기 오버레이에 다음 구성을 추가합니다.
config_domain_selection_service_component_name
:DomainSelectionService
서비스의 구성요소 이름 (평면화된ComponentName
문자열)
Android는 서드 파티에서 다운로드할 수 있는 DomainSelectionService
구현이 있는 앱을 지원하지 않으므로 도메인 선택 앱은 /system_ext/priv-app/
또는 /product/priv-app/
폴더에 있는 시스템 앱이어야 합니다. 프레임워크는 구현의 패키지 이름이 기기 오버레이 값과 일치하는지 확인하여 신뢰할 수 있고 사전 설치된 앱만 바인딩되도록 합니다.
라디오 HAL 인터페이스 지원
도메인 선택 기능을 사용 설정하려면 다음과 같은 필수 무선 HAL 인터페이스를 지원하세요.
-
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);
유효성 검사
텔레포니 프레임워크가 DomainSelectionService
인터페이스에 올바르게 응답하는지 테스트하려면 DomainSelectionServiceTestOnMockModem
에서 CTS 테스트를 실행합니다.