So erhalten Sie beispielsweise alle 3 Sekunden ein Scan-Ergebnis aus dem WLAN, ohne mWifimanager.startScan();
Google sagt:
startScan()This method was deprecated in API level P. The ability for apps to trigger scan requests will be removed in a future release.
Beachten Sie, dass für diese API-Ebene List<ScanResult> results = mWifiManager.getScanResults();
verwendet wird, ohne startScan
aufzurufen. Die Liste enthält die WLAN-APs, wird jedoch sehr langsam aktualisiert
Update zum 12. Januar 2019: https://issuetracker.google.com/issues/112688545
Google hat nun die Einschränkungen für die startScan () - Funktion in Android P dokumentiert:
"Wir begrenzen die Anzahl der von Apps angeforderten Scans weiter, um die Netzwerkleistung und die Akkulaufzeit zu verbessern.
Die Verwendung von WifiManager.startScan () ist beschränkt auf: - Jede Vordergrund-App ist auf 4 Scans alle 2 Minuten beschränkt - Alle Hintergrund-Apps zusammen sind auf einen Scan alle 30 Minuten beschränkt.
Quelle: https://issuetracker.google.com/issues/79906367
Bearbeiten 8-Aug-2018: Informationen wurden auch hier hinzugefügt: https://developer.Android.com/guide/topics/connectivity/wifi-scan
Ich denke, in der API-Ebene P planen sie, startScan () in eine andere Klasse (WifiScanner) zu verschieben, mit einigen wichtigen Unterschieden.
Wenn es eine alternative Lösung dafür gibt, würde ich es auch gerne hören.
Für den Moment kann ich startScan () verwenden, bis offizielle Dokumente veröffentlicht werden.
startScan () ist eigentlich ziemlich fehlerhaft für P, als ich Google Issue 79906367 angesprochen habe.
Ich glaube nicht, dass WifiScanner auch der Ersatz ist, da dies als SystemApi gekennzeichnet ist, was keinen Zugriff für Apps bedeutet ...
Hoffentlich hören wir es bald, da RTT immer noch bedeutet, dass Sie nach APs suchen müssen, die 802.11mc unterstützen, und zwar mit ScanResult is80211mcResponder , die Sie vor dem RTT-Ranging auf dem AP überprüfen.
Die Methode StartScan () ist veraltet in Android P und das neue RTT-Protokoll aus dem 802.11mc-Standard muss mit Trilaterationsalgorithmen verwendet werden. https://Android-developers.googleblog.com/ 2018/03/Vorschau-Android-p.html
Die X, Y-Position des AP sollte für eine genaue Positionierung bekannt sein, und der AP sollte die Feinzeitmessung nach 802.11mc unterstützen. Intel® Wireless-AC 9260 unterstützt 802.11mc, und mehrere APs unterstützen ab sofort den 802.11mc-Standard.
Einige Beispiele:
Es scheint, dass Googles die Absicht haben könnte, Entwickler dazu zu zwingen, WifiRttManager stattdessen für Indoor-Standorte zu verwenden [1]. Oder verlassen Sie sich auf die üblichen Google Play-Ortungsdienste, die in einigen Anwendungsfällen eine Option darstellen, aber definitiv nicht alle. Es ist für den durchschnittlichen Anwendungsfall optimiert. Kein Anwendungsfall ist der durchschnittliche Anwendungsfall.
Leider erfordert WifiRttManager bei der Berechnung des Standorts 802.11mc für die WLAN-Zugangspunkte. Sie müssen jedoch keine Verbindung zu diesen Punkten herstellen. Nahezu 0 Router haben heute diesen Standard. [2] [3] [4] Mit 3 Zugangspunkten können Sie Positionen mit einer Genauigkeit von 1 bis 2 Metern ermitteln.
Wer weiß, ob sie diese Funktionalität auch einschränken. Es gibt einfach keine Entschuldigung, Benutzern und Entwicklern diese Wahl zu nehmen. Widerlich.
Es scheint also, dass es zumindest ein dunkles Zeitalter für Innenräume geben wird. Möglicherweise können Sie dieses Problem umgehen, indem Sie Geräte, mit denen Sie verbunden sind, anpingen.
[1] https://developer.Android.com/reference/Android/net/wifi/rtt/WifiRttManager
[2] https://github.com/Plinzen/Android-rttmanager-sample
Zusätzliche Lektüre
Von WifiManager # EXTRA_RESULTS_UPDATED
Hinweis: Apps, die über die Berechtigung Android.Manifest.permission.NETWORK_SETTINGS verfügen, sind von der Scanbeschränkung ausgenommen.
Hinweis: Hierbei handelt es sich um eine Systemberechtigung, die von normalen Apps nicht verwendet werden kann, ohne die App zu rooten und an den 'privilegierten' Speicherort zu verschieben oder in ein benutzerdefiniertes ROM einbetten zu lassen.
Ich denke, Google plant, die Anwendung vom Scannen von WLAN einzuschränken.
Diese Methode wurde in API-Ebene 28 nicht mehr unterstützt. Die Möglichkeit für Apps, Trigger-Scan-Anforderungen werden in einer zukünftigen Version entfernt . Überprüfe die Dokumentation hier.