Плитки не являются приложениями, поэтому их развертывание и запуск выполняются с помощью других механизмов.
Если на устройстве включены параметры разработчика (на эмуляторах они включены по умолчанию), в Android Studio и adb становятся доступны дополнительные функции, которые помогают разрабатывать элементы интерфейса.
Как развернуть элементы
Чтобы развернуть плитку, установите приложение на физическое устройство или эмулятор с помощью Android Studio, как описано в разделе Создание и запуск приложения. Затем, следуя инструкциям для обычных пользователей, вручную добавьте плитку в карусель плиток.
Во время активной разработки вам может быть проще и быстрее использовать функцию Wear OS Tile Run/Debug Configuration в Android Studio. Этот метод автоматически развертывает и активирует карточку, позволяя сразу же взаимодействовать с ней без дополнительных действий.
Как создать конфигурацию автоматически
Самый простой способ развернуть и запустить виджет – использовать значок "Запустить сервис" на полях. Если конфигурация запуска ещё не создана, она будет создана автоматически. Подробнее о конфигурациях запуска и отладки для Wear OS…
Как создать конфигурацию вручную
Если автоматическая настройка не работает или вы хотите иметь больше контроля над результатом, следуйте приведенным ниже инструкциям. Скриншоты сделаны в Android Studio Meerkat (2024.3.1).
На панели заголовка нажмите на значок меню "⋮" (гамбургер).
Выберите "Изменить…".
Нажмите "+" в появившемся диалоговом окне, чтобы добавить конфигурацию.
Выберите "Плитка Wear OS" в качестве типа новой конфигурации.
Введите название конфигурации и выберите модуль и плитку.
Нажмите "ОК". Ваша конфигурация появится в строке заголовка. Нажмите кнопку "▷" ("Выполнить"), и ваша карточка будет развернута и активирована.
Предпросмотр карточек в Android Studio
Начиная с набора функций Android Studio Koala, вы можете просматривать снимки карточек приложения Wear OS. Эта панель особенно полезна, если внешний вид вашей плитки меняется в зависимости от условий, например если контент различается в зависимости от размера экрана устройства или если спортивное мероприятие достигло перерыва.
Добавьте зависимости
Добавьте в файл build.gradle.kts или build.gradle своего приложения следующие зависимости:
dependencies {
implementation("androidx.wear.tiles:tiles-tooling-preview:1.6.2")
debugImplementation("androidx.wear.tiles:tiles-tooling:1.6.2")
implementation("androidx.wear:wear-tooling-preview:1.0.0")
}
Как настроить предпросмотр карточек
Чтобы посмотреть, как будет выглядеть виджет на экранах Wear OS разных размеров, добавьте аннотацию @Preview и передайте параметр device. Обратите внимание, что аннотация @Preview относится к другому пакету, чем тот, который вы используете для составных предварительных просмотров.
@Preview(device = WearDevices.SMALL_ROUND) @Preview(device = WearDevices.LARGE_ROUND) fun tilePreview(context: Context) = TilePreviewData { request -> TilePreviewHelper.singleTimelineEntryTileBuilder( buildMyTileLayout(context, request.deviceConfiguration) ).build() }
Как добавить и зарегистрировать ресурсы
Если в вашем виджете используются ресурсы Android, их нужно зарегистрировать в параметре onTileResourceRequest элемента TilePreviewData, как показано в следующем фрагменте кода:
@Preview(device = WearDevices.SMALL_ROUND) fun previewWithResources(context: Context) = TilePreviewData( onTileResourceRequest = { request -> Resources.Builder() .setVersion(RESOURCES_VERSION) .addIdToImageMapping( myImageId, getImageById(R.drawable.animated_walk) ) .build() }, onTileRequest = { request -> TilePreviewHelper.singleTimelineEntryTileBuilder( buildMyTileLayout(context, request.deviceConfiguration) ).build() } )
Показывать определенные значения из источников данных платформы
Если на виджете используются данные платформы, например о пульсе, калориях, расстоянии и шагах, то на нем будут показаны значения по умолчанию.
Чтобы показать определенное значение, задайте параметр platformDataValues при создании объекта TilePreviewData, как показано в следующем фрагменте кода:
@Preview(device = WearDevices.SMALL_ROUND) fun previewWithPlatformOverride(context: Context) = TilePreviewData( platformDataValues = PlatformDataValues.of( PlatformHealthSources.Keys.HEART_RATE_BPM, DynamicDataBuilders.DynamicDataValue.fromFloat(160f) ), onTileRequest = { request -> TilePreviewHelper.singleTimelineEntryTileBuilder( buildMyTileLayoutDynamic(context, request.deviceConfiguration) ).build() } )
Как управлять карточками с помощью adb
adb можно использовать для программной установки, удаления и активации элементов во время разработки.
В приведенных ниже командах ComponentName – это строка, состоящая из названия пакета и класса внутри этого пакета, например com.example.wear.tiles/com.example.wear.tiles.PreviewTileService.
add-tile
Добавляет фрагмент, предоставленный COMPONENT_NAME, и возвращает индекс.
adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SURFACE --es operation add-tile --ecn component [COMPONENT_NAME]
Пример выходных данных:
Broadcast completed: result=1, data="Index=[0]"
Если параметр уже есть в карусели, он будет удален и добавлен на то же место. В противном случае он будет вставлен в позицию Index[0]. Если карусель заполнена, последняя плитка удаляется, чтобы освободить место для новой.
show-tile
Активировать элемент с индексом TILE_INDEX.
adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SYSUI --es operation show-tile --ei index [TILE_INDEX]
Пример выходных данных:
Broadcast completed: result=1
remove-tile
Удаляет все экземпляры карточек, связанные с COMPONENT_NAME, из карусели.
adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SURFACE --es operation remove-tile --ecn component [COMPONENT_NAME]
Пример выходных данных:
result=1, data="Tile(s) removed."
Возвращаемые значения
- result=0 – ни один широковещательный приемник не ответил на эту команду. Скорее всего, это произошло потому, что версия Wear OS слишком старая или процесс отладки не запущен.
- result=1 – успешное выполнение.
- result>1: ошибка.