summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java34
1 files changed, 27 insertions, 7 deletions
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;
}
}