2012-05-10 3 views
2

Android를 사용하여 CDMA/GSM 신호 강도를 얻는 방법을 알고 싶습니다.신호 강도 받기

참고 : getCdmaDbm() 메서드를 사용했지만 항상 -1을 반환합니다.

답변

1

사용 PhoneStateListener '점점 SignalStrength에 대한의 onSignalStrengthsChanged :

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(srvcName); 
AndroidPhoneStateListener phoneStateListener = new AndroidPhoneStateListener (this); 
telephonyManager.listen(phoneStateListener,  
PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); 
    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(); 
      } 
     } 

    } 

권한 :

<uses-permission Android:name="android.permission.READ_PHONE_STATE" /> 
+0

isGsm() : 내가 설정하지만이 방법은 항상 true를 반환'설정 메뉴에서 네트워크 모드 = WCDA 전용 ' 실제 장치에. –

+0

http://developer.android.com/reference/android/telephony/SignalStrength.html retrun 참 GSM의 경우 –

+0

도움을 주셔서 감사합니다. –