diff --git a/MyTracks/src/com/google/android/apps/mytracks/content/DataSource.java b/MyTracks/src/com/google/android/apps/mytracks/content/DataSource.java index fe1aae0a5..0dfc5dd28 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/content/DataSource.java +++ b/MyTracks/src/com/google/android/apps/mytracks/content/DataSource.java @@ -66,7 +66,7 @@ public class DataSource { } public boolean isGpsProviderEnabled() { - return myTracksLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); + return myTracksLocationManager.isGpsProviderEnabled(); } /** @@ -94,23 +94,10 @@ public class DataSource { * @param listener the 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 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 try { myTracksLocationManager.requestLocationUpdates( diff --git a/MyTracks/src/com/google/android/apps/mytracks/content/DataSourceListener.java b/MyTracks/src/com/google/android/apps/mytracks/content/DataSourceListener.java index 149e9b9fd..913d5177a 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/content/DataSourceListener.java +++ b/MyTracks/src/com/google/android/apps/mytracks/content/DataSourceListener.java @@ -46,8 +46,7 @@ public interface DataSourceListener { * @param location the location */ public void notifyLocationChanged(Location location); - - + /** * Notifies when the location provider enabled status changes. * @@ -55,13 +54,6 @@ public interface DataSourceListener { */ 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. * diff --git a/MyTracks/src/com/google/android/apps/mytracks/content/DataSourceManager.java b/MyTracks/src/com/google/android/apps/mytracks/content/DataSourceManager.java index 1cbf2e1b8..8756794dc 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/content/DataSourceManager.java +++ b/MyTracks/src/com/google/android/apps/mytracks/content/DataSourceManager.java @@ -25,8 +25,6 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.database.ContentObserver; import android.location.Location; import android.location.LocationListener; -import android.location.LocationManager; -import android.location.LocationProvider; import android.os.Bundle; import android.os.Handler; import android.util.Log; @@ -101,7 +99,6 @@ public class DataSourceManager { */ @VisibleForTesting class CurrentLocationListener implements LocationListener { - @Override public void onLocationChanged(Location location) { if (!dataSource.isAllowed()) { @@ -111,28 +108,13 @@ public class DataSourceManager { } @Override - public void onProviderDisabled(String provider) { - if (!LocationManager.GPS_PROVIDER.equals(provider)) { - return; - } - dataSourceListener.notifyLocationProviderEnabled(false); - } + public void onProviderDisabled(String provider) {} @Override - public void onProviderEnabled(String provider) { - if (!dataSource.isAllowed() || !LocationManager.GPS_PROVIDER.equals(provider)) { - return; - } - dataSourceListener.notifyLocationProviderEnabled(true); - } + public void onProviderEnabled(String provider) {} @Override - public void onStatusChanged(String provider, int status, Bundle extras) { - if (!dataSource.isAllowed() || !LocationManager.GPS_PROVIDER.equals(provider)) { - return; - } - dataSourceListener.notifyLocationProviderAvailable(status == LocationProvider.AVAILABLE); - } + public void onStatusChanged(String provider, int status, Bundle extras) {} } /** @@ -239,7 +221,16 @@ public class DataSourceManager { // Do nothing. SAMPLED_OUT_POINT_UPDATES is mapped to POINT_UPDATES. break; 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; case PREFERENCE: dataSource.registerOnSharedPreferenceChangeListener(preferenceListener); diff --git a/MyTracks/src/com/google/android/apps/mytracks/content/TrackDataHub.java b/MyTracks/src/com/google/android/apps/mytracks/content/TrackDataHub.java index 6107377ff..07207e312 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/content/TrackDataHub.java +++ b/MyTracks/src/com/google/android/apps/mytracks/content/TrackDataHub.java @@ -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 public void notifyLocationChanged(final Location location) { runInHanderThread(new Runnable() { diff --git a/MyTracks/src/com/google/android/apps/mytracks/services/MyTracksLocationManager.java b/MyTracks/src/com/google/android/apps/mytracks/services/MyTracksLocationManager.java index 9589f2216..b03b1644b 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/services/MyTracksLocationManager.java +++ b/MyTracks/src/com/google/android/apps/mytracks/services/MyTracksLocationManager.java @@ -26,7 +26,6 @@ import android.database.Cursor; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; -import android.location.LocationProvider; import android.net.Uri; import android.os.Handler; import android.util.Log; @@ -77,7 +76,7 @@ public class MyTracksLocationManager { /** * Observer for Google location settings. - * + * * @author Jimmy Shih */ private class GoogleSettingsObserver extends ContentObserver { @@ -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) { - return isAllowed ? locationManager.isProviderEnabled(provider) : false; - } - - /** - * @see android.location.LocationManager#getProvider(java.lang.String) - */ - public LocationProvider getProvider(String name) { - return isAllowed ? locationManager.getProvider(name) : null; + public boolean isGpsProviderEnabled() { + if (!isAllowed) { + return false; + } + String provider = LocationManager.GPS_PROVIDER; + if (locationManager.getProvider(provider) == null) { + return false; + } + return locationManager.isProviderEnabled(provider); } /**