summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorosana <osana.babayan@mapbox.com>2018-10-12 18:58:37 -0400
committer“osana” <osana.babayan@mapbox.com>2018-11-14 15:20:03 -0500
commitba2355c81ec5f42bac79542f1254e5955c24b924 (patch)
tree2dfd2ebc1a977bc573de42297c2c507e8b21c4eb
parent86677b97c6d5e7db75358e9f5745dab4cec5d0e4 (diff)
downloadqtlocation-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
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TelemetryDefinition.java25
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java42
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java8
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java21
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);
+ }
}
});
}