A lightweight Android Live Location Tracking SDK designed for real-time foreground and background location updates with customizable intervals, offline storage, and optional data synchronization — without relying on external APIs.
🔗 Repository: https://github.com/hrkdevkits/live-location-tracking
This SDK is ideal for Android apps that require accurate, battery-efficient, and reliable location tracking, including:
- Delivery & logistics apps
- Fleet management systems
- Employee tracking apps
- Safety & emergency apps
- Fitness and outdoor tracking apps
No Firebase. No third-party services. Full control over your location data.
-
✅ Simple SDK Interface
Easy-to-useLiveTrackingSDKwith minimal setup -
📡 Foreground & Background Location Tracking
Continues tracking even when the app is closed -
⏱ Custom Location Update Interval
Supports 10s, 30s, 60s, or any custom value (≥ 5 seconds) -
🔄 Optional Data Synchronization
Retrieve stored location logs usingsyncData() -
💾 Offline Storage
Uses Room Database for local persistence -
🔋 Battery Optimization Handling
Automatically requests battery optimization exemption -
🔒 No External APIs
No Firebase, no backend dependency
- Android Foreground Service
- Fused Location Provider
- Room Database (Offline First)
- Lifecycle-aware background execution
Built for scalability, reliability, and production use.
1. Add JitPack repository in settings.gradle.kts:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}2. Add dependency in your app's build.gradle.kts:
dependencies {
implementation("com.github.hrkdevkits:live-location-tracking:1.0.0")
}3. Sync Gradle
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>Add inside your <application> tag:
<service
android:name="com.hrk.tracking.service.LocationTrackingService"
android:foregroundServiceType="location"
android:exported="false"/>import com.hrk.tracking.sdk.LiveTrackingSDK
// Start tracking (default 10 seconds)
LiveTrackingSDK.startTracking(context)
// Start tracking with custom interval (30 seconds)
LiveTrackingSDK.startTracking(context, 30)
// Stop tracking
LiveTrackingSDK.stopTracking(context)
// Check if tracking is active
val isTracking = LiveTrackingSDK.isTracking(context)if (!LiveTrackingSDK.hasLocationPermissions(context)) {
ActivityCompat.requestPermissions(
this,
arrayOf(
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_BACKGROUND_LOCATION
),
PERMISSION_REQUEST_CODE
)
}| Method | Description |
|---|---|
startTracking(context) |
Start with default 10s interval |
startTracking(context, intervalSeconds) |
Start with custom interval (min 5s) |
stopTracking(context) |
Stop tracking service |
isTracking(context) |
Check if tracking is active |
hasLocationPermissions(context) |
Check if permissions granted |
syncData(context, time, callback) |
Retrieve location data via callback |
LiveTrackingSDK.syncData(this, time = 60, object : SyncCallback {
override fun onSyncData(locations: List<LocationEntity>, timeInterval: Long) {
locations.forEach { location ->
println("Lat: ${location.latitude}, Lng: ${location.longitude}")
}
}
override fun onSyncError(error: String?) {
println("Sync error: $error")
}
})- Min SDK: Android 7.0 (API 24)
- Target SDK: Android 14 (API 36)
- Kotlin: 2.0+
- Gradle: 8.13+
Location not captured?
- Verify permissions granted
- Enable location services
- Grant battery optimization exemption
Service stops in background?
- Grant battery optimization exemption (SDK requests automatically)
- Ensure notification is showing (foreground service requirement)
High battery usage?
- Use longer intervals (30s, 60s instead of 10s)
Build logs: Filter with adb logcat | grep LOCATION_TRACK
MIT License - see LICENSE file.