スキャンを積極的に要求するにはどうすればよいですか?スキャンを積極的に要求する方法
WifiManager
APIが提供する唯一の方法は、わかっているとおり、startScan()
メソッドです。このメソッドは、Wi-Fiサービススキャンを受信する受信者を開始するだけです。問題はスキャン間の遅延です、それは時間がかかります!私があまり動かさなければ、スキャンは受けられません。私がそうした場合、気づくのに時間がかかります。
スキャンを動的にリクエストする方法はありますか?
これは私が使用するコードです:
// ...
wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
context.registerReceiver(this, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
wifi.startScan();
}
// ...
@Override
public void onReceive(Context context, Intent intent)
{
List<ScanResult> results = this.wifi.getScanResults();
// ...
編集:それは明確でない場合は
...
onReceive
方法は時々スキャンを受けたが、それは時間がかかりすぎます。私はスキャンを開始したい、それが来るのを待つだけではありません。これは@Barnsが示唆しているように、スレッドで繰り返し実行することができます。
:
はこのような何かを試してみてください。しかし、スキャンをトリガーする場合は、特定の間隔でループ上のバックグラウンドスレッドを使用してスキャンをトリガーすることができます。 – Barns
@Barns、申し訳ありませんが、それは明らかではありませんでした。私は、サービスに通知するのを待つだけでなく、スキャンを開始したいと思う。トリガーには何を使用しますか?連続的に(間隔で)そのスレッドで 'startScan()'を呼び出しますか? –