From 1e8827758a60fa98b26f418337b686df0d5b261b Mon Sep 17 00:00:00 2001 From: Brad Leege Date: Fri, 5 Feb 2016 11:01:02 -0600 Subject: [PATCH] [android] #2421 - Adding logic to determine if app is in Foreground or Background --- .../telemetry/MapboxEventManager.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/telemetry/MapboxEventManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/telemetry/MapboxEventManager.java index d974494d1..ca19adfc3 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/telemetry/MapboxEventManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/telemetry/MapboxEventManager.java @@ -1,5 +1,6 @@ package com.mapbox.mapboxsdk.telemetry; +import android.app.ActivityManager; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -23,6 +24,7 @@ import org.json.JSONObject; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Hashtable; +import java.util.List; import java.util.Locale; import java.util.UUID; import java.util.Vector; @@ -136,6 +138,22 @@ public class MapboxEventManager { return Math.round((level / (float)scale) * 100); } + private String getApplicationState() { + + ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); + List appProcesses = activityManager.getRunningAppProcesses(); + if (appProcesses == null) { + return "Unknown"; + } + final String packageName = context.getPackageName(); + for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) { + if (appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND && appProcess.processName.equals(packageName)) { + return "Foreground"; + } + } + return "Background"; + } + private class FlushTheEventsTask extends AsyncTask { @Override @@ -174,7 +192,7 @@ public class MapboxEventManager { jsonObject.put(MapboxEvent.ATTRIBUTE_OPERATING_SYSTEM, Build.VERSION.RELEASE); jsonObject.put(MapboxEvent.ATTRIBUTE_ORIENTATION, getOrientation()); jsonObject.put(MapboxEvent.ATTRIBUTE_BATTERY_LEVEL, getBatteryLevel()); - jsonObject.put(MapboxEvent.ATTRIBUTE_APPLICATION_STATE, ""); + jsonObject.put(MapboxEvent.ATTRIBUTE_APPLICATION_STATE, getApplicationState()); jsonObject.put(MapboxEvent.ATTRIBUTE_RESOLUTION, ""); jsonObject.put(MapboxEvent.ATTRIBUTE_ACCESSIBILITY_FONT_SCALE, ""); jsonObject.put(MapboxEvent.ATTRIBUTE_CARRIER, "");