# Lockstep Player Android prototype: music playback adapts to running pace (accelerometer + native DSP). **Docs (read these first):** | Doc | Contents | |-----|----------| | [SPECS.md](SPECS.md) | Product intent, MVP scope, **libpasada** DSP responsibilities, Oboe/JNI/MP3 FD assumptions, **jukebox** submodule role | | [DESIGN.md](DESIGN.md) | Android architecture decisions, foreground run service, JNI/state machine (`init` / `play` / `pause` / `resume` / `stop` / …), open UI questions | **App module:** [`app/`](app/) — Jetpack Compose shell (`MainActivity`); **Now Playing** View preview: [`app/src/main/res/layout/activity_now_playing.xml`](app/src/main/res/layout/activity_now_playing.xml) (open → **Design** / **Split**). Icons in [`app/src/main/res/drawable/`](app/src/main/res/drawable/). **API:** [`lockstep-2-api/`](lockstep-2-api/) — `api.py` contains the Python API that is deployed on the server behind api.lockstep.at Build: open the repo root in Android Studio (bundled JDK **17**), or run `.\gradlew.bat :app:assembleDebug` — on Windows the wrapper picks **`%ProgramFiles%\Android\Android Studio\jbr`** when `JAVA_HOME` is unset (see `gradlew.bat`). On macOS / Git Bash, `gradlew` falls back to Android Studio’s **jbr** under `/Applications/…` or `/c/Program Files/…`. Submodule: [`jukebox/`](jukebox/).