2012-02-27 138 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卡的信号强度值。