도메인 선택 서비스

Android 15 이상을 실행하는 기기의 경우 DomainSelectionService 시스템 API를 사용하여 회선 교환 네트워크를 통해 IMS 서비스와 기존 서비스 간에 도메인 선택을 구현할 수 있습니다. DomainSelectionService는 Android 플랫폼과 공급업체 제공 도메인 선택 구현 간의 잘 정의된 인터페이스입니다. 이 인터페이스를 통해 공급업체 구현은 발신 전화 및 SMS가 배치되는 도메인, 네트워크 스캔의 네트워크 유형 환경설정과 같은 신호 정보를 플랫폼에 제공할 수 있습니다.

domain-selection-architecture

그림 1. 도메인 선택 기능의 아키텍처 다이어그램

예 및 소스

Android는 TelephonyDomainSelectionService에서 AOSP의 도메인 선택 기능에 관한 참조 구현을 제공합니다. DomainSelectionService API에 관한 자세한 문서는 DomainSelectionService 및 API의 다른 클래스를 참고하세요.

구현

Android 기기에서 도메인 선택 기능을 구현하려면 다음 단계가 필요합니다.

  1. 도메인 선택 앱을 만듭니다. 서비스는 AndroidManifest.xml 파일에 정의되어야 합니다.

  2. 플랫폼이 DomainSelectionService 구현에 바인딩할 수 있도록 기기 오버레이에 구성을 추가합니다.

  3. 도메인 선택 기능에 필요한 라디오 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 서비스에 안전하게 바인딩되도록 하려면 기기 오버레이에 다음 구성을 추가합니다.

Android는 서드 파티에서 다운로드할 수 있는 DomainSelectionService 구현이 있는 앱을 지원하지 않으므로 도메인 선택 앱은 /system_ext/priv-app/ 또는 /product/priv-app/ 폴더에 있는 시스템 앱이어야 합니다. 프레임워크는 구현의 패키지 이름이 기기 오버레이 값과 일치하는지 확인하여 신뢰할 수 있고 사전 설치된 앱만 바인딩되도록 합니다.

라디오 HAL 인터페이스 지원

도메인 선택 기능을 사용 설정하려면 다음과 같은 필수 무선 HAL 인터페이스를 지원하세요.

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

유효성 검사

텔레포니 프레임워크가 DomainSelectionService 인터페이스에 올바르게 응답하는지 테스트하려면 DomainSelectionServiceTestOnMockModem에서 CTS 테스트를 실행합니다.