Android 为什么在华为手机中gsmSignalStrength始终为0?其他手机并非如此

Android 为什么在华为手机中gsmSignalStrength始终为0?其他手机并非如此,android,signal-strength,Android,Signal Strength,我有一个显示当前信号强度的应用程序,在很多手机上它都能正常工作,但当我在华为手机上测试它时,它总是0,同时该华为手机上的信号条都满了。有什么问题?它和安卓版本有关吗?它与权限有关吗?我有这个: <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 它并不总是零。你得到信号强度的方式是错误的。 在一些手机中,它可能是零,也可能是api的删除 只要试试这个代码,如果它适合你 String

我有一个显示当前信号强度的应用程序,在很多手机上它都能正常工作,但当我在华为手机上测试它时,它总是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);

因此,您可以设置一些条件从该数组中提取值。

Hi!我自己也在尝试同样的事情。有时候GsmSignalStrength是0,有时候不是。你知道为什么吗?我注意到,当信号强度不是0时,两个字段“mWcdmaEcio”总是255,字段“mWcdmaRscp”总是0。他们修改了信号强度API。最好阅读信号强度监听器的
toString()
方法。答案不错,Madhukar,这对我帮助很大。你找到答案了吗?我正在使用正确的方法获得信号强度,但它始终为0 ASU。
   parts[1] = GsmSignalStrength
   parts[3] = CDMADBM
   parts[8] = LteSignalStrength
   parts[9] = LteRsrp
   parts[10] = LteRsrq
   parts[13] = gsm|lte