2013-06-03 19 views
2

我已經寫了一段Android代碼,註冊了一個PhoneStateListener和 報告GSM信號強度值,當有變化時,通過 onSignalStrengthsChanged回調。一切工作正常,但我想 初始信號強度發生第一次變化之前..有沒有辦法 找出GSM信號強度結束之前onCreate方法 (請參見注釋行結束時代碼)?Android:我如何確定應用程序是否以無GSM信號或低信號開始?

這裏是我的代碼:

public class MainActivity extends Activity { 

private int mStrength; 
private PhoneStateListener phoneStateListener; 
private TelephonyManager telephonyManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    phoneStateListener = new PhoneStateListener() { 
     @Override 
     public void onSignalStrengthsChanged(SignalStrength signalStrength){ 
      super.onSignalStrengthsChanged(signalStrength); 
      int currStrength = signalStrength.getGsmSignalStrength(); 
      mStrength = currStrength; 

      Toast.makeText(getApplicationContext(), 
          "signal:" + String.valueOf(mStrength), 
          Toast.LENGTH_SHORT).show(); 
     }    
    }; 

    telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
    telephonyManager.listen(phoneStateListener, 
       PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); 

    // What is value of GSM signal here? ... 
    // Log.d("SignalStrength:", "??"); 

} 

} 
+0

我發現這個,描述了我想要的API級別17:http://stackoverflow.com/questions/16529744/how-to-get-current-cell-signal-strength 但我該怎麼做對於較舊的API版本,例如API級別8? –

回答

0

難道你們就不能使用其API級別7加入this SignalStrength class

+0

我試過了,但是你不能使用SignalStrength構造函數..構造函數是不可見的..你必須讓偵聽器來使用它,因爲我有我的問題發佈。請查看此鏈接:https://groups.google.com/forum/?fromgroups#!topic/android-developers/oAMIr4br8hc。 但是,我想要一種獲得信號強度值而不註冊監聽器的方式。 –

相關問題