diff options
author | Brad Leege <bleege@gmail.com> | 2015-12-08 14:35:24 -0800 |
---|---|---|
committer | Brad Leege <bleege@gmail.com> | 2015-12-09 12:45:35 -0800 |
commit | 220006fecb4d65f4219170bbae0f5c11fbe0daa6 (patch) | |
tree | 6e5775165e1536390c6c0069ec4ac2d40ed68d73 /android | |
parent | cddedf6966051f3ace409bdebbbdac8dc279466f (diff) | |
download | qtlocation-mapboxgl-220006fecb4d65f4219170bbae0f5c11fbe0daa6.tar.gz |
[android] #2954 - Building LocationListener infrastructure
Diffstat (limited to 'android')
2 files changed, 45 insertions, 2 deletions
diff --git a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationListener.java b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationListener.java new file mode 100644 index 0000000000..c385820423 --- /dev/null +++ b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationListener.java @@ -0,0 +1,13 @@ +package com.mapbox.mapboxsdk.location; + +import android.location.Location; + +public interface LocationListener { + + /** + * Callback method for receiving location updates from LocationServices. + * @param location The new Location data + */ + public void onLocationChanged(Location location); + +} diff --git a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationServices.java b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationServices.java index c3cf8161cf..f1bb9ffca7 100644 --- a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationServices.java +++ b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationServices.java @@ -3,11 +3,12 @@ package com.mapbox.mapboxsdk.location; import android.content.Context; import android.location.Location; import android.support.annotation.NonNull; -import com.mapzen.android.lost.api.LocationListener; import com.mapzen.android.lost.api.LocationRequest; import com.mapzen.android.lost.api.LostApiClient; +import java.util.ArrayList; +import java.util.List; -public class LocationServices implements LocationListener { +public class LocationServices implements com.mapzen.android.lost.api.LocationListener { private static LocationServices instance = null; @@ -16,6 +17,8 @@ public class LocationServices implements LocationListener { private Location lastLocation = null; + private List<LocationListener> locationListeners = null; + /** * Private constructor for singleton LocationServices */ @@ -23,6 +26,7 @@ public class LocationServices implements LocationListener { super(); // Setup location services mLocationClient = new LostApiClient.Builder(context).build(); + locationListeners = new ArrayList<>(); } /** @@ -88,9 +92,35 @@ public class LocationServices implements LocationListener { @Override public void onLocationChanged(Location location) { this.lastLocation = location; + + // Update Listeners + for (LocationListener listener : this.locationListeners) { + listener.onLocationChanged(location); + } } + /** + * Last known location + * @return Last known location data + */ public Location getLastLocation() { return lastLocation; } + + /** + * Registers a LocationListener to receive location updates + * @param locationListener LocationListener + */ + public void addLocationListener(@NonNull LocationListener locationListener) { + this.locationListeners.add(locationListener); + } + + /** + * Unregister a LocationListener to stop receiving location updates + * @param locationListener LocationListener to remove + * @return True if LocationListener was found and removed, False if it was not + */ + public boolean removeLocationListener(@NonNull LocationListener locationListener) { + return this.locationListeners.remove(locationListener); + } } |