2013-03-18 107 views
0

我有關於信號強度值的問題。
我想把信號強度值放在onCreate函數中,但是 它給了我零值。但是當我在PhoneStateListener中測試它時,它給了我一個值 這是7. 任何想法?這是我的代碼。信號強度 - asu

package com.example.activitylifecycle; 
import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.telephony.PhoneStateListener; 
import android.telephony.TelephonyManager; 
import android.util.Log; 
public class ActivitySignal extends Activity { 
    private static final String TAG = "ActivitySignal"; 
    private int signalAsu = 0; 
    PhoneStateListener signalListener=new PhoneStateListener() 
    { 
    public void onSignalStrengthChanged(int asu) 
    { 
     Log.d(TAG, "SignalStrength: " + String.valueOf(asu)); // It gives me a value which is 7 
     signalAsu = asu; 
    } 
    }; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    TelephonyManager SignalManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
    SignalManager.listen(signalListener,PhoneStateListener.LISTEN_SIGNAL_STRENGTH); 
    //another log test 
    Log.d(TAG, "SignalStrength: " + String.valueOf(signalAsu)); // zero value.. 
    } 
} 

回答

0

onCreate已運行,並且您已在活動中將signalAsu設置爲0。所以你的日誌會說零,因爲signalAsu hasen't沒有改變。忽略你的初始值爲0,只是在調用onSignalStrengthChanged時聽,就像你對你的日誌做的一樣。

+0

可以將信號強度放在EditText控件上嗎?恩。 EditText.setText(ASU); – user2090420 2013-03-18 11:15:10

+0

是的,當您使用setText時,您可能需要使用Handler或runOnUiThread。你會注意到,如果它崩潰。 – 2013-03-18 11:18:22