5

GOAL: get info (signal strength) of a particular type of connectivity (the one I'm actually using).

PROBLEM: I'm not sure to understand exactly what does reperesent CellInfo and how to extract info from getAllCellInfo

QUESTIONS:

1) From android developer website

CellInfo: Immutable cell information from a point in time.

What does it mean?

2) I want to understand if I'm using wcdma, umts, gsm or lte. I've found here a snippet of code using getAllCellInfo , below my adapted version to get the signal strength

  for (final CellInfo info : telephonyManager.getAllCellInfo()) {

            if (info instanceof CellInfoGsm) {

                final CellSignalStrengthGsm gsm = ((CellInfoGsm) info).getCellSignalStrength();
                if(gsm.getLevel() >= localMaxSignalStrength)
                     localMaxSignalStrength = gsm.getLevel();
                Toast.makeText(getApplicationContext(), "gsm rssi" + localMaxSignalStrength, Toast.LENGTH_LONG).show();

            } else if (info instanceof CellInfoWcdma) {

                final CellSignalStrengthWcdma cdma = ((CellInfoWcdma) info).getCellSignalStrength();
                if(cdma.getLevel() >= localMaxSignalStrength)
                    localMaxSignalStrength = cdma.getLevel();
                Toast.makeText(getApplicationContext(), "wcdma rssi" + localMaxSignalStrength, Toast.LENGTH_LONG).show();

            } else if (info instanceof CellInfoLte) {

                final CellSignalStrengthLte lte = ((CellInfoLte) info).getCellSignalStrength();
                if(lte.getLevel() >= localMaxSignalStrength)
                    localMaxSignalStrength = lte.getLevel();
                Toast.makeText(getApplicationContext(), "lte rssi" + localMaxSignalStrength, Toast.LENGTH_LONG).show();

Now from what I've read on Android developer website

getAllCellInfo() : Returns all observed cell information from all radios on the device including the primary and neighboring cells. Calling this method does not trigger a call to onCellInfoChanged(), or change the rate at which onCellInfoChanged() is called.

The list can include one or more CellInfoGsm, CellInfoCdma, CellInfoLte, and CellInfoWcdma objects, in any combination.

so it means that getAllCellInfo() doesn't return just one kind of connectivity info, but they can be mixed. I want to understand if my phone is using all of the returned ones or just one of them (and in the latter case how to find which one I'm using).

Maicake
  • 1,046
  • 10
  • 34
  • 2
    is the code you posted not working well? it looks like a good starting point for what you need, what are you seeing when running it? also you may want to check the `isRegistered()` method on each of those CellInfos to see if they're connected – marmor Oct 08 '18 at 07:09

0 Answers0