0
我試圖從wifi找到信號強度。我想採取5個信號強度的樣本。所以,我保留了一個計時器,它可以幫助我使代碼每秒運行一次。我寫的代碼如下所示。每隔幾秒不刷新的代碼
輸出I得到的是: 獲取調用0
獲取調用1
獲取調用2
獲取調用3
獲取調用4
我沒有得到sb(字符串生成器,我使用的)值。
如果我從onreceive中刪除內容並將其保留在方法外,我將獲得信號強度值。但它並沒有每秒更新。
public class MainActivity extends Activity {
protected static final long TIME_DELAY = 1000;
TextView mTextView;
Handler handler=new Handler();
int count =0; String data ="";
private static final IntentFilter FILTER = new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.text_id);
handler.post(updateTextRunnable);
}
Runnable updateTextRunnable = new Runnable() {
public void run() {
if (count < 5) {
final StringBuilder sb = new StringBuilder();
final WifiManager mainWifiObj;
mainWifiObj = (WifiManager) getSystemService(Context.WIFI_SERVICE);
class WifiScanReceiver extends BroadcastReceiver {
//BroadcastReceiver WifiScanReceiver = new BroadcastReceiver() {
public void onReceive(Context c, Intent intent) {
List<ScanResult> wifiScanList = mainWifiObj.getScanResults();
for (ScanResult result : wifiScanList) {
if (result.SSID.equals("DAL-WPA2")) {
sb.append(""+result.level);
}
if (result.SSID.equals("DAL")) {
sb.append(""+result.level);
}
if (result.SSID.equals("eduroam")) {
sb.append(""+result.level);
}
}
}
}
WifiScanReceiver wifiReciever = new WifiScanReceiver();
registerReceiver(wifiReciever, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
mTextView.setText("getting called " +count + sb);
count++;
} else {
}
//----------------code here to send values to java server---
handler.postDelayed(this, TIME_DELAY);
}
};
我想用的onPause和方法的onResume的,但我想,如果我需要更新代碼,每1-2秒,以獲得新的wifi強度那麼這將是不可行的。
提供更多的代碼或只是擴展你的問題。現在還不清楚應該如何理解。 – RMachnik
@ Rafik991這是整個代碼。我想從wifi獲得信號強度,但我沒有得到它。我想每2秒獲得一次信號強度的答案。 –