Uruchamianie i debugowanie kafelka

Płytki nie są aplikacjami, dlatego są wdrażane i uruchamiane za pomocą innych mechanizmów. Gdy na urządzeniu włączone są opcje programisty (w emulatorze są one domyślnie włączone), dodatkowe funkcje wspierające tworzenie kafelków stają się dostępne zarówno w Android Studio, jak i w adb.

Wdrażanie kart

Aby wdrożyć kafelek, możesz zainstalować aplikację na urządzeniu fizycznym lub w emulatorze za pomocą Android Studio, zgodnie z opisem w artykule Kompilowanie i uruchamianie aplikacji. Następnie, wykonując te same czynności co zwykły użytkownik, ręcznie dodaj kafelek do karuzeli kafelków.

Podczas aktywnego tworzenia aplikacji łatwiej i szybciej możesz korzystać z funkcji „Wear OS Tile” w Android Studio. Ta metoda wdraża i aktywuje kafelek automatycznie, umożliwiając natychmiastową interakcję bez dodatkowych ręcznych czynności.

Tworzenie konfiguracji automatycznie

Najłatwiejszym sposobem wdrożenia i uruchomienia kafelka jest użycie ikony „Uruchom usługę” w rynnie. Spowoduje to automatyczne utworzenie konfiguracji uruchomienia, jeśli jeszcze nie istnieje. Więcej informacji znajdziesz w artykule Konfiguracje debugowania i uruchamiania na Wear OS.

Zrzut ekranu z czerwoną strzałką wskazującą „▷” w rynience
Kliknij „▷” w marginesie
Zrzut ekranu pokazujący czerwoną strzałkę wskazującą menu konfiguracji uruchomienia oraz opcję konfiguracji „TestTileService” zaznaczoną na czerwono
Konfiguracja uruchomienia jest tworzona automatycznie

Tworzenie konfiguracji ręcznie

Jeśli automatyczna konfiguracja nie działa lub chcesz mieć większą kontrolę nad wynikiem, postępuj zgodnie z podanymi niżej instrukcjami. Zrzuty ekranu pochodzą z Android Studio Meerkat (2024.3.1).

  1. Na pasku tytułu kliknij ikonę „⋮” (tzw. „hamburger”).

    Zrzut ekranu z czerwoną strzałką wskazującą opcję „⋮” („hamburger”) na pasku tytułu.
  2. Kliknij „Edytuj…”.

    „Edytuj…” to pierwsza opcja w sekcji Konfiguracja na liście.
  3. Aby dodać konfigurację, w wyświetlonym oknie kliknij „+”.

    Zrzut ekranu z czerwoną strzałką wskazującą „+”.
  4. Jako typ nowej konfiguracji wybierz „Płytka Wear OS”.

    Zrzut ekranu z czerwoną strzałką wskazującą opcję konfiguracji „Płytka Wear OS”.
  5. Wpisz nazwę konfiguracji i w odpowiednich przypadkach wybierz moduł i płytkę.

    Zrzut ekranu z 3 czerwonymi strzałkami wskazującymi obszary okna dialogowego.
  6. Kliknij „OK”. Konfiguracja pojawi się na pasku tytułu. Kliknij przycisk „▷” („Uruchom”), aby wdrożyć i aktywować kartę.

Podgląd kafelków w Android Studio

W ramach pakietu nowych funkcji w Android Studio Koala możesz wyświetlać zrzuty ekranu z kart aplikacji Wear OS. Ten panel jest szczególnie przydatny, jeśli wygląd kafelka zmienia się w reakcji na określone warunki, np. wyświetla różne treści w zależności od rozmiaru ekranu urządzenia lub w przypadku wydarzenia sportowego w trakcie przerwy.

nazwy grup w panelu podglądu muszą być zgodne z nazwą grupy podaną w adnotacji podglądu;
Panel podglądu płytek w Android Studio.

Dodawanie zależności

W pliku build.gradle.kts lub build.gradle aplikacji uwzględnij te zależności:

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

Konfigurowanie podglądów kart

Aby wyświetlić podgląd wyglądu kafelka na różnych rozmiarach ekranu w Wear OS, dodaj adnotację @Preview i przekaż parametr device. Pamiętaj, że ta adnotacja @Preview pochodzi z innego pakietu niż ten, którego używasz do kompozycji podglądów.

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()
    }
)

Dodawanie i rejestrowanie zasobów

Jeśli kafelek korzysta z zasobów Androida, musisz zarejestrować je w parametrze onTileResourceRequest w elementach TilePreviewData, jak pokazano w tym fragmencie kodu:

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()

Wyświetlanie konkretnych wartości z źródeł danych platformy

Jeśli kafelek korzysta z danych platformy, takich jak tętno, kalorie, dystans czy kroki, wyświetla ich wartości domyślne.

Aby wyświetlić określoną wartość, podczas tworzenia obiektu TilePreviewData ustaw parametr platformDataValues, jak pokazano w tym fragmencie kodu:

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()
    }
)

Manipulowanie kafelkami za pomocą adb

Za pomocą interfejsu adb można instalować, usuwać i aktywować elementy za pomocą kodu podczas tworzenia.

W tych poleceniach ComponentName to ciąg tekstowy zawierający nazwę pakietu i klasę w tym pakiecie, np. com.example.wear.tiles/com.example.wear.tiles.PreviewTileService.

add-tile

Dodaje kafelek dostarczony przez funkcję COMPONENT_NAME i zwraca indeks.

adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SURFACE --es operation add-tile --ecn component [COMPONENT_NAME]

Przykładowe dane wyjściowe:

Broadcast completed: result=1, data="Index=[0]"

Jeśli kafelek jest już w karuzeli, zostanie usunięty i ponownie wstawiony w tym samym miejscu. W przeciwnym razie jest ona wstawiana w miejscu Index[0]. Jeśli karuzela jest pełna, ostatni kafelek jest usuwany, aby zrobić miejsce na nowy.

show-tile

Aktywuj kafelek o indeksie TILE_INDEX.

adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SYSUI --es operation show-tile --ei index [TILE_INDEX]

Przykładowe dane wyjściowe:

Broadcast completed: result=1

remove-tile

Usuwa wszystkie kafelki na karuzeli powiązane z COMPONENT_NAME.

adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SURFACE --es operation remove-tile --ecn component [COMPONENT_NAME]

Przykładowe dane wyjściowe:

result=1, data="Tile(s) removed."

Zwracane wartości

  • result=0: żaden odbiornik transmisji nie odpowiedział na to polecenie, prawdopodobnie dlatego, że wersja Wear OS jest zbyt stara lub proces debugowania nie jest uruchomiony.
  • result=1: sukces.
  • result>1: błąd.