Skip to content

1.12 — Wear OS modernization, MediaSession, Compose queue

Pre-release
Pre-release

Choose a tag to compare

@gabrielluizone gabrielluizone released this 27 Jun 15:30

What's new

Wear OS modernization (Phase 0 + 1)

  • Watch-side MediaSession proxy (WatchMediaSession) — the watch app now appears in the system Media Controls app and all Wear OS media surfaces, with fully working transport controls (play/pause, skip, seek, remote volume)
  • Current track name now shown on the Recents screen under the app name
  • New skip next / skip previous command channel from watch to phone
  • targetSdk bumped 30 → 34 (Android 14 compliant): android:exported on all intent-filtered components, mediaPlayback foreground service type, POST_NOTIFICATIONS runtime request

Performance

  • Reduced button latency: phone node-id is now cached on connect instead of being resolved with a getConnectedNodes() round-trip on every button press

Playback queue redesign (wear)

  • Queue screen fully rewritten in Jetpack Compose (QueueActivity + QueueScreen)
  • Dark glass pills layout with the active track highlighted in the album's lightened accent colour
  • Animated three-bar equalizer indicator next to the playing track
  • Long titles scroll with marquee inside the pill
  • Curved clock along the top bezel (Wear OS style); fades out when scrolling down
  • Thin curved scroll indicator on the right bezel — fixed thumb size (no erratic resize with the rotary crown), auto-hides after 1.2 s
  • Swipe-to-dismiss closes only the queue and reveals the player underneath; system window animation suppressed to prevent a double-close visual flash
  • Google Sans typeface throughout, matching the rest of the watch UI
  • Artist name on the now-playing screen and quick-actions panel uses a HSL-lightened version of the album accent (dark colours become a readable pastel)

Bug fixes

  • Shuffle button always appeared active: apps that never set shuffle mode report SHUFFLE_MODE_INVALID (-1) which is not equal to SHUFFLE_MODE_NONE (0), causing the button to light up on every app. Fixed by checking for explicitly-ON states only (ALL / GROUP)
  • Repeat button skipped "repeat one" on some apps (e.g. Retro Music): REPEAT_MODE_GROUP was falling through to the else → NONE branch in RepeatAction, bypassing repeat-one. Fixed
  • Album art not showing on Retro Music and other apps: many apps on Android 10+ provide art as a content:// URI rather than a raw Bitmap. Added URI fallback via ContentResolver (ALBUM_ART_URI / ART_URI / DISPLAY_ICON_URI)
  • Like / favourite button not reflecting state on watch after toggling: some apps don't immediately re-publish their playback state after handling a custom like action. A forced state re-read is now scheduled 500 ms after every like action