From 2c70f4b6dc7d9c9c67f7a78e4290335f137392d9 Mon Sep 17 00:00:00 2001 From: Andrey Li Date: Fri, 26 Oct 2018 09:08:24 -0700 Subject: [android] Initial integration with liblocation 1.0.0 and telemetry 4.0.0, bumped gms to 16.0.0 --- .../mapboxsdk/location/LocationComponent.java | 105 ++++++++++++--------- .../mapboxsdk/location/LocationComponentTest.kt | 21 ----- .../activity/location/LocationFragmentActivity.kt | 25 ++--- .../activity/location/LocationModesActivity.java | 62 ++++++------ .../location/ManualLocationUpdatesActivity.java | 59 +++++++----- platform/android/gradle/dependencies.gradle | 7 +- 6 files changed, 149 insertions(+), 130 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java index fc125ef03a..d0b0bb733d 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java @@ -4,6 +4,7 @@ import android.annotation.SuppressLint; import android.content.Context; import android.hardware.SensorManager; import android.location.Location; +import android.os.Looper; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.RequiresPermission; @@ -11,9 +12,10 @@ import android.support.annotation.StyleRes; import android.view.WindowManager; import com.mapbox.android.core.location.LocationEngine; -import com.mapbox.android.core.location.LocationEngineListener; -import com.mapbox.android.core.location.LocationEnginePriority; +import com.mapbox.android.core.location.LocationEngineCallback; import com.mapbox.android.core.location.LocationEngineProvider; +import com.mapbox.android.core.location.LocationEngineRequest; +import com.mapbox.android.core.location.LocationEngineResult; import com.mapbox.mapboxsdk.R; import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.camera.CameraUpdate; @@ -27,6 +29,9 @@ import com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraMoveListener; import com.mapbox.mapboxsdk.maps.MapboxMap.OnMapClickListener; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; import static android.Manifest.permission.ACCESS_COARSE_LOCATION; import static android.Manifest.permission.ACCESS_FINE_LOCATION; @@ -59,10 +64,10 @@ import static com.mapbox.mapboxsdk.location.LocationComponentConstants.DEFAULT_T * this plugin work as expected. *

