- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我编写了一个 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/
我正在编写包含两个元素的简单应用程序 - 服务和 Activity 。 Activity 仅用于启动和停止服务。服务使用 PhoneStateListener 获取有关当前 CellID、LAC 和
我编写了一个 Android 应用程序,它使用 PhoneStateListener.SignalStrengthChanged(int asu) 监听电话信号强度。该应用程序与 Android 1.
我希望我的应用程序能够协议(protocol),是否可以连接到网络以及当前 GSM 连接的信号强度。我想每分钟都重复这个过程。 此时我的类(class)看起来像: public class UmtsA
我希望得到有关以下问题的帮助。基本上,我尝试收集从 onSignalStrengthsChanged() 方法返回的每个 ASU 结果,并将每个 ASU 值放入 ArrayList 以便计算平均 AS
我是一名优秀的程序员,十分优秀!