Uruchamianie i debugowanie kafelka

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

Wdrażanie kafelków

Aby wdrożyć kartę, 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 kartę do karuzeli kart.

Podczas aktywnego programowania łatwiej i szybciej może być korzystać z funkcji konfiguracji uruchamiania i debugowania „Karta na Wear OS” w Android Studio. Ta metoda automatycznie wdraża i aktywuje kartę, umożliwiając natychmiastową interakcję bez dodatkowych czynności ręcznych.

Automatyczne tworzenie konfiguracji

Najprostszym sposobem na wdrożenie i uruchomienie kafelka jest użycie ikony „uruchom usługę” w rynnie. Spowoduje to automatyczne utworzenie konfiguracji uruchamiania, jeśli jeszcze nie istnieje. Więcej informacji znajdziesz w artykule o konfiguracjach uruchamiania i debugowania na Wear OS.

Zrzut ekranu z czerwoną strzałką wskazującą „▷” w rynience
Kliknij „▷” w rynience
Zrzut ekranu przedstawiający czerwoną strzałkę wskazującą menu konfiguracji uruchamiania i opcję konfiguracji „TestTileService” zaznaczoną na czerwono
„Konfiguracja uruchamiania” zostanie utworzona automatycznie

Ręczne tworzenie konfiguracji

Jeśli automatyczna konfiguracja nie działa lub chcesz mieć większą kontrolę nad wynikiem, zapoznaj się z poniższymi 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ę „⋮” 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ą „+”.
  4. Jako typ nowej konfiguracji wybierz „Karta Wear OS”.

    Zrzut ekranu z czerwoną strzałką wskazującą opcję konfiguracji „Karta Wear OS”.
  5. Wpisz nazwę konfiguracji i wybierz odpowiedni moduł oraz 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”), aby wdrożyć i aktywować kafelek.

Wyświetlanie podglądu kafelków w Android Studio

Począwszy od wersji Android Studio Koala z pakietem nowych funkcji, 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. wyświetla się inna treść w zależności od rozmiaru wyświetlacza urządzenia lub gdy wydarzenie sportowe osiąga połowę czasu.

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

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

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

Konfigurowanie podglądu kafelków

Aby zobaczyć podgląd wyglądu kafelka na różnych rozmiarach wyświetlacza 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 podglądów funkcji 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 korzysta z danych platformy, takich jak tętno, kalorie, dystans i kroki, wyświetla on 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()
    }
)

Zarządzanie kafelkami za pomocą adb

adb można używać do automatycznego instalowania, usuwania i aktywowania kart podczas programowania.

W poniższych poleceniach ComponentName to ciąg tekstowy składający się z nazwy pakietu i klasy w tym pakiecie, na przykład com.example.wear.tiles/com.example.wear.tiles.PreviewTileService.

add-tile

Dodaje kartę dostarczoną 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 karta już znajduje się w karuzeli, zostanie usunięta i ponownie wstawiona w tym samym miejscu. W przeciwnym razie zostanie wstawiony w Index[0]. Jeśli karuzela jest zapełniona, 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 wystąpienia kafelka na karuzeli powiązanej z aplikacją 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 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.