Настройте хост AppCard

Используйте AppCardHost для взаимодействия с приложениями, отображающими AppCards.

Разрешения

Любое приложение, использующее 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 получен от приложения. Он отправляется как AppCardContainer , который предоставляет AppCard и appIdentifier для идентификации приложения, отправившего AppCard

fun onComponentReceived(AppCardComponentContainer)

Эта функция активируется, когда компонент AppCard получен из приложения. Он отправляется как AppCardComponentContainer , который предоставляет компонент AppCards, Identifier для идентификации приложения, отправившего AppCard, и строковый ID для указания на AppCard, с которым связан компонент.

fun onProviderRemoved(String, String?)

Эта функция активируется, когда поставщик AppCard был удален или отключен. Используйте этот метод для очистки любого активного AppCard, связанного с указанным именем пакета и полномочиями поставщика.

Если полномочия равны {@code null} , то был удален весь пакет.

fun onProviderAdded(String, String?)

Эта функция активируется при добавлении или включении поставщика AppCard.

Пример использования. Используйте эту функцию как триггер для обновления всех доступных AppCards в AppCard picker. Если полномочия равны {@code null} , то был добавлен целый пакет.

fun onPackageCommunicationError(appIdentifier, Throwable)

Эта функция срабатывает, когда AppCardHost обнаруживает ошибку при взаимодействии с поставщиком AppCard.

Пример использования. Используйте этот метод, чтобы показать пользователю, что выбранная им AppCard столкнулась с ошибкой.

API-интерфейсы

fun refreshCompatibleapp()

Этот метод следует вызывать всякий раз, когда возобновляется активность, использующая хост, чтобы хост мог обновить свой список приложений, поддерживающих AppCards.

fun destroy()

Вызывайте этот метод, когда действие, использующее хост, уничтожается, чтобы хост мог очистить все соединения и внутренние элементы.

fun registerListener(AppCardListener)

Используется для регистрации AppCardListener .

fun unregisterListener(AppCardListener)

Используется для отмены регистрации AppCardListener .

fun getAllAppCards(AppCardContext)

Вызовите этот метод, чтобы предоставить зарегистрированному AppCardListener все AppCard, имеющиеся в системе, с заданным AppCardContext , который предоставляет поставщикам подсказки о том, как структурировать их AppCard.

fun requestAppCard(AppCardContext, appIdentifier, String)

Вызовите этот метод, чтобы предоставить зарегистрированному AppCardListener определенную AppCard, заданную AppCardContext , которая дает подсказки поставщикам о том, как структурировать их AppCard.

fun notifyAppCardRemoved(appIdentifier, String)

Уведомить поставщика AppCard о том, что его AppCard больше не активен.

fun notifyAppCardInteraction(appIdentifier, String, String, String)

Уведомить поставщика AppCard о том, что с его AppCard произошло взаимодействие. Единственное поддерживаемое взаимодействие — нажатие кнопки, которое обозначается AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK .

Мы рекомендуем создать кнопку для AppCard с прослушивателем onClick , который вызывает эту функцию с appIdentifier , AppCard ID, компонентным ID и взаимодействием ID.

fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)

Отправьте обновление AppCardContext для определенной AppCard. Например, при переходе из режима Park в режим Drive используйте этот метод для отправки обновления AppCardContext , в котором isInteractable устанавливается в false для каждой активной AppCard.

Часто задаваемые вопросы

  1. Где я могу найти примеры реализаций?

    • Пример хоста . Показывает все доступные AppCards в системе, а также возможности тестирования.

    • DriverUI и менеджер панорам . Менеджер панорам выступает в качестве выбора, а DriverUI — в качестве презентатора.

  2. Сколько AppCard может поддерживать каждый AppCardContentProvider ?

    AppCardContentProvider может поддерживать бесконечное количество AppCards. Однако обязательно сбалансируйте количество AppCards с ухудшенной производительностью и положительным пользовательским опытом.

