如何检测 GSM 信号强度低且蜂窝网络何时丢失?双 SIM 卡设备呢?
问问题
1971 次
1 回答
3
Android:如何检测“无运营商”SIM 卡模式?
该PhoneStateListener
课程旨在服务于这一目的。使用时,当绑定到当前提供商的 GSM 信号发生变化时,您可以得到回调。
确保您android.intent.action.PHONE_STATE
在清单文件中设置了以下内容。
接下来,您需要调用TelephonyManager
并将您的绑定PhoneStateListener
到它:
TelephonyManager telManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
telManager.listen(this.phoneListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
您可以PhoneStateListener
这样实现:
private final PhoneStateListener phoneListener = new PhoneStateListener() {
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
Log.d("onSignalStrengthsChanged", "The new singal strength is "
+ signalStrength.getGsmSignalStrength());
}
};
GSM 信号强度值在 中定义TS 27.007 8.5
。基本上 0 的值是低的,31 的值是好的,而 99 的值意味着未知或不可检测。如Android Developers manual中所述,有效值为 (0-31, 99) 。
以上涵盖了 GSM 信号,所以如果您只对 GSM 信号感兴趣,请坚持我之前的示例。如果您可能有兴趣说明由于信号强度不足而导致数据网络是否可用,您还可以获取所有可用数据网络的其他信号值:
- SignalStrength.getCdmaDbm()以 dBm 为单位返回 CDMA 网络的 RSSI 值。
- SignalStrength.getEvdoDbm()以 dBm 为单位返回 Evdo 网络的 RSSI 值。
TelephonyManager.getNetworkType()
通过调用该方法可以知道当前数据网络的类型。
双 SIM 卡设备呢?
我不知道,从来没有为他们工作过。但是我不明白为什么上述内容可能不适用于多 SIM 卡设备。它应该是这样工作的。
于 2013-04-07T13:14:06.827 回答