我有一个显示当前信号强度的应用程序,在很多手机上它都可以工作,但是当我在华为手机上测试时,它总是0,同时那个华为手机的信号条是满的。问题是什么?跟安卓版本有关系吗?跟权限有关系吗?我有这个:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
最佳答案
它并不总是零。您获得信号强度的方式是错误的。 在某些手机中,它可能是零可能是 api 的删除。
如果适合您,请尝试此代码。
String gsmSignalStrength=null;
String ssignal = asu.toString();
String[] parts = ssignal.split(" ");
int currentStrength = asu.getGsmSignalStrength();
if (currentStrength <= 0) {
gsmSignalStrength= String
.valueOf(Integer.parseInt(parts[3]));
} else {
gsmSignalStrength= String.valueOf(-113 + 2 * asu.getGsmSignalStrength());
}
Log.d(TAG,"Signal Strength : "+gsmSignalStrength);
这仅适用于 GSM ;
零件数组元素描述为
parts[1] = GsmSignalStrength
parts[3] = CDMADBM
parts[8] = LteSignalStrength
parts[9] = LteRsrp
parts[10] = LteRsrq
parts[13] = gsm|lte
所以你可以设置一些条件来从这个数组中提取值。
关于android - 为什么华为手机的gsm信号强度总是0?其他手机没有这种情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33409009/