From 4eff6a3a9c495c757b11ba2e84e96a73ee0260bf Mon Sep 17 00:00:00 2001 From: osana Date: Fri, 5 Apr 2019 17:37:48 -0400 Subject: [PATCH] Tile loading performance measurement --- .../mapboxandroiddemo/MapboxApplication.java | 13 ++ .../src/global/AndroidManifest.xml | 3 +- .../mapboxandroiddemo/MapboxApplication.java | 14 ++ .../src/main/AndroidManifest.xml | 1 + .../utils/TileLoadingInterceptor.java | 140 ++++++++++++++++++ .../src/main/AndroidManifest.xml | 1 + 6 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 MapboxAndroidDemo/src/main/java/com/mapbox/mapboxandroiddemo/utils/TileLoadingInterceptor.java diff --git a/MapboxAndroidDemo/src/china/java/com/mapbox/mapboxandroiddemo/MapboxApplication.java b/MapboxAndroidDemo/src/china/java/com/mapbox/mapboxandroiddemo/MapboxApplication.java index 7aab7a540..d4e4324ec 100644 --- a/MapboxAndroidDemo/src/china/java/com/mapbox/mapboxandroiddemo/MapboxApplication.java +++ b/MapboxAndroidDemo/src/china/java/com/mapbox/mapboxandroiddemo/MapboxApplication.java @@ -2,10 +2,14 @@ import android.app.Application; +import com.mapbox.mapboxandroiddemo.utils.TileLoadingInterceptor; import com.mapbox.mapboxsdk.Mapbox; +import com.mapbox.mapboxsdk.module.http.HttpRequestUtil; import com.squareup.picasso.OkHttpDownloader; import com.squareup.picasso.Picasso; +import okhttp3.OkHttpClient; + public class MapboxApplication extends Application { @Override @@ -13,6 +17,8 @@ public void onCreate() { super.onCreate(); setUpPicasso(); Mapbox.getInstance(this, getString(R.string.access_token)); + Mapbox.getTelemetry().setDebugLoggingEnabled(true); + setUpTileLoadingMeasurement(); } private void setUpPicasso() { @@ -22,4 +28,11 @@ private void setUpPicasso() { built.setLoggingEnabled(true); Picasso.setSingletonInstance(built); } + + private void setUpTileLoadingMeasurement() { + OkHttpClient okHttpClient = new OkHttpClient.Builder() + .addNetworkInterceptor(new TileLoadingInterceptor()) + .build(); + HttpRequestUtil.setOkHttpClient(okHttpClient); + } } diff --git a/MapboxAndroidDemo/src/global/AndroidManifest.xml b/MapboxAndroidDemo/src/global/AndroidManifest.xml index 8c930d003..bf6aa3cd3 100644 --- a/MapboxAndroidDemo/src/global/AndroidManifest.xml +++ b/MapboxAndroidDemo/src/global/AndroidManifest.xml @@ -3,7 +3,8 @@ package="com.mapbox.mapboxandroiddemo"> - + > attributes = new ArrayList<>(); + String request = getUrl(response.request()); + attributes.add( + new Attribute<>("requestUrl", request)); + attributes.add( + new Attribute<>("responseCode", String.valueOf(response.code()))); + attributes.add( + new Attribute<>("wifiOn", + String.valueOf(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI))); + + List> counters = new ArrayList(); + counters.add(new Attribute<>("elapsedMS", elapsedMs)); + + Bundle bundle = new Bundle(); + Gson gson = new Gson(); + bundle.putString("attributes", gson.toJson(attributes)); + bundle.putString("counters", gson.toJson(counters)); + bundle.putString("metadata", getMetadata()); + + Mapbox.getTelemetry().onPerformanceEvent(bundle); + + Mapbox.getTelemetry().setUserTelemetryRequestState(true); + + Log.d(">>>",">>> PERF Event CODE=" + response.code() + + " elapsed=" + elapsedMs + + " wifiOn=" + (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) + + " url=" + request); + } + + private static String getUrl(Request request) { + String url = request.url().toString(); + return url.substring(0, url.indexOf('?')); + } + + private static String getMetadata() { + if (metadata == null) { + JsonObject metaData = new JsonObject(); + metaData.addProperty("os", "android"); + metaData.addProperty("manufacturer", Build.MANUFACTURER); + metaData.addProperty("brand", Build.BRAND); + metaData.addProperty("device", Build.MODEL); + metaData.addProperty("version", Build.VERSION.RELEASE); + metaData.addProperty("abi", Build.CPU_ABI); + metaData.addProperty("country", Locale.getDefault().getISO3Country()); + metaData.addProperty("ram", getRam()); + metaData.addProperty("screenSize", getWindowSize()); + metaData.addProperty("buildFlavor", BuildConfig.FLAVOR); + metadata = metaData.toString(); + } + return metadata; + } + + private static String getRam() { + ActivityManager actManager = + (ActivityManager) Mapbox.getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE); + ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo(); + actManager.getMemoryInfo(memInfo); + return String.valueOf(memInfo.totalMem); + } + + private static String getWindowSize() { + WindowManager windowManager = + (WindowManager) Mapbox.getApplicationContext().getSystemService(Context.WINDOW_SERVICE); + Display display = windowManager.getDefaultDisplay(); + DisplayMetrics metrics = new DisplayMetrics(); + display.getMetrics(metrics); + int width = metrics.widthPixels; + int height = metrics.heightPixels; + + return "{" + width + "," + height + "}"; + } + + private static class Attribute { + private String name; + private T value; + + Attribute(String name, T value) { + this.name = name; + this.value = value; + } + } +} diff --git a/MapboxAndroidWearDemo/src/main/AndroidManifest.xml b/MapboxAndroidWearDemo/src/main/AndroidManifest.xml index c9da76740..ab1aa8814 100644 --- a/MapboxAndroidWearDemo/src/main/AndroidManifest.xml +++ b/MapboxAndroidWearDemo/src/main/AndroidManifest.xml @@ -18,6 +18,7 @@