Tracking: Active Session
Accurate to 3m • Battery 85%
i Feel Safe
i Feel Safe is a mission-critical personal security tool designed for immediate emergency response. Featuring custom low-level location filters, the app maintains an active foreground service on Android and continuous location streams on iOS.
The Problem
Standard safety tracking applications are regularly put to sleep by aggressive OS battery-saving rules exactly when users need them most.
Product Thinking
Reliability in critical emergency moments is the absolute priority. The user must feel completely secure, knowing that an SOS dispatch will run even in deep sleep, low power, or zero network states.
Engineering Challenges
Bypassing native OS thermal and battery management profiles to run continuous background GPS tracking without triggering battery warnings.
Key Learnings
Mastered native iOS Swift background sessions, Android Kotlin foreground services, wake locks, and reliable location filtering algorithms.
Architectural & Code Decisions
Deep technical breakdowns of individual structural choices and implementation patterns.
Android Foreground Service & WakeLocks
Built an Android Foreground Service using Kotlin that runs with a persistent system notification, claiming CPU wake locks during active SOS states to completely prevent CPU throttling.
// Safe Foreground location service setup
class EmergencyLocationService : Service() {
private lateinit var wakeLock: PowerManager.WakeLock
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "SafeApp::WakeLock")
wakeLock.acquire(10*60*1000L /*10 mins*/)
startForeground(NOTIFICATION_ID, createNotification())
return START_STICKY
}
}Fused Location Custom Filter
Implemented a Kalman-filter location algorithm inside the native layer to merge GPS, Cell-Tower, and Wi-Fi networks, ensuring high location accuracy.
// High precision iOS location streamer
import CoreLocation
class SOSLocationStreamer: NSObject, CLLocationManagerDelegate {
private let manager = CLLocationManager()
func startSafetyStream() {
manager.delegate = self
manager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
manager.allowsBackgroundLocationUpdates = true
manager.pausesLocationUpdatesAutomatically = false
manager.startUpdatingLocation()
}
}