How not-spielo/galaxywatch-ppg-logger works
GalaxyWatch PPG Logger combines a Wear OS collector with a PC session server for synchronizing watch signals and OBS video. The wearable workflow is permission and health-service setup, user-controlled foreground collection, and local Room persistence; the PC workflow manages sessions, markers, uploads, and video recording. Wearable calls are shown from excerpts and indexed references. Server capabilities are README-documented, but its internal routes and data flow were not sampled, so those relationships are left unverified.
Main entry points: RealViewModelImpl.kt Collection controls · PpgDao.kt PPG data access · main.py Session API · HealthTrackerService.kt Health connection
Components 22
Watch collection
- Watch activity
wearable/src/main/java/kaist/iclab/galaxyppglogger/MainActivity.kt - Control screen
wearable/src/main/java/kaist/iclab/galaxyppglogger/ui/MainScreen.kt - Collection controls
wearable/src/main/java/kaist/iclab/galaxyppglogger/ui/RealViewModelImpl.kt - Service state
wearable/src/main/java/kaist/iclab/galaxyppglogger/ui/ServiceState.kt - View model API
wearable/src/main/java/kaist/iclab/galaxyppglogger/ui/AbstractViewModel.kt - Health connection
wearable/src/main/java/kaist/iclab/galaxyppglogger/data/HealthTrackerService.kt - Connection state
wearable/src/main/java/kaist/iclab/galaxyppglogger/data/ConnectionState.kt - Collector controller
wearable/src/main/java/kaist/iclab/galaxyppglogger/collector/CollectorController.kt - Foreground service
wearable/src/main/java/kaist/iclab/galaxyppglogger/collector/CollectorService.kt - Collector base
wearable/src/main/java/kaist/iclab/galaxyppglogger/collector/AbstractCollector.kt - PPG collector
wearable/src/main/java/kaist/iclab/galaxyppglogger/collector/PPG/PPGCollector.kt - Recording notification
wearable/src/main/java/kaist/iclab/galaxyppglogger/OngoingActivityHelper.kt
PC session server
- Session API
server/main.py - Session files
server/main.py - Watch data converter
server/convert_watch_data.py
Watch persistence
- PPG data access
wearable/src/main/java/kaist/iclab/galaxyppglogger/collector/PPG/PpgDao.kt - DAO base
wearable/src/main/java/kaist/iclab/galaxyppglogger/collector/BaseDao.kt - PPG records
wearable/src/main/java/kaist/iclab/galaxyppglogger/collector/PPG/PpgEntity.kt - Room database
wearable/src/main/java/kaist/iclab/galaxyppglogger/data/RoomDB.kt
Other components
- Watch user
- OBS Studio
- API client
Connections 25
- Watch user → Watch activity: opens
README.md - Watch activity → Control screen: renders
wearable/src/main/java/kaist/iclab/galaxyppglogger/MainActivity.kt - Control screen → View model API: uses controls
wearable/src/main/java/kaist/iclab/galaxyppglogger/ui/MainScreen.kt - Collection controls → View model API: implements
wearable/src/main/java/kaist/iclab/galaxyppglogger/ui/RealViewModelImpl.kt - Collection controls → Service state: updates
wearable/src/main/java/kaist/iclab/galaxyppglogger/ui/RealViewModelImpl.kt - Watch activity → Health connection: starts connection
wearable/src/main/java/kaist/iclab/galaxyppglogger/MainActivity.kt - Collection controls → Health connection: observes state
wearable/src/main/java/kaist/iclab/galaxyppglogger/ui/RealViewModelImpl.kt - Health connection → Connection state: sets state
wearable/src/main/java/kaist/iclab/galaxyppglogger/data/HealthTrackerService.kt - Collection controls → Collector controller: starts or stops
wearable/src/main/java/kaist/iclab/galaxyppglogger/ui/RealViewModelImpl.kt - Collector controller → Foreground service: starts service
wearable/src/main/java/kaist/iclab/galaxyppglogger/collector/CollectorController.kt - Foreground service → Collector base: starts and stops
wearable/src/main/java/kaist/iclab/galaxyppglogger/collector/CollectorService.kt - Foreground service → Recording notification: creates notification
wearable/src/main/java/kaist/iclab/galaxyppglogger/collector/CollectorService.kt - PPG collector → Collector base: extends
wearable/src/main/java/kaist/iclab/galaxyppglogger/collector/PPG/PPGCollector.kt - PPG collector → Health connection: reads sensor data
wearable/src/main/java/kaist/iclab/galaxyppglogger/collector/PPG/PPGCollector.kt - PPG collector → PPG data access: inserts records
wearable/src/main/java/kaist/iclab/galaxyppglogger/collector/PPG/PPGCollector.kt - PPG data access → DAO base: extends
wearable/src/main/java/kaist/iclab/galaxyppglogger/collector/PPG/PpgDao.kt - PPG data access → PPG records: stores
wearable/src/main/java/kaist/iclab/galaxyppglogger/collector/PPG/PpgDao.kt - Collection controls → PPG data access: deletes on flush
wearable/src/main/java/kaist/iclab/galaxyppglogger/ui/RealViewModelImpl.kt - Room database → PPG data access: provides
wearable/src/main/java/kaist/iclab/galaxyppglogger/data/RoomDB.kt - Room database → PPG records: registers
wearable/src/main/java/kaist/iclab/galaxyppglogger/data/RoomDB.kt - API client → Session API: calls endpoints
README.md - Session API → OBS Studio: controls recording
README.md - Session API → Session files: manages session files
README.md - API client → Session API: uploads CSV
README.md - Watch data converter → Session files