,

Используйте AppCardHost для взаимодействия с приложениями, отображающими AppCards.

Разрешения

Любое приложение, использующее 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 получен от приложения. Он отправляется как AppCardContainer , который предоставляет AppCard и appIdentifier для идентификации приложения, отправившего AppCard

fun onComponentReceived(AppCardComponentContainer)

Эта функция активируется, когда компонент AppCard получен из приложения. Он отправляется как AppCardComponentContainer , который предоставляет компонент AppCards, Identifier для идентификации приложения, отправившего AppCard, и строковый ID для указания на AppCard, с которым связан компонент.

fun onProviderRemoved(String, String?)

Эта функция активируется, когда поставщик AppCard был удален или отключен. Используйте этот метод для очистки любого активного AppCard, связанного с указанным именем пакета и полномочиями поставщика.

Если полномочия равны {@code null} , то был удален весь пакет.

fun onProviderAdded(String, String?)

Эта функция активируется при добавлении или включении поставщика AppCard.

Пример использования. Используйте эту функцию как триггер для обновления всех доступных AppCards в AppCard picker. Если полномочия равны {@code null} , то был добавлен целый пакет.

fun onPackageCommunicationError(appIdentifier, Throwable)

Эта функция срабатывает, когда AppCardHost обнаруживает ошибку при взаимодействии с поставщиком AppCard.

Пример использования. Используйте этот метод, чтобы показать пользователю, что выбранная им AppCard столкнулась с ошибкой.

API-интерфейсы

fun refreshCompatibleapp()

Этот метод следует вызывать всякий раз, когда возобновляется активность, использующая хост, чтобы хост мог обновить свой список приложений, поддерживающих AppCards.

fun destroy()

Вызывайте этот метод, когда действие, использующее хост, уничтожается, чтобы хост мог очистить все соединения и внутренние элементы.

fun registerListener(AppCardListener)

Используется для регистрации AppCardListener .

fun unregisterListener(AppCardListener)

Используется для отмены регистрации AppCardListener .

fun getAllAppCards(AppCardContext)

Вызовите этот метод, чтобы предоставить зарегистрированному AppCardListener все AppCard, имеющиеся в системе, с заданным AppCardContext , который предоставляет поставщикам подсказки о том, как структурировать их AppCard.

fun requestAppCard(AppCardContext, appIdentifier, String)

Вызовите этот метод, чтобы предоставить зарегистрированному AppCardListener определенную AppCard, заданную AppCardContext , которая дает подсказки поставщикам о том, как структурировать их AppCard.

fun notifyAppCardRemoved(appIdentifier, String)

Уведомить поставщика AppCard о том, что его AppCard больше не активен.

fun notifyAppCardInteraction(appIdentifier, String, String, String)

Уведомить поставщика AppCard о том, что с его AppCard произошло взаимодействие. Единственное поддерживаемое взаимодействие — нажатие кнопки, которое обозначается AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK .

Мы рекомендуем создать кнопку для AppCard с прослушивателем onClick , который вызывает эту функцию с appIdentifier , AppCard ID, компонентным ID и взаимодействием ID.

fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)

Отправьте обновление AppCardContext для определенной AppCard. Например, при переходе из режима Park в режим Drive используйте этот метод для отправки обновления AppCardContext , в котором isInteractable устанавливается в false для каждой активной AppCard.

Часто задаваемые вопросы

  1. Где я могу найти примеры реализаций?

    • Пример хоста . Показывает все доступные AppCards в системе, а также возможности тестирования.

    • DriverUI и менеджер панорам . Менеджер панорам выступает в качестве выбора, а DriverUI — в качестве презентатора.

  2. Сколько AppCard может поддерживать каждый AppCardContentProvider ?

    AppCardContentProvider может поддерживать бесконечное количество AppCards. Однако обязательно сбалансируйте количество AppCards с ухудшенной производительностью и положительным пользовательским опытом.

