2013-10-17 44 views
1

我想定期進行無線掃描(可能每5分鐘一次)並將結果導出到txt文件,以顯示接收到的SSID,MAC和信號強度。 我對Android開發非常陌生,所以我只知道基礎知識。 我現在的進度是複製此this鏈接中相同的確切步驟。週期性無線掃描並將結果導出到txt文件

+0

沒有必要成爲一個文本文件..只是用戶可讀的任何東西 –

回答

1

創建一個OutputStream和文件

private final static String STORETEXT="storetext.txt"; 
OutputStreamWriter out= 
    new OutputStreamWriter(openFileOutput(STORETEXT, 0)); 

您可以反覆使用定時器和異步任務這樣

WifiManager wManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);// wifi manager 

// timer task 
    public void Asyncwifi() { 
    whandler = new Handler(); 
    timer = new Timer(); 
    doAsynchronousTask = new TimerTask() { 

    @Override 
    public void run() { 
    whandler.post(new Runnable() { 
    public void run() { 
    try { 
     wifiScan wscan = new wifiScan(); 
     wscan.execute(); 
     }catch (Exception e) {} 
      } 
     }); 
     } 
     }; 
     timer.schedule(doAsynchronousTask, 0, 5000); // Repeate in every 5 sec 
    } 


    // Async task - wifi scan 
    public class wifiScan extends AsyncTask<Void, String, Void> { 


     protected void onPreExecute() { 

     } 

     protected void onPostExecute(Void results) { 

     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      registerReceiver(br, new IntentFilter(
        WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 
      wManager.startScan(); 
      return null; 
     } 
    } 

掃描WiFi信號你在你的廣播接收器得到的結果

BroadcastReceiver br = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context c, Intent intent) { 
    wifiList = wManager.getScanResults(); 
      for (int i = 0; i < wifiList.size(); i++) { 
      sr1 = wManager.getScanResults().get(i); 
      System.out.println("BSSID: " + sr1.BSSID); 
      System.out.println("RSSI: " + sr1.level); 

       String str = "BSSID: "+sr1.BSSID+" "+"Level: "+sr1.level; 

// Write this data to file 
      out.write(str.toString()); 

       } 



     }; 

out.close(); 
+0

@Ahm ed Salah檢查上述答案,如果您覺得有任何困難,請發表評論。 – Ciril

相關問題