From c91316c351c9dd027318ede7c2cebf618b008faf Mon Sep 17 00:00:00 2001 From: Brad Leege Date: Fri, 5 Feb 2016 17:14:10 -0600 Subject: [PATCH] [android] #2421 - Adding logic to get cellular carrier and network type --- .../telemetry/MapboxEventManager.java | 55 ++++++++++++++++++- 1 file changed, 53 insertions(+), 2 deletions(-) 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 952e308ba..64796af0e 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 @@ -15,6 +15,7 @@ import android.os.AsyncTask; import android.os.BatteryManager; import android.os.Build; import android.support.annotation.NonNull; +import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.DisplayMetrics; import android.util.Log; @@ -162,6 +163,56 @@ public class MapboxEventManager { return "Background"; } + private String getCellularCarrier() { + TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); + String carrierName = manager.getNetworkOperatorName(); + if (TextUtils.isEmpty(carrierName)) { + carrierName = "None"; + } + return carrierName; + } + + private String getCellularNetworkType () { + TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); + switch (manager.getNetworkType()) { + case TelephonyManager.NETWORK_TYPE_1xRTT: + return "1xRTT"; + case TelephonyManager.NETWORK_TYPE_CDMA: + return "CDMA"; + case TelephonyManager.NETWORK_TYPE_EDGE: + return "EDGE"; + case TelephonyManager.NETWORK_TYPE_EHRPD: + return "EHRPD"; + case TelephonyManager.NETWORK_TYPE_EVDO_0: + return "EVDO_0"; + case TelephonyManager.NETWORK_TYPE_EVDO_A: + return "EVDO_A"; + case TelephonyManager.NETWORK_TYPE_EVDO_B: + return "EVDO_B"; + case TelephonyManager.NETWORK_TYPE_GPRS: + return "GPRS"; + case TelephonyManager.NETWORK_TYPE_HSDPA: + return "HSDPA"; + case TelephonyManager.NETWORK_TYPE_HSPA: + return "HSPA"; + case TelephonyManager.NETWORK_TYPE_HSPAP: + return "HSPAP"; + case TelephonyManager.NETWORK_TYPE_HSUPA: + return "HSUPA"; + case TelephonyManager.NETWORK_TYPE_IDEN: + return "IDEN"; + case TelephonyManager.NETWORK_TYPE_LTE: + return "LTE"; + case TelephonyManager.NETWORK_TYPE_UMTS: + return "UMTS"; + case TelephonyManager.NETWORK_TYPE_UNKNOWN: + return "Unknown"; + default: + return "Default Unknown"; + } + + } + private class FlushTheEventsTask extends AsyncTask { @Override @@ -203,8 +254,8 @@ public class MapboxEventManager { jsonObject.put(MapboxEvent.ATTRIBUTE_APPLICATION_STATE, getApplicationState()); jsonObject.put(MapboxEvent.ATTRIBUTE_RESOLUTION, displayMetrics.density); jsonObject.put(MapboxEvent.ATTRIBUTE_ACCESSIBILITY_FONT_SCALE, ""); - jsonObject.put(MapboxEvent.ATTRIBUTE_CARRIER, ""); - jsonObject.put(MapboxEvent.ATTRIBUTE_CELLULAR_NETWORK_TYPE, ""); + jsonObject.put(MapboxEvent.ATTRIBUTE_CARRIER, getCellularCarrier()); + jsonObject.put(MapboxEvent.ATTRIBUTE_CELLULAR_NETWORK_TYPE, getCellularNetworkType()); jsonObject.put(MapboxEvent.ATTRIBUTE_WIFI, ""); jsonArray.put(jsonObject);