2011-07-15 21 views
0

我需要攔截Android設備上信號強度的變化。我在StackOverflow中看到過不同的方法。在我的情況下,這是一個Android背景服務,試圖找到這些變化。但是,我看不到我做錯了什麼,但看起來這些更改不會被攔截,而且我已將手機放在不同的金屬盒中以查看它是否有效。通過設置並查看其中的值,它看起來像操作系統知道這些轉換。PhoneStateListener更改不處理

public class SignalStateListener extends PhoneStateListener{ 

    private int signalStrength; 

    public SignalStateListener (int signalStrength){ 
     this.signalStrength = signalStrength; 
    } 
    @Override 
    public void onSignalStrengthChanged(int asu){ 
     Log.e(TAG, "[[[[[Signal strength changed]]]]]]"); 
     this.signalStrength = asu; 
    } 


    public int getSNR(){ 
     return this.signalStrength; 
    } 

} 


    //in onCreate() 
    tm = (TelephonyManager) getSystemService (Context.TELEPHONY_SERVICE); 
    listener = new SignalStateListener(0);  
tm.listen(listener, PhoneStateListener.LISTEN_SIGNAL_STRENGTH); 


private TelephonyManager tm = null; 
private SignalStateListener listener = null; 

回答

2

我有同樣的問題:一段時間後,似乎聽力下降。爲了解決這個問題,我創建了一個Timer,每30分鐘重複一次監聽的呼叫:創建一個Timer,它在包含監聽請求的服務中調用TimerTask類,並每X毫秒爲TimerTask類調用Timer。這對我有效。

+0

我按照你的方式解決了問題。我找不到爲什麼onCellLocationChanged和onSignalStrengthsChanged停止調用的方法 –