diff --git a/platform/android/CHANGELOG.md b/platform/android/CHANGELOG.md index 8dcdcb296d3..b60ae71938d 100644 --- a/platform/android/CHANGELOG.md +++ b/platform/android/CHANGELOG.md @@ -18,6 +18,7 @@ Mapbox welcomes participation and contributions from everyone. If you'd like to * Polygon holes [#8557](https://github.com/mapbox/mapbox-gl-native/pull/8557) and [#8722](https://github.com/mapbox/mapbox-gl-native/pull/8722) * Custom location source [#8710](https://github.com/mapbox/mapbox-gl-native/pull/8710) * Ensure surface is created after display and context [#8759](https://github.com/mapbox/mapbox-gl-native/pull/8759) +* Harden telemetry event dispatch [#8767](https://github.com/mapbox/mapbox-gl-native/pull/8767) ## 5.0.2 - April 3, 2017 diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java index 85f6dc7e0ec..dca833bbf48 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java @@ -153,9 +153,9 @@ boolean onTouchEvent(@NonNull MotionEvent event) { && uiSettings.isZoomGesturesEnabled(); if (twoTap) { // Confirmed 2nd Finger Down - MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapClickEvent( + MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapClickEvent( getLocationFromGesture(event.getX(), event.getY()), - MapboxEvent.GESTURE_TWO_FINGER_SINGLETAP, transform.getZoom())); + MapboxEvent.GESTURE_TWO_FINGER_SINGLETAP, transform)); } break; @@ -184,8 +184,8 @@ boolean onTouchEvent(@NonNull MotionEvent event) { // Scroll / Pan Has Stopped if (scrollInProgress) { - MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapDragEndEvent( - getLocationFromGesture(event.getX(), event.getY()), transform.getZoom())); + MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapDragEndEvent( + getLocationFromGesture(event.getX(), event.getY()), transform)); scrollInProgress = false; } @@ -284,9 +284,9 @@ public boolean onDoubleTapEvent(MotionEvent e) { break; } - MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapClickEvent( + MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapClickEvent( getLocationFromGesture(e.getX(), e.getY()), - MapboxEvent.GESTURE_DOUBLETAP, transform.getZoom())); + MapboxEvent.GESTURE_DOUBLETAP, transform)); return true; } @@ -315,9 +315,9 @@ public boolean onSingleTapConfirmed(MotionEvent motionEvent) { } } - MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapClickEvent( + MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapClickEvent( getLocationFromGesture(motionEvent.getX(), motionEvent.getY()), - MapboxEvent.GESTURE_SINGLETAP, transform.getZoom())); + MapboxEvent.GESTURE_SINGLETAP, transform)); return true; } @@ -377,9 +377,9 @@ public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float ve public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if (!scrollInProgress) { scrollInProgress = true; - MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapClickEvent( + MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapClickEvent( getLocationFromGesture(e1.getX(), e1.getY()), - MapboxEvent.GESTURE_PAN_START, transform.getZoom())); + MapboxEvent.GESTURE_PAN_START, transform)); } if (!trackingSettings.isScrollGestureCurrentlyEnabled()) { return false; @@ -421,9 +421,9 @@ public boolean onScaleBegin(ScaleGestureDetector detector) { scaleGestureOccurred = true; beginTime = detector.getEventTime(); - MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapClickEvent( + MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapClickEvent( getLocationFromGesture(detector.getFocusX(), detector.getFocusY()), - MapboxEvent.GESTURE_PINCH_START, transform.getZoom())); + MapboxEvent.GESTURE_PINCH_START, transform)); return true; } @@ -513,9 +513,9 @@ public boolean onRotateBegin(RotateGestureDetector detector) { } beginTime = detector.getEventTime(); - MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapClickEvent( + MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapClickEvent( getLocationFromGesture(detector.getFocusX(), detector.getFocusY()), - MapboxEvent.GESTURE_ROTATION_START, transform.getZoom())); + MapboxEvent.GESTURE_ROTATION_START, transform)); return true; } @@ -594,9 +594,9 @@ public boolean onShoveBegin(ShoveGestureDetector detector) { } beginTime = detector.getEventTime(); - MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapClickEvent( + MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapClickEvent( getLocationFromGesture(detector.getFocusX(), detector.getFocusY()), - MapboxEvent.GESTURE_PITCH_START, transform.getZoom())); + MapboxEvent.GESTURE_PITCH_START, transform)); return true; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index fc7042f3862..872802292c4 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -36,7 +36,6 @@ import com.mapbox.mapboxsdk.maps.widgets.MyLocationView; import com.mapbox.mapboxsdk.maps.widgets.MyLocationViewSettings; import com.mapbox.mapboxsdk.net.ConnectivityReceiver; -import com.mapbox.services.android.telemetry.MapboxEvent; import com.mapbox.services.android.telemetry.MapboxTelemetry; import java.lang.annotation.Retention; @@ -188,7 +187,7 @@ private void initialise(@NonNull final Context context, @NonNull final MapboxMap @UiThread public void onCreate(@Nullable Bundle savedInstanceState) { if (savedInstanceState == null) { - MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapLoadEvent()); + MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapLoadEvent()); } else if (savedInstanceState.getBoolean(MapboxConstants.STATE_HAS_SAVED_STATE)) { mapboxMap.onRestoreInstanceState(savedInstanceState); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxEventWrapper.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxEventWrapper.java new file mode 100644 index 00000000000..97734de4933 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxEventWrapper.java @@ -0,0 +1,48 @@ +package com.mapbox.mapboxsdk.maps; + +import android.location.Location; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; + +import com.mapbox.services.android.telemetry.MapboxEvent; + +import java.util.Hashtable; + +/** + * Wrapper class for MapboxEvent + *
+ * Provides facility methods to use Transform and handle the case that the zoom, required for a telemetry event, + * isn't available yet. + *
+ */ +class MapboxEventWrapper { + + @Nullable + static Hashtable