diff --git a/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java b/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java index b551d14d6..b49416059 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java @@ -166,7 +166,6 @@ public class SearchListActivity extends AbstractSendToGoogleActivity private TrackRecordingServiceConnection trackRecordingServiceConnection; private SearchEngine searchEngine; private SearchRecentSuggestions searchRecentSuggestions; - private MyTracksLocationManager myTracksLocationManager; private ArrayAdapter> arrayAdapter; private boolean metricUnits = PreferencesUtils.METRIC_UNITS_DEFAULT; @@ -388,7 +387,8 @@ public class SearchListActivity extends AbstractSendToGoogleActivity final String textQuery = intent.getStringExtra(SearchManager.QUERY); setTitle(textQuery); - myTracksLocationManager = new MyTracksLocationManager(this, Looper.myLooper()); + final MyTracksLocationManager myTracksLocationManager = new MyTracksLocationManager( + this, Looper.myLooper()); LocationListener locationListener = new LocationListener() { @Override public void onLocationChanged(final Location location) { 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 656aa0294..1d27147e3 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/services/MyTracksLocationManager.java +++ b/MyTracks/src/com/google/android/apps/mytracks/services/MyTracksLocationManager.java @@ -39,16 +39,33 @@ import android.util.Log; /** * My Tracks Location Manager. Applies Google location settings before allowing * access to {@link LocationManager}. - * + * * @author Jimmy Shih */ public class MyTracksLocationManager { + /** + * Observer for Google location settings. + * + * @author Jimmy Shih + */ + private class GoogleSettingsObserver extends ContentObserver { + + public GoogleSettingsObserver() { + super(new Handler()); + } + + @Override + public void onChange(boolean selfChange) { + isAllowed = isUseLocationForServicesOn(); + } + } + private static final String TAG = MyTracksLocationManager.class.getSimpleName(); private static final String GOOGLE_SETTINGS_CONTENT_URI = "content://com.google.settings/partner"; private static final String USE_LOCATION_FOR_SERVICES = "use_location_for_services"; - + // User has agreed to use location for Google services. @VisibleForTesting static final String USE_LOCATION_FOR_SERVICES_ON = "1"; @@ -100,13 +117,13 @@ public class MyTracksLocationManager { private LocationListener requestLocationUpdates; private float requestLocationUpdatesDistance; private long requestLocationUpdatesTime; - + public MyTracksLocationManager(Context context, Looper looper) { this.looper = looper; handler = new Handler(looper); locationClient = new LocationClient(context, connectionCallbacks, onConnectionFailedListener); locationClient.connect(); - + locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); contentResolver = context.getContentResolver(); observer = new GoogleSettingsObserver(); @@ -125,23 +142,6 @@ public class MyTracksLocationManager { contentResolver.unregisterContentObserver(observer); } - /** - * Observer for Google location settings. - * - * @author Jimmy Shih - */ - private class GoogleSettingsObserver extends ContentObserver { - - public GoogleSettingsObserver() { - super(new Handler()); - } - - @Override - public void onChange(boolean selfChange) { - isAllowed = isUseLocationForServicesOn(); - } - } - /** * Returns true if allowed to access the location manager. Returns true if * there is no Google location settings or the Google location settings allows @@ -174,7 +174,7 @@ public class MyTracksLocationManager { handler.post(new Runnable() { @Override public void run() { - if (!isAllowed) { + if (!isAllowed) { requestLastLocation = null; locationListener.onLocationChanged(null); } else {