Offline, privacy-first gym machine identifier built with CameraX and on-device TensorFlow Lite. Captures a photo (or gallery image), runs local inference, and instantly shows instructional videos for the detected machine—including multiple variations when available.
- On-device TFLite inference (no network needed).
- Camera capture + gallery import.
- Smart result sheet:
- Plays instructional video for the detected machine.
- Shows variation chips when multiple videos exist; switch instantly.
- Performance monitoring:
IronID_PerformanceLogcat tag logs latency and confidence. - Safety/UX:
- Low confidence (<60%): hides video and shows toast “Confidence too low, please move closer.”
- Permission denied: Snackbar + hint explaining camera access requirement.
- Place videos in
app/src/main/res/raw/using lowercase + underscores (e.g.,bench_press.mp4). VideoRepositorymaps display labels (e.g., “Leg Press”, “Dumbbell”) to lists ofR.raw.*entries; update as you add/rename files.
./gradlew installDebug- Ensure a device/emulator is connected and camera permission is granted at runtime.
- If resource merge fails, verify raw filenames follow Android rules:
[a-z0-9_]+.
adb logcat -s IronID_PerformanceYou’ll see entries like: Inference Latency: 50 ms - Confidence: 97.25%.
- Low confidence (<0.60f): no video playback; toast prompts user to move closer.
- Missing camera permission: Snackbar + hint; capture disabled until granted.
- Kotlin, AndroidX, CameraX, Material Components, TensorFlow Lite.