package net.osmand.plus; import net.osmand.plus.activities.OsmandApplication; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.location.LocationManager; import android.os.PowerManager.WakeLock; public class OnNavigationServiceAlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { final WakeLock lock = NavigationService.getLock(context); final NavigationService service = ((OsmandApplication) context.getApplicationContext()).getNavigationService(); // do not do nothing if (lock.isHeld() || service == null) { return; } // lock.acquire(); // request location updates final LocationManager locationManager = (LocationManager) service.getSystemService(Context.LOCATION_SERVICE); locationManager.requestLocationUpdates(service.getServiceOffProvider(), 1000, 0, service); if (service.getServiceOffInterval() > service.getServiceError()) { service.getHandler().postDelayed(new Runnable() { @Override public void run() { // if lock is not anymore held if (lock.isHeld()) { lock.release(); locationManager.removeUpdates(service); } } }, service.getServiceError()); } } }