summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MockLocationEngine.java
diff options
context:
space:
mode:
authorPablo Guardiola <guardiola31337@gmail.com>2017-04-20 20:10:29 +0200
committerGitHub <noreply@github.com>2017-04-20 20:10:29 +0200
commitc6be40b71b2f81f07e24c14f0b9624b0fcf85798 (patch)
tree276e05bd8c40a6852dfbfacf6345fb7d3bd0be09 /platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MockLocationEngine.java
parent97f2a448594d7f904f298c61ab7ba673418d36e5 (diff)
downloadqtlocation-mapboxgl-c6be40b71b2f81f07e24c14f0b9624b0fcf85798.tar.gz
[android] Add a way to use a custom location source (#8710)
* add a way to use a custom location source * add custom location engine example to test app
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MockLocationEngine.java')
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MockLocationEngine.java93
1 files changed, 93 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MockLocationEngine.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MockLocationEngine.java
new file mode 100644
index 0000000000..b87c723fda
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MockLocationEngine.java
@@ -0,0 +1,93 @@
+package com.mapbox.mapboxsdk.testapp.activity.userlocation;
+
+
+import android.location.Location;
+import android.os.Handler;
+
+import com.mapbox.services.android.telemetry.location.LocationEngine;
+import com.mapbox.services.android.telemetry.location.LocationEngineListener;
+
+/**
+ * Sample LocationEngine that provides mocked locations simulating GPS updates
+ */
+public class MockLocationEngine extends LocationEngine {
+
+ // Mocked data
+ private static final int UPDATE_INTERVAL_MS = 1000;
+ private static final double[][] locations = new double[][] {
+ new double[] {39.489309, -0.360415},
+ new double[] {39.492469, -0.358777},
+ new double[] {40.393285, -3.707260},
+ new double[] {40.394374, -3.707767},
+ new double[] {40.398012, -3.715943},
+ new double[] {40.416913, -3.703861}};
+
+ private Handler handler;
+ int currentIndex;
+
+ public MockLocationEngine() {
+ super();
+ }
+
+ @Override
+ public void activate() {
+ currentIndex = 0;
+
+ // "Connection" is immediate here
+ for (LocationEngineListener listener : locationListeners) {
+ listener.onConnected();
+ }
+ }
+
+ @Override
+ public void deactivate() {
+ handler = null;
+ }
+
+ @Override
+ public boolean isConnected() {
+ return true; // Always connected
+ }
+
+ @Override
+ public Location getLastLocation() {
+ return getNextLocation();
+ }
+
+ @Override
+ public void requestLocationUpdates() {
+ // Fake regular updates with a handler
+ handler = new Handler();
+ handler.postDelayed(new LocationUpdateRunnable(), UPDATE_INTERVAL_MS);
+ }
+
+ @Override
+ public void removeLocationUpdates() {
+ handler.removeCallbacksAndMessages(null);
+ }
+
+ private Location getNextLocation() {
+ // Build the next location and rotate the index
+ Location location = new Location(MockLocationEngine.class.getSimpleName());
+ location.setLatitude(locations[currentIndex][0]);
+ location.setLongitude(locations[currentIndex][1]);
+ currentIndex = (currentIndex == locations.length - 1 ? 0 : currentIndex + 1);
+ return location;
+ }
+
+ private class LocationUpdateRunnable implements Runnable {
+ @Override
+ public void run() {
+ // Notify of an update
+ Location location = getNextLocation();
+ for (LocationEngineListener listener : locationListeners) {
+ listener.onLocationChanged(location);
+ }
+
+ if (handler != null) {
+ // Schedule the next update
+ handler.postDelayed(new LocationUpdateRunnable(), UPDATE_INTERVAL_MS);
+ }
+ }
+ }
+}