summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author“osana” <osana.babayan@mapbox.com>2019-05-14 12:51:32 -0400
committer“osana” <osana.babayan@mapbox.com>2019-05-14 18:14:34 -0400
commitc534fddb1fc93484da0caf36042912c78e378288 (patch)
treebdc8056ae99374bf72ac978a81a8b0047144b94c
parent0613e502f0cefd113cecb2ff7a1dc7d343626f25 (diff)
downloadqtlocation-mapboxgl-upstream/osana-perf-event-connectivity.tar.gz
[android] added connectivity state attribute to tile loading metricupstream/osana-perf-event-connectivity
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/TileLoadingMeasurementUtils.java49
1 files changed, 49 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/TileLoadingMeasurementUtils.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/TileLoadingMeasurementUtils.java
index 3247f30839..c8af9aee21 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/TileLoadingMeasurementUtils.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/TileLoadingMeasurementUtils.java
@@ -4,9 +4,13 @@ import android.app.ActivityManager;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
+import android.net.ConnectivityManager;
+import android.net.NetworkCapabilities;
+import android.net.NetworkInfo;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
+import android.support.annotation.StringDef;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;
@@ -18,6 +22,8 @@ import com.mapbox.mapboxsdk.Mapbox;
import com.mapbox.mapboxsdk.module.http.HttpRequestUtil;
import java.io.IOException;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -82,6 +88,14 @@ public class TileLoadingMeasurementUtils {
private static String metadata = null;
+ @StringDef( {CONNECTION_NONE, CONNECTION_CELLULAR, CONNECTION_WIFI})
+ @Retention(RetentionPolicy.SOURCE)
+ @interface ConnectionState {
+ }
+ private static final String CONNECTION_NONE = "none";
+ private static final String CONNECTION_CELLULAR = "cellular";
+ private static final String CONNECTION_WIFI = "wifi";
+
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
@@ -100,6 +114,8 @@ public class TileLoadingMeasurementUtils {
String request = getUrl(response.request());
attributes.add(new Attribute<>("requestUrl", request));
attributes.add(new Attribute<>("responseCode", String.valueOf(response.code())));
+ attributes.add(
+ new Attribute<>("connectionState", getConnectionState()));
List<Attribute<Long>> counters = new ArrayList();
counters.add(new Attribute<>("elapsedMS", elapsedMs));
@@ -154,6 +170,39 @@ public class TileLoadingMeasurementUtils {
int height = metrics.heightPixels;
return "{" + width + "," + height + "}";
}
+
+ @ConnectionState
+ private static String getConnectionState() {
+ Context appContext = Mapbox.getApplicationContext();
+ ConnectivityManager connectivityManager =
+ (ConnectivityManager) appContext.getSystemService(Context.CONNECTIVITY_SERVICE);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ if (connectivityManager != null) {
+ NetworkCapabilities capabilities =
+ connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
+ if (capabilities != null) {
+ if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
+ return CONNECTION_WIFI;
+ } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
+ return CONNECTION_CELLULAR;
+ }
+ }
+ }
+ } else {
+ if (connectivityManager != null) {
+ NetworkInfo activeNetwork = connectivityManager.getActiveNetworkInfo();
+ if (activeNetwork != null) {
+ if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
+ return CONNECTION_WIFI;
+ } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
+ return CONNECTION_CELLULAR;
+ }
+ }
+ }
+ }
+ return CONNECTION_NONE;
+ }
}
private static class Attribute<T> {