Skip to content
sameerasw edited this page Aug 9, 2026 · 1 revision

⌚ Watch (WearOS)

The Watch feature group connects Essentials to your WearOS smartwatch via the Wearable Data Layer API, enabling two-way sync and remote control features.


Setup

The Watch features require the Essentials WearOS companion app installed on your smartwatch.

Essentials WearOS on GitHub

Communication uses the Google Wearable MessageClient and DataClient APIs.


Calendar Sync

ID: Calendar Sync
Permissions: READ_CALENDAR
Toggle: Yes

Periodically syncs all phone calendars to your WearOS watch so your events stay up to date.

How it works

  • CalendarSyncManager reads calendars from the phone's CalendarContract
  • Data is sent to the watch via DataClient.putDataItem()
  • CalendarSyncWorker schedules periodic background sync via WorkManager

Notes

  • Syncs all visible phone calendars — no per-calendar filtering yet
  • Sync interval is managed by WorkManager constraints (network/battery state)
  • Requires READ_CALENDAR to access your phone's calendar data

Lock from Watch

ID: Lock from Watch
Sub-feature of: Watch

Allows your WearOS watch to send a lock command to your phone. Useful when you've left your phone across the room.

How it works

  • Watch sends a MessageClient message on the /lock_phone path
  • EssentialsWearableListenerService on the phone receives it and locks the screen via DevicePolicyManager.lockNow()

Settings Screen

Opens LockFromWatchSettingsUI — configure which watch gestures trigger the lock.


Watch Controls

ID: Watch Controls
Sub-feature of: Watch

Control certain phone features from your watch — media playback, sound mode, and more.

Settings Screen

Opens WatchControlsSettingsUI — view and configure available watch-initiated actions.


Watch Wireless Debugging

ID: Watch Wireless Debugging
Toggle: Yes
Sub-feature of: Watch

Toggles ADB over WiFi on your WearOS watch from the phone. Useful for debugging the watch companion app without a physical USB connection.

How it works

Sends a MessageClient message to connected watch nodes on the /toggle_watch_adb_wifi path. The watch companion app receives it and toggles its ADB WiFi setting.

State persistence

The toggle state is stored in SharedPreferences under the key watch_adb_wifi_enabled.


Sync Sound Mode

ID: Sync sound mode
Toggle: Yes
Sub-feature of: Watch

Keeps the phone and watch sound mode in sync. When you switch to Silent or Vibrate on one device, the other follows.

How it works

  • State stored in SharedPreferences key watch_sync_sound_mode_enabled
  • When enabled, DeviceInfoSyncManager.forceSync() is called to push current sound mode to the watch
  • The watch companion app applies the received sound mode

Sync Location Reached Status

ID: Sync location reached status
Toggle: Yes
Sub-feature of: Watch

Shares the Location Reached (geofence arrival) status with your watch, allowing the watch to display an alert or take action when you're near your destination.

How it works

  • State stored under watch_sync_location_reached_enabled
  • When a location is reached, DeviceInfoSyncManager.forceSync() pushes the state to the watch

Background Service

Watch communication is handled by EssentialsWearableListenerService which extends WearableListenerService:

EssentialsWearableListenerService
├── onMessageReceived()   — Phone receives commands from watch
├── onDataChanged()       — Sync data changes from watch
└── forceSync()           — Push phone state to watch

DeviceInfoSyncManager coordinates all data sent to the watch:

  • Battery level
  • Sound mode
  • Location reached status
  • Calendar events

Clone this wiki locally