0

嘿,我尝试了用于 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();
        }
    }

}
4

2 回答 2

6

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

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

此外,您可以阅读此内容

于 2012-02-27T08:17:52.523 回答
2

即使您没有插入 SIM 卡,您的手机也会连接到蜂窝网络,前提是关闭飞行模式,以便拨打紧急电话。法律要求手机运营商允许此类通话。因此,他们允许没有 SIM 卡的手机在其网络上注册,并且您的手机进入“仅限紧急呼叫”模式。这就是您在没有 SIM 卡的情况下读取信号强度值的原因。

于 2014-12-14T20:26:20.827 回答