Skip to content

Instantly share code, notes, and snippets.

View TheRealPSV's full-sized avatar
🇺🇸

Parthiv S Vora TheRealPSV

🇺🇸
View GitHub Profile
@TheRealPSV
TheRealPSV / MainTileService.kt
Created May 26, 2021 22:05
Medium Wear OS Tiles - onResourceRequest
override fun onResourcesRequest(requestParams: ResourcesRequest): ListenableFuture<Resources> =
Futures.immediateFuture(
Resources.builder()
.setVersion(RESOURCES_VERSION)
.build()
)
@TheRealPSV
TheRealPSV / MainTileService.kt
Last active May 25, 2021 21:15
Medium Wear OS Tiles - updated layout builder root
Layout.builder().setRoot(
when (requestParams.state.lastClickableId) {
DEFAULT_LAYOUT_ID -> tappableLayout("Tap to go back", ALTERNATE_LAYOUT_ID)
else -> tappableLayout("Tap here to swap", DEFAULT_LAYOUT_ID)
}
)
@TheRealPSV
TheRealPSV / MainTileService.kt
Last active May 25, 2021 19:22
Medium Wear OS Tiles - layout builder
private fun tappableLayout(text: String, id: String): LayoutElement =
Text.builder()
.setText(text)
.setModifiers(
Modifiers.builder()
.setClickable(
Clickable.builder()
.setId(id)
.setOnClick(LoadAction.builder())
)
@TheRealPSV
TheRealPSV / MainTileService.kt
Created May 25, 2021 19:10
Medium Wear OS Tiles - tile ID constants
private const val DEFAULT_LAYOUT_ID = "default"
private const val ALTERNATE_LAYOUT_ID = "alternate"
@TheRealPSV
TheRealPSV / AndroidManifest.xml
Created May 21, 2021 21:44
Medium Wear OS Tiles - manifest tile service
<service
android:name=".MainTileService"
android:label="@string/app_name"
android:description="@string/app_name"
android:permission="com.google.android.wearable.permission.BIND_TILE_PROVIDER"
android:exported="false">
<intent-filter>
<action android:name="androidx.wear.tiles.action.BIND_TILE_PROVIDER" />
</intent-filter>
@TheRealPSV
TheRealPSV / MainTileService.kt
Last active May 26, 2021 22:05
Medium Wear OS Tiles - initial main tile service onTileRequest
override fun onTileRequest(requestParams: TileRequest): ListenableFuture<Tile> =
Futures.immediateFuture(
Tile.builder()
.setResourcesVersion(RESOURCES_VERSION)
.setTimeline(
Timeline.builder().addTimelineEntry(
TimelineEntry.builder().setLayout(
Layout.builder().setRoot(
Text.builder().setText("Test Tile")
)
@TheRealPSV
TheRealPSV / MainActivity.kt
Last active May 26, 2021 21:58
Medium Wear OS Tiles - initial main activity
private lateinit var tileClient: TileClient
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val rootLayout = findViewById<FrameLayout>(R.id.tile_container)
tileClient = TileClient(
context = this,
component = ComponentName(this, MainTileService::class.java),
parentView = rootLayout
@TheRealPSV
TheRealPSV / activity_main.xml
Last active May 26, 2021 21:50
Medium Wear OS Tiles - base activity layout
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tile_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
@TheRealPSV
TheRealPSV / build.gradle
Created May 21, 2021 20:58
Medium Wear OS Tiles - gradle dependencies
// required for Futures
implementation "com.google.guava:guava:30.1.1-android"
// Use to implement support for wear tiles
implementation "androidx.wear.tiles:tiles:1.0.0-alpha05"
// Use to preview wear tiles in your own app
debugImplementation "androidx.wear.tiles:tiles-renderer:1.0.0-alpha05"
@TheRealPSV
TheRealPSV / object.js
Created April 30, 2021 22:53
Medium Serverless vs CDK blog - cdk complex object as function example
module.exports.DOMAINS = (stage) => {
return {
dev: ["dev1.test.com", "dev2.test.com"],
prod: ["prod1.test.com", "prod2.test.com"]
}[stage]
}