【问题标题】:Android, Active wifi scanningAndroid, 主动 wifi 扫描
【发布时间】:2015-11-10 00:06:59
【问题描述】:

我已经看到很多关于这个问题的话题,但它们都是几年前的,所以让我们再试一次吧!

对于我的论文,我正在尝试根据从 AP 获得的 RSSI 对室内定位进行编程。我正在使用一加二,在扫描 RSSI 值时,使用 WifiManager.startScan() 结合侦听器在准备好时获取结果,如果发现扫描非常非常慢且不适合实时支持。

有没有办法加快这个过程?主动扫描?只扫描某个频段/频率?我找不到问题的解决方案,所以我请求您的帮助!

【问题讨论】:

    标签: android wifi rssi


    【解决方案1】:

    wifi扫描示例:

    package com.android.wifitester;
    
    import java.util.List;
    import android.app.Activity;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.net.wifi.ScanResult;
    import android.net.<span class="hilite">wifi</span>.WifiManager;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.TextView;
    
    public class WifiTester extends Activity {
    TextView mainText;
    WifiManager mainWifi;
    WifiReceiver receiverWifi;
    List<ScanResult> wifiList;
    StringBuilder sb = new StringBuilder();
    
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mainText = (TextView) findViewById(R.id.mainText);
    mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    receiverWifi = new WifiReceiver();
    registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
    mainWifi.startScan();
    mainText.setText("\\nStarting Scan...\\n");
    }
    
    public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(0, 0, 0, "Refresh");
    return super.onCreateOptionsMenu(menu);
    }
    
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
    mainWifi.startScan();
    mainText.setText("Starting Scan");
    return super.onMenuItemSelected(featureId, item);
    }
    
    protected void onPause() {
    unregisterReceiver(receiverWifi);
    super.onPause();
    }
    
    protected void onResume() {
    registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
    super.onResume();
    }
    
    class WifiReceiver extends BroadcastReceiver {
    public void onReceive(Context c, Intent intent) {
    sb = new StringBuilder();
    wifiList = mainWifi.getScanResults();
    for(int i = 0; i < wifiList.size(); i++){
    sb.append(new Integer(i+1).toString() + ".");
    sb.append((wifiList.get(i)).toString());
    sb.append("\\n");
    }
    mainText.setText(sb);
    }
    }
    }
    

    【讨论】:

    • 我现在确实是这样做的,但这是被动扫描,速度很慢:s
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多