Uruchamianie i debugowanie kafelka

Kafelki nie są aplikacjami, dlatego są wdrażane i uruchamiane za pomocą innych mechanizmów. Gdy na urządzeniu są włączone opcje programisty (na emulatorach te funkcje są domyślnie włączone), dodatkowe funkcje obsługujące tworzenie kafelków stają się dostępne do użycia w Android Studio i adb.

Wdrażanie kafelków

Aby wdrożyć kafelek, możesz zainstalować aplikację na urządzeniu fizycznym lub emulatorze za pomocą Android Studio, jak opisano w artykule Tworzenie i uruchamianie aplikacji. Następnie, wykonując te same czynności co zwykli użytkownicy, ręcznie dodaj kafelek do karuzeli kafelków.

Podczas aktywnego programowania może być łatwiej i szybciej używać funkcji „Wear OS Tile” konfiguracja uruchamiania i debugowania w Android Studio. Ta metoda automatycznie wdraża i aktywuje kafelek, co umożliwia natychmiastową interakcję bez dodatkowych czynności ręcznych.

Automatyczne tworzenie konfiguracji

Najłatwiejszym sposobem wdrożenia i uruchomienia kafelka jest użycie ikony „run service” na marginesie. Jeśli konfiguracja uruchomienia jeszcze nie istnieje, zostanie ona automatycznie utworzona. Więcej informacji znajdziesz w artykule Konfiguracje uruchamiania i debugowania Wear OS.

Zrzut ekranu z czerwoną strzałką wskazującą znak „▷” w rynnie
Kliknij „▷” na marginesie
Zrzut ekranu przedstawiający czerwoną strzałkę wskazującą menu konfiguracji uruchamiania oraz opcję konfiguracji „TestTileService” zaznaczoną na czerwono.
Automatycznie utworzy się „konfiguracja uruchomienia”.

Ręczne tworzenie konfiguracji

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

  1. Na pasku tytułu wybierz opcję „⋮” („hamburger”).

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

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

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

    Zrzut ekranu z czerwoną strzałką wskazującą opcję konfiguracji „Kafel Wear OS”.
  5. Wpisz nazwę konfiguracji i wybierz odpowiednio moduł i kafelek.

    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”), a kafelek zostanie wdrożony i aktywowany.

Podgląd kafelków w Android Studio

Od wersji Android Studio Koala Feature Drop możesz wyświetlać migawki kafelków aplikacji na Wear OS. Ten panel jest szczególnie przydatny, jeśli wygląd kafelka zmienia się w zależności od warunków, np. inna treść w zależności od rozmiaru ekranu urządzenia lub przerwa w połowie meczu.

Nazwy grup w panelu podglądu są zgodne z nazwą grupy podaną w adnotacji podglądu.
Panel podglądu kafelków w Android Studio.

Dodawanie zależności

Dodaj te zależności do pliku build.gradle.kts lub build.gradle aplikacji:

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

Konfigurowanie podglądów kafelków

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

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

Dodawanie i rejestrowanie zasobów

Jeśli kafelek używa zasobów Androida, musisz je zarejestrować w parametrze onTileResourceRequest elementu TilePreviewData, jak pokazano w tym fragmencie kodu:

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

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

Jeśli kafelek używa danych platformy, takich jak tętno, kalorie, dystans i kroki, wyświetla wartości domyślne.

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

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

Przekształcanie kafelków za pomocą adb

adb może być używane do programowego instalowania, usuwania i aktywowania kafelków podczas tworzenia.

W tych poleceniach ComponentName to ciąg znaków składający się z nazwy pakietu i klasy w tym pakiecie, np. com.example.wear.tiles/com.example.wear.tiles.PreviewTileService.

add-tile

Dodaje kafelek udostępniany przez 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 zostanie wstawiony w Index[0]. Jeśli karuzela jest pełna, ostatni kafelek zostanie usunięty, 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 instancje kafelków w 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."

Wartości zwracane

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