호환 기기 프로필

Android 12에 도입된 호환 기기 프로필은 호환 앱에서 호환 기기의 유형(예: 스마트시계)에 맞는 권한 집합을 요청할 수 있는 기능입니다. 호환 기기 프로필을 사용하면 앱에서 개별적으로 권한을 요청하는 여러 메시지 대신 정의된 권한을 요청하도록 휴대기기 사용자에게 단일 메시지를 표시할 수 있으므로 등록 프로세스가 간소화됩니다. 이렇게 하면 설정 환경이 더 간소화되고 호환 앱의 동의율이 향상될 수 있습니다.

호환 기기 프로필은 호환 기기가 있는 기기 제조업체에서만 사용할 수 있습니다. 호환 기기가 기능에 액세스하려면 요구사항을 충족하고 승인을 받아야 합니다.

Android 12에서는 호환 기기 프로필 유형 COMPANION_DEVICE_WATCH를 사용할 수 있습니다.

호환 기기에 관해 자세히 알아보려면 호환 기기 페어링을 참고하세요.

기기 동작

이 섹션에서는 호환 기기 프로필이 사용될 때의 기기 동작을 설명합니다.

사용자가 앱의 호환 기기 연결 생성 요청을 수락하면 CompanionDeviceManager(CDM) 서비스는 호환 기기가 연결될 때까지 대기합니다. 그리고 연결되면 CDM이 호환 앱에 기기 프로필 역할(예: 시계)을 할당하여 지정된 프로필 역할에 정의된 모든 권한을 부여합니다. 그림 1은 COMPANION_DEVICE_WATCH 기기 프로필의 권한을 요청하는 앱의 예를 보여줍니다.

시계 기기 프로필 대화상자 메시지

그림 1. 시계 기기 프로필의 권한을 요청하는 대화상자

앱과 호환 기기 간의 연결이 삭제되면(예: 패키지의 데이터가 지워지거나 기기를 잊은 경우) CDM은 앱의 기기 프로필 역할을 취소하고 앱의 프로필 역할에 정의된 모든 권한을 삭제합니다.

특정 기기 프로필의 권한을 부여할 것을 원하는 앱의 요청을 수락한 후에 사용자는 부여된 개별 권한을 취소할 수 있습니다. 사용자가 권한을 취소하면 앱은 호환 기기와 연결된 상태로 유지되지만 특정 기능을 사용하지 못하게 될 수도 있습니다. 앱이 작동하는 데 권한이 필요한 경우 앱은 일반적인 권한 요청을 통해 권한을 요청해야 합니다.

요구사항

호환 앱이 호환 기기 프로필 API에 액세스하려면 다음 요구사항을 충족해야 합니다.

  • 호환 기기(예: 스마트시계)가 있음
  • 호환 기기 프로필에 정의된 권한을 요구하는 정당한 사유가 있음

시계 호환 기기 프로필 요구사항

다음 표는 COMPANION_DEVICE_WATCH 기기 프로필 역할에 정의된 권한 및 이를 사용하기 위한 요구사항을 설명합니다.

권한 호환 앱 및 호환 기기 요구사항
알림

BIND_NOTIFICATION_LISTENER_SERVICE
  • 블루투스 또는 Wi-Fi를 사용하여 연결된 기기임
  • 알림을 표시할 수 있는 화면이 있음(화면 대신 햅틱을 사용하는 기기는 제외됨)
  • 사용자에게 표시되는 알림 환경 제공(예: 호환 기기 화면에 휴대전화 알림 표시)
휴대전화

phone
  • 블루투스 또는 Wi-Fi를 사용하여 연결된 기기임
  • 음성 대화를 지원하는 마이크와 스피커가 내장되어 있음
  • 발신자 정보를 표시하는 화면이 있음
  • 사용자에게 표시되는 통화 환경 제공(호환 앱이 전화 통화 연결)
SMS

