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為空?
總結
以上是生活随笔為你收集整理的android p wifi一直在扫描_在Android上的每次WiFi扫描之间我应该使用什么时间间隔?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows7+VS2012下Open
- 下一篇: android sina oauth2.