From 3d017a5ae1cf138ddd1a59d4f29da5a79fbbb8f3 Mon Sep 17 00:00:00 2001 From: Michael Stillwell Date: Wed, 19 Nov 2025 22:59:33 +0000 Subject: [PATCH 1/2] Add snippets for /training/wearables/tiles/get_started --- .../com/example/wear/snippets/tile/Tile.kt | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/wear/src/main/java/com/example/wear/snippets/tile/Tile.kt b/wear/src/main/java/com/example/wear/snippets/tile/Tile.kt index e0a39de99..2e8365c0f 100644 --- a/wear/src/main/java/com/example/wear/snippets/tile/Tile.kt +++ b/wear/src/main/java/com/example/wear/snippets/tile/Tile.kt @@ -27,6 +27,16 @@ import androidx.wear.protolayout.LayoutElementBuilders import androidx.wear.protolayout.LayoutElementBuilders.Arc import androidx.wear.protolayout.LayoutElementBuilders.ArcLine import androidx.wear.protolayout.LayoutElementBuilders.DashedArcLine +import androidx.wear.protolayout.LayoutElementBuilders.FontStyle +import androidx.wear.protolayout.LayoutElementBuilders.Image +import androidx.wear.protolayout.LayoutElementBuilders.LayoutElement +import androidx.wear.protolayout.LayoutElementBuilders.SpanImage +import androidx.wear.protolayout.LayoutElementBuilders.SpanText +import androidx.wear.protolayout.ModifiersBuilders +import androidx.wear.protolayout.ModifiersBuilders.Background +import androidx.wear.protolayout.ModifiersBuilders.Modifiers +import androidx.wear.protolayout.ModifiersBuilders.Semantics +import androidx.wear.protolayout.ResourceBuilders import androidx.wear.protolayout.ResourceBuilders.Resources import androidx.wear.protolayout.TimelineBuilders import androidx.wear.protolayout.TimelineBuilders.Timeline @@ -41,6 +51,7 @@ import androidx.wear.tiles.RequestBuilders import androidx.wear.tiles.RequestBuilders.ResourcesRequest import androidx.wear.tiles.TileBuilders.Tile import androidx.wear.tiles.TileService +import com.example.wear.R import com.google.common.util.concurrent.Futures import com.google.common.util.concurrent.ListenableFuture @@ -248,3 +259,76 @@ class FeatureFallback : TileService() { ) } } + +// [START android_wear_tile_get_started_modifiers] +private fun myImage(): LayoutElement = + Image.Builder() + .setWidth(dp(24f)) + .setHeight(dp(24f)) + .setResourceId("image_id") + .setModifiers( + Modifiers.Builder() + .setBackground(Background.Builder().setColor(argb(0xFFFF0000.toInt())).build()) + .setPadding(ModifiersBuilders.Padding.Builder().setStart(dp(12f)).build()) + .setSemantics(Semantics.Builder().setContentDescription("Image description").build()) + .build() + ) + .build() +// [START android_wear_tile_get_started_modifiers] + +// [START android_wear_tile_get_started_spannables] +private fun mySpannable(): LayoutElement = + LayoutElementBuilders.Spannable.Builder() + .addSpan(SpanText.Builder().setText("Hello ").build()) + .addSpan(SpanImage.Builder().setWidth(dp(24f)).setHeight(dp(24f)).setResourceId("image_id").build()) + .addSpan( + SpanText.Builder() + .setText("world") + .setFontStyle(FontStyle.Builder().setItalic(true).build()) + .build() + ) + .build() +// [END android_wear_tile_get_started_spannables] + +class ResourcesTileService : TileService() { + + private val imageAsByteArray = byteArrayOf() + + override fun onTileRequest(requestParams: RequestBuilders.TileRequest): ListenableFuture = + Futures.immediateFuture( + Tile.Builder() + .setResourcesVersion(RESOURCES_VERSION) + .setTileTimeline(Timeline.fromLayoutElement(simpleLayout(this))) + .build() + ) + + // [START android_wear_tile_get_started_resources] + override fun onTileResourcesRequest( + requestParams: ResourcesRequest + ) = Futures.immediateFuture( + Resources.Builder() + .setVersion("1") + .addIdToImageMapping( + "image_from_resource", + ResourceBuilders.ImageResource.Builder() + .setAndroidResourceByResId( + ResourceBuilders.AndroidImageResourceByResId.Builder() + .setResourceId(R.drawable.ic_walk) + .build() + ).build() + ) + .addIdToImageMapping( + "image_inline", + ResourceBuilders.ImageResource.Builder() + .setInlineResource( + ResourceBuilders.InlineImageResource.Builder() + .setData(imageAsByteArray) + .setWidthPx(48) + .setHeightPx(48) + .setFormat(ResourceBuilders.IMAGE_FORMAT_RGB_565) + .build() + ).build() + ).build() + ) + // [END android_wear_tile_get_started_resources] +} From f0f51d95163be27878f5674f06df5c1791460af5 Mon Sep 17 00:00:00 2001 From: Michael Stillwell Date: Wed, 19 Nov 2025 23:03:15 +0000 Subject: [PATCH 2/2] Tag needs to end --- wear/src/main/java/com/example/wear/snippets/tile/Tile.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wear/src/main/java/com/example/wear/snippets/tile/Tile.kt b/wear/src/main/java/com/example/wear/snippets/tile/Tile.kt index 2e8365c0f..2d3fe3fb4 100644 --- a/wear/src/main/java/com/example/wear/snippets/tile/Tile.kt +++ b/wear/src/main/java/com/example/wear/snippets/tile/Tile.kt @@ -274,7 +274,7 @@ private fun myImage(): LayoutElement = .build() ) .build() -// [START android_wear_tile_get_started_modifiers] +// [END android_wear_tile_get_started_modifiers] // [START android_wear_tile_get_started_spannables] private fun mySpannable(): LayoutElement =