我正在尝试编写一个程序来读取通常的信号电平和其他类似的内容,并将其提供给阅读器,我使用了getAllCellInfo(),而它有一些数据,我想不出一种方法来提取其中的数据,使其易于阅读。我尝试了.toString()方法,但它给出了相同的结果
List<CellInfo> cell= tm.getAllCellInfo();有没有一种方法可以让它易于阅读?或者有没有一种更简单的方法来获取这些数据?
我正在寻找RSSI和电源相关的参数。
发布于 2017-05-06 00:49:40
以下是我所做的工作:
protected class SignalStrengthListener extends PhoneStateListener {
@Override
public void onSignalStrengthsChanged(android.telephony.SignalStrength signalStrength) {
tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
ltestr = signalStrength.toString();
parts = ltestr.split(" ");
try {
cellInfoList = tm.getAllCellInfo();
for (CellInfo cellInfo : cellInfoList) {
if (cellInfo instanceof CellInfoLte) {
// cast to CellInfoLte and call all the CellInfoLte methods you need
// Gets the LTE PCI: (returns Physical Cell Id 0..503, Integer.MAX_VALUE if unknown)
cellPci = ((CellInfoLte) cellInfo).getCellIdentity().getPci();
}
}
} catch (Exception e) {
Log.d("SignalStrength", "Exception: " + e.getMessage());
}
super.onSignalStrengthsChanged(signalStrength);
}
}然后,我可以打印所需的parts数组元素。在这里我得到了PCI。然后,为了快速检查,用Log.d("TAG", "PCI is " + cellPci);打印它,并在logcat中观察它。
你可以在我的github上查看我的应用程序,它可以获取LTE RSRP、RSRQ、PCI等:https://github.com/parksjg/IndoorLTE3a
发布于 2016-01-20 11:15:15
您可以尝试使用CellInfoLte、CellInfoGsm来获取Dbm、AsuLevel、..etc级别
List<CellInfo> cellInfos=tel.getAllCellInfo();
for (CellInfo varcell:cellInfos){
if (varcell instanceof CellInfoLte){
CellInfoLte cellInfoLte=(CellInfoLte)varcell;
CellSignalStrengthLte cellSignalStrengthLte=(CellSignalStrengthLte)cellInfoLte.getCellSignalStrength();
int Dbm= cellSignalStrengthLte.getDbm();
int Asu= cellSignalStrengthLte.getAsuLevel();
int Level= cellSignalStrengthLte.getLevel();
int vci=cellInfoLte.getCellIdentity().getCi();https://stackoverflow.com/questions/33895260
复制相似问题