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.


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).
Na pasku tytułu kliknij ikonę „⋮” (tzw. „hamburger”).
Kliknij „Edytuj…”.
Aby dodać konfigurację, w wyświetlonym oknie kliknij „+”.
Jako typ nowej konfiguracji wybierz „Płytka Wear OS”.
Wpisz nazwę konfiguracji i w odpowiednich przypadkach wybierz moduł i płytkę.
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.

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.