Note
This has started as a final project on Coroutines Mastery 2025
StrayCat is a Android application for location simulation and GPS tracking. Perfect for testing location-based features and route simulations.
- 🎮 Full Playback Control - Start, pause, resume, stop, and replay
- ⏩ Touch Seeking - Tap or scrub the progress bar to jump to any position in the simulation
- 📍 Route Simulation - Replay predefined routes with realistic timing using TomTom Routing SDK
- ⚙️ Configurable - Speed multiplier, interpolation, noise injection, looping, and more
- 🔄 Map display - via TomTom Maps SDK
- 🔍 Search Locations - Find points of interest using Google Places Search SDK
- Play / Pause / Resume - Full playback lifecycle control
- Stop - End the simulation; transitions to a Replay button
- Replay - Restart the simulation from the beginning after it ends (naturally or manually)
- Seek - Tap anywhere on the progress bar to jump to that position; drag to scrub in real time
- Speed Multiplier - Control playback speed (0.1x - 10x)
- Delay - Add a fixed delay between location updates (in seconds)
- Loop Mode - Continuously replay the simulation
- Realistic Timing - Use actual route timing vs fixed intervals
- Noise Level - Add GPS signal variance (in meters)
- Android device or emulator with API 26+
- Location permissions enabled
- Android Studio Hedgehog or newer
local.propertiesin the project root with the following keys:The build will fail with a clear error message if either key is missing.tomtomApiKey=YOUR_TOMTOM_API_KEY googlePlacesApiKey=YOUR_GOOGLE_PLACES_API_KEY
The app requires the following permissions:
- Location Access - For GPS tracking
- Foreground Service - For background operation
Permissions are requested at runtime on first launch.
- Start - Begin simulation; tap the play button after setting a route
- Pause - Temporarily suspend updates (state preserved)
- Resume - Continue from where you paused
- Stop - End current session; the button transitions to Replay
- Replay - Restart the simulation from the beginning
- Seek - Tap or drag the progress bar to jump to any point in the simulation
To begin simulation, long-press on the map to set origin and destination points, which will generate a route.
To clear and start over, long-press on the map again after a route has been generated.
- ✅ Route simulation with replay
- ✅ GPS location tracking
- ✅ Pause/resume functionality
- ✅ Speed control and looping
- ✅ Error handling and recovery
- ✅ Speed multiplier UI
- ✅ Loop mode toggle
- ✅ Realistic timing option
- ✅ GPS noise injection
- ✅ Touch-seekable progress bar (tap or scrub to any position)
- ✅ Replay button after simulation ends
- ✅ Build-time and runtime API key validation
- 🚧 More elaborate testing strategy
- 🚧 Comprehensive documentation
This project is licensed under the MIT License - see the LICENSE file for details.

