Music: add watch output device selection - #422
Open
TheFallen058 wants to merge 6 commits into
Open
TheFallen058 wants to merge 6 commits into
TheFallen058 wants to merge 6 commits into
Conversation
Add Android media route discovery, permission handling, and protocol support for selecting phone, Bluetooth, and Cast outputs from a Pebble. Co-authored-by: GPT-5.6 Sol <noreply@openai.com> Co-authored-by: Cursor <cursoragent@cursor.com> Signed-off-by: Aliaksandr Karnilovich <thefallen058@gmail.com>
Keep route generations independent across players and wait for confirmed transfers. Preserve valid snapshots so stale watch selections cannot target new routes. Co-authored-by: GPT-5.6 Sol <noreply@openai.com> Signed-off-by: Aliaksandr Karnilovich <thefallen058@gmail.com>
Request special access only when Android and the paired watch support output routing. Clean up activity result launchers and avoid Settings crashes. Co-authored-by: GPT-5.6 Sol <noreply@openai.com> Signed-off-by: Aliaksandr Karnilovich <thefallen058@gmail.com>
Use MediaRoute2Info deduplication IDs when combining output routes. This keeps one entry for each physical receiver. Co-authored-by: GPT-5.6 Sol <noreply@openai.com> Signed-off-by: Aliaksandr Karnilovich <thefallen058@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com>
TheFallen058
force-pushed
the
feature/music-output-device-selection
branch
from
September 29, 2026 13:59
2aacaef to
b53d3fa
Compare
…put-device-selection Upstream now assigns protocol capability bit 25 to SupportsUnknownTimelineAttributes, matching PebbleOS main. Move SupportsMusicOutputRouting to bit 26 so the two flags no longer collide. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Goal
Allow Pebble users to change the active Android media output from the watch, including the phone, Bluetooth devices, and Cast targets such as Google Nest.
This PR implements the Android side of the feature. It is intentionally paired with a PebbleOS PR because route discovery and transfer happen on the phone, while the watch provides the picker UI.
Companion PebbleOS PR: coredevices/PebbleOS#2056
Behavior
MediaRouter2, including screen-off scanningCompatibility
Older Android versions do not advertise the capability. Watches without the companion firmware capability do not trigger the new permission request. Existing music controls and iOS behavior remain unchanged.
The complete feature requires the companion PebbleOS PR. Either side independently gates unsupported peers through Pebble Protocol capabilities.
Validation
:androidApp:assembleDebugtestDebugUnitTesttestAndroidHostTestjvmTestlintDebugAll listed local checks passed.
AI disclosure
AI assistance was used for implementation and review. Usage is disclosed in the relevant commit trailers.