Search code examples
androidgalaxy-nexuscellinfo

How to display all available cells on a galaxy nexus (4.3)


My employer gave me a femto-cell and currently i am trying to figure if my galaxy-nexus can access the femtocell. As i cant force my phone to use this specific cell and it automatically always uses just available macro-cells, i have trouble to figure if the femtocell is present at all.

Here is what i tried so far. But it always returns null, which means in android-docs that my device isnt capable of using CellInfo-methods.

telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
List<CellInfo> cellInfo = telephonyManager.getAllCellInfo();  // returns null
List<NeighboringCellInfo> cellInfo = telephonyManager.getNeighboringCellInfo(); // returns null

then

 telephonyManager.getPhoneType(); // returns PHONE_TYPE_GSM

aswell i found this quote in another post:

Conclusion: getting information about nearby cells on Android is pretty messy business at the moment. You may need to use a combination of all three methods to get the information you want, and even that way, some things may be inaccessible.

What might be the third option? Does anyone have a conclusion for a galaxy nexus? Does anyone have another idea how i could detect the availabilty of the femto_cell? it is driving me mad :/


Solution

  • Use CellLocation to find the cell id(base station ID).

    Try something like this

    TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
    CellLocation cl = tm.getCellLocation();
    GsmCellLocation gsmLoc;
    CdmaCellLocation cdmaLoc;
    try {
        gsmLoc = (GsmCellLocation) cl;
        System.out.println("Cell id " + gsmLoc.getCid());
        System.out.println("Lac - " + gsmLoc.getLac());
        System.out.println("Psc - " + gsmLoc.getPsc());
    } catch (ClassCastException e) {
        cdmaLoc = (CdmaCellLocation) cl;
        System.out.println("Base station ID - "+ cdmaLoc.getBaseStationId());
        System.out.println("Base station Latitude - "+ cdmaLoc.getBaseStationLatitude());
        System.out.println("Network Id - "+ cdmaLoc.getNetworkId());
        System.out.println("System ID -"+ cdmaLoc.getSystemId());
    }
    System.out.println("Operator Name - "+ tm.getNetworkOperatorName());
    

    I tested using Verizon's network extender and the operator name returned is "Network Extender".

    I used Samsung Note 3. A "home" icon displayed on the status bar When connected to femto cell.