2011-09-15 42 views
0

我有一個SignalStrength Android類的小問題。如果沒有在onSignalStrengthsChanged()方法中引用此類中的對象,有沒有辦法使用此類中的方法? 在我看到的所有例子中,在我看來,這是一個事件類,並且當發生事件(改變gsm信號強度)時創建該對象,並且這是從該類調用方法的唯一方法。我對嗎?Android - SignalStrength是一個事件類?

public void onSignalStrengthsChanged(SignalStrength signalStrength) 
    { 
    String power= String.valueOf(signalStrength.getGsmSignalStrength()); 
    gsmStat.setText("GSM cinr: " +power); 
    } 

如果我想調用這個類的方法(和讀取GSM信號屬性)在其他一些情況下,例如當我點擊一個按鈕對象?

非常感謝您的任何幫助,我真的堅持這一點。

BR, ž


感謝您清除此了。我試圖使用getNeighbouringCellInfo,但由於某種原因,這返回0.是的,我搜索並嘗試了不同的例子。

Tel = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 

public void onClick(View v) { 
List<NeighboringCellInfo> neighCell = null; 
neighCell = Tel.getNeighboringCellInfo(); 
NeighboringCellInfo thisCell = neighCell.get(1); 
int thisNeighRSSI = thisCell.getRssi(); 
String rssi=Integer.toString(thisNeighRSSI); 
tvRSSI.setText("Test: " +rssi); 
} 

回答

1

你不能。獲取相關SignalStrength對象的唯一方法是在onSignalStrengthChanged方法中。

但是,您可以使用TelephonyManager.getNeighbouringCellInfo方法列出周圍的單元格並獲取信號RSSI功率(getRssi)。

0

請參見:getNeighboringCellInfo() returning null list

getNeighboringCellInfo() 

這似乎並沒有在三星設備上工作。

非常抱歉,爲解答此問題,但無法對現有答案添加評論。

至於我的回答,您可以在服務中跟蹤RSSI,這樣當您按下按鈕時,會返回最後記錄的RSSI值。話雖如此,我發現在我使用的Samsung Galaxy上,RSSI值實際上是天線條的數量(即我只能得到4個值),而不是實際的RSSI。

+0

是的,我看到一個,實際上我有三星Galaxy,但令我困惑的是,我在模擬器上測試時得到了這個結果,所以我相信也許我的代碼存在問題,因爲我對所有這個。要做一個Java修訂版,我幾乎忘了我所知道的:) – Z555

相關問題