1

定期的なwifiスキャン(おそらく5分ごと)を行い、結果をtxtファイルにエクスポートしたいので、受信したAP SSIDとMACおよび信号強度が表示されます。私はAndroid開発に非常に慣れていないので、基本しか知りません。今のところ私の進行状況は、このリンクで同じ正確な手順をコピーしています。

4

1 に答える 1

1

outputStream とファイルを作成する

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

このようなタイマーと非同期タスクを使用して、wifi信号を繰り返しスキャンできます

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;
        }
    }

BroadcastReceiver で結果を取得しました

   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();
于 2013-10-26T05:41:38.200 に答える