Rev matching means blipping the throttle to the RPM the next gear will need before you let the clutch out. Knowing that number takes practice; RevMatch shows it. The app computes the engine RPM for every gear at your current GPS speed and draws it in a draggable overlay that stays visible over Google Maps or whatever navigation app is in front.
rev-match
An Android overlay for practicing rev matching while driving.
Engine RPM per gear at your current GPS speed, as an overlay.
HobbiesAndroid appKotlin, Android Viewsv0.2.0
-
The overlay over navigation. -
Pick a built-in preset or one of your own. -
The gearing editor with the Golf Mk7 GTI preset loaded.
What it is
How it works
RPM is calculated from the gearing, not read from the engine:
rpm = speed [m/min] / tire circumference [m] × gear ratio × final drive
Tire circumference comes from the nominal size, such as 205/55 R16. The table is built in 5 km/h steps, stops at the gearing's rev limit and is capped at 400 km/h. Displayed RPM is rounded to 100 rpm and shown in thousands, so 2.7 means 2700.
A foreground service reads the platform LocationManager, filters and snaps the speed, and feeds the overlay. Calculation, speed filtering and formatting are Android-independent and tested on the JVM. The whole thing is one :app module in Kotlin with classic Android Views and SharedPreferences.
What it does
- Choose a built-in preset, or enter gear ratios, final drive, tire size and rev limit. Custom setups save as named presets; the last-run setup is remembered, including unsaved edits.
- Tap Start overlay and grant location and display-over-other-apps access.
- Read the target RPM for each gear alongside your speed. Drag to move, pinch to resize, close button to stop.
The overlay snaps speed to 5 km/h and shows the neighbouring speed rows. Values within 10% of the rev limit turn red; gears already past their limit show a dash. Position and scale are remembered. If GPS fixes stop arriving the readings are marked NO GPS. Built-in presets are read-only; saving a custom preset under an existing custom name replaces it.
Limitations
The number on screen is a model, not a measurement. GPS speed and nominal tire dimensions are not a substitute for the car's instruments. Some built-in rev limits are marked as estimated; split-final-drive gearboxes are represented with scaled ratios. Verify a preset against the car's specifications and tachometer, and configure the app before driving, not while. Lint currently flags that the manifest declares ACCESS_FINE_LOCATION without ACCESS_COARSE_LOCATION.
Build and run
Requires Android 8.0 (API 26) or newer. There is no store listing; the APK is built from source. With the Android SDK (platform API 35) and Gradle 9.8.1:
gradle :app:assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
On an emulator, inject a fix to test the overlay; the last argument is speed in knots, and 32.4 knots is about 60 km/h:
adb emu geo fix 21.01 52.2 100 8 32.4
Release signing reads a gitignored keystore.properties. Bundled Barlow and B612 fonts are under the SIL Open Font License.