summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorBrad Leege <bleege@gmail.com>2015-12-08 14:35:24 -0800
committerBrad Leege <bleege@gmail.com>2015-12-09 12:45:35 -0800
commit220006fecb4d65f4219170bbae0f5c11fbe0daa6 (patch)
tree6e5775165e1536390c6c0069ec4ac2d40ed68d73 /android
parentcddedf6966051f3ace409bdebbbdac8dc279466f (diff)
downloadqtlocation-mapboxgl-220006fecb4d65f4219170bbae0f5c11fbe0daa6.tar.gz
[android] #2954 - Building LocationListener infrastructure
Diffstat (limited to 'android')
-rw-r--r--android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationListener.java13
-rw-r--r--android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationServices.java34
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);
+ }
}