Android signalStrength.getGsmSignalStrength()也提供不带sim卡的值

Android signalStrength.getGsmSignalStrength()也提供不带sim卡的值,android,gsm,signal-strength,cdma,Android,Gsm,Signal Strength,Cdma,嘿,我尝试了GSM和CDMA设备的signalStrength.getGsmSignalStrength(),但我注意到,即使未将sim插入设备,这两种设备也会提供强度。我只想在网络良好的情况下拨打电话或发送消息,如何实现这一点?还想知道这个API返回的信号强度!!。。。请尽快回复 public class AndroidPhoneStateListener extends PhoneStateListener { public static int signalStrengthValu

嘿,我尝试了GSM和CDMA设备的signalStrength.getGsmSignalStrength(),但我注意到,即使未将sim插入设备,这两种设备也会提供强度。我只想在网络良好的情况下拨打电话或发送消息,如何实现这一点?还想知道这个API返回的信号强度!!。。。请尽快回复

public class AndroidPhoneStateListener extends PhoneStateListener {
    public static int signalStrengthValue;

    @Override
    public void onSignalStrengthsChanged(SignalStrength signalStrength) {
        super.onSignalStrengthsChanged(signalStrength);
        if (signalStrength.isGsm()) {
            if (signalStrength.getGsmSignalStrength() != 99)
                signalStrengthValue = signalStrength.getGsmSignalStrength() * 2 - 113;
            else
                signalStrengthValue = signalStrength.getGsmSignalStrength();
        } else {
            signalStrengthValue = signalStrength.getCdmaDbm();
        }
    }

}

我相信这可以帮助您检测Sim卡的可用性:

TelephonyManager m = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
if (m.getSimState() != TelephonyManager.SIM_STATE_ABSENT){
  // SIM card
} else {
  // No SIM card
}

此外,如果飞机模式处于关闭状态,即使您没有插入SIM卡,您也可以阅读手机连接到蜂窝网络的内容,以便拨打紧急电话。法律要求手机运营商允许此类通话。因此,他们允许没有SIM卡的手机在他们的网络上注册,而你的手机只能进入紧急呼叫模式。这就是为什么您在没有SIM卡的情况下读取信号强度值。

之所以仍显示信号强度,可能是因为即使没有SIM卡,手机仍可以拨打救援电话(911),但为什么我们需要救援电话的信号强度?即使没有Sim卡,是否有任何硬件项目会给出此响应?即使没有Sim卡,但收音机仍在手机内,rite?检查我的答案以检测sim卡是否可用,然后您可以计算强度以采取进一步措施