PacerService owns AudioEngine and a PARTIAL_WAKE_LOCK so audio survives screen lock and Doze during long walks. Foreground notification shows current BPM and a Stop action button. PacerViewModel becomes AndroidViewModel and communicates with the service via intents, keeping AudioEngine off the UI process. Service uses START_NOT_STICKY so it does not restart if killed. |
||
|---|---|---|
| .. | ||
| src | ||
| build.gradle.kts | ||
| proguard-rules.pro | ||