当前位置: 首页 > 知识库问答 >
问题:

getAllCellInfo-重复值

东方俊材
2023-03-14

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

Site_0
Registered: true
dBm: -99
Raw str: CellIdentityWcdma:{ mMcc=655 mMnc=1 mLac=63 mCid=9538943 mPsc=190 
mUarfcn=10562}

Site_1
Registered: false
dBm: -101
Raw str: CellIdentityWcdma:{ mMcc=2147483647 mMnc=2147483647 mLac=2147483647 
mCid=2147483647 mPsc=477 mUarfcn=10562}

Site_2
Registered: false
dBm: -103
Raw str: CellIdentityWcdma:{ mMcc=2147483647 mMnc=2147483647 mLac=2147483647 
mCid=2147483647 mPsc=331 mUarfcn=10562}

Site_3
Registered: false
dBm: -103
Raw str: CellIdentityWcdma:{ mMcc=2147483647 mMnc=2147483647 mLac=2147483647 
mCid=2147483647 mPsc=364 mUarfcn=10562}

Site_4
Registered: false
dBm: -105
Raw str: CellIdentityWcdma:{ mMcc=2147483647 mMnc=2147483647 mLac=2147483647 
mCid=2147483647 mPsc=50 mUarfcn=10562}

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

        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());
            }

WCDMA帮助程序类中的解析函数:

    //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
        }
    }
}

所以我不知道其他人是否也遇到同样的问题,或者是否可以在他们的设备上进行测试?类似的未解决帖子表明了相同的问题(1),或者在某些设备上getAllCellInfo()=null

共有1个答案

暴辰龙
2023-03-14

当在WCDMAmCid=2147483647中时,表示该小区未知。请查看此链接了解更多详细信息:Android CellInof数据提取中包含的字段。

 类似资料:
  • 我正在使用以下函数来获取设备网络的Allcell info,并将其作为字符串获取值,现在我需要解析它,以便获得CellSignal加强Lte数据我如何实现它 //代码 结果是 如何解析此字符串以获得有关CellinfoLte, CellIdtyLte的详细信息

  • 这是我用来检测更改的电话状态侦听器 问题是目前我获取的所有手机信息如下: 结果- 我如何解析它以从上述结果中获得CellInfoLte、CellIdentityLte和CellSignalStrengthLte

  • 简介 本章中我会介绍重复。通过重复,你可以编写“通常的”程序。虽然也可以使用do表达式,但Scheme中通常通过递归实现重复。 递归 在自己的定义中调用自己的函数叫做递归函数(Recursive Function)。虽然这听起来很奇怪,但是循环的常见方法。如果你把函数类比为机器的话,递归似乎毫无道理。然而,正因为函数是过程,函数调用自己是有意义的。比如说,让我们来考察一下文献调研吧。你可能需要去阅

  • 我有一个表单,我想知道在普通JS中选中了哪个复选框,并返回它的值。我用单选按钮而不是复选框来获得它,只是无法确定如何调用它。如果我用单键调用它,它会返回下面的空字符串代码。 单选按钮示例: 现在我尝试使用复选框:

  • 我有一个简单的项目,该项目将个人信息提供给数据库(sqlite),现在我想避免插入重复值(按名称),我不能做什么?谢谢你们

  • 下面是Gradle Build的stacktrace: Build.Gradle看起来是这样的: 编辑1:从META-INF目录中的httpmime库的本地副本中删除我有问题的文件,成功解决了此问题