diff options
author | osana <osana.babayan@mapbox.com> | 2018-10-12 18:58:37 -0400 |
---|---|---|
committer | “osana” <osana.babayan@mapbox.com> | 2018-11-14 15:20:03 -0500 |
commit | ba2355c81ec5f42bac79542f1254e5955c24b924 (patch) | |
tree | 2dfd2ebc1a977bc573de42297c2c507e8b21c4eb | |
parent | 86677b97c6d5e7db75358e9f5745dab4cec5d0e4 (diff) | |
download | qtlocation-mapboxgl-upstream/osana-offline-event.tar.gz |
[android] track offline downlad start and offline download end (success/failure)upstream/osana-offline-event
instead offline download created
4 files changed, 81 insertions, 15 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TelemetryDefinition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TelemetryDefinition.java index 3918c67129..00644c17ee 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TelemetryDefinition.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TelemetryDefinition.java @@ -1,6 +1,10 @@ package com.mapbox.mapboxsdk.maps; +import android.support.annotation.NonNull; + import com.mapbox.mapboxsdk.offline.OfflineRegionDefinition; +import com.mapbox.mapboxsdk.offline.OfflineRegionError; +import com.mapbox.mapboxsdk.offline.OfflineRegionStatus; /** * Definition of TelemetryImpl collection @@ -41,9 +45,26 @@ public interface TelemetryDefinition { boolean setSessionIdRotationInterval(int interval); /** - * Register an end-user offline download event. + * Register an end-user offline download start event. + * + * @param offlineDefinition the offline region definition + */ + void onOfflineDownloadStart(@NonNull OfflineRegionDefinition offlineDefinition); + + /** + * Register an end-user offline download end with success event. * * @param offlineDefinition the offline region definition */ - void onCreateOfflineRegion(OfflineRegionDefinition offlineDefinition); + void onOfflineDownloadEndSuccess(@NonNull OfflineRegionDefinition offlineDefinition, + @NonNull OfflineRegionStatus status); + + /** + * Register an end-user offline download end with failure event. + * + * @param offlineDefinition the offline region definition + */ + void onOfflineDownloadEndFailure(@NonNull OfflineRegionDefinition offlineDefinition, + @NonNull OfflineRegionError error); + } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java index 56857d94c9..7727aa547f 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java @@ -15,7 +15,8 @@ import com.mapbox.mapboxsdk.BuildConfig; import com.mapbox.mapboxsdk.Mapbox; import com.mapbox.mapboxsdk.maps.TelemetryDefinition; import com.mapbox.mapboxsdk.offline.OfflineRegionDefinition; -import com.mapbox.mapboxsdk.offline.OfflineTilePyramidRegionDefinition; +import com.mapbox.mapboxsdk.offline.OfflineRegionError; +import com.mapbox.mapboxsdk.offline.OfflineRegionStatus; public class TelemetryImpl implements TelemetryDefinition { @@ -96,13 +97,44 @@ public class TelemetryImpl implements TelemetryDefinition { } @Override - public void onCreateOfflineRegion(@NonNull OfflineRegionDefinition offlineDefinition) { + public void onOfflineDownloadStart(@NonNull OfflineRegionDefinition offlineDefinition) { MapEventFactory mapEventFactory = new MapEventFactory(); telemetry.push(mapEventFactory.createOfflineDownloadStartEvent( - offlineDefinition instanceof OfflineTilePyramidRegionDefinition ? "tileregion" : "shaperegion", + offlineDefinition.getType(), + offlineDefinition.getMinZoom(), + offlineDefinition.getMaxZoom(), + offlineDefinition.getStyleURL()) + ); + } + + @Override + public void onOfflineDownloadEndSuccess(@NonNull OfflineRegionDefinition offlineDefinition, + @NonNull OfflineRegionStatus status) { + + if (status.isComplete()) { + telemetry.push(new MapEventFactory().createOfflineDownloadCompleteEvent( + offlineDefinition.getType(), + offlineDefinition.getMinZoom(), + offlineDefinition.getMaxZoom(), + offlineDefinition.getStyleURL(), + status.getCompletedResourceSize(), + status.getCompletedTileCount(), + "success" + )); + } + } + + @Override + public void onOfflineDownloadEndFailure(@NonNull OfflineRegionDefinition offlineDefinition, + @NonNull OfflineRegionError error) { + + telemetry.push(new MapEventFactory().createOfflineDownloadCompleteEvent( + offlineDefinition.getType(), offlineDefinition.getMinZoom(), offlineDefinition.getMaxZoom(), - offlineDefinition.getStyleURL()) - ); + offlineDefinition.getStyleURL(), + 0L, 0L, + "failure" + )); } }
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java index 6731efd4b8..873b033aa3 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java @@ -10,11 +10,9 @@ import android.support.annotation.NonNull; import com.mapbox.mapboxsdk.LibraryLoader; import com.mapbox.mapboxsdk.MapStrictMode; -import com.mapbox.mapboxsdk.Mapbox; import com.mapbox.mapboxsdk.R; import com.mapbox.mapboxsdk.geometry.LatLngBounds; import com.mapbox.mapboxsdk.log.Logger; -import com.mapbox.mapboxsdk.maps.TelemetryDefinition; import com.mapbox.mapboxsdk.net.ConnectivityReceiver; import com.mapbox.mapboxsdk.storage.FileSource; import com.mapbox.mapboxsdk.utils.FileUtils; @@ -419,12 +417,6 @@ public class OfflineManager { }); } }); - - TelemetryDefinition telemetry = Mapbox.getTelemetry(); - if (telemetry != null) { - LatLngBounds bounds = definition.getBounds(); - telemetry.onCreateOfflineRegion(definition); - } } /** diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java index 7bcc6ad234..6a5e2bc294 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java @@ -6,8 +6,10 @@ import android.support.annotation.IntDef; import android.support.annotation.Keep; import android.support.annotation.NonNull; import android.support.annotation.Nullable; + import com.mapbox.mapboxsdk.LibraryLoader; import com.mapbox.mapboxsdk.Mapbox; +import com.mapbox.mapboxsdk.maps.TelemetryDefinition; import com.mapbox.mapboxsdk.storage.FileSource; import java.lang.annotation.Retention; @@ -45,6 +47,12 @@ public class OfflineRegion { private OfflineRegionDefinition definition; + private TelemetryDefinition telemetry; + + private static final String TAG = "OfflineRegion"; + + private boolean isLoading = false; + /** * Arbitrary binary region metadata. The contents are opaque to the SDK implementation; * it just stores and retrieves a byte[]. Check the `OfflineActivity` in the TestApp @@ -228,6 +236,7 @@ public class OfflineRegion { this.definition = definition; this.metadata = metadata; initialize(offlineRegionPtr, fileSource); + telemetry = Mapbox.getTelemetry(); } /* @@ -262,6 +271,15 @@ public class OfflineRegion { if (observer != null) { observer.onStatusChanged(status); } + if (telemetry != null) { + if (!isLoading && status.getDownloadState() == STATE_ACTIVE) { + telemetry.onOfflineDownloadStart(definition); + + } else if (status.isComplete()) { + telemetry.onOfflineDownloadEndSuccess(definition, status); + } + } + isLoading = status.getDownloadState() == STATE_ACTIVE; } }); } @@ -276,6 +294,9 @@ public class OfflineRegion { if (observer != null) { observer.onError(error); } + if (telemetry != null) { + telemetry.onOfflineDownloadEndFailure(definition, error); + } } }); } |