如果没有Sim,则显示信号强度的设备

Sah*_* Mj 7 android signal-strength

我使用以下代码来获取信号强度,

    SignalStrengthListener signalStrengthListener;
    signalStrengthListener = new SignalStrengthListener();
    ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)).listen(
            signalStrengthListener,
            SignalStrengthListener.LISTEN_SIGNAL_STRENGTHS);
Run Code Online (Sandbox Code Playgroud)

然后它正在聆听信号强度,

private class SignalStrengthListener extends PhoneStateListener {
    @Override
    public void onSignalStrengthsChanged(
            android.telephony.SignalStrength signalStrength) {

        // get the signal strength (a value between 0 and 31)
        int strengthAmplitude = signalStrength.getGsmSignalStrength();

        // do something with it (in this case we update a text view)
        // signalStrengthText.setText(String.valueOf(strengthAmplitude));
        if (strengthAmplitude > 30) {
            signalStrengthText.setText("Good");
            // signalStrengthText.setTextColor(getResources().getColor(R.color.good));
        } else if (strengthAmplitude > 20 && strengthAmplitude < 30) {
            signalStrengthText.setText("Average");
            // signalStrengthText.setTextColor(getResources().getColor(R.color.average));
        } else if (strengthAmplitude < 20) {
            signalStrengthText.setText("Weak");
            // signalStrengthText.setTextColor(getResources().getColor(R.color.weak));
        }

        super.onSignalStrengthsChanged(signalStrength);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果设备中存在SIM卡,则效果很好.但是当我从设备中移除SIM卡然后检查信号强度时,它仍然为信号强度提供了一些值.

我能想到的一个可能的解决方案是首先检查设备中是否存在SIM卡,然后显示信号强度.但我想知道对这种奇怪行为的解释以及可能的解决方案.

Mar*_*ler 4

手机服务不需要 USIM - 仅用于身份验证否则紧急呼叫将失败。

这一点也不奇怪……这是常识,因为您不会删除无线电也不会禁用它。

一个简单的测试:取出 USIM,拨打紧急服务电话,假装您正在进行袖珍拨号。