Wie aktiv nach Scans?So fordern Sie aktiv nach Scans an
Die einzige Möglichkeit, die von der WifiManager
API zur Verfügung gestellt wird, wie ich es verstehe, ist die startScan()
-Methode, die nur einen Empfänger startet für die Wi-Fi-Service-Scans zu hören. Das Problem ist die Verzögerung zwischen den Scans, es braucht zu viel Zeit! Wenn ich mich nicht zu viel bewege, werden keine Scans empfangen, und wenn ich es tue, dauert es zu lange, bis ich es bemerke.
Gibt es eine Möglichkeit, einen Scan dynamisch anzufordern?
Dies ist der Code, den ich verwenden:
// ...
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();
// ...
Edit:
Wenn nicht klar ist, ...
Die onReceive
Methode erhält Scans manchmal, aber es dauert zu lange. Ich möchte einen Scan auslösen, nicht nur warten bis er kommt. Es kann in einem Thread gemacht werden, der es wiederholt scannt, wie @Barns vorgeschlagen hat.
Vielleicht verstehe ich nicht ganz, was Sie fordern. Wenn Sie jedoch einen Scan auslösen möchten, können Sie in bestimmten Intervallen einen Hintergrund-Thread in einer Schleife verwenden, um den Scan auszulösen. – Barns
@ Barns, tut mir leid, es war nicht klar. Ich möchte den Scan auslösen, nicht nur warten, bis der Dienst einen benachrichtigt. Was verwende ich zum Auslösen? Kontinuierlich (in Intervallen) Aufruf von 'startScan()' in diesem Thread? –