Skip to content

Commit fb654a9

Browse files
Init Wear Tiles snippets (#400)
* Init Wear Tiles snippets * Add snippet markers * Add manifest snippet markers * Rename manifest snippet markers
1 parent 515b08e commit fb654a9

File tree

6 files changed

+106
-0
lines changed

6 files changed

+106
-0
lines changed

gradle/libs.versions.toml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ coroutines = "1.9.0"
3030
glide = "1.0.0-beta01"
3131
google-maps = "19.0.0"
3232
gradle-versions = "0.51.0"
33+
guava = "33.2.1-android"
3334
hilt = "2.52"
3435
horologist = "0.6.20"
3536
junit = "4.13.2"
@@ -44,12 +45,22 @@ media3 = "1.4.1"
4445
# @keep
4546
minSdk = "21"
4647
playServicesWearable = "18.2.0"
48+
protolayout = "1.3.0-alpha04"
49+
protolayoutExpression = "1.3.0-alpha04"
50+
protolayoutMaterial = "1.3.0-alpha04"
4751
recyclerview = "1.3.2"
4852
# @keep
4953
targetSdk = "34"
54+
tiles = "1.5.0-alpha04"
55+
tilesRenderer = "1.5.0-alpha04"
56+
tilesTesting = "1.5.0-alpha04"
57+
tilesTooling = "1.5.0-alpha04"
58+
tilesToolingPreview = "1.5.0-alpha04"
5059
version-catalog-update = "0.8.5"
60+
wear = "1.3.0"
5161
wearComposeFoundation = "1.4.0"
5262
wearComposeMaterial = "1.4.0"
63+
wearToolingPreview = "1.0.0"
5364

5465
[libraries]
5566
accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" }
@@ -103,10 +114,20 @@ androidx-media3-common = { module = "androidx.media3:media3-common", version.ref
103114
androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "media3" }
104115
androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "androidx-navigation" }
105116
androidx-paging-compose = { module = "androidx.paging:paging-compose", version.ref = "androidx-paging" }
117+
androidx-protolayout = { module = "androidx.wear.protolayout:protolayout", version.ref = "protolayout" }
118+
androidx-protolayout-expression = { module = "androidx.wear.protolayout:protolayout-expression", version.ref = "protolayoutExpression" }
119+
androidx-protolayout-material = { module = "androidx.wear.protolayout:protolayout-material", version.ref = "protolayoutMaterial" }
106120
androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" }
107121
androidx-test-core = { module = "androidx.test:core", version.ref = "androidx-test" }
108122
androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-test-espresso" }
109123
androidx-test-runner = "androidx.test:runner:1.6.2"
124+
androidx-tiles = { module = "androidx.wear.tiles:tiles", version.ref = "tiles" }
125+
androidx-tiles-renderer = { module = "androidx.wear.tiles:tiles-renderer", version.ref = "tilesRenderer" }
126+
androidx-tiles-testing = { module = "androidx.wear.tiles:tiles-testing", version.ref = "tilesTesting" }
127+
androidx-tiles-tooling = { module = "androidx.wear.tiles:tiles-tooling", version.ref = "tilesTooling" }
128+
androidx-tiles-tooling-preview = { module = "androidx.wear.tiles:tiles-tooling-preview", version.ref = "tilesToolingPreview" }
129+
androidx-wear = { module = "androidx.wear:wear", version.ref = "wear" }
130+
androidx-wear-tooling-preview = { module = "androidx.wear:wear-tooling-preview", version.ref = "wearToolingPreview" }
110131
androidx-window-core = { module = "androidx.window:window-core", version.ref = "androidx-window" }
111132
androidx-work-runtime-ktx = "androidx.work:work-runtime-ktx:2.10.0"
112133
coil-kt-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" }
@@ -117,6 +138,7 @@ glide-compose = { module = "com.github.bumptech.glide:compose", version.ref = "g
117138
google-android-material = { module = "com.google.android.material:material", version.ref = "material" }
118139
googlemaps-compose = { module = "com.google.maps.android:maps-compose", version.ref = "maps-compose" }
119140
googlemaps-maps = { module = "com.google.android.gms:play-services-maps", version.ref = "google-maps" }
141+
guava = { module = "com.google.guava:guava", version.ref = "guava" }
120142
hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" }
121143
hilt-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hilt" }
122144
horologist-compose-layout = { module = "com.google.android.horologist:horologist-compose-layout", version.ref = "horologist" }

wear/build.gradle.kts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,17 @@ dependencies {
5555

5656
implementation(libs.compose.ui.tooling)
5757
implementation(libs.play.services.wearable)
58+
implementation(libs.androidx.tiles)
59+
implementation(libs.androidx.wear)
60+
implementation(libs.androidx.protolayout)
61+
implementation(libs.androidx.protolayout.material)
62+
implementation(libs.androidx.protolayout.expression)
63+
debugImplementation(libs.androidx.tiles.renderer)
64+
testImplementation(libs.androidx.tiles.testing)
65+
implementation(libs.androidx.wear.tooling.preview)
66+
implementation(libs.androidx.tiles.tooling.preview)
67+
debugImplementation(libs.androidx.tiles.tooling)
68+
implementation(libs.guava)
5869
implementation(platform(libs.androidx.compose.bom))
5970
implementation(libs.androidx.compose.ui)
6071
implementation(libs.androidx.compose.ui.tooling.preview)

wear/src/main/AndroidManifest.xml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,24 @@
3434
<category android:name="android.intent.category.LAUNCHER" />
3535
</intent-filter>
3636
</activity>
37+
38+
<!-- [START android_wear_tile_manifest] -->
39+
<service
40+
android:name=".snippets.tile.MyTileService"
41+
android:label="@string/tile_label"
42+
android:description="@string/tile_description"
43+
android:icon="@mipmap/ic_launcher"
44+
android:exported="true"
45+
android:permission="com.google.android.wearable.permission.BIND_TILE_PROVIDER">
46+
<intent-filter>
47+
<action android:name="androidx.wear.tiles.action.BIND_TILE_PROVIDER" />
48+
</intent-filter>
49+
50+
<meta-data android:name="androidx.wear.tiles.PREVIEW"
51+
android:resource="@drawable/tile_preview" />
52+
</service>
53+
<!-- [END android_wear_tile_manifest] -->
54+
3755
</application>
3856

3957
</manifest>
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
* Copyright 2022 The Android Open Source Project
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.example.wear.snippets.tile
18+
19+
import androidx.wear.protolayout.ColorBuilders.argb
20+
import androidx.wear.protolayout.ResourceBuilders.Resources
21+
import androidx.wear.protolayout.TimelineBuilders.Timeline
22+
import androidx.wear.protolayout.material.Text
23+
import androidx.wear.protolayout.material.Typography
24+
import androidx.wear.tiles.RequestBuilders
25+
import androidx.wear.tiles.RequestBuilders.ResourcesRequest
26+
import androidx.wear.tiles.TileBuilders.Tile
27+
import androidx.wear.tiles.TileService
28+
import com.google.common.util.concurrent.Futures
29+
30+
private const val RESOURCES_VERSION = "1"
31+
32+
// [START android_wear_tile_mytileservice]
33+
class MyTileService : TileService() {
34+
35+
override fun onTileRequest(requestParams: RequestBuilders.TileRequest) =
36+
Futures.immediateFuture(Tile.Builder()
37+
.setResourcesVersion(RESOURCES_VERSION)
38+
.setTileTimeline(
39+
Timeline.fromLayoutElement(
40+
Text.Builder(this, "Hello World!")
41+
.setTypography(Typography.TYPOGRAPHY_BODY1)
42+
.setColor(argb(0xFFFFFFFF.toInt()))
43+
.build()))
44+
.build())
45+
46+
override fun onTileResourcesRequest(requestParams: ResourcesRequest) =
47+
Futures.immediateFuture(Resources.Builder()
48+
.setVersion(RESOURCES_VERSION)
49+
.build()
50+
)
51+
52+
}
53+
// [END android_wear_tile_mytileservice]
7.16 KB
Loading

wear/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,6 @@
33
<string name="voice_text_entry_label">Voice Input</string>
44
<string name="voice_input_label">Voice Text Entry</string>
55
<string name="message_list">Message List</string>
6+
<string name="tile_label">Hello Tile</string>
7+
<string name="tile_description">Hello Tile Description</string>
68
</resources>

0 commit comments

Comments
 (0)