0

携帯電話で 5 秒ごとに利用可能なワイヤレス ネットワークを確認したい。

だから私は私のアプリのためにこのコードを書いていますが、このコードはWIFIネットワークを15秒ごとにチェックしています!

これは 15 秒ごとに WIFI ネットワークをスキャンし、パスワードのない WIFI が見つかった場合、電話を振動させて音を鳴らすサービスです...

5 秒または 3 秒ごとにワイヤレス ネットワークを確認するにはどうすればよいですか?

package com.sirbl4ck.wififinder;

import java.util.List;
import android.annotation.SuppressLint;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.IBinder;
import android.os.Vibrator;
import android.os.PowerManager;
import android.widget.Toast;
import android.media.MediaPlayer;

public class MyService extends Service {
    WifiManager mainWifiObj;
    WifiScanReceiver wifiReciever;
    PowerManager pm;
    PowerManager.WakeLock wl;

    public MyService() {
    }
    public IBinder onBind(Intent arg0) {        
        return null;
    }
    @Override
    public void onCreate() {
        pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
        wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"Log");
        wl.acquire();
        mainWifiObj = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        wifiReciever = new WifiScanReceiver();
        mainWifiObj.startScan();
        registerReceiver(wifiReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
        Toast.makeText(this, "WIFI Finder Service Started", Toast.LENGTH_LONG).show();
    }
    public void onDestroy() {
        wl.release();
        Toast.makeText(this, "WIFI Finder Service Stoped", Toast.LENGTH_LONG).show();
    }
    public void alert(){
        final MediaPlayer als = MediaPlayer.create(this, R.raw.alertm);
        als.start();
    }
    class WifiScanReceiver extends BroadcastReceiver {
        @SuppressLint("UseValueOf")
        Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        public void onReceive(Context c, Intent intent) {
           List<ScanResult> wifiScanList = mainWifiObj.getScanResults();
           for(int iss=0;iss<wifiScanList.size();iss++){
             String uug=wifiScanList.get(iss).toString();
             if(uug.contains("WPA") && !uug.contains("WEP")){
                 v.vibrate(1500);
                 alert();
                 Toast.makeText(MyService.this, "WIFI Found !", Toast.LENGTH_LONG).show();
             }
           }
        }
     }
}
4

1 に答える 1

2

再帰スレッドを使用してみることができます:

public void startScan(){
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            mainWifiObj.startScan();
            startScan();
        }
    }, 5*1000);
}
于 2014-08-25T12:29:29.187 に答える