From f7f2da4cca83c15998cf09c10236e83a99b152d6 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Tue, 5 Mar 2013 18:20:49 +1300 Subject: [PATCH] Restart location provider (fix #20) --- res/values-ru/strings.xml | 1 + res/values/strings.xml | 1 + src/org/traccar/client/TraccarService.java | 18 +++++++++++++----- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 7734c26..01579e4 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -44,6 +44,7 @@ Ошибка установки соединения Ошибка отправки Обновление местоположения + Изменилось состояние провайдера Обновление настроек diff --git a/res/values/strings.xml b/res/values/strings.xml index 431e979..280a3d6 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -44,6 +44,7 @@ Connection failed Send failed Location update + Provider status changed Preference update diff --git a/src/org/traccar/client/TraccarService.java b/src/org/traccar/client/TraccarService.java index 2f30de1..7a1e9cb 100644 --- a/src/org/traccar/client/TraccarService.java +++ b/src/org/traccar/client/TraccarService.java @@ -23,6 +23,7 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; +import android.location.LocationProvider; import android.os.Bundle; import android.os.IBinder; import android.preference.PreferenceManager; @@ -44,12 +45,12 @@ public class TraccarService extends Service { @Override public void onCreate() { - StatusActivity.addMessage(getString((R.string.status_service_create))); + StatusActivity.addMessage(getString(R.string.status_service_create)); } @Override public int onStartCommand(Intent intent, int flags, int startId) { - StatusActivity.addMessage(getString((R.string.status_service_start))); + StatusActivity.addMessage(getString(R.string.status_service_start)); sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); @@ -77,7 +78,7 @@ public class TraccarService extends Service { @Override public void onDestroy() { - StatusActivity.addMessage(getString((R.string.status_service_destroy))); + StatusActivity.addMessage(getString(R.string.status_service_destroy)); sharedPreferences.unregisterOnSharedPreferenceChangeListener(preferenceChangeListener); @@ -90,7 +91,7 @@ public class TraccarService extends Service { @Override public void onLocationChanged(Location location) { - StatusActivity.addMessage(getString((R.string.status_location_update))); + StatusActivity.addMessage(getString(R.string.status_location_update)); clientController.setNewLocation(Protocol.createLocationMessage(location)); } @@ -104,6 +105,13 @@ public class TraccarService extends Service { @Override public void onStatusChanged(String provider, int status, Bundle extras) { + StatusActivity.addMessage(getString(R.string.status_location_status)); + + if (status == LocationProvider.TEMPORARILY_UNAVAILABLE || + status == LocationProvider.OUT_OF_SERVICE) { + locationManager.removeUpdates(locationListener); + locationManager.requestLocationUpdates(provider, interval * 1000, 0, locationListener); + } } }; @@ -112,7 +120,7 @@ public class TraccarService extends Service { @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - StatusActivity.addMessage(getString((R.string.status_preference_update))); + StatusActivity.addMessage(getString(R.string.status_preference_update)); if (key.equals(TraccarActivity.KEY_ADDRESS)) { address = sharedPreferences.getString(TraccarActivity.KEY_ADDRESS, null); clientController.setNewServer(address, port);