1

I'm currently detecting the technology my phone is connected to using, within a onSignalStrengthsChanged(SignalStrength signalStrength), this code :

int networkType = telephonyManager.getNetworkType();
            switch (networkType) {
                case TelephonyManager.NETWORK_TYPE_UMTS:
                    return "3G-UMTS";
                case TelephonyManager.NETWORK_TYPE_EVDO_0:
                    return "3G-EVDO_0";
                case TelephonyManager.NETWORK_TYPE_EVDO_A:
                    return "3G-EVDO_A";
                case TelephonyManager.NETWORK_TYPE_HSDPA:
                    return "3G-HSDPA";
                case TelephonyManager.NETWORK_TYPE_HSUPA:
                    return "3G-HSUPA";
                case TelephonyManager.NETWORK_TYPE_HSPA:
                    return "3G-HSPA";
                case TelephonyManager.NETWORK_TYPE_EVDO_B:
                    return "3G-EVDO_B";
                case TelephonyManager.NETWORK_TYPE_EHRPD:
                    return "3G-EHRPD";
                case TelephonyManager.NETWORK_TYPE_HSPAP:
                    return "3G-HSPAP";                  
                default:
                    return "Unknown";
            }

but once this verification is done, how do I manage to get the signal strength ? I need to get the value (DBM or RSSI) only when the phone is under a 3G network. Thanks

Radhwen
  • 232
  • 4
  • 15
  • You can probably call `signalStrength.getLevel()` to get an abstract value, but for more detail, you'll need CellSignalStrengthWcdma, check this out: http://stackoverflow.com/a/27843845/1871033 – CherryDT Apr 25 '16 at 16:09
  • I am always getting -113 Dbm using that method, which is kind of wired since I'm in a good coverage. Despite I'm sure I am using a 3G communication, when I use `signalStrength.getGsmSignalStrength()`, I get some logical data. How does it come ? – Radhwen Apr 25 '16 at 16:57

0 Answers0