Files
AntennaPod/net/sync/wear-interface/README.md
Hans-Peter Lehmann cf30423ee9 Update play button on wearos instantly (#8577)
### Description

Update play button on wearos instantly by pushing events from the phone
to the watch. Also extend documentation around wearos communication

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-07-08 07:28:50 +02:00

1.3 KiB

:net:sync:wear-interface

This module contains the shared data paths and serialization logic for communication between the phone app and the Wear OS companion app. WearDataPaths defines message path constants; WearSerializer handles JSON encoding. Both :app and :app-wearos depend on this module.

Communication

Most requests are watch-initiated: the watch sends a message to a path (e.g. WearDataPaths.QUEUE), the phone responds with data on the same path. Rarely, the phone proactively sends a message (playback state changes). Both directions use Wearable.getMessageClient().sendMessage(nodeId, path, payload). The actual communication is located in :app and :app-wearos, the :net:sync:wear-interface defines the common protocol.

Path constants (WearDataPaths)

  • NOW_PLAYING: current episode + playing state; pushed by phone on player status changes and returned on watch request
  • QUEUE, DOWNLOADS, EPISODES, SUBSCRIPTIONS: episode/feed lists
  • PLAY_PREFIX + itemId: watch sends to start playback of an episode on the phone
  • PAUSE: watch sends to pause playback on the phone
  • FEED_EPISODES_PREFIX + feedId: watch requests episodes for a specific feed
  • OPEN_ON_PHONE_PREFIX + itemId: watch requests the phone to open an episode in the main app