android p wifi一直在扫描_在Android上的每次WiFi扫描之间我应该使用什么时间间隔?...

我需要定期执行Wifi扫描.当时间间隔设置为1-2秒时,我遇到了问题.好像我没有得到任何ScanResult.是否有最短的时间设置,以便WifiManager能够执行成功的WiFi扫描?

这是代码.我正在使用服务进行Wifi扫描:

public class WifiScanning extends Service{

private static final String TAG = "WifiScanning";

private Timer timer;

public int refreshRate,numberOfWifiScan,wifiScanGranularity;

WifiReceiver receiverWifi = new WifiReceiver();

WifiManager wifi;

StringBuilder sb;

List wifiList;

List apdataList;

List>surveyData;

private TimerTask updateTask = new TimerTask() {

@Override

public void run() {

Log.i(TAG,"Timer task doing work");

wifi.startScan();

}

};

@Override

public IBinder onBind(Intent intent) {

// TODO Auto-generated method stub

return null;

}

@Override

public void onCreate() {

super.onCreate();

Log.i(TAG,"Service creating");

//retrieve the mapRefreshRate from config.xml

XMLOperations test = new XMLOperations();

Configuration config = new Configuration();

config = test.saxXmlParsing(this,1);

if(config==null)

config = test.saxXmlParsing(this,2);

refreshRate = Integer.parseInt(config.getMapRefreshRate());

numberOfWifiScan = Integer.parseInt(config.getNumberOfWifiScan_Positioning());

wifiScanGranularity = Integer.parseInt(config.getWifiScanGranularity_Positioning());

timer = new Timer();

Log.i(TAG,"Refresh Rate: "+ String.valueOf(refreshRate));

timer.schedule(updateTask,refreshRate);

wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

registerReceiver(receiverWifi,new IntentFilter(

WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));

}

@Override

public void onDestroy() {

super.onDestroy();

Log.i(TAG,"Service destroying");

unregisterReceiver(receiverWifi);

if (timer != null){

timer.cancel();

timer.purge();

timer = null;

}

}

class WifiReceiver extends BroadcastReceiver {

public void onReceive(Context c,Intent intent) {

sb = new StringBuilder();

wifiList = wifi.getScanResults();

String ap_ssid;

String ap_mac;

Double ap_rssi;

for(int i = 0; i < wifiList.size(); i++){

ap_ssid = wifiList.get(i).SSID;

ap_mac = wifiList.get(i).BSSID;

ap_rssi = Double.valueOf(wifiList.get(i).level);

APData ap = new APData(ap_ssid,ap_mac,ap_rssi);

apdataList.add(ap);

sb.append(" " + (wifiList.get(i).SSID).toString());

sb.append(" " + (wifiList.get(i).BSSID).toString());

sb.append((" " + String.valueOf(wifiList.get(i).level)));

sb.append("\n");

}

Log.d(TAG,sb.toString());

for(int i=1; i<=numberOfWifiScan; i++){

surveyData.add(apdataList);

}

}

}

}

但是,我似乎在这一行得到Nullpointer:apdataList.add(ap);.所以我想知道间隔是否太短,导致ScanResult为空?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值