Запуск и отладка плитки

Плитки не являются приложениями, поэтому они развертываются и запускаются с использованием различных механизмов. Когда на устройстве включены параметры разработчика (в эмуляторах эти функции включены по умолчанию), дополнительные функции, поддерживающие разработку плиток, становятся доступными для использования как в Android Studio , так и adb .

Развернуть плитки

Чтобы развернуть плитку, вы можете установить свое приложение на физическом устройстве или эмуляторе с помощью Android Studio , как описано в разделе Сборка и запуск вашего приложения . Затем, выполнив те же шаги, что и обычные пользователи, вручную добавьте плитку в карусель плиток .

Во время активной разработки вам может показаться проще и быстрее использовать функцию конфигурации запуска/отладки Android Studio "Wear OS Tile" . Этот метод автоматически развертывает и активирует вашу плитку, обеспечивая немедленное взаимодействие без дополнительных ручных действий.

Создать конфигурацию автоматически

Самый простой способ развернуть и запустить плитку — использовать значок «запустить службу» в желобе. Это автоматически создает конфигурацию запуска, если она еще не существует. Для получения дополнительной информации см. Конфигурации запуска/отладки Wear OS.

Скриншот с красной стрелкой, указывающей на «▷» в желобе
Нажмите «▷» в поле
Снимок экрана, на котором показана красная стрелка, указывающая на раскрывающийся список конфигурации запуска, и параметр конфигурации «TestTileService», выделенный красным
Автоматически создается «конфигурация запуска»

Создать конфигурацию вручную

Если автоматическая настройка не работает или вы хотите больше контроля над результатом, см. следующие инструкции. Скриншоты взяты из Android Studio Meerkat (2024.3.1).

  1. Выберите опцию «⋮» («гамбургер») в строке заголовка.

    Скриншот с красной стрелкой, указывающей на опцию «⋮» («гамбургер») в строке заголовка.
  2. Выберите «Изменить…».

    «Изменить…» — это первая опция в разделе «Конфигурация» раскрывающегося списка.
  3. Выберите «+», чтобы добавить конфигурацию в появившемся диалоговом окне.

    Скриншот с красной стрелкой, указывающей на «+».
  4. Выберите «Wear OS Tile» в качестве типа новой конфигурации.

    Скриншот с красной стрелкой, указывающей на опцию конфигурации «Плитка Wear OS».
  5. Введите имя вашей конфигурации и выберите соответствующий модуль и плитку.

    Скриншот с тремя красными стрелками, указывающими на области диалогового окна.
  6. Нажмите «ОК». Ваша конфигурация появится в строке заголовка. Нажмите кнопку «▷» («запустить»), и ваша плитка будет развернута и активирована.

Предварительный просмотр плиток в Android Studio

Начиная с Android Studio Koala Feature Drop, вы можете просматривать снимки плиток вашего приложения Wear OS. Эта панель особенно полезна, если внешний вид плитки меняется в ответ на условия, такие как различный контент в зависимости от размера дисплея устройства или спортивное событие, приближающееся к перерыву.

Имена групп на панели предварительного просмотра соответствуют имени группы, указанному в аннотации предварительного просмотра
Панель предварительного просмотра плиток в Android Studio.

Добавить зависимости

Включите следующие зависимости в файл build.gradle.kts или build.gradle вашего приложения:

dependencies {
    implementation("androidx.wear.tiles:tiles-tooling-preview:1.5.0")
    debugImplementation("androidx.wear.tiles:tiles-tooling:1.5.0")
    implementation("androidx.wear:wear-tooling-preview:1.0.0")
}

Настроить предварительный просмотр плиток

Чтобы увидеть предварительный просмотр внешнего вида вашей плитки на дисплеях Wear OS разных размеров, добавьте аннотацию @Preview и передайте параметр device . Обратите внимание, что эта аннотация @Preview из другого пакета, чем тот, который вы используете для компонуемых предпросмотров .

import androidx.wear.tiles.tooling.preview.Preview

@Preview(device = WearDevices.SMALL_ROUND)
@Preview(device = WearDevices.LARGE_ROUND)
fun tilePreview(context: Context) = TilePreviewData(
    onTileRequest = { request ->
        TilePreviewHelper.singleTimelineEntryTileBuilder(
            buildMyTileLayout()
        ).build()
    }
)

Добавить и зарегистрировать ресурсы

Если ваша плитка использует ресурсы Android, вам необходимо зарегистрировать их в параметре onTileResourceRequest TilePreviewData , как показано в следующем фрагменте кода:

import androidx.wear.tiles.tooling.preview.Preview

@Preview(device = WearDevices.SMALL_ROUND)
fun previewWithResources(context: Context) = TilePreviewData(
    onTileResourceRequest = { request ->
        Resources.Builder()
            .setVersion(myResourcesVersion)
            .addIdToImageMapping(
                    myImageId, getImageById(R.drawable.myDrawableImageId))
            .build()
    },
    onTileRequest = { request ->
        TilePreviewHelper.singleTimelineEntryTileBuilder(
            buildMyTileLayout()
        ).build()
    }
)

fun getImageById(
    @DrawableRes id: Int,
): ImageResource =
    ImageResource.Builder()
        .setAndroidResourceByResId(
            AndroidImageResourceByResId.Builder()
                .setResourceId(id)
                .build(),
        )
        .build()

Показать конкретные значения из источников данных платформы

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

Чтобы отобразить определенное значение, задайте параметр platformDataValues ​​при создании объекта TilePreviewData , как показано в следующем фрагменте кода:

import androidx.wear.tiles.tooling.preview.Preview

@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(
            buildMyTileLayout()
        ).build()
    }
)

Манипулируйте плитками с помощью adb

adb можно использовать для программной установки, удаления и активации плиток во время разработки.

В следующих командах ComponentName — это строка, состоящая из имени пакета и класса внутри этого пакета, например com.example.wear.tiles/com.example.wear.tiles.PreviewTileService .

добавить-плитку

Добавляет плитку, предоставленную 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] . Кроме того, если карусель заполнена до предела, последняя плитка удаляется, чтобы освободить место для новой плитки.

показать-плитку

Активировать плитку с индексом 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

удалить-плитку

Удаляет все экземпляры плитки на карусели, связанные с 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 слишком старая или процесс отладки не запущен.
  • результат=1 : Успех.
  • результат>1 : Ошибка.