Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android “如何检测”;“无承运人”;SIM卡模式?_Android_Sim Card - Fatal编程技术网

Android “如何检测”;“无承运人”;SIM卡模式?

Android “如何检测”;“无承运人”;SIM卡模式?,android,sim-card,Android,Sim Card,如何检测GSM信号强度低且蜂窝网络丢失的情况? 双卡设备呢 Android:如何检测“无运营商”SIM卡模式 这门课就是为了达到这个目的而设计的。使用它时,当绑定到当前提供商的GSM信号发生变化时,您可以得到回调 确保在清单文件中设置了以下android.intent.action.PHONE\u状态 接下来,您需要调用并将PhoneStateListener绑定到它: TelephonyManager telManager = (TelephonyManager) getSystemServi

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

Android:如何检测“无运营商”SIM卡模式

这门课就是为了达到这个目的而设计的。使用它时,当绑定到当前提供商的GSM信号发生变化时,您可以得到回调

确保在清单文件中设置了以下
android.intent.action.PHONE\u状态

接下来,您需要调用并将
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表示未知或不可检测。有效值为(0-31,99),如中所述

以上内容涵盖了GSM信号,因此如果您只对GSM信号感兴趣,请坚持我前面的示例。如果您可能有兴趣说明数据网络是否因信号强度不足而可用,您还可以获取所有可用数据网络的其他信号值:

  • 返回CDMA网络的RSSI值(以dBm为单位)
  • 返回Evdo网络的RSSI值(以dBm为单位)
通过调用该方法,可以知道当前数据网络的类型

双卡设备呢

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

Android:如何检测“无运营商”SIM卡模式

这门课就是为了达到这个目的而设计的。使用它时,当绑定到当前提供商的GSM信号发生变化时,您可以得到回调

确保在清单文件中设置了以下
android.intent.action.PHONE\u状态

接下来,您需要调用并将
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表示未知或不可检测。有效值为(0-31,99),如中所述

以上内容涵盖了GSM信号,因此如果您只对GSM信号感兴趣,请坚持我前面的示例。如果您可能有兴趣说明数据网络是否因信号强度不足而可用,您还可以获取所有可用数据网络的其他信号值:

  • 返回CDMA网络的RSSI值(以dBm为单位)
  • 返回Evdo网络的RSSI值(以dBm为单位)
通过调用该方法,可以知道当前数据网络的类型

双卡设备呢


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

非常感谢!看起来,实际上需要检查onServiceStateChanged,等待“1”,即“服务失效”。还是最低信号状态更正确?从未使用过…您可以在OnServiceStateStateChanged中观察
状态退出服务的事件。On Signals Strength(接通信号强度)更改可能会让您有机会更详细地了解信号的状态。这可以帮助您定义信号强度对于您的应用程序是可接受还是不可接受的级别。非常感谢!看起来,实际上需要检查onServiceStateChanged,等待“1”,即“服务失效”。还是最低信号状态更正确?从未使用过…您可以在OnServiceStateStateChanged中观察
状态退出服务的事件。On Signals Strength(接通信号强度)更改可能会让您有机会更详细地了解信号的状态。这可以帮助您定义信号强度对应用程序可接受或不可接受的级别。