forked from upstream-mirrors/OpenTracks
Change logic for updating gps provider state.
This commit is contained in:
@@ -66,7 +66,7 @@ public class DataSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isGpsProviderEnabled() {
|
public boolean isGpsProviderEnabled() {
|
||||||
return myTracksLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
|
return myTracksLocationManager.isGpsProviderEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -94,23 +94,10 @@ public class DataSource {
|
|||||||
* @param listener the listener
|
* @param listener the listener
|
||||||
*/
|
*/
|
||||||
public void registerLocationListener(LocationListener listener) {
|
public void registerLocationListener(LocationListener listener) {
|
||||||
// Check if the GPS provider exists
|
|
||||||
if (myTracksLocationManager.getProvider(LocationManager.GPS_PROVIDER) == null) {
|
|
||||||
listener.onProviderDisabled(LocationManager.GPS_PROVIDER);
|
|
||||||
unregisterLocationListener(listener);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Listen for GPS location
|
// Listen for GPS location
|
||||||
myTracksLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener);
|
myTracksLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener);
|
||||||
|
|
||||||
// Update the listener with the current provider state
|
|
||||||
if (myTracksLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
|
|
||||||
listener.onProviderEnabled(LocationManager.GPS_PROVIDER);
|
|
||||||
} else {
|
|
||||||
listener.onProviderDisabled(LocationManager.GPS_PROVIDER);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Listen for network location
|
// Listen for network location
|
||||||
try {
|
try {
|
||||||
myTracksLocationManager.requestLocationUpdates(
|
myTracksLocationManager.requestLocationUpdates(
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ public interface DataSourceListener {
|
|||||||
*/
|
*/
|
||||||
public void notifyLocationChanged(Location location);
|
public void notifyLocationChanged(Location location);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notifies when the location provider enabled status changes.
|
* Notifies when the location provider enabled status changes.
|
||||||
*
|
*
|
||||||
@@ -55,13 +54,6 @@ public interface DataSourceListener {
|
|||||||
*/
|
*/
|
||||||
public void notifyLocationProviderEnabled(boolean enabled);
|
public void notifyLocationProviderEnabled(boolean enabled);
|
||||||
|
|
||||||
/**
|
|
||||||
* Notifies when the location provider availability status changes.
|
|
||||||
*
|
|
||||||
* @param available true if available, false if not
|
|
||||||
*/
|
|
||||||
public void notifyLocationProviderAvailable(boolean available);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notifies when a preference changes.
|
* Notifies when a preference changes.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -25,8 +25,6 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
|
|||||||
import android.database.ContentObserver;
|
import android.database.ContentObserver;
|
||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
import android.location.LocationListener;
|
import android.location.LocationListener;
|
||||||
import android.location.LocationManager;
|
|
||||||
import android.location.LocationProvider;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -101,7 +99,6 @@ public class DataSourceManager {
|
|||||||
*/
|
*/
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
class CurrentLocationListener implements LocationListener {
|
class CurrentLocationListener implements LocationListener {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLocationChanged(Location location) {
|
public void onLocationChanged(Location location) {
|
||||||
if (!dataSource.isAllowed()) {
|
if (!dataSource.isAllowed()) {
|
||||||
@@ -111,28 +108,13 @@ public class DataSourceManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onProviderDisabled(String provider) {
|
public void onProviderDisabled(String provider) {}
|
||||||
if (!LocationManager.GPS_PROVIDER.equals(provider)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
dataSourceListener.notifyLocationProviderEnabled(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onProviderEnabled(String provider) {
|
public void onProviderEnabled(String provider) {}
|
||||||
if (!dataSource.isAllowed() || !LocationManager.GPS_PROVIDER.equals(provider)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
dataSourceListener.notifyLocationProviderEnabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStatusChanged(String provider, int status, Bundle extras) {
|
public void onStatusChanged(String provider, int status, Bundle extras) {}
|
||||||
if (!dataSource.isAllowed() || !LocationManager.GPS_PROVIDER.equals(provider)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
dataSourceListener.notifyLocationProviderAvailable(status == LocationProvider.AVAILABLE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -239,7 +221,16 @@ public class DataSourceManager {
|
|||||||
// Do nothing. SAMPLED_OUT_POINT_UPDATES is mapped to POINT_UPDATES.
|
// Do nothing. SAMPLED_OUT_POINT_UPDATES is mapped to POINT_UPDATES.
|
||||||
break;
|
break;
|
||||||
case LOCATION:
|
case LOCATION:
|
||||||
dataSource.registerLocationListener(currentLocationListener);
|
if (dataSource.isGpsProviderEnabled()) {
|
||||||
|
dataSourceListener.notifyLocationProviderEnabled(true);
|
||||||
|
} else {
|
||||||
|
dataSourceListener.notifyLocationProviderEnabled(false);
|
||||||
|
}
|
||||||
|
if (dataSource.isAllowed()) {
|
||||||
|
dataSource.registerLocationListener(currentLocationListener);
|
||||||
|
} else {
|
||||||
|
dataSource.unregisterLocationListener(currentLocationListener);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case PREFERENCE:
|
case PREFERENCE:
|
||||||
dataSource.registerOnSharedPreferenceChangeListener(preferenceListener);
|
dataSource.registerOnSharedPreferenceChangeListener(preferenceListener);
|
||||||
|
|||||||
@@ -370,17 +370,6 @@ public class TrackDataHub implements DataSourceListener {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void notifyLocationProviderAvailable(final boolean available) {
|
|
||||||
runInHanderThread(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
hasFix = available;
|
|
||||||
notifyLocationStateChanged(trackDataManager.getListeners(TrackDataType.LOCATION));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void notifyLocationChanged(final Location location) {
|
public void notifyLocationChanged(final Location location) {
|
||||||
runInHanderThread(new Runnable() {
|
runInHanderThread(new Runnable() {
|
||||||
|
|||||||
+10
-11
@@ -26,7 +26,6 @@ import android.database.Cursor;
|
|||||||
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.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -102,17 +101,17 @@ public class MyTracksLocationManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see android.location.LocationManager#isProviderEnabled(java.lang.String)
|
* Returns true if gps provider is enabled.
|
||||||
*/
|
*/
|
||||||
public boolean isProviderEnabled(String provider) {
|
public boolean isGpsProviderEnabled() {
|
||||||
return isAllowed ? locationManager.isProviderEnabled(provider) : false;
|
if (!isAllowed) {
|
||||||
}
|
return false;
|
||||||
|
}
|
||||||
/**
|
String provider = LocationManager.GPS_PROVIDER;
|
||||||
* @see android.location.LocationManager#getProvider(java.lang.String)
|
if (locationManager.getProvider(provider) == null) {
|
||||||
*/
|
return false;
|
||||||
public LocationProvider getProvider(String name) {
|
}
|
||||||
return isAllowed ? locationManager.getProvider(name) : null;
|
return locationManager.isProviderEnabled(provider);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user