26

なしで、たとえば3秒ごとにwifiからスキャン結果を取得する方法mWifimanager.startScan();

Google は次のように述べています。

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

List<ScanResult> results = mWifiManager.getScanResults();を呼び出さずに使用しているこの API レベルに注意してください startScan。リストには wifi AP が含まれていますが、更新が非常に遅くなります。

2019 年 1 月 12 日の更新: https://issuetracker.google.com/issues/112688545

4

7 に答える 7

15

Google は、Android P の startScan() 関数の制限を文書化しました。

「ネットワークパフォーマンスとバッテリー寿命を改善するために、アプリが要求できるスキャンの数をさらに制限しています。

WifiManager.startScan() の使用は次のように制限されています。 - 各フォアグラウンド アプリは 2 分ごとに 4 回のスキャンに制限されています。- 組み合わせたすべてのバックグラウンド アプリは、30 分ごとに 1 回のスキャンに制限されます。」

ソース: https://issuetracker.google.com/issues/79906367

2018 年 8 月 8 日編集: ここにも情報が追加されました: https://developer.android.com/guide/topics/connectivity/wifi-scan#wifi-scan-throttling

于 2018-08-05T20:39:19.367 に答える
2

開発者/ユーザーに少なくとも屋内の場所の代わりに WifiRttManager を使用させることが意図されていると思います [1]。または、通常の Google Play 位置情報サービスに依存します。これは、一部のユース ケースではオプションですが、すべてではありません。平均的なユースケース向けに最適化されています。ユースケースは平均的なユースケースではありません。

残念ながら、WifiRttManager が場所を計算する方法では、wifi アクセスポイントに 802.11mc が必要です。ただし、これらのポイントに接続する必要はありません。現在、この標準を備えているルーターはほとんどありません。[2] [3] [4] 3 つのアクセス ポイントを使用すると、1 ~ 2 m の精度で位置を取得できます。

ただし、この機能にも制限を設けるかどうかは誰にもわかりません。この機能がユーザーや開発者から奪われていることに満足していません。必要なのは許可だけです。

そのため、802.11mc が一般的になるまで、今後数年間で屋内ロケーションの暗黒時代が訪れると思われます。おそらく回避策は、接続しているデバイスに ping を実行することです。

[1] https://developer.android.com/reference/android/net/wifi/rtt/WifiRttManager [2] https://github.com/Plinzen/android-rttmanager-sample

追加資料 [3] https://en.wikipedia.org/wiki/IEEE_802.11mc [4] https://fit-iot.com/web/wifi-indoor-positioning/

于 2019-04-07T04:22:14.250 に答える