summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuardiola31337 <pablo.guardiola@mapbox.com>2017-07-12 19:22:24 +0200
committerGuardiola31337 <pablo.guardiola@mapbox.com>2017-10-31 17:09:58 -0700
commitec82bc1c5af9a767a5585b87a2633b25e58d2d98 (patch)
tree29a47042ca57a7c664285446d716a2ea8f0032f2
parent56c2af5670852312f788f83ff86d80447c30b0fd (diff)
downloadqtlocation-mapboxgl-ec82bc1c5af9a767a5585b87a2633b25e58d2d98.tar.gz
[android] [WIP] make location provider optional
-rw-r--r--platform/android/MapboxGLAndroidSDK/build.gradle2
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java34
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/package-info.java4
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java3
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/MapboxTest.java6
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/build.gradle1
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java40
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTrackingModeActivity.java48
-rw-r--r--platform/android/build.gradle2
-rw-r--r--platform/android/dependencies.gradle3
10 files changed, 84 insertions, 59 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/build.gradle b/platform/android/MapboxGLAndroidSDK/build.gradle
index c96587fce6..524c63cfba 100644
--- a/platform/android/MapboxGLAndroidSDK/build.gradle
+++ b/platform/android/MapboxGLAndroidSDK/build.gradle
@@ -6,7 +6,7 @@ dependencies {
compile rootProject.ext.dep.supportDesign
compile rootProject.ext.dep.timber
compile rootProject.ext.dep.okhttp3
- compile(rootProject.ext.dep.lost) {
+ provided(rootProject.ext.dep.lost) {
exclude group: 'com.google.guava'
}
testCompile rootProject.ext.dep.junit
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java
index 7fd9d6172d..e3790b7972 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java
@@ -10,11 +10,19 @@ import android.text.TextUtils;
import com.mapbox.mapboxsdk.constants.MapboxConstants;
import com.mapbox.mapboxsdk.exceptions.MapboxConfigurationException;
-import com.mapbox.mapboxsdk.location.LocationSource;
import com.mapbox.mapboxsdk.net.ConnectivityReceiver;
import com.mapbox.services.android.telemetry.MapboxTelemetry;
+import com.mapbox.services.android.telemetry.location.AndroidLocationSourceProvider;
+import com.mapbox.services.android.telemetry.location.ClasspathChecker;
+import com.mapbox.services.android.telemetry.location.GoogleLocationSourceProvider;
import com.mapbox.services.android.telemetry.location.LocationEngine;
import com.mapbox.services.android.telemetry.location.LocationEnginePriority;
+import com.mapbox.services.android.telemetry.location.LocationSourceChain;
+import com.mapbox.services.android.telemetry.location.LocationSourceProvider;
+import com.mapbox.services.android.telemetry.location.LostLocationSourceProvider;
+
+import java.util.ArrayList;
+import java.util.List;
import timber.log.Timber;
@@ -34,7 +42,7 @@ public final class Mapbox {
private Context context;
private String accessToken;
private Boolean connected;
- private LocationSource locationSource;
+ private LocationEngine locationSource;
/**
* Get an instance of Mapbox.
@@ -50,9 +58,11 @@ public final class Mapbox {
public static synchronized Mapbox getInstance(@NonNull Context context, @NonNull String accessToken) {
if (INSTANCE == null) {
Context appContext = context.getApplicationContext();
- INSTANCE = new Mapbox(appContext, accessToken, new LocationSource(appContext));
- LocationEngine locationEngine = new LocationSource(appContext);
- locationEngine.setPriority(LocationEnginePriority.NO_POWER);
+ List<LocationSourceChain> locationSources = initLocationSources();
+ LocationSourceProvider locationSourceProvider = new LocationSourceProvider(locationSources);
+ LocationEngine locationSource = locationSourceProvider.supply(context);
+ INSTANCE = new Mapbox(appContext, accessToken, locationSource);
+ locationSource.setPriority(LocationEnginePriority.NO_POWER);
try {
MapboxTelemetry.getInstance().initialize(
@@ -66,7 +76,7 @@ public final class Mapbox {
return INSTANCE;
}
- Mapbox(@NonNull Context context, @NonNull String accessToken, LocationSource locationSource) {
+ Mapbox(@NonNull Context context, @NonNull String accessToken, LocationEngine locationSource) {
this.context = context;
this.accessToken = accessToken;
this.locationSource = locationSource;
@@ -83,6 +93,16 @@ public final class Mapbox {
return INSTANCE.accessToken;
}
+ private static List<LocationSourceChain> initLocationSources() {
+ ClasspathChecker classpathChecker = new ClasspathChecker();
+ List<LocationSourceChain> locationSources = new ArrayList<>();
+ locationSources.add(new GoogleLocationSourceProvider(classpathChecker));
+ locationSources.add(new LostLocationSourceProvider(classpathChecker));
+ locationSources.add(new AndroidLocationSourceProvider());
+
+ return locationSources;
+ }
+
/**
* Runtime validation of Mapbox creation.
*/
@@ -143,7 +163,7 @@ public final class Mapbox {
return (activeNetwork != null && activeNetwork.isConnected());
}
- public static LocationSource getLocationSource() {
+ public static LocationEngine getLocationSource() {
return INSTANCE.locationSource;
}
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/package-info.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/package-info.java
deleted file mode 100644
index 6b0c9a76c0..0000000000
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * Contains the Mapbox Maps Android Location API classes.
- */
-package com.mapbox.mapboxsdk.location;
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java
index ac91746a2a..8b0fc62339 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java
@@ -33,7 +33,6 @@ import com.mapbox.mapboxsdk.camera.CameraUpdateFactory;
import com.mapbox.mapboxsdk.constants.MyBearingTracking;
import com.mapbox.mapboxsdk.constants.MyLocationTracking;
import com.mapbox.mapboxsdk.geometry.LatLng;
-import com.mapbox.mapboxsdk.location.LocationSource;
import com.mapbox.mapboxsdk.maps.MapboxMap;
import com.mapbox.mapboxsdk.maps.Projection;
import com.mapbox.services.android.telemetry.location.LocationEngine;
@@ -161,7 +160,7 @@ public class MyLocationView extends View {
compassListener = new CompassListener(context);
}
- public void init(LocationSource locationSource) {
+ public void init(LocationEngine locationSource) {
this.locationSource = locationSource;
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/MapboxTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/MapboxTest.java
index e05190cd57..7a28d846ea 100644
--- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/MapboxTest.java
+++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/MapboxTest.java
@@ -5,7 +5,7 @@ import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import com.mapbox.mapboxsdk.exceptions.MapboxConfigurationException;
-import com.mapbox.mapboxsdk.location.LocationSource;
+import com.mapbox.services.android.telemetry.location.LocationEngine;
import org.junit.Before;
import org.junit.Test;
@@ -25,13 +25,13 @@ public class MapboxTest {
private Context context;
private Context appContext;
- private LocationSource locationSource;
+ private LocationEngine locationSource;
@Before
public void before() {
context = mock(Context.class);
appContext = mock(Context.class);
- locationSource = mock(LocationSource.class);
+ locationSource = mock(LocationEngine.class);
when(context.getApplicationContext()).thenReturn(appContext);
}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/build.gradle b/platform/android/MapboxGLAndroidSDKTestApp/build.gradle
index 67939b5144..81ee635cf1 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/build.gradle
+++ b/platform/android/MapboxGLAndroidSDKTestApp/build.gradle
@@ -68,6 +68,7 @@ dependencies {
compile(rootProject.ext.dep.mapboxJavaServices) {
transitive = true
}
+ compile rootProject.ext.dep.lost
// Testing dependencies
androidTestCompile rootProject.ext.dep.testSpoonRunner
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java
index 9f6f2b2fcd..54808d2bd9 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java
@@ -16,19 +16,16 @@ import com.mapbox.mapboxsdk.maps.MapboxMap;
import com.mapbox.mapboxsdk.maps.MapboxMapOptions;
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
import com.mapbox.mapboxsdk.testapp.R;
-import com.mapzen.android.lost.api.LocationListener;
-import com.mapzen.android.lost.api.LocationRequest;
-import com.mapzen.android.lost.api.LocationServices;
-import com.mapzen.android.lost.api.LostApiClient;
+import com.mapbox.services.android.telemetry.location.LocationEngineListener;
/**
* Test activity showcasing how to change the MyLocationView drawable.
*/
-public class MyLocationDrawableActivity extends BaseLocationActivity implements LocationListener {
+public class MyLocationDrawableActivity extends BaseLocationActivity implements LocationEngineListener {
private MapView mapView;
private MapboxMap mapboxMap;
- private LostApiClient lostApiClient;
+// private LostApiClient lostApiClient;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -66,15 +63,20 @@ public class MyLocationDrawableActivity extends BaseLocationActivity implements
@Override
protected void enableLocation(boolean enabled) {
mapboxMap.setMyLocationEnabled(enabled);
- if (lostApiClient == null) {
- lostApiClient = new LostApiClient.Builder(this).build();
- lostApiClient.connect();
- LocationRequest request = LocationRequest.create()
- .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
- .setInterval(5000)
- .setSmallestDisplacement(10);
- LocationServices.FusedLocationApi.requestLocationUpdates(request, this);
- }
+// if (lostApiClient == null) {
+// lostApiClient = new LostApiClient.Builder(this).build();
+// lostApiClient.connect();
+// LocationRequest request = LocationRequest.create()
+// .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
+// .setInterval(5000)
+// .setSmallestDisplacement(10);
+// LocationServices.FusedLocationApi.requestLocationUpdates(request, this);
+// }
+ }
+
+ @Override
+ public void onConnected() {
+ // Nothing
}
@Override
@@ -104,10 +106,10 @@ public class MyLocationDrawableActivity extends BaseLocationActivity implements
protected void onStop() {
super.onStop();
mapView.onStop();
- if (lostApiClient.isConnected()) {
- LocationServices.FusedLocationApi.removeLocationUpdates(this);
- lostApiClient.disconnect();
- }
+// if (lostApiClient.isConnected()) {
+// LocationServices.FusedLocationApi.removeLocationUpdates(this);
+// lostApiClient.disconnect();
+// }
}
@Override
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTrackingModeActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTrackingModeActivity.java
index 786aeb8733..8d91add35f 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTrackingModeActivity.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTrackingModeActivity.java
@@ -14,6 +14,7 @@ import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
+import com.mapbox.mapboxsdk.Mapbox;
import com.mapbox.mapboxsdk.camera.CameraUpdateFactory;
import com.mapbox.mapboxsdk.constants.MyBearingTracking;
import com.mapbox.mapboxsdk.constants.MyLocationTracking;
@@ -24,10 +25,7 @@ import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
import com.mapbox.mapboxsdk.maps.TrackingSettings;
import com.mapbox.mapboxsdk.maps.UiSettings;
import com.mapbox.mapboxsdk.testapp.R;
-import com.mapzen.android.lost.api.LocationListener;
-import com.mapzen.android.lost.api.LocationRequest;
-import com.mapzen.android.lost.api.LocationServices;
-import com.mapzen.android.lost.api.LostApiClient;
+import com.mapbox.services.android.telemetry.location.LocationEngineListener;
import timber.log.Timber;
@@ -39,10 +37,10 @@ import timber.log.Timber;
* </p>
*/
public class MyLocationTrackingModeActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener,
- OnMapReadyCallback, LocationListener {
+ OnMapReadyCallback, LocationEngineListener {
// Testing for user defined LostApiClient
- private LostApiClient lostApiClient;
+ //private LostApiClient lostApiClient;
public static final int TRACKING_NONE_INDEX = 0;
public static final int TRACKING_FOLLOW_INDEX = 1;
@@ -75,18 +73,22 @@ public class MyLocationTrackingModeActivity extends AppCompatActivity implements
@Override
public void onMapReady(MapboxMap mapboxMap) {
MyLocationTrackingModeActivity.this.mapboxMap = mapboxMap;
- lostApiClient = new LostApiClient.Builder(this).build();
- lostApiClient.connect();
- LocationRequest request = LocationRequest.create()
- .setPriority(LocationRequest.PRIORITY_LOW_POWER)
- .setInterval(5000)
- .setSmallestDisplacement(10);
-
- Location location = LocationServices.FusedLocationApi.getLastLocation();
- if (location != null) {
- setInitialLocation(location, 15);
- }
- LocationServices.FusedLocationApi.requestLocationUpdates(request, this);
+
+// lostApiClient = new LostApiClient.Builder(this).build();
+// lostApiClient.connect();
+// LocationRequest request = LocationRequest.create()
+// .setPriority(LocationRequest.PRIORITY_LOW_POWER)
+// .setInterval(5000)
+// .setSmallestDisplacement(10);
+
+ mapboxMap.setMyLocationEnabled(true);
+ Mapbox.getLocationSource().addLocationEngineListener(this);
+ Mapbox.getLocationSource().requestLocationUpdates();
+ }
+
+ @Override
+ public void onConnected() {
+ // Nothing
}
@Override
@@ -227,10 +229,12 @@ public class MyLocationTrackingModeActivity extends AppCompatActivity implements
@Override
protected void onStop() {
super.onStop();
- if (lostApiClient.isConnected()) {
- LocationServices.FusedLocationApi.removeLocationUpdates(this);
- lostApiClient.disconnect();
- }
+ Mapbox.getLocationSource().removeLocationEngineListener(this);
+ Mapbox.getLocationSource().removeLocationUpdates();
+// if (lostApiClient.isConnected()) {
+// LocationServices.FusedLocationApi.removeLocationUpdates(this);
+// lostApiClient.disconnect();
+// }
mapView.onStop();
}
diff --git a/platform/android/build.gradle b/platform/android/build.gradle
index e298b84da8..95d29cadf5 100644
--- a/platform/android/build.gradle
+++ b/platform/android/build.gradle
@@ -11,6 +11,8 @@ buildscript {
allprojects {
repositories {
+ // TODO This has to be updated when https://github.com/mapbox/mapbox-java/pull/502 lands
+ mavenLocal()
jcenter()
maven { url 'https://maven.google.com' }
maven { url "http://oss.sonatype.org/content/repositories/snapshots/" }
diff --git a/platform/android/dependencies.gradle b/platform/android/dependencies.gradle
index 521084559f..3aac3cdd18 100644
--- a/platform/android/dependencies.gradle
+++ b/platform/android/dependencies.gradle
@@ -7,7 +7,8 @@ ext {
versionCode = 11
versionName = "5.0.0"
- mapboxServicesVersion = "2.2.3"
+ // TODO This has to be updated when https://github.com/mapbox/mapbox-java/pull/502 lands
+ mapboxServicesVersion = "2.3.0-SNAPSHOT"
supportLibVersion = "25.4.0"
espressoVersion = '3.0.1'
testRunnerVersion = '1.0.1'