Используйте 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
ИЛИ,
- Взаимодействие с API
AppCardHost
AppCardListener
Компонент AppCardListener
регистрируется в AppCardHost
для получения обновлений связи от приложений AppCardHost
и AppCard. Функции интерфейса AppCardListener
подробно описаны здесь.
fun onAppCardReceived(AppCardContainer)
AppCardContainer
, который предоставляет AppCard и appIdentifier
для идентификации приложения, отправившего AppCardfun onComponentReceived(AppCardComponentContainer)
AppCardComponentContainer
, который предоставляет компонент AppCards, Identifier
для идентификации приложения, отправившего AppCard, и строковый ID для указания на AppCard, с которым связан компонент.fun onProviderRemoved(String, String?)
Если полномочия равны {@code null}
, то был удален весь пакет.
fun onProviderAdded(String, String?)
Пример использования. Используйте эту функцию как триггер для обновления всех доступных AppCards в AppCard picker. Если полномочия равны {@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, имеющиеся в системе, с заданным AppCardContext
, который предоставляет поставщикам подсказки о том, как структурировать их AppCard.fun requestAppCard(AppCardContext, appIdentifier, String)
AppCardListener
определенную AppCard, заданную AppCardContext
, которая дает подсказки поставщикам о том, как структурировать их AppCard.fun notifyAppCardRemoved(appIdentifier, String)
fun notifyAppCardInteraction(appIdentifier, String, String, String)
AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK
.onClick
, который вызывает эту функцию с appIdentifier
, AppCard ID, компонентным ID и взаимодействием ID.fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)
AppCardContext
для определенной AppCard. Например, при переходе из режима Park в режим Drive используйте этот метод для отправки обновления AppCardContext
, в котором isInteractable
устанавливается в false
для каждой активной AppCard.Часто задаваемые вопросы
Где я могу найти примеры реализаций?
Пример хоста . Показывает все доступные AppCards в системе, а также возможности тестирования.
DriverUI и менеджер панорам . Менеджер панорам выступает в качестве выбора, а DriverUI — в качестве презентатора.
Сколько 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
ИЛИ,
- Взаимодействие с API
AppCardHost
AppCardListener
Компонент AppCardListener
регистрируется в AppCardHost
для получения обновлений связи от приложений AppCardHost
и AppCard. Функции интерфейса AppCardListener
подробно описаны здесь.
fun onAppCardReceived(AppCardContainer)
AppCardContainer
, который предоставляет AppCard и appIdentifier
для идентификации приложения, отправившего AppCardfun onComponentReceived(AppCardComponentContainer)
AppCardComponentContainer
, который предоставляет компонент AppCards, Identifier
для идентификации приложения, отправившего AppCard, и строковый ID для указания на AppCard, с которым связан компонент.fun onProviderRemoved(String, String?)
Если полномочия равны {@code null}
, то был удален весь пакет.
fun onProviderAdded(String, String?)
Пример использования. Используйте эту функцию как триггер для обновления всех доступных AppCards в AppCard picker. Если полномочия равны {@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, имеющиеся в системе, с заданным AppCardContext
, который предоставляет поставщикам подсказки о том, как структурировать их AppCard.fun requestAppCard(AppCardContext, appIdentifier, String)
AppCardListener
определенную AppCard, заданную AppCardContext
, которая дает подсказки поставщикам о том, как структурировать их AppCard.fun notifyAppCardRemoved(appIdentifier, String)
fun notifyAppCardInteraction(appIdentifier, String, String, String)
AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK
.onClick
, который вызывает эту функцию с appIdentifier
, AppCard ID, компонентным ID и взаимодействием ID.fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)
AppCardContext
для определенной AppCard. Например, при переходе из режима Park в режим Drive используйте этот метод для отправки обновления AppCardContext
, в котором isInteractable
устанавливается в false
для каждой активной AppCard.Часто задаваемые вопросы
Где я могу найти примеры реализаций?
Пример хоста . Показывает все доступные AppCards в системе, а также возможности тестирования.
DriverUI и менеджер панорам . Менеджер панорам выступает в качестве выбора, а DriverUI — в качестве презентатора.
Сколько 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
ИЛИ,
- Взаимодействие с API
AppCardHost
AppCardListener
Компонент AppCardListener
регистрируется в AppCardHost
для получения обновлений связи от приложений AppCardHost
и AppCard. Функции интерфейса AppCardListener
подробно описаны здесь.
fun onAppCardReceived(AppCardContainer)
AppCardContainer
, который предоставляет AppCard и appIdentifier
для идентификации приложения, отправившего AppCardfun onComponentReceived(AppCardComponentContainer)
AppCardComponentContainer
, который предоставляет компонент AppCards, Identifier
для идентификации приложения, отправившего AppCard, и строковый ID для указания на AppCard, с которым связан компонент.fun onProviderRemoved(String, String?)
Если полномочия равны {@code null}
, то был удален весь пакет.
fun onProviderAdded(String, String?)
Пример использования. Используйте эту функцию как триггер для обновления всех доступных AppCards в AppCard picker. Если полномочия равны {@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, имеющиеся в системе, с заданным AppCardContext
, который предоставляет поставщикам подсказки о том, как структурировать их AppCard.fun requestAppCard(AppCardContext, appIdentifier, String)
AppCardListener
определенную AppCard, заданную AppCardContext
, которая дает подсказки поставщикам о том, как структурировать их AppCard.fun notifyAppCardRemoved(appIdentifier, String)
fun notifyAppCardInteraction(appIdentifier, String, String, String)
AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK
.onClick
, который вызывает эту функцию с appIdentifier
, AppCard ID, компонентным ID и взаимодействием ID.fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)
AppCardContext
для определенной AppCard. Например, при переходе из режима Park в режим Drive используйте этот метод для отправки обновления AppCardContext
, в котором isInteractable
устанавливается в false
для каждой активной AppCard.Часто задаваемые вопросы
Где я могу найти примеры реализаций?
Пример хоста . Показывает все доступные AppCards в системе, а также возможности тестирования.
DriverUI и менеджер панорам . Менеджер панорам выступает в качестве выбора, а DriverUI — в качестве презентатора.
Сколько AppCard может поддерживать каждый
AppCardContentProvider
?AppCardContentProvider
может поддерживать бесконечное количество AppCards. Однако обязательно сбалансируйте количество AppCards с ухудшенной производительностью и положительным пользовательским опытом.