Skip to content
This repository has been archived by the owner on Oct 7, 2024. It is now read-only.

Commit

Permalink
Tile loading performance measurement
Browse files Browse the repository at this point in the history
  • Loading branch information
“osana” committed Apr 5, 2019
1 parent 48f02a5 commit c58a362
Show file tree
Hide file tree
Showing 6 changed files with 133 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public void onCreate() {
super.onCreate();
setUpPicasso();
Mapbox.getInstance(this, getString(R.string.access_token));
setUpTileLoadingMeasurement();
}

private void setUpPicasso() {
Expand All @@ -22,4 +23,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);
}
}
3 changes: 2 additions & 1 deletion MapboxAndroidDemo/src/global/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
package="com.mapbox.mapboxandroiddemo">


<application>
<application
android:name=".MapboxApplication">

<activity
android:name=".account.LandingActivity"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,14 @@

import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
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 MultiDexApplication {

@Override
Expand All @@ -16,6 +20,8 @@ public void onCreate() {
initializeFirebaseApp();
setUpPicasso();
Mapbox.getInstance(this, getString(R.string.access_token));
setUpTileLoadingMeasurement();

}

private void initializeFirebaseApp() {
Expand All @@ -33,4 +39,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);
}
}
1 change: 1 addition & 0 deletions MapboxAndroidDemo/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
android:required="false" />

<application
android:name=".MapboxApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
package com.mapbox.mapboxandroiddemo.utils;

import android.app.ActivityManager;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Display;
import android.view.WindowManager;

import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.mapbox.mapboxsdk.Mapbox;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;

public class TileLoadingInterceptor implements Interceptor {

@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
long elapsed = System.nanoTime();

Response response = chain.proceed(request);
elapsed = System.nanoTime() - elapsed;

triggerPerformanceEvent(response, elapsed / 1000000);

return response;
}

private void triggerPerformanceEvent(Response response, long elapsedMs) {
List<Attribute<String>> attributes = new ArrayList<>();
String request = getUrl(response.request());
attributes.add(
new Attribute<>("request_url", request));
attributes.add(
new Attribute<>("response_code", String.valueOf(response.code())));

List<Attribute<Long>> counters = new ArrayList();
counters.add(new Attribute<>("elapsed_ms", elapsedMs));

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());

Bundle bundle = new Bundle();
Gson gson = new Gson();
bundle.putString("attributes", gson.toJson(attributes));
bundle.putString("counters", gson.toJson(counters));
bundle.putString("metadata", metaData.toString());

Mapbox.getTelemetry().onPerformanceEvent(bundle);

Log.d(">>>",">>> PERF Event CODE=" + response.code()
+ " elapsed=" + elapsedMs + " url=" + request);
}

private String getUrl(Request request) {
String url = request.url().toString();
return url.substring(0, url.indexOf('?'));
}

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<T> {
private String name;
private T value;

Attribute(String name, T value) {
this.name = name;
this.value = value;
}
}
}
1 change: 1 addition & 0 deletions MapboxAndroidWearDemo/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
<uses-feature android:name="android.hardware.type.watch"/>

<application
android:name=".MapboxApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
Expand Down

0 comments on commit c58a362

Please sign in to comment.