signalStrength.getGsmSignalStrength () также дает значения без сим-карты - PullRequest
0 голосов
/ 27 февраля 2012

Эй, я пытался использовать signalStrength.getGsmSignalStrength () для устройств GSM и CDMA, но я заметил, что оба устройства дают силу, даже если 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 ]

6 голосов
/ 27 февраля 2012

Я считаю, что это может помочь вам определить наличие сим-карты:

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

кроме того, вы можете прочитать это

2 голосов
/ 14 декабря 2014

Ваш телефон подключается к сотовой сети, даже если у вас не установлена ​​SIM-карта, при условии, что режим полета отключен, что позволяет выполнять экстренные вызовы. Операторы сотовой связи обязаны по закону разрешать такие звонки. Таким образом, они позволяют телефонам без SIM-карты регистрироваться в своей сети, и ваш телефон переходит в режим «Только экстренные вызовы». Вот почему вы читаете значения мощности сигнала без SIM-карты.

...