Android PhoneStateListener.onSignalStrengthsChanged出现问题

Android PhoneStateListener.onSignalStrengthsChanged出现问题,android,Android,我已经编写了一个android应用程序,它使用PhoneStateListener.SignalStrengthChanged(intASU)监听手机信号强度。该应用程序与Android 1.6及更低版本完美配合,但不适用于更高版本,因为onSignalStrengthChanged(int asu)已被弃用,并被onSignalStrengthChanged(SignalStrength SignalStrength)取代 为了使该应用程序与Android 2.0及以上版本兼容,我已将该应用程

我已经编写了一个android应用程序,它使用PhoneStateListener.SignalStrengthChanged(intASU)监听手机信号强度。该应用程序与Android 1.6及更低版本完美配合,但不适用于更高版本,因为onSignalStrengthChanged(int asu)已被弃用,并被onSignalStrengthChanged(SignalStrength SignalStrength)取代

为了使该应用程序与Android 2.0及以上版本兼容,我已将该应用程序升级为使用2.1 API并覆盖PhoneStateListener.onSignalStrengthChanged(SignalStrength SignalStrength)。我正在用安卓2.1测试EVO。电话类型(TelephonyManager.getPhoneType)是CDMA,TelephonyManager.getNetworkType返回“EVDO_A”。在此设置中,永远不会调用OnSignalStrengthChanged(SignalStrength SignalStrength),但会调用SignalStrengthChanged(int asu),但它始终返回-1 asu的信号强度,因为它已被依赖。我需要改变信号强度(信号强度信号强度)来工作。。。。有人知道我做错了什么吗

代码如下:

mSignalListener = new PhoneStateListener(){
  @Override
    public void onSignalStrengthChanged(int asu){
      Log.d(Utils.LOGTAG, "#1. " + String.valueOf(asu));
      if (mStrength != asu){
        mStrength = asu;
        NotifyUI();
      }
      super.onSignalStrengthChanged(asu);
    }

  @Override
  public void onSignalStrengthsChanged(SignalStrength signalStrength) {
    Log.d(Utils.LOGTAG, "#2.");

    if (signalStrength.isGsm())
      mStrength = signalStrength.getGsmSignalStrength();
    else{
      int strength = -1;
      if (signalStrength.getEvdoDbm() < 0)
        strength = signalStrength.getEvdoDbm();
      else if (signalStrength.getCdmaDbm() < 0)
        strength = signalStrength.getCdmaDbm();

      if (strength < 0){
        // convert to asu
        mStrength = Math.round((strength + 113f) / 2f);
      }

      NotifyUI();
    }               
    super.onSignalStrengthsChanged(signalStrength);
  }
};

mTelManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
mTelManager.listen(mSignalListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTH);
mSignalListener=newphoneStateListener(){
@凌驾
信号强度更改时的公共无效(内部asu){
Log.d(Utils.LOGTAG,“#1.”+String.valueOf(asu));
if(MSStrength!=asu){
mStrength=asu;
NotifyUI();
}
超级信号强度变化(asu);
}
@凌驾
信号强度上的公共无效已更改(信号强度信号强度){
Log.d(Utils.LOGTAG,“#2”);
if(signalStrength.isGsm())
msstrength=信号强度。getGsmSignalStrength();
否则{
整数强度=-1;
if(signalStrength.getEvdoDbm()<0)
强度=信号强度。getEvdoDbm();
else if(signalStrength.getCdmaDbm()<0)
强度=信号强度。getCdmaDbm();
如果(强度<0){
//转换为asu
Ms强度=数学圆((强度+113f)/2f);
}
NotifyUI();
}               
超级信号强度改变(信号强度);
}
};
mTelManager=(TelephonyManager)getSystemService(Context.TELEPHONY_服务);
mTelManager.listen(mSignalListener、PhoneStateListener.listen\u信号强度);

我想您只是为PhoneStateListener注册了mSignalListener.LISTEN\u SIGNAL\u Strength?(()