android - PhoneStateListener.onSignalStrengthsChanged 问题

标签 android

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

为了使应用程序与 Android 2.0 及更高版本兼容,我已将应用程序升级为使用 2.1 API 并重写 PhoneStateListener.onSignalStrengthsChanged(SignalStrength signalStrength)。我正在使用 Android 2.1 的 EVO 上进行测试。电话类型 (TelephonyManager.getPhoneType) 为 CDMA,TelephonyManager.getNetworkType 返回“EVDO_A”。在此设置中,永远不会调用 onSignalStrengthsChanged(SignalStrength signalStrength),但 SignalStrengthChanged(int asu) 会被调用,但这总是返回 -1 asu 的信号强度,因为它已被废弃。我需要让 onSignalStrengthsChanged(SignalStrength signalStrength) 工作......有谁知道我做错了什么?

代码如下:

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);

最佳答案

我想你也只是为PhoneStateListener.LISTEN_SIGNAL_STRENGTHS注册了mSignalListener? ((:

关于android - PhoneStateListener.onSignalStrengthsChanged 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3156864/

相关文章:

android - 如何将 Android Dream 服务作为 Activity (或在 Activity 中)运行?

android - 百分比布局 Android

android - 如何在android中以编程方式设置权限chmod 777?

Android更改按钮背景没有按下状态的选择器

android - 如何将整个应用程序的方向设置为RTL?

Java:如何在 Android 中解码 JSON?我究竟做错了什么?

android - 在android中从https URL下载和保存图像

java - 调度或重定向到其他 Activity 的 Activity

android - 无法在Linux Mint上运行./gradlew --tasks:无法从'11 .0.6确定Java版本

java - 从 JSON 中获取值并将其放入 String