Restart location provider (fix #20)

Этот коммит содержится в:
Anton Tananaev
2013-03-05 18:20:49 +13:00
родитель d7f8bd1f99
Коммит f7f2da4cca
3 изменённых файлов: 15 добавлений и 5 удалений
+1
Просмотреть файл
@@ -44,6 +44,7 @@
<string name="status_connection_fail">Ошибка установки соединения</string> <string name="status_connection_fail">Ошибка установки соединения</string>
<string name="status_send_fail">Ошибка отправки</string> <string name="status_send_fail">Ошибка отправки</string>
<string name="status_location_update">Обновление местоположения</string> <string name="status_location_update">Обновление местоположения</string>
<string name="status_location_status">Изменилось состояние провайдера</string>
<string name="status_preference_update">Обновление настроек</string> <string name="status_preference_update">Обновление настроек</string>
</resources> </resources>
+1
Просмотреть файл
@@ -44,6 +44,7 @@
<string name="status_connection_fail">Connection failed</string> <string name="status_connection_fail">Connection failed</string>
<string name="status_send_fail">Send failed</string> <string name="status_send_fail">Send failed</string>
<string name="status_location_update">Location update</string> <string name="status_location_update">Location update</string>
<string name="status_location_status">Provider status changed</string>
<string name="status_preference_update">Preference update</string> <string name="status_preference_update">Preference update</string>
</resources> </resources>
+13 -5
Просмотреть файл
@@ -23,6 +23,7 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.location.Location; import android.location.Location;
import android.location.LocationListener; import android.location.LocationListener;
import android.location.LocationManager; import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle; import android.os.Bundle;
import android.os.IBinder; import android.os.IBinder;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
@@ -44,12 +45,12 @@ public class TraccarService extends Service {
@Override @Override
public void onCreate() { public void onCreate() {
StatusActivity.addMessage(getString((R.string.status_service_create))); StatusActivity.addMessage(getString(R.string.status_service_create));
} }
@Override @Override
public int onStartCommand(Intent intent, int flags, int startId) { 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); sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
@@ -77,7 +78,7 @@ public class TraccarService extends Service {
@Override @Override
public void onDestroy() { public void onDestroy() {
StatusActivity.addMessage(getString((R.string.status_service_destroy))); StatusActivity.addMessage(getString(R.string.status_service_destroy));
sharedPreferences.unregisterOnSharedPreferenceChangeListener(preferenceChangeListener); sharedPreferences.unregisterOnSharedPreferenceChangeListener(preferenceChangeListener);
@@ -90,7 +91,7 @@ public class TraccarService extends Service {
@Override @Override
public void onLocationChanged(Location location) { 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)); clientController.setNewLocation(Protocol.createLocationMessage(location));
} }
@@ -104,6 +105,13 @@ public class TraccarService extends Service {
@Override @Override
public void onStatusChanged(String provider, int status, Bundle extras) { 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 @Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 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)) { if (key.equals(TraccarActivity.KEY_ADDRESS)) {
address = sharedPreferences.getString(TraccarActivity.KEY_ADDRESS, null); address = sharedPreferences.getString(TraccarActivity.KEY_ADDRESS, null);
clientController.setNewServer(address, port); clientController.setNewServer(address, port);