From c534fddb1fc93484da0caf36042912c78e378288 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=83=C2=A2=C3=82=C2=80=C3=82=C2=9Cosana=C3=83=C2=A2?= =?UTF-8?q?=C3=82=C2=80=C3=82=C2=9D?= Date: Tue, 14 May 2019 12:51:32 -0400 Subject: [android] added connectivity state attribute to tile loading metric --- .../testapp/utils/TileLoadingMeasurementUtils.java | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) 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> 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 { -- cgit v1.2.1