Android getAllCellInfo-重复值

Android getAllCellInfo-重复值,android,telephony,telephonymanager,cellid,cellinfo,Android,Telephony,Telephonymanager,Cellid,Cellinfo,我正在使用getAllCellInfo从我的手机中获取服务和相邻的手机信息(无根LG G5),但该函数会返回所有相邻测量塔的重复数据。在我所在的地区,我的测试数据大部分时间是3G(WCDMA)。这里是我的WCDMA结果的提取,显示了原始字符串和解析值(在代码中引用以便于阅读): 注意,服务小区和相邻小区被标识(isRegistered),并显示各自的信号强度(dBm)和给定服务小区的小区标识数据,但相邻小区标识数据全部混乱(2147483647=Integer.MAX_VALUE=unknown

我正在使用getAllCellInfo从我的手机中获取服务和相邻的手机信息(无根LG G5),但该函数会返回所有相邻测量塔的重复数据。在我所在的地区,我的测试数据大部分时间是3G(WCDMA)。这里是我的WCDMA结果的提取,显示了原始字符串和解析值(在代码中引用以便于阅读):

注意,服务小区和相邻小区被标识(isRegistered),并显示各自的信号强度(dBm)和给定服务小区的小区标识数据,但相邻小区标识数据全部混乱(2147483647=Integer.MAX_VALUE=unknown,并且重复UARFCN)。我开始编写的用于获取printing cell info+helper类的代码:

        List<CellInfo> infos = tel.getAllCellInfo();
        for (int i = 0; i<infos.size(); ++i) {
            try {
                CellInfo info = infos.get(i);
                if (info instanceof CellInfoGsm)
                {
                    //stuff
                }
                else if (info instanceof CellInfoLte)
                {
                    //stuff
                }
                else if (info instanceof CellInfoWcdma)
                {
                    WCDMAStruct wcdma = new WCDMAStruct(this);
                    wcdma.parse(((CellInfoWcdma)info).getCellIdentity());

                    list += "Site_"+i + "\r\n";
                    list += "Registered: " + info.isRegistered() + "\r\n";
                    CellSignalStrengthWcdma wcdmaS = ((CellInfoWcdma) info).getCellSignalStrength();
                    list += "dBm: " + wcdmaS.getDbm() + "\r\n";
                    list += "Raw str: " + wcdma.CellInfoStr + "\r\n\r\n";
                }

            } catch (Exception ex) {
                Log.i("neighboring error 2: " ,ex.getMessage());
            }

所以我不知道其他人是否也遇到同样的问题,或者是否可以在他们的设备上进行测试?类似的未解决帖子表明了相同的问题(),或者在某些设备和SDK版本上getAllCellInfo()=null。。。有人能给我一些建议吗

在WCDMA
mCid=2147483647
中,这意味着小区是未知的。
请查看此链接以了解更多详细信息:。

没有解决方案,但我有相同的问题
        List<CellInfo> infos = tel.getAllCellInfo();
        for (int i = 0; i<infos.size(); ++i) {
            try {
                CellInfo info = infos.get(i);
                if (info instanceof CellInfoGsm)
                {
                    //stuff
                }
                else if (info instanceof CellInfoLte)
                {
                    //stuff
                }
                else if (info instanceof CellInfoWcdma)
                {
                    WCDMAStruct wcdma = new WCDMAStruct(this);
                    wcdma.parse(((CellInfoWcdma)info).getCellIdentity());

                    list += "Site_"+i + "\r\n";
                    list += "Registered: " + info.isRegistered() + "\r\n";
                    CellSignalStrengthWcdma wcdmaS = ((CellInfoWcdma) info).getCellSignalStrength();
                    list += "dBm: " + wcdmaS.getDbm() + "\r\n";
                    list += "Raw str: " + wcdma.CellInfoStr + "\r\n\r\n";
                }

            } catch (Exception ex) {
                Log.i("neighboring error 2: " ,ex.getMessage());
            }
    //parse input data object to variables
public void parse(CellIdentityWcdma input)
{
    CellInfoStr = input.toString();

    CID = input.getCid();
    if(CID == Integer.MAX_VALUE)    //unknown
        CID = UNKNOWN;

    LAC = input.getLac();
    if(LAC == Integer.MAX_VALUE)    //unknown
        LAC = UNKNOWN;

    MCC = input.getMcc();
    if(MCC == Integer.MAX_VALUE)    //unknown
        MCC = UNKNOWN;

    MNC = input.getMnc();
    if(MNC == Integer.MAX_VALUE)    //unknown
        MNC = UNKNOWN;

    PSC = input.getPsc();
    if(PSC == Integer.MAX_VALUE)    //unknown
        PSC = UNKNOWN;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
    {
        chnlNum_DL = input.getUarfcn();
        if(chnlNum_DL == Integer.MAX_VALUE)
            chnlNum_DL = UNKNOWN;
        else
        {
            FreqBand = getFreqBand(chnlNum_DL); //freq band from UARFCN
        }
    }
}