web-dev-qa-db-fra.com

startScan () dans WifiManager déconseillé sous Android P

Comment obtenir le résultat de la numérisation depuis le wifi, par exemple toutes les 3 secondes, sans mWifimanager.startScan();

Google dit: 

startScan()This method was deprecated in API level P. The ability for apps to trigger scan requests will be removed in a future release.

Notez que pour ce niveau d’API, j’utilise List<ScanResult> results = mWifiManager.getScanResults(); sans appeler startScan, la liste contient les points d'accès wifi, mais la mise à jour est très lente.

Mise à jour au 12 janvier 2019: https://issuetracker.google.com/issues/112688545

18
EAK TEAM

Google a maintenant documenté les limitations de la fonction startScan () dans Android P:

"Nous limitons encore le nombre d'analyses que les applications peuvent demander pour améliorer les performances du réseau et la durée de vie de la batterie. 

L'utilisation de WifiManager.startScan () est limitée à: - Toutes les applications de premier plan sont limitées à 4 analyses toutes les 2 minutes.

Source: https://issuetracker.google.com/issues/79906367

Edit 8-Aug-2018: Des informations ont également été ajoutées ici: https://developer.Android.com/guide/topics/connectivity/wifi-scan

9
marko.tm

Je pense que dans l'API de niveau P, ils prévoient de déplacer startScan () vers une classe différente (WifiScanner), avec quelques différences essentielles. 

Voir: https://Android.googlesource.com/platform/frameworks/base/+/Android-p-preview-1/wifi/Java/Android/net/wifi/WifiScanner.Java

S'il existe une solution alternative à cela, j'aimerais aussi l'entendre. 

Pour l'instant, je pourrais simplement utiliser startScan () jusqu'à la publication de la documentation officielle.

7
Nino Gonzales

startScan () est en fait assez bogué sur P, comme je l’ai soulevé Google Problème 79906367 .

Je ne pense pas que WifiScanner soit le remplacement non plus, car il s'agit d'un SystemApi, ce qui signifie qu'aucun accès pour les applications ...

Espérons que nous entendrons bientôt, car RTT signifie toujours que vous devez rechercher les AP prenant en charge 802.11mc à l'aide de ScanResult is80211mcResponder que vous vérifiez avant d'effectuer RTT Ranging sur l'AP.

5
meavydev

La méthode StartScan () est obsolète dans Android P et le nouveau protocole RTT du standard 802.11mc doit être utilisé avec les algorithmes de trilatération . https://Android-developers.googleblog.com/2018/03/previewing-Android- p.html

Les positions X, Y du point d'accès doivent être connues pour un positionnement précis et le point d'accès doit prendre en charge la mesure de temps précise de 802.11mc. Intel® Wireless-AC 9260 prend en charge 802.11mc et plusieurs AP commencent à prendre en charge la norme 802.11mc.

Quelques exemples:

2

De WifiManager # EXTRA_RESULTS_UPDATED

Remarque: les applications détenant l'autorisation Android.Manifest.permission.NETWORK_SETTINGS sont exemptées de la limitation de l'analyse.

Remarque: il s'agit d'une autorisation système. Les applications standard ne peuvent pas l'utiliser sans rooter et déplacer l'application à l'emplacement "privilégié" ou sans l'avoir intégrée à une ROM personnalisée.

1
Sevenate

Je pense que Google envisage de restreindre l'application de la numérisation wifi. 

Cette méthode était obsolète dans l'API de niveau 28. La capacité des applications à les requêtes d’analyse de déclenchement seront supprimées dans une version ultérieure . Vérifiez la documentation ici.

1
Manmohan Soni