Czy istnieje sposób zwrócenia wartości ustawienia sieci komórkowej Androida dla "korzystania tylko z sieci 2G"?Wykrywanie ustawienia "używaj tylko sieci 2G"
Opracowywana aplikacja mierzy szybkość Internetu w określonej lokalizacji, ale aby było to istotne, musi wiedzieć, czy użytkownik celowo ogranicza mobilny internet do 2G.
Przyjrzałem się ConnectivityManager, ale zawiera on tylko informacje o ustawieniach danych tła lub wszystkich sieciach. Iteracja nich wynika, że pomimo ustawienie jest włączone, HSPA i UMTS powrócić true
dla isAvailable()
:
for (NetworkInfo netInfo : cm.getAllNetworkInfo()) {
Log.i(TAG, netInfo.getSubtypeName() + ": " + netInfo.isAvailable());
}
jest jedyną wskazówkę znalazłem pośród tego wszystkiego, że netInfo.getReason()
powraca „connectionDisabled” na HSPA i UMTS, gdy ustawienie jest włączony. Problem polega na tym, że gdy ustawienie jest wyłączone, te typy sieci niekoniecznie pojawiają się na liście. Nie wydaje mi się, aby użyć porównania łańcuchów specjalnie dla HSPA i UMTS dla "connectionDisabled".
Jaki jest właściwy sposób rozwiązania tego problemu?
Zanim ktokolwiek zacznie próbować uzyskać sensowne informacje z powyższego fragmentu, nie przejmuj się; Próbowałem. Wydaje się, że zarówno gdy włączony jest tryb "tylko 2G" lub gdy jedynym dostępnym sygnałem jest GPRS, sieci 3G zwracają "connectionDisabled". Innymi słowy, 'getReason()' nie dostarcza żadnych użytecznych informacji. –
[Problem z systemem Android nr 8753 rozwiązuje ten problem] (http://code.google.com/p/android/issues/detail?id=8753) Wypróbowałem podaną tutaj sugestię, ale na testowanych urządzeniach: Setting.Secure.getInt() 'zawsze zwraca' 1', niezależnie od aktualnego ustawienia lub stanu łączności. –
Kontynuacja: numer 8753 sugeruje, że ustawienie "Settings.Secure.NETWORK_PREFERENCE" odzwierciedla to ustawienie. To ustawienie jest nieudokumentowane, ale wydaje się odzwierciedlać preferencję typu "TYPE_WIFI" w stosunku do "TYPE_MOBILE", gdy oba połączenia są dostępne i nie jest tym, czego szukam. –