summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/TileLoadingMeasurementUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/TileLoadingMeasurementUtils.java')
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/TileLoadingMeasurementUtils.java217
1 files changed, 0 insertions, 217 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
deleted file mode 100644
index c8af9aee21..0000000000
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/TileLoadingMeasurementUtils.java
+++ /dev/null
@@ -1,217 +0,0 @@
-package com.mapbox.mapboxsdk.testapp.utils;
-
-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;
-
-import com.google.gson.Gson;
-import com.google.gson.JsonObject;
-import com.mapbox.mapboxsdk.MapStrictMode;
-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;
-
-import okhttp3.Interceptor;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.Response;
-import timber.log.Timber;
-
-import static com.mapbox.mapboxsdk.constants.MapboxConstants.DEFAULT_MEASURE_TILE_DOWNLOAD_ON;
-import static com.mapbox.mapboxsdk.constants.MapboxConstants.KEY_META_DATA_MEASURE_TILE_DOWNLOAD_ON;
-
-public class TileLoadingMeasurementUtils {
-
- private static final String ATTRIBUTE_REQUEST_URL = "requestUrl";
-
-
- public static void setUpTileLoadingMeasurement() {
- if (isTileLoadingMeasurementOn()) {
- OkHttpClient okHttpClient = new OkHttpClient.Builder()
- .addNetworkInterceptor(new TileLoadingInterceptor())
- .build();
- HttpRequestUtil.setOkHttpClient(okHttpClient);
- }
- }
-
- private static boolean isTileLoadingMeasurementOn() {
- return isBooleanMetaDataValueOn(KEY_META_DATA_MEASURE_TILE_DOWNLOAD_ON,
- DEFAULT_MEASURE_TILE_DOWNLOAD_ON);
- }
-
- private static boolean isBooleanMetaDataValueOn(@NonNull String propKey, boolean defaultValue) {
-
- try {
- // Try getting a custom value from the app Manifest
- Context context = Mapbox.getApplicationContext();
- ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(),
- PackageManager.GET_META_DATA);
- if (appInfo.metaData != null) {
- return appInfo.metaData.getBoolean(propKey, defaultValue);
- }
- } catch (PackageManager.NameNotFoundException exception) {
- Timber.e("Failed to read the package metadata: " + exception);
- MapStrictMode.strictModeViolation(exception);
- } catch (Exception exception) {
- Timber.e("Failed to read key: " + propKey + " " + exception);
- MapStrictMode.strictModeViolation(exception);
- }
- return defaultValue;
- }
-
-
- /**
- * This Interceptor allows to measure time spent getting a response object over network.
- * The following data will be collected:
- * responseCode, elapsedMS
- * requestUrl (request string till the question mark),
- * and device metadata.
- */
- static class TileLoadingInterceptor implements Interceptor {
-
- 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();
- 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<>("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));
-
- 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);
- }
-
- 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 = 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 + "}";
- }
-
- @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> {
- private String name;
- private T value;
-
- Attribute(String name, T value) {
- this.name = name;
- this.value = value;
- }
- }
-}