2012-02-27 5 views
0

ちょっとGSMとCDMAデバイスのsignalStrength.getGsmSignalStrength()を試しましたが、デバイスにSIMが挿入されていなくても両方のデバイスに強度があることに気付きました。ネットワークが良好な場合にのみ電話をかけるかメッセージを送信するにはどうしたらいいですか?また、このAPIが返す信号強度を知りたい!! ...できるだけ早く返信してください。signalStrength.getGsmSignalStrength()はSIMカードなしでも値を与えています

私は、これはSIMカードの利用可能性を検出するために、あなたを助けるかもしれないと考えている
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(); 
     } 
    } 

} 
+0

それでもまだ信号強度が表示されている理由は、simカードなしでもレスキューコール(911)を電話機に送ることができるからです。 – waqaslam

+0

しかし、レスキューコールにはなぜ信号強度が必要ですか? Simが存在しない場合でもこの応答を与えるハードウェアアイテムはありますか? – JAPS

+1

シムはありませんが、まだ無線は電話の中にあります、儀式? SIMカードが利用可能かどうかを調べるために私の答えをチェックしてください。その後、あなたはさらなる行動の強さを計算することができます – waqaslam

答えて

6

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

しかも、あなたはthis

2

お使いの携帯電話を読み取ることができ、あなたが持っていない場合でも、セルラーネットワークに接続します飛行機モードがオフの場合にSIMが挿入されているため、緊急電話をかけることができます。セルオペレータは、そのような呼び出しを許可することが法律によって要求されています。したがって、SIMなしの電話機はネットワークに登録でき、電話機は緊急通報専用モードになります。そのため、SIMなしで信号強度値を読み取るのはこのためです。

関連する問題