AppCard 호스트 구성

AppCardHost를 사용하여 앱 카드를 표시하는 앱과 통신합니다.

권한

AppCardHost를 사용하는 모든 앱에는 다음 권한이 있어야 합니다.

  • android.permission.INTERACT_ACROSS_USERS_FULL
  • android.permission.QUERY_ALL_PACKAGES
  • (API 수준 34 이상 만 해당) android.car.permission.BIND_APP_CARD_PROVIDER

초기화

호스트를 초기화하려면 다음을 제공합니다.

  • 컨텍스트
  • updateRate AppCard 업데이트 속도(밀리초)입니다.
  • fastUpdateRate EnforceFastUpdateRate 태그가 지정된 구성요소의 업데이트 빈도(밀리초)
  • responseExecutor AppCard 앱의 응답을 수신하려는 대화목록입니다.

디자인

AppCardHost은 다음 두 가지 방법 중 하나로 상호작용할 수 있습니다.

또는

AppCardListener

AppCardListener 구성요소는 AppCardHost에 자체를 등록하여 AppCardHost 및 AppCard 앱의 커뮤니케이션 업데이트를 수신합니다. AppCardListener의 인터페이스 함수는 여기에 자세히 설명되어 있습니다.

fun onAppCardReceived(AppCardContainer)

이 함수는 앱에서 AppCard를 수신하면 트리거됩니다. AppCard와 AppCard를 전송한 앱을 식별하는 appIdentifier를 제공하는 AppCardContainer로 전송됩니다.

fun onComponentReceived(AppCardComponentContainer)

이 함수는 앱에서 AppCard 구성요소를 수신할 때 트리거됩니다. AppCard 구성요소, AppCard를 전송한 앱을 식별하는 Identifier, 구성요소가 연결된 AppCard를 가리키는 문자열 ID를 제공하는 AppCardComponentContainer로 전송됩니다.

fun onProviderRemoved(String, String?)

이 함수는 AppCard 제공업체가 삭제되거나 사용 중지될 때 트리거됩니다. 이 메서드를 사용하여 지정된 패키지 이름 및 제공업체 권한과 관련된 활성 AppCard를 정리합니다.

authority가 {@code null}이면 전체 패키지가 삭제된 것입니다.

fun onProviderAdded(String, String?)

이 함수는 앱 카드 제공업체가 추가되거나 사용 설정될 때 트리거됩니다.

사용 예 이 함수를 트리거로 사용하여 앱 카드 선택 도구에서 사용 가능한 모든 앱 카드를 새로고침합니다. authority가 {@code null}이면 전체 패키지가 추가된 것입니다.

fun onPackageCommunicationError(appIdentifier, Throwable)

이 함수는 AppCardHost가 AppCard 제공업체와 통신할 때 오류가 발생하면 트리거됩니다.

사용 예 이 메서드를 사용하여 사용자가 선택한 AppCard에 오류가 발생했음을 사용자에게 표시합니다.

API

fun refreshCompatibleapp()

이 메서드는 호스트를 사용하는 활동이 재개될 때마다 호출되어야 호스트가 앱 카드를 지원하는 앱 목록을 새로고침할 수 있습니다.

fun destroy()

호스트를 사용하는 활동이 소멸될 때 호스트가 모든 연결과 내부 멤버를 정리할 수 있도록 이 메서드를 호출합니다.

fun registerListener(AppCardListener)

AppCardListener를 등록하는 데 사용됩니다.

fun unregisterListener(AppCardListener)

AppCardListener를 등록 취소하는 데 사용됩니다.

fun getAllAppCards(AppCardContext)

이 메서드를 호출하여 등록된 AppCardListener에 시스템에 제공된 모든 AppCard를 제공하고 제공업체에 AppCard의 구조를 구성하는 방법에 관한 힌트를 제공하는 지정된 AppCardContext를 제공합니다.

fun requestAppCard(AppCardContext, appIdentifier, String)

이 메서드를 호출하여 등록된 AppCardListener에 특정 AppCard를 제공합니다. 이때 AppCard의 구조를 지정하는 방법에 관한 힌트를 제공하는 AppCardContext를 제공합니다.

fun notifyAppCardRemoved(appIdentifier, String)

AppCard 제공업체에 AppCard가 더 이상 활성 상태가 아님을 알립니다.

fun notifyAppCardInteraction(appIdentifier, String, String, String)

AppCard가 상호작용되었다고 AppCard 제공업체에 알립니다. 지원되는 유일한 상호작용은 AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK로 표시되는 버튼 클릭입니다.

appIdentifier, 앱 카드 ID, 구성요소 ID, 상호작용 ID를 사용하여 이 함수를 호출하는 onClick 리스너가 있는 앱 카드의 버튼을 만드는 것이 좋습니다.

fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)

특정 AppCard의 AppCardContext 업데이트를 전송합니다. 예를 들어 주차 모드에서 주행 모드로 전환할 때 이 메서드를 사용하여 활성 AppCard별로 isInteractablefalse로 설정된 AppCardContext 업데이트를 전송합니다.

FAQ

  1. 샘플 구현은 어디에서 찾을 수 있나요?

    • 호스트 샘플 테스트 기능과 함께 시스템에서 사용 가능한 모든 AppCard를 표시합니다.

    • DriverUI 및 Pano 관리자 Pano 관리자는 선택 도구 역할을 하고 DriverUI는 프레젠터 역할을 합니다.

  2. AppCardContentProvider는 몇 개의 AppCard를 지원할 수 있나요?

    AppCardContentProvider는 무제한의 AppCard를 지원할 수 있습니다. 하지만 앱 카드 수를 줄이면 성능이 저하될 수 있으므로 긍정적인 사용자 경험과 균형을 맞춰야 합니다.