summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorosana <osana.babayan@mapbox.com>2019-01-24 19:19:47 -0500
committer“osana” <osana.babayan@mapbox.com>2019-01-28 16:52:36 -0500
commit366f43b4c2b2c6a5b14f9242ecf74a8931bb95a2 (patch)
tree2b73cf2c082fc85c45994b82210772993589107b
parentb53ea9b487394c915ea1fcd17f6e10f2378a3d43 (diff)
downloadqtlocation-mapboxgl-upstream/osana-telem.tar.gz
[android]added generic performance eventupstream/osana-telem
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TelemetryDefinition.java12
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/PerformanceEvent.java68
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java10
3 files changed, 89 insertions, 1 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..d428895696 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,9 +1,12 @@
package com.mapbox.mapboxsdk.maps;
+import android.os.Bundle;
+
import com.mapbox.mapboxsdk.offline.OfflineRegionDefinition;
/**
- * Definition of TelemetryImpl collection
+ * Definition of TelemetryImpl collection.
+ * Use{@link TelemetryDefinition} for posting the event.
*/
public interface TelemetryDefinition {
@@ -46,4 +49,11 @@ public interface TelemetryDefinition {
* @param offlineDefinition the offline region definition
*/
void onCreateOfflineRegion(OfflineRegionDefinition offlineDefinition);
+
+ /**
+ * Register a performance event.
+ *
+ * @param data performance event data
+ */
+ void onPerformanceEvent(Bundle data);
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/PerformanceEvent.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/PerformanceEvent.java
new file mode 100644
index 0000000000..b88e1885ca
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/PerformanceEvent.java
@@ -0,0 +1,68 @@
+package com.mapbox.mapboxsdk.module.telemetry;
+
+import com.mapbox.android.telemetry.Event;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Generic Performance Event that can be used for performance measurements.
+ * Customer measurements can be added to the bundle.
+ */
+public class PerformanceEvent extends Event {
+ private static final String PERFORMANCE_TRACE = "performance.trace";
+
+ private final String event;
+
+ private final String created;
+
+ private final String sessionId;
+
+ private final Bundle data;
+
+ private static final SimpleDateFormat DATE_FORMAT =
+ new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.US);
+
+ PerformanceEvent(String sessionId, Bundle data) {
+ this.event = PERFORMANCE_TRACE;
+ this.created = DATE_FORMAT.format(new Date());
+ this.sessionId = sessionId;
+ this.data = data;
+ }
+
+ private PerformanceEvent(Parcel in) {
+ this.event = in.readString();
+ this.created = in.readString();
+ this.sessionId = in.readString();
+ this.data = in.readBundle();
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel parcel, int i) {
+ parcel.writeString(event);
+ parcel.writeString(created);
+ parcel.writeString(sessionId);
+ parcel.writeBundle(data);
+ }
+
+ public static final Creator<PerformanceEvent> CREATOR = new Creator<PerformanceEvent>() {
+ @Override
+ public PerformanceEvent createFromParcel(Parcel in) {
+ return new PerformanceEvent(in);
+ }
+
+ @Override
+ public PerformanceEvent[] newArray(int size) {
+ return new PerformanceEvent[size];
+ }
+ };
+}
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..5e021f961e 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
@@ -1,6 +1,7 @@
package com.mapbox.mapboxsdk.module.telemetry;
import android.content.Context;
+import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.mapbox.android.telemetry.AppUserTurnstile;
@@ -17,6 +18,8 @@ import com.mapbox.mapboxsdk.maps.TelemetryDefinition;
import com.mapbox.mapboxsdk.offline.OfflineRegionDefinition;
import com.mapbox.mapboxsdk.offline.OfflineTilePyramidRegionDefinition;
+import java.util.UUID;
+
public class TelemetryImpl implements TelemetryDefinition {
@Nullable
@@ -105,4 +108,11 @@ public class TelemetryImpl implements TelemetryDefinition {
offlineDefinition.getStyleURL())
);
}
+
+ @Override
+ public void onPerformanceEvent(Bundle data) {
+ if (data != null && !data.isEmpty()) {
+ telemetry.push(new PerformanceEvent(UUID.randomUUID().toString(), data));
+ }
+ }
} \ No newline at end of file