¿Hay alguna manera de devolver el valor de la configuración de red móvil de Android para "usar solo redes 2G"?Detección de la configuración "Usar solo redes 2G"
La aplicación que se está desarrollando mide la velocidad de Internet en un lugar determinado, pero para que esto sea relevante, debe saber si el usuario está restringiendo deliberadamente Internet móvil a 2G.
He echado un vistazo a ConnectivityManager, pero solo proporciona información sobre la configuración de datos en segundo plano o todas las redes. Iteración a través de las revela que a pesar del entorno siendo activada, HSPA y UMTS vuelven true
para isAvailable()
:
for (NetworkInfo netInfo : cm.getAllNetworkInfo()) {
Log.i(TAG, netInfo.getSubtypeName() + ": " + netInfo.isAvailable());
}
La única pista que he encontrado en medio de todo esto es que netInfo.getReason()
devuelve "connectionDisabled" en HSPA y UMTS cuando el ajuste está habilitado. El problema es que cuando la configuración está desactivada, esos tipos de red no aparecen necesariamente en la lista. No me parece correcto utilizar una comparación de cadenas específicamente en HSPA y UMTS para "connectionDisabled".
¿Cuál es la forma correcta de abordar esto?
Antes de que nadie intente obtener información significativa del fragmento de arriba, no se moleste; He intentado. Parece que tanto cuando el modo "2G solo" está habilitado o cuando la única señal disponible es GPRS, las redes 3G devuelven "connectionDisabled". En otras palabras, 'getReason()' no proporciona ninguna información útil. –
[La edición de Android # 8753 soluciona esto.] (Http://code.google.com/p/android/issues/detail?id=8753) He intentado con la sugerencia que se describe allí, pero en los dispositivos probados, ' Setting.Secure.getInt() 'siempre devuelve' 1', independientemente de la configuración real o el estado de conectividad. –
Seguimiento: número 8753 sugiere que 'Settings.Secure.NETWORK_PREFERENCE' refleja esta configuración. La configuración no está documentada, pero parece reflejar la preferencia de 'TYPE_WIFI' sobre' TYPE_MOBILE' cuando ambas conexiones están disponibles, y no es lo que estoy buscando. –