我正在使用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
当在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库的本地副本中删除我有问题的文件,成功解决了此问题