sms
  • 블루투스 또는 Wi-Fi를 사용하여 연결된 기기임
  • SMS 메시지를 표시하는 화면이 있음
  • 사용자에게 표시되는 SMS 환경 제공
연락처

contacts
  • 블루투스 또는 Wi-Fi를 사용하여 연결된 기기임
  • 디스플레이 화면이 있음
  • 통화 또는 메시지 환경의 일부로 연락처 정보 사용
캘린더

calendar
  • 블루투스 또는 Wi-Fi를 사용하여 연결된 기기임
  • 디스플레이 화면이 있음
  • 시계에서 사용자에게 표시되는 캘린더 환경 제공
근처 기기

nearby_devices
  • 블루투스 또는 Wi-Fi를 사용하여 연결된 기기임
  • 디스플레이 화면이 있음
  • 시계에서 사용자에게 표시되는 페어링/연결 환경 제공
eSIM 프로비저닝

USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER
  • 블루투스 또는 Wi-Fi를 사용하여 연결된 기기임
  • 디스플레이 화면이 있음
  • 시계에서 이동통신사의 구독자 서비스를 관리하는 사용자 대상 환경 제공
진행 중인 통화 관리

MANAGE_ONGOING_CALLS
  • 블루투스 또는 Wi-Fi를 사용하여 연결된 기기임
  • 음성 대화를 지원하는 마이크와 스피커가 내장되어 있음
  • 발신자 정보를 표시하는 화면이 있음
  • 사용자에게 표시되는 통화 환경 제공(호환 앱이 전화 통화 연결)

액세스 권한 받기

사용자 동의 대화상자를 표시하지 않고 앱이 호환 기기 프로필에 액세스하려면 승인되어 허용 목록에 추가되어야 합니다. 허용 목록에 추가하도록 하는 요청이 수신되면 Android팀은 앱을 검토하여 앱이 관련 호환 기기 프로필의 요구사항을 충족하는지 확인합니다.

구현

특정 기기로 호환 앱을 구현하는 기기 제조업체의 경우 다음과 같은 필수 Android 시스템 구성을 사용하여 호환 앱을 인증합니다. 이를 통해 앱은 사용자에게 CDM 메시지를 표시하는 것을 건너뛸 수 있습니다.

  1. 다음 명령어를 사용하여 인증서를 검색합니다.

    keytool  -printcert -jarfile PATH/TO/APK
    
  2. 구성 파일의 패키지 이름과 인증서를 다음 샘플 입력에 나온 대로 바꿉니다.

    <!-- A list of packages managing companion device(s) by the same manufacturers as the main device.
    It will not create the association without prompting if the association has been called multiple
    times in a short period. Note that config_companionDeviceManagerPackage and config_companionDeviceCerts
    are parallel arrays. -->
    
        <string-array name="config_companionDevicePackages" translatable="false">
            <item>YOUR_COMPANION_APP_PACKAGE_NAME</item>
        </string-array>
    
        <!-- A list of SHA256 Certificates managing companion device(s) by the same manufacturers as the
        main device. It will fall back to showing a prompt if the association has been called multiple
        times in a short period. Note that config_companionDeviceCerts and config_companionDeviceManagerPackage
        are parallel arrays.
        Example: "1A:2B:3C:4D" -->
    
        <string-array name="config_companionDeviceCerts" translatable="false">
            <item>YOUR_COMPANION_APP_CERTIFICATE</item>
        </string-array>
    
  3. AssociationRequest를 사용하여 단일 호환 기기에 연결 요청을 보낼 수 있습니다.

DEVICE_PROFILE_WATCH 프로필을 요청하는 호환 앱을 구현하는 서드 파티 개발자의 경우 다음을 따르세요.

  1. setDeviceProfile 메서드를 호출합니다.
  2. AssociationRequest를 빌드할 때 DEVICE_PROFILE_WATCH 프로필을 전달합니다.

유효성 검사

호환 기기 프로필 기능의 동작을 테스트하려면 cts/tests/tests/companion/에서 CTS 테스트를 사용하세요.