Automatically switch background service on and off
This commit is contained in:
parent
bd86f5b9b9
commit
08bf284fff
1 changed files with 22 additions and 4 deletions
|
@ -182,11 +182,22 @@ public class OsmandMonitoringPlugin extends OsmandPlugin implements MonitoringIn
|
||||||
monitoringControl.setOnClickListener(new View.OnClickListener() {
|
monitoringControl.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
boolean isTrackMonitored = settings.SAVE_TRACK_TO_GPX.get();
|
boolean wasTrackMonitored = settings.SAVE_TRACK_TO_GPX.get();
|
||||||
if (!isTrackMonitored) {
|
if (!wasTrackMonitored) {
|
||||||
app.getSavingTrackHelper().startNewSegment();
|
app.getSavingTrackHelper().startNewSegment();
|
||||||
}
|
}
|
||||||
settings.SAVE_TRACK_TO_GPX.set(!isTrackMonitored);
|
settings.SAVE_TRACK_TO_GPX.set(!wasTrackMonitored);
|
||||||
|
final Intent serviceIntent = new Intent(map, NavigationService.class);
|
||||||
|
if (wasTrackMonitored) {
|
||||||
|
if (app.getNavigationService() != null && !app.getNavigationService().startedForNavigation()) {
|
||||||
|
app.stopService(serviceIntent);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (app.getNavigationService() == null) {
|
||||||
|
app.getSettings().SERVICE_OFF_INTERVAL.set(0);
|
||||||
|
app.startService(serviceIntent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
monitoringControl.updateInfo(null);
|
monitoringControl.updateInfo(null);
|
||||||
}
|
}
|
||||||
|
@ -196,6 +207,7 @@ public class OsmandMonitoringPlugin extends OsmandPlugin implements MonitoringIn
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addMonitorActions(final ContextMenuAdapter qa, final MonitoringInfoControl li, final OsmandMapTileView view) {
|
public void addMonitorActions(final ContextMenuAdapter qa, final MonitoringInfoControl li, final OsmandMapTileView view) {
|
||||||
|
final Intent serviceIntent = new Intent(view.getContext(), NavigationService.class);
|
||||||
final boolean off = !view.getSettings().SAVE_TRACK_TO_GPX.get();
|
final boolean off = !view.getSettings().SAVE_TRACK_TO_GPX.get();
|
||||||
qa.registerItem(off ? R.string.monitoring_mode_off : R.string.monitoring_mode_on, off ? R.drawable.monitoring_rec_inactive
|
qa.registerItem(off ? R.string.monitoring_mode_off : R.string.monitoring_mode_on, off ? R.drawable.monitoring_rec_inactive
|
||||||
: R.drawable.monitoring_rec_big, new OnContextMenuClick() {
|
: R.drawable.monitoring_rec_big, new OnContextMenuClick() {
|
||||||
|
@ -212,10 +224,17 @@ public class OsmandMonitoringPlugin extends OsmandPlugin implements MonitoringIn
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
view.getSettings().SAVE_TRACK_INTERVAL.set(vs.value);
|
view.getSettings().SAVE_TRACK_INTERVAL.set(vs.value);
|
||||||
view.getSettings().SAVE_TRACK_TO_GPX.set(true);
|
view.getSettings().SAVE_TRACK_TO_GPX.set(true);
|
||||||
|
if (view.getApplication().getNavigationService() == null) {
|
||||||
|
view.getSettings().SERVICE_OFF_INTERVAL.set(0);
|
||||||
|
view.getContext().startService(serviceIntent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
view.getSettings().SAVE_TRACK_TO_GPX.set(false);
|
view.getSettings().SAVE_TRACK_TO_GPX.set(false);
|
||||||
|
if (view.getApplication().getNavigationService() != null && !view.getApplication().getNavigationService().startedForNavigation()) {
|
||||||
|
view.getContext().stopService(serviceIntent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, -1);
|
}, -1);
|
||||||
|
@ -226,7 +245,6 @@ public class OsmandMonitoringPlugin extends OsmandPlugin implements MonitoringIn
|
||||||
qa.registerItem(msgId, draw, new OnContextMenuClick() {
|
qa.registerItem(msgId, draw, new OnContextMenuClick() {
|
||||||
@Override
|
@Override
|
||||||
public void onContextMenuClick(int itemId, int pos, boolean isChecked, DialogInterface dialog) {
|
public void onContextMenuClick(int itemId, int pos, boolean isChecked, DialogInterface dialog) {
|
||||||
final Intent serviceIntent = new Intent(view.getContext(), NavigationService.class);
|
|
||||||
if (view.getApplication().getNavigationService() == null) {
|
if (view.getApplication().getNavigationService() == null) {
|
||||||
final ValueHolder<Integer> vs = new ValueHolder<Integer>();
|
final ValueHolder<Integer> vs = new ValueHolder<Integer>();
|
||||||
vs.value = view.getSettings().SERVICE_OFF_INTERVAL.get();
|
vs.value = view.getSettings().SERVICE_OFF_INTERVAL.get();
|
||||||
|
|
Loading…
Reference in a new issue