我对Android编码很陌生,到目前为止一直很有趣。我遇到了使用电话管理器的问题,特别是针对LTE。我的getCi()方法返回一个正确的值,但不是我需要它的格式。例如,返回的值是25605.我可以使用什么代码来获取此数字并创建正确的Node B ID和Cell ID值,这是我希望我的应用程序显示的内容?
TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
List<CellInfo> cellInfos = tm.getAllCellInfo();
for(CellInfo cellInfo : cellInfos)
{
//CellInfoWcdma cellInfoWcdma = (CellInfoWcdma) cellInfo;
CellInfoLte cellInfoLte = (CellInfoLte)cellInfo;
//CellInfoGsm cellInfoGsm = (CellInfoGsm)cellInfo;
//CellIdentityWcdma cellIdentityWcdma = cellInfoWcdma.getCellIdentity();
//CellSignalStrengthWcdma cellSignalStrengthWcdma = cellInfoWcdma.getCellSignalStrength();
CellIdentityLte cellIdentityLte = cellInfoLte.getCellIdentity();
CellSignalStrengthLte cellSignalStrengthLte = cellInfoLte.getCellSignalStrength();
netId = cellIdentityLte.getCi();
netId2 = cellSignalStrengthLte.getLevel();
//netId = cellIdentityWcdma.getCid() & 0xffff;
//netId2 = cellSignalStrengthWcdma.getAsuLevel();
//netId3 = netId2*2 -113;
这里是代码
答案 0 :(得分:0)
您必须转换为HEX的cellIdentityLte.getCi()的值。
然后转换为DEC的最后两个符号,这是本地小区ID。
您转换为DEC的其余部分(最后两个符号除外),这是eNodeB。
我不懂Java,但这里有Excel公式。我想你会得到逻辑
eNodeB =HEX2DEC(LEFT(DEC2HEX(E2),LEN(DEC2HEX(E2))-2))
Local_Cell_ID =HEX2DEC(RIGHT(DEC2HEX(E2),2))
其中E2是cellIdentityLte.getCi()
的输出我测试了这个并检查了单元配置。值是相同的。