0

如何检测 GSM 信号强度低且蜂窝网络何时丢失?双 SIM 卡设备呢?

4

1 回答 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 信号感兴趣,请坚持我之前的示例。如果您可能有兴趣说明由于信号强度不足而导致数据网络是否可用,您还可以获取所有可用数据网络的其他信号值:

TelephonyManager.getNetworkType()通过调用该方法可以知道当前数据网络的类型。

双 SIM 卡设备呢?

我不知道,从来没有为他们工作过。但是我不明白为什么上述内容可能不适用于多 SIM 卡设备。它应该是这样工作的。

于 2013-04-07T13:14:06.827 回答