* This component offers a default, built-in {@link LocationEngine} with some of the activation methods. - * This engine will be obtained by {@link LocationEngineProvider#obtainBestLocationEngineAvailable} which defaults - * to the {@link com.mapbox.android.core.location.AndroidLocationEngine}. If you'd like to utilize Google Play Services + * This engine will be obtained by {@link LocationEngineProvider#getBestLocationEngine(Context, boolean)} which defaults + * to the {@link com.mapbox.android.core.location.MapboxFusedLocationEngineImpl}. If you'd like to utilize Google Play Services * for more precise location updates, simply add the Google Play Location Services dependency in your build script. - * This will make the default engine the {@link com.mapbox.android.core.location.GoogleLocationEngine} instead. + * This will make the default engine the {@link com.mapbox.android.core.location.GoogleLocationEngineImpl} instead. *

* For location puck animation purposes, like navigation, * we recommend limiting the maximum zoom level of the map for the best user experience. @@ -71,6 +76,8 @@ import static com.mapbox.mapboxsdk.location.LocationComponentConstants.DEFAULT_T */ public final class LocationComponent { private static final String TAG = "Mbgl-LocationComponent"; + private static final long DEFAULT_INTERVAL_MILLIS = 1000; + private static final long DEFAULT_FASTEST_INTERVAL_MILLIS = 1000; @NonNull private final MapboxMap mapboxMap; @@ -489,19 +496,14 @@ public final class LocationComponent { // If internal location engines being used, extra steps need to be taken to deconstruct the // instance. if (usingInternalLocationEngine) { - this.locationEngine.removeLocationUpdates(); - this.locationEngine.deactivate(); usingInternalLocationEngine = false; } - this.locationEngine.removeLocationEngineListener(locationEngineListener); + this.locationEngine.removeLocationUpdates(locationEngineListener); this.locationEngine = null; } if (locationEngine != null) { this.locationEngine = locationEngine; - if (isEnabled) { - this.locationEngine.addLocationEngineListener(locationEngineListener); - } } } @@ -544,11 +546,31 @@ public final class LocationComponent { @Nullable @RequiresPermission(anyOf = {ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION}) public Location getLastKnownLocation() { - Location location = locationEngine != null ? locationEngine.getLastLocation() : null; - if (location == null) { - location = lastLocation; + if (locationEngine == null) { + return null; + } + // TODO: decide if we want to change signature of this method, for now make it work as is + final AtomicReference resultRef = new AtomicReference<>(); + CountDownLatch latch = new CountDownLatch(1); + locationEngine.getLastLocation(new LocationEngineCallback() { + @Override + public void onSuccess(LocationEngineResult result) { + resultRef.set(result); + latch.countDown(); + } + + @Override + public void onFailure(@NonNull Exception exception) { + // TODO: log exception + } + }); + try { + latch.await(2, TimeUnit.SECONDS); + } catch (InterruptedException ie) { + ie.printStackTrace(); } - return location; + LocationEngineResult result = resultRef.get(); + return result != null ? result.getLastLocation() : null; } /** @@ -690,9 +712,6 @@ public final class LocationComponent { * Internal use. */ public void onDestroy() { - if (locationEngine != null && usingInternalLocationEngine) { - locationEngine.deactivate(); - } } /** @@ -731,9 +750,13 @@ public final class LocationComponent { if (isEnabled) { if (locationEngine != null) { - locationEngine.addLocationEngineListener(locationEngineListener); - if (locationEngine.isConnected() && usingInternalLocationEngine) { - locationEngine.requestLocationUpdates(); + if (usingInternalLocationEngine) { + try { + locationEngine.requestLocationUpdates(getLocationRequst(DEFAULT_INTERVAL_MILLIS), + locationEngineListener, Looper.getMainLooper()); + } catch (SecurityException se) { + se.printStackTrace(); + } } } setCameraMode(locationCameraController.getCameraMode()); @@ -754,9 +777,8 @@ public final class LocationComponent { locationAnimatorCoordinator.cancelAllAnimations(); if (locationEngine != null) { if (usingInternalLocationEngine) { - locationEngine.removeLocationUpdates(); + locationEngine.removeLocationUpdates(locationEngineListener); } - locationEngine.removeLocationEngineListener(locationEngineListener); } mapboxMap.removeOnCameraMoveListener(onCameraMoveListener); mapboxMap.removeOnCameraIdleListener(onCameraIdleListener); @@ -801,19 +823,17 @@ public final class LocationComponent { private void initializeLocationEngine(@NonNull Context context) { if (this.locationEngine != null) { - if (usingInternalLocationEngine) { - this.locationEngine.removeLocationUpdates(); - this.locationEngine.deactivate(); - } - this.locationEngine.removeLocationEngineListener(locationEngineListener); + this.locationEngine.removeLocationUpdates(locationEngineListener); } - usingInternalLocationEngine = true; - locationEngine = new LocationEngineProvider(context).obtainBestLocationEngineAvailable(); - locationEngine.setPriority(LocationEnginePriority.HIGH_ACCURACY); - locationEngine.setFastestInterval(1000); - locationEngine.addLocationEngineListener(locationEngineListener); - locationEngine.activate(); + locationEngine = LocationEngineProvider.getBestLocationEngine(context, false); + } + + private static LocationEngineRequest getLocationRequst(long interval) { + return new LocationEngineRequest.Builder(interval) + .setFastestInterval(DEFAULT_FASTEST_INTERVAL_MILLIS) + .setPriority(LocationEngineRequest.PRIORITY_HIGH_ACCURACY) + .build(); } private void enableLocationComponent() { @@ -986,18 +1006,19 @@ public final class LocationComponent { }; @NonNull - private LocationEngineListener locationEngineListener = new LocationEngineListener() { + private LocationEngineCallback locationEngineListener = + new LocationEngineCallback() { @Override - @SuppressWarnings( {"MissingPermission"}) - public void onConnected() { - if (usingInternalLocationEngine && isLayerReady && isEnabled) { - locationEngine.requestLocationUpdates(); + public void onSuccess(LocationEngineResult result) { + Location location = result.getLastLocation(); + if (location != null) { + updateLocation(location, false); } } @Override - public void onLocationChanged(Location location) { - updateLocation(location, false); + public void onFailure(@NonNull Exception exception) { + // TODO: handle error } }; @@ -1019,4 +1040,4 @@ public final class LocationComponent { } } }; -} +} \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/location/LocationComponentTest.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/location/LocationComponentTest.kt index 444b478219..adb01241c4 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/location/LocationComponentTest.kt +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/location/LocationComponentTest.kt @@ -77,7 +77,6 @@ class LocationComponentTest : BaseActivityTest() { assertThat(locationEngine, notNullValue()) uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY) - assertThat(locationEngine?.isConnected, `is`(true)) } } @@ -107,7 +106,6 @@ class LocationComponentTest : BaseActivityTest() { assertThat(componentOptions, notNullValue()) uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY) - assertThat(locationEngine?.isConnected, `is`(true)) assertThat(componentOptions?.accuracyAlpha(), `is`(.5f)) assertThat(componentOptions?.accuracyColor(), `is`(Color.BLUE)) } @@ -1174,25 +1172,6 @@ class LocationComponentTest : BaseActivityTest() { executeComponentTest(componentAction) } - @Test - fun defaultLocationEngine_deactivatedWhenDestroyed() { - val componentAction = object : LocationComponentAction.OnPerformLocationComponentAction { - override fun onLocationComponentAction(component: LocationComponent, mapboxMap: MapboxMap, - uiController: UiController, context: Context) { - component.activateLocationComponent(context) - component.isLocationComponentEnabled = true - uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY) - assertThat(component.locationEngine?.isConnected, `is`(true)) - - component.onStop() - component.onDestroy() - assertThat(component.locationEngine?.isConnected, `is`(false)) - } - } - - executeComponentTest(componentAction) - } - @After override fun afterTest() { super.afterTest() diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/LocationFragmentActivity.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/LocationFragmentActivity.kt index 035ad67e12..98fe13e8eb 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/LocationFragmentActivity.kt +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/LocationFragmentActivity.kt @@ -10,7 +10,10 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import android.widget.Toast -import com.mapbox.android.core.location.LocationEngineListener +import com.mapbox.android.core.location.LocationEngine +import com.mapbox.android.core.location.LocationEngineCallback +import com.mapbox.android.core.location.LocationEngineProvider +import com.mapbox.android.core.location.LocationEngineResult import com.mapbox.android.core.permissions.PermissionsListener import com.mapbox.android.core.permissions.PermissionsManager import com.mapbox.mapboxsdk.camera.CameraUpdateFactory @@ -20,6 +23,7 @@ import com.mapbox.mapboxsdk.maps.MapboxMap import com.mapbox.mapboxsdk.location.LocationComponent import com.mapbox.mapboxsdk.testapp.R import kotlinx.android.synthetic.main.activity_location_layer_fragment.* +import java.lang.Exception class LocationFragmentActivity : AppCompatActivity() { private lateinit var permissionsManager: PermissionsManager @@ -78,7 +82,7 @@ class LocationFragmentActivity : AppCompatActivity() { permissionsManager.onRequestPermissionsResult(requestCode, permissions, grantResults) } - class LocationFragment : Fragment(), LocationEngineListener { + class LocationFragment : Fragment(), LocationEngineCallback { companion object { const val TAG = "LFragment" fun newInstance(): LocationFragment { @@ -101,21 +105,19 @@ class LocationFragmentActivity : AppCompatActivity() { mapView.getMapAsync { mapboxMap = it component = mapboxMap.locationComponent - component?.activateLocationComponent(activity) + component?.activateLocationComponent(activity, + LocationEngineProvider.getBestLocationEngine(activity, false)) component?.isLocationComponentEnabled = true - component?.locationEngine?.addLocationEngineListener(this) + component?.locationEngine?.getLastLocation(this) } } - override fun onLocationChanged(location: Location?) { - if (location != null) { - mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom(LatLng(location), 12.0)) - component?.locationEngine?.removeLocationEngineListener(this) - } + override fun onSuccess(result: LocationEngineResult?) { + mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom(LatLng(result?.lastLocation), 12.0)) } - override fun onConnected() { - // no impl + override fun onFailure(exception: Exception) { + //noop } override fun onStart() { @@ -151,7 +153,6 @@ class LocationFragmentActivity : AppCompatActivity() { override fun onDestroyView() { super.onDestroyView() mapView.onDestroy() - component?.locationEngine?.removeLocationEngineListener(this) } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/LocationModesActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/LocationModesActivity.java index c3de31cdca..078b5c7ab5 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/LocationModesActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/LocationModesActivity.java @@ -4,6 +4,7 @@ import android.annotation.SuppressLint; import android.content.res.Configuration; import android.location.Location; import android.os.Bundle; +import android.os.Looper; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.ListPopupWindow; @@ -15,9 +16,10 @@ import android.widget.Button; import android.widget.Toast; import com.mapbox.android.core.location.LocationEngine; -import com.mapbox.android.core.location.LocationEngineListener; -import com.mapbox.android.core.location.LocationEnginePriority; +import com.mapbox.android.core.location.LocationEngineCallback; import com.mapbox.android.core.location.LocationEngineProvider; +import com.mapbox.android.core.location.LocationEngineRequest; +import com.mapbox.android.core.location.LocationEngineResult; import com.mapbox.android.core.permissions.PermissionsListener; import com.mapbox.android.core.permissions.PermissionsManager; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; @@ -37,7 +39,10 @@ import java.util.ArrayList; import java.util.List; public class LocationModesActivity extends AppCompatActivity implements OnMapReadyCallback, - LocationEngineListener, OnLocationClickListener, OnCameraTrackingChangedListener { + OnLocationClickListener, OnCameraTrackingChangedListener { + + private static final long DEFAULT_INTERVAL_MILLIS = 1000; + private static final long DEFAULT_FASTEST_INTERVAL_MILLIS = 1000; private MapView mapView; private Button locationModeBtn; @@ -62,6 +67,8 @@ public class LocationModesActivity extends AppCompatActivity implements OnMapRea private Location lastLocation; + private LocationEngineCallback locationEngineCallback; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -134,11 +141,19 @@ public class LocationModesActivity extends AppCompatActivity implements OnMapRea public void onMapReady(@NonNull MapboxMap mapboxMap) { this.mapboxMap = mapboxMap; - locationEngine = new LocationEngineProvider(this).obtainBestLocationEngineAvailable(); - locationEngine.setPriority(LocationEnginePriority.HIGH_ACCURACY); - locationEngine.setFastestInterval(1000); - locationEngine.addLocationEngineListener(this); - locationEngine.activate(); + locationEngine = LocationEngineProvider.getBestLocationEngine(getApplicationContext(), + false); + locationEngineCallback = new LocationEngineCallback() { + @Override + public void onSuccess(LocationEngineResult result) { + // noop + } + + @Override + public void onFailure(@NonNull Exception exception) { + // noop + } + }; int[] padding; if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { @@ -230,16 +245,15 @@ public class LocationModesActivity extends AppCompatActivity implements OnMapRea } @Override - @SuppressWarnings( {"MissingPermission"}) protected void onStart() { super.onStart(); mapView.onStart(); if (locationEngine != null) { - locationEngine.addLocationEngineListener(this); - if (locationEngine.isConnected()) { - locationEngine.requestLocationUpdates(); - } else { - locationEngine.activate(); + try { + locationEngine.requestLocationUpdates(getLocationRequst(DEFAULT_INTERVAL_MILLIS), + locationEngineCallback, Looper.getMainLooper()); + } catch (SecurityException se) { + se.printStackTrace(); } } } @@ -261,8 +275,7 @@ public class LocationModesActivity extends AppCompatActivity implements OnMapRea super.onStop(); mapView.onStop(); if (locationEngine != null) { - locationEngine.removeLocationEngineListener(this); - locationEngine.removeLocationUpdates(); + locationEngine.removeLocationUpdates(locationEngineCallback); } } @@ -282,9 +295,6 @@ public class LocationModesActivity extends AppCompatActivity implements OnMapRea protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); - if (locationEngine != null) { - locationEngine.deactivate(); - } } @Override @@ -293,15 +303,11 @@ public class LocationModesActivity extends AppCompatActivity implements OnMapRea mapView.onLowMemory(); } - @Override - @SuppressWarnings( {"MissingPermission"}) - public void onConnected() { - locationEngine.requestLocationUpdates(); - } - - @Override - public void onLocationChanged(Location location) { - // no impl + private static LocationEngineRequest getLocationRequst(long interval) { + return new LocationEngineRequest.Builder(interval) + .setFastestInterval(DEFAULT_FASTEST_INTERVAL_MILLIS) + .setPriority(LocationEngineRequest.PRIORITY_HIGH_ACCURACY) + .build(); } @Override diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/ManualLocationUpdatesActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/ManualLocationUpdatesActivity.java index c7926364dc..ee65b97570 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/ManualLocationUpdatesActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/ManualLocationUpdatesActivity.java @@ -2,6 +2,7 @@ package com.mapbox.mapboxsdk.testapp.activity.location; import android.location.Location; import android.os.Bundle; +import android.os.Looper; import android.support.annotation.NonNull; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; @@ -9,9 +10,10 @@ import android.view.View; import android.widget.Toast; import com.mapbox.android.core.location.LocationEngine; -import com.mapbox.android.core.location.LocationEngineListener; -import com.mapbox.android.core.location.LocationEnginePriority; +import com.mapbox.android.core.location.LocationEngineCallback; import com.mapbox.android.core.location.LocationEngineProvider; +import com.mapbox.android.core.location.LocationEngineRequest; +import com.mapbox.android.core.location.LocationEngineResult; import com.mapbox.android.core.permissions.PermissionsListener; import com.mapbox.android.core.permissions.PermissionsManager; import com.mapbox.mapboxsdk.geometry.LatLngBounds; @@ -27,7 +29,10 @@ import java.util.List; import timber.log.Timber; public class ManualLocationUpdatesActivity extends AppCompatActivity implements OnMapReadyCallback, - LocationEngineListener { + LocationEngineCallback { + + private static final long DEFAULT_INTERVAL_MILLIS = 1000; + private static final long DEFAULT_FASTEST_INTERVAL_MILLIS = 1000; private MapView mapView; private LocationComponent locationComponent; @@ -116,35 +121,32 @@ public class ManualLocationUpdatesActivity extends AppCompatActivity implements @Override public void onMapReady(@NonNull MapboxMap mapboxMap) { - locationEngine = new LocationEngineProvider(this).obtainBestLocationEngineAvailable(); - locationEngine.addLocationEngineListener(this); - locationEngine.setPriority(LocationEnginePriority.HIGH_ACCURACY); - locationEngine.activate(); + locationEngine = LocationEngineProvider.getBestLocationEngine(getApplicationContext(), + false); locationComponent = mapboxMap.getLocationComponent(); locationComponent.activateLocationComponent(this, locationEngine); locationComponent.setLocationComponentEnabled(true); locationComponent.setRenderMode(RenderMode.COMPASS); } - @Override - @SuppressWarnings( {"MissingPermission"}) - public void onConnected() { - locationEngine.requestLocationUpdates(); - } - - @Override - public void onLocationChanged(Location location) { - Timber.d("Location change occurred: %s", location.toString()); + private static LocationEngineRequest getLocationRequst(long interval) { + return new LocationEngineRequest.Builder(interval) + .setFastestInterval(DEFAULT_FASTEST_INTERVAL_MILLIS) + .setPriority(LocationEngineRequest.PRIORITY_HIGH_ACCURACY) + .build(); } @Override - @SuppressWarnings( {"MissingPermission"}) protected void onStart() { super.onStart(); mapView.onStart(); if (locationEngine != null) { - locationEngine.requestLocationUpdates(); - locationEngine.addLocationEngineListener(this); + try { + locationEngine.requestLocationUpdates(getLocationRequst(DEFAULT_INTERVAL_MILLIS), + this, Looper.getMainLooper()); + } catch (SecurityException se) { + se.printStackTrace(); + } } } @@ -165,8 +167,7 @@ public class ManualLocationUpdatesActivity extends AppCompatActivity implements super.onStop(); mapView.onStop(); if (locationEngine != null) { - locationEngine.removeLocationEngineListener(this); - locationEngine.removeLocationUpdates(); + locationEngine.removeLocationUpdates(this); } } @@ -180,9 +181,6 @@ public class ManualLocationUpdatesActivity extends AppCompatActivity implements protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); - if (locationEngine != null) { - locationEngine.deactivate(); - } } @Override @@ -190,4 +188,17 @@ public class ManualLocationUpdatesActivity extends AppCompatActivity implements super.onLowMemory(); mapView.onLowMemory(); } + + @Override + public void onSuccess(LocationEngineResult result) { + Location location = result.getLastLocation(); + if (location != null) { + Timber.d("Location change occurred: %s", location.toString()); + } + } + + @Override + public void onFailure(@NonNull Exception exception) { + Timber.d("Location engine error occurred: %s", exception.getMessage()); + } } \ No newline at end of file diff --git a/platform/android/gradle/dependencies.gradle b/platform/android/gradle/dependencies.gradle index a076cad4bf..296572d214 100644 --- a/platform/android/gradle/dependencies.gradle +++ b/platform/android/gradle/dependencies.gradle @@ -9,7 +9,7 @@ ext { versions = [ mapboxServices : '4.1.0', - mapboxTelemetry : '3.5.4', + mapboxTelemetry : '4.0.0', mapboxGestures : '0.3.0', supportLib : '27.1.1', constraintLayout: '1.1.2', @@ -23,7 +23,8 @@ ext { okhttp : '3.11.0', kotlin : '1.2.51', licenses : '0.8.41', - lint : '26.1.3' + lint : '26.1.3', + gms : '16.0.0' ] dependenciesList = [ @@ -53,7 +54,7 @@ ext { supportRecyclerView : "com.android.support:recyclerview-v7:${versions.supportLib}", supportConstraintLayout: "com.android.support.constraint:constraint-layout:${versions.constraintLayout}", - gmsLocation : 'com.google.android.gms:play-services-location:11.0.4', + gmsLocation : "com.google.android.gms:play-services-location:${versions.gms}", timber : "com.jakewharton.timber:timber:${versions.timber}", okhttp3 : "com.squareup.okhttp3:okhttp:${versions.okhttp}", leakCanaryDebug : "com.squareup.leakcanary:leakcanary-android:${versions.leakCanary}", -- cgit v1.2.1