Tests cover: app launch, START/STOP toggle, preset BPM button, and service running/stopped state. Run with: ./gradlew connectedAndroidTest |
||
|---|---|---|
| app | ||
| gradle | ||
| .gitignore | ||
| AGENTS.md | ||
| BACKLOG.md | ||
| build.gradle.kts | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle.kts | ||
Pacer
A native Android pacing/metronome app that plays 880 Hz beeps at a user-set BPM to maintain walking pace. Runs in the background for 2+ hour walks without draining battery. Plays alongside other audio apps (podcasts, music) without requesting audio focus.
Ported from the web version at https://jeena.net/pacer/
Building on Arch Linux
1. Install Java 17
sudo pacman -S jdk17-openjdk
Set JAVA_HOME (add to ~/.bashrc or ~/.zshrc):
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH="$JAVA_HOME/bin:$PATH"
Verify: java -version should show openjdk version "17.x.x".
2. Install Android SDK via AUR
# Remove old package if previously installed (it leaves files behind — clean them up too)
sudo pacman -Rns android-sdk
sudo rm -rf /opt/android-sdk/platform-tools /opt/android-sdk/tools
# Install modern SDK tools
paru -S android-sdk-cmdline-tools-latest android-sdk-platform-tools android-sdk-build-tools android-platform
The packages install to /opt/android-sdk. Add to ~/.bashrc or ~/.zshrc:
export ANDROID_HOME=/opt/android-sdk
export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH"
Reload: source ~/.bashrc
3. Accept SDK Licenses
sudo /opt/android-sdk/cmdline-tools/latest/bin/sdkmanager --licenses
4. Bootstrap the Gradle Wrapper
The first time only, install system Gradle to generate the wrapper binary:
sudo pacman -S gradle
cd /path/to/Pacer
gradle wrapper --gradle-version 8.7 --distribution-type bin
sudo pacman -Rs gradle # optional: remove system gradle afterwards
5. Build
./gradlew assembleDebug
The debug APK will be at: app/build/outputs/apk/debug/app-debug.apk
6. Install on a Device
Enable USB debugging (Settings > Developer Options > USB Debugging), connect via USB, then:
./gradlew installDebug
# or
adb install app/build/outputs/apk/debug/app-debug.apk
Troubleshooting
ANDROID_HOME not set — Reload your shell profile or open a new terminal.
License for package ... not accepted — Run sudo /opt/android-sdk/cmdline-tools/latest/bin/sdkmanager --licenses.
Unsupported class file major version — Wrong Java version. Confirm java -version shows
17 and JAVA_HOME points to /usr/lib/jvm/java-17-openjdk.
Permission denied on /opt/android-sdk — Run sdkmanager with sudo.
Failed to install build-tools;34.0.0 ... SDK directory is not writable — AGP tried to
auto-download build-tools instead of using the installed version. Ensure buildToolsVersion = "36.1.0"
is set in app/build.gradle.kts.
Development
See AGENTS.md for the developer/agent workflow guide.
See BACKLOG.md for all user stories and acceptance criteria.
./gradlew test # unit tests
./gradlew lint # lint checks