Smart music control for Karoo 3 cycling computers. Automatically manages your music based on riding speed.
- ⏯️ Auto-pause music when you stop (Speed = 0)
- 🔊 Dynamic volume adjustment (louder at speed, quieter when stopped)
- 🎧 Works with any Bluetooth headphones
- 🚴 Seamless integration with Karoo 3
- ⚙️ Configurable pause threshold (0.1 - 5.0 km/h)
- 🔄 Switch between Dynamic and Normal mode
📥 Download app-release-0.1.apk
- Android Studio (latest version)
- Android SDK 34
- Karoo 3 with USB debugging enabled
Option 1: Android Studio
- Clone this repository
- Open in Android Studio
- Connect Karoo 3 via USB (enable USB debugging first)
- Click "Run" (
▶️ ) to build and install
Option 2: Command Line
# Build debug APK
./gradlew assembleDebug
# Or build release APK
./gradlew assembleRelease
# APK location:
# Debug: app/build/outputs/apk/debug/app-debug.apk
# Release: app/build/outputs/apk/release/app-release.apkInstall via ADB:
adb install app/build/outputs/apk/debug/app-debug.apk- Go to Settings → About
- Tap "Build Number" 7 times
- Go back → Developer Options
- Enable "USB Debugging"
adb install karoo-dynamic-headphones.apkThe app needs these permissions:
- Bluetooth (for headphone control)
- Media control (to pause/play music)
- Location (for speed sensor access)
- Music pauses when you stop (below configured threshold)
- Volume increases with speed
- Volume decreases when stopped
- Fixed volume level
- No auto-pause
- Use your music app normally
- Open the app on Karoo 3
- Enable/Disable the service
- Choose mode: Dynamic or Normal
- Adjust settings:
- Pause Threshold: Speed below which music pauses (default: 0.5 km/h)
- Min Volume: Volume when stopped (Dynamic mode)
- Max Volume: Volume at high speed (Dynamic mode)
- Default Volume: Fixed volume (Normal mode)
Uses Karoo's built-in sensors:
- ANT+ Speed sensor
- BLE Speed sensor
- GPS speed (fallback)
- Monitors MediaSession (Spotify, YouTube Music, etc.)
- Sends pause/play commands automatically
- Adjusts system volume
- ✅ Karoo 3 (Primary target)
- ✅ Android 8.0+ (for testing on phones)
- ✅ Spotify, YouTube Music, Apple Music, etc.
- ✅ Any Bluetooth headphones
- Check if speed sensor is connected in Karoo
- Try riding for a few seconds first
- GPS must be active
- Enable service in app
- Check Dynamic Mode is active
- Ensure music app is playing
- Check app has permission to modify system settings
- Try Normal Mode first to test basic functionality
karoo-dynamic-headphones/
├── app/src/main/java/com/lenne0815/karooheadphones/
│ ├── MainActivity.kt # UI and settings
│ ├── KarooHeadphonesApp.kt # Application class
│ └── service/
│ └── DynamicHeadphonesService.kt # Core logic
├── app/src/main/res/
│ └── layout/activity_main.xml # UI layout
└── build.gradle # Dependencies
Uses hammerheadnav/karoo-ext for:
- Speed data streaming
- Sensor integration
- Extension lifecycle
- Initial release
- Dynamic volume based on speed
- Auto-pause when stopped
- Configurable pause threshold
- Mode switching (Dynamic/Normal)
MIT License
- Karoo SDK by Hammerhead
- Built for Karoo 3 cycling computers