diff options
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.java | 34 |
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; } } |