From ce37879231514cfc60e66454ca493c2d76765318 Mon Sep 17 00:00:00 2001 From: Osana Babayan <32496536+osana@users.noreply.github.com> Date: Wed, 30 Jan 2019 10:17:56 -0500 Subject: [android]added generic performance event (#13795) --- .../mapbox/mapboxsdk/maps/TelemetryDefinition.java | 12 +++- .../module/telemetry/PerformanceEvent.java | 68 ++++++++++++++++++++++ .../mapboxsdk/module/telemetry/TelemetryImpl.java | 10 ++++ 3 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/PerformanceEvent.java 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 CREATOR = new Creator() { + @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 -- cgit v1.2.1