2012-02-27 136 views
0

嘿,我嘗試了signalStrength.getGsmSignalStrength()用於GSM和CDMA設備的,但我注意到,無論是設備提供了即使在SIM卡未插入device.I希望實力只有在網絡很好的情況下才能撥打電話或發送信息我該如何實現?而且也想知道哪些信號強度此API返回!! ...請儘可能儘快回覆。signalStrength.getGsmSignalStrength()沒有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

它仍然顯示的信號強度可能是因爲手機仍然包放置救援電話(911),即使沒有SIM卡 – waqaslam 2012-02-27 07:26:09

+0

,但爲什麼我們需要救援的呼叫信號強度的原因是什麼?即使Sim不存在,是否有任何硬件產品可以提供此響應? – JAPS 2012-02-27 08:14:54

+1

即使沒有SIM卡,但仍是無線電手機,裏面儀式?檢查我的答案來檢測SIM卡是否可用,事後你可以計算採取進一步行動的力量 – waqaslam 2012-02-27 08:19:40

回答

6

我相信這可以幫助你檢測SIM卡的可用性:

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卡的信號強度值。