,

Используйте AppCardHost для взаимодействия с приложениями, отображающими AppCards.

Разрешения

Любое приложение, использующее 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 получен от приложения. Он отправляется как AppCardContainer , который предоставляет AppCard и appIdentifier для идентификации приложения, отправившего AppCard

fun onComponentReceived(AppCardComponentContainer)

Эта функция активируется, когда компонент AppCard получен из приложения. Он отправляется как AppCardComponentContainer , который предоставляет компонент AppCards, Identifier для идентификации приложения, отправившего AppCard, и строковый ID для указания на AppCard, с которым связан компонент.

fun onProviderRemoved(String, String?)

Эта функция активируется, когда поставщик AppCard был удален или отключен. Используйте этот метод для очистки любого активного AppCard, связанного с указанным именем пакета и полномочиями поставщика.

Если полномочия равны {@code null} , то был удален весь пакет.

fun onProviderAdded(String, String?)

Эта функция активируется при добавлении или включении поставщика AppCard.

Пример использования. Используйте эту функцию как триггер для обновления всех доступных AppCards в AppCard picker. Если полномочия равны {@code null} , то был добавлен целый пакет.

fun onPackageCommunicationError(appIdentifier, Throwable)

Эта функция срабатывает, когда AppCardHost обнаруживает ошибку при взаимодействии с поставщиком AppCard.

Пример использования. Используйте этот метод, чтобы показать пользователю, что выбранная им AppCard столкнулась с ошибкой.

API-интерфейсы

fun refreshCompatibleapp()

Этот метод следует вызывать всякий раз, когда возобновляется активность, использующая хост, чтобы хост мог обновить свой список приложений, поддерживающих AppCards.

fun destroy()

Вызывайте этот метод, когда действие, использующее хост, уничтожается, чтобы хост мог очистить все соединения и внутренние элементы.

fun registerListener(AppCardListener)

Используется для регистрации AppCardListener .

fun unregisterListener(AppCardListener)

Используется для отмены регистрации AppCardListener .

fun getAllAppCards(AppCardContext)

Вызовите этот метод, чтобы предоставить зарегистрированному AppCardListener все AppCard, имеющиеся в системе, с заданным AppCardContext , который предоставляет поставщикам подсказки о том, как структурировать их AppCard.

fun requestAppCard(AppCardContext, appIdentifier, String)

Вызовите этот метод, чтобы предоставить зарегистрированному AppCardListener определенную AppCard, заданную AppCardContext , которая дает подсказки поставщикам о том, как структурировать их AppCard.

fun notifyAppCardRemoved(appIdentifier, String)

Уведомить поставщика AppCard о том, что его AppCard больше не активен.

fun notifyAppCardInteraction(appIdentifier, String, String, String)

Уведомить поставщика AppCard о том, что с его AppCard произошло взаимодействие. Единственное поддерживаемое взаимодействие — нажатие кнопки, которое обозначается AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK .

Мы рекомендуем создать кнопку для AppCard с прослушивателем onClick , который вызывает эту функцию с appIdentifier , AppCard ID, компонентным ID и взаимодействием ID.

fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)

Отправьте обновление AppCardContext для определенной AppCard. Например, при переходе из режима Park в режим Drive используйте этот метод для отправки обновления AppCardContext , в котором isInteractable устанавливается в false для каждой активной AppCard.

Часто задаваемые вопросы

  1. Где я могу найти примеры реализаций?

    • Пример хоста . Показывает все доступные AppCards в системе, а также возможности тестирования.

    • DriverUI и менеджер панорам . Менеджер панорам выступает в качестве выбора, а DriverUI — в качестве презентатора.

  2. Сколько AppCard может поддерживать каждый AppCardContentProvider ?

    AppCardContentProvider может поддерживать бесконечное количество AppCards. Однако обязательно сбалансируйте количество AppCards с ухудшенной производительностью и положительным пользовательским опытом.