亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

比 WifiManager startScan() 更快的 WiFi 掃描替代方案?

比 WifiManager startScan() 更快的 WiFi 掃描替代方案?

慕絲7291255 2021-06-11 22:20:36
TL;DR 版本我需要每秒多次掃描并獲取附近接入點的 BSSID/MAC 地址和信號電平。WifiManager.startScan() 掃描大約 3.5 秒,這有點慢。(對于其他人來說比 6 秒要好,但對我來說仍然太慢了)。我正在尋找一種每 200 毫秒或更短時間獲得結果的方法。更詳細的版本。我正在嘗試構建一個使用 WiFi 信號而不是 GPS 的位置查找應用程序。到目前為止一切順利,除了我需要獲取大量數據才能獲得準確和一致的結果。我需要從我能找到的每個接入點獲取 BSSID 和信號電平,然后存儲這些數據以備后用。我已經嘗試使用 WifiManager 和 BroadcastReceiver 來掃描并獲取掃描結果。他們的問題是他們真的很慢。單次掃描至少需要 3 秒。在 3 秒內信號電平值會發生變化,導致結果不準確。我還需要進行數千次掃描,這將花費大量時間。到目前為止,我還沒有找到替代方案。我的手機目前運行的是 Android 8.0.0也許如果我優化我的代碼掃描會執行得更快?onCreate 方法:@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_sensor);        btnMainActivity = (Button) findViewById(R.id.button_ToMainActivity);        btnGetWifiInfo = (Button) findViewById(R.id.button_GetWifiInfo);        textWifiInfo = findViewById(R.id.textView_wifiInfo);        textWifiNr = findViewById(R.id.textView_wifiNr);        mWifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);        mWifiReceiver = new BroadcastReceiver() {            @Override            public void onReceive(Context c, Intent intent) {                getScanResultInfo();                                   timeDifference = SystemClock.elapsedRealtime() - startTime;                textWifiInfo.setText("Seconds elapsed: "+Double.toString(timeDifference /1000.0));                nrOfScans++;                if (nrOfScans < 10){                    mWifiManager.startScan();                }            }        };        getWifiInfo();        toMainActivity();    }public void getScanResultInfo(){    int level;    List<ScanResult> wifiScanList = mWifiManager.getScanResults();    textWifiNr.setText("Nr of detected APs: "+ wifiScanList.size());    for (ScanResult scanResult : wifiScanList) {        level = WifiManager.calculateSignalLevel(scanResult.level, 5);        Log.d("WIFI","Level is " + level + " out of 5 " + scanResult.level + " on " + scanResult.BSSID + "  ");                }}提前感謝您的時間!
查看完整描述

3 回答

  • 3 回答
  • 0 關注
  • 575 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號