1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
package com.mapbox.mapboxsdk.module.telemetry;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.FloatRange;
import android.support.annotation.NonNull;
import com.mapbox.android.accounts.v1.MapboxAccounts;
import com.mapbox.android.telemetry.AppUserTurnstile;
import com.mapbox.android.telemetry.MapboxTelemetry;
import com.mapbox.android.telemetry.SessionInterval;
import com.mapbox.android.telemetry.TelemetryEnabler;
import com.mapbox.mapboxsdk.BuildConfig;
import com.mapbox.mapboxsdk.Mapbox;
import com.mapbox.mapboxsdk.constants.MapboxConstants;
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 {
private final MapboxTelemetry telemetry;
private final Context appContext;
public TelemetryImpl() {
appContext = Mapbox.getApplicationContext();
String accessToken = Mapbox.getAccessToken();
telemetry = new MapboxTelemetry(appContext, accessToken, BuildConfig.MAPBOX_EVENTS_USER_AGENT);
TelemetryEnabler.State telemetryState = TelemetryEnabler.retrieveTelemetryStateFromPreferences();
if (TelemetryEnabler.State.ENABLED.equals(telemetryState)) {
telemetry.enable();
}
}
/**
* Register the app user turnstile event
*/
@Override
public void onAppUserTurnstileEvent() {
AppUserTurnstile turnstileEvent = new AppUserTurnstile(BuildConfig.MAPBOX_SDK_IDENTIFIER,
BuildConfig.MAPBOX_SDK_VERSION);
turnstileEvent.setSkuId(MapboxAccounts.SKU_ID_MAPS_MAUS);
telemetry.push(turnstileEvent);
telemetry.push(MapEventFactory.buildMapLoadEvent(new PhoneState(appContext)));
}
/**
* Register an end-user gesture interaction event.
*
* @param eventType type of gesture event occurred
* @param latitude the latitude value of the gesture focal point
* @param longitude the longitude value of the gesture focal point
* @param zoom current zoom of the map
* @deprecated since 7.5.0, this event is no longer supported
*/
@Deprecated
@Override
public void onGestureInteraction(String eventType, double latitude, double longitude,
@FloatRange(from = MapboxConstants.MINIMUM_ZOOM,
to = MapboxConstants.MAXIMUM_ZOOM) double zoom) {
//no-op
}
/**
* Set the end-user selected state to participate or opt-out in telemetry collection.
*
* @param enabledTelemetry true if enabled, false otherwise
*/
@Override
public void setUserTelemetryRequestState(boolean enabledTelemetry) {
if (enabledTelemetry) {
TelemetryEnabler.updateTelemetryState(TelemetryEnabler.State.ENABLED);
telemetry.enable();
} else {
telemetry.disable();
TelemetryEnabler.updateTelemetryState(TelemetryEnabler.State.DISABLED);
}
}
@Override
public void disableTelemetrySession() {
telemetry.disable();
}
/**
* Set the debug logging state of telemetry.
*
* @param debugLoggingEnabled true to enable logging
*/
@Override
public void setDebugLoggingEnabled(boolean debugLoggingEnabled) {
telemetry.updateDebugLoggingEnabled(debugLoggingEnabled);
}
/**
* Set the telemetry rotation session id interval
*
* @param interval the selected session interval
* @return true if rotation session id was updated
*/
@Override
public boolean setSessionIdRotationInterval(int interval) {
return telemetry.updateSessionIdRotationInterval(new SessionInterval(interval));
}
/**
* Register an offline region creation event.
*
* @param offlineDefinition the offline region definition
*/
@Override
public void onCreateOfflineRegion(@NonNull OfflineRegionDefinition offlineDefinition) {
telemetry.push(MapEventFactory.buildOfflineDownloadStartEvent(new PhoneState(appContext),
offlineDefinition instanceof OfflineTilePyramidRegionDefinition ? "tileregion" : "shaperegion",
offlineDefinition.getMinZoom(),
offlineDefinition.getMaxZoom(),
offlineDefinition.getStyleURL())
);
}
/**
* Register a performance event
*
* @param data performance event data
*/
@Override
public void onPerformanceEvent(Bundle data) {
if (data == null) {
data = new Bundle();
}
telemetry.push(MapEventFactory.buildPerformanceEvent(new PhoneState(appContext),
UUID.randomUUID().toString(), data));
}
}
|