signalStrength.getGsmSignalStrength()也给出了没有SIM卡的值

时间:2012-02-27 07:17:44

标签: android gsm signal-strength cdma

嘿我为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();
        }
    }

}

2 个答案:

答案 0 :(得分:6)

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

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

此外,您可以阅读this

答案 1 :(得分:2)

如果您没有插入SIM卡,即使飞机模式已关闭,您的手机也会连接到手机网络,以便拨打紧急电话。法律要求小区运营商允许此类呼叫。因此,他们允许没有SIM卡的电话在其网络上注册,而您的电话则进入紧急呼叫模式。这就是为什么你没有SIM读取信号强度值的原因。