42 lines
No EOL
1.3 KiB
Kotlin
42 lines
No EOL
1.3 KiB
Kotlin
package net.osmand.telegram
|
|
|
|
import android.annotation.SuppressLint
|
|
import android.content.BroadcastReceiver
|
|
import android.content.Context
|
|
import android.content.Intent
|
|
import android.location.LocationManager
|
|
import net.osmand.telegram.utils.AndroidUtils
|
|
|
|
class OnTelegramServiceAlarmReceiver : BroadcastReceiver() {
|
|
@SuppressLint("MissingPermission")
|
|
override fun onReceive(context: Context, intent: Intent) {
|
|
val lock = TelegramService.getLock(context)
|
|
val app = context.applicationContext as TelegramApplication
|
|
val service = app.telegramService
|
|
// do not do nothing
|
|
if (lock.isHeld || service == null) {
|
|
return
|
|
}
|
|
lock.acquire(15 * 60 * 1000L)
|
|
|
|
// request location updates
|
|
val locationManager = service.getSystemService(Context.LOCATION_SERVICE) as LocationManager
|
|
try {
|
|
if (AndroidUtils.isLocationPermissionAvailable(app)) {
|
|
locationManager.requestLocationUpdates(service.serviceOffProvider, 0, 0f, service)
|
|
}
|
|
val handler = service.handler
|
|
if (service.serviceOffInterval > service.serviceErrorInterval && handler != null) {
|
|
handler.postDelayed({
|
|
// if lock is not anymore held
|
|
if (lock.isHeld) {
|
|
lock.release()
|
|
locationManager.removeUpdates(service)
|
|
}
|
|
}, service.serviceErrorInterval)
|
|
}
|
|
} catch (e: RuntimeException) {
|
|
e.printStackTrace()
|
|
}
|
|
}
|
|
} |