Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android,主动wifi扫描_Android_Wifi_Rssi - Fatal编程技术网

Android,主动wifi扫描

Android,主动wifi扫描,android,wifi,rssi,Android,Wifi,Rssi,我已经看过很多关于这个问题的话题,但它们都可以追溯到几年前,所以让我们再试一次 在我的论文中,我试图基于从APs获得的RSSI来编程室内定位。我使用的是一加二,在扫描RSSI值时,如果发现扫描速度非常非常慢,不适合实时支持,则使用WifiManager.startScan()结合侦听器在准备就绪时获取结果 有没有办法加快这一进程?主动扫描?只扫描某个波段/频率?我找不到解决这个问题的办法,所以我请求你的帮助 关于wifi扫描的示例: package com.android.wifitester;

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

在我的论文中,我试图基于从APs获得的RSSI来编程室内定位。我使用的是一加二,在扫描RSSI值时,如果发现扫描速度非常非常慢,不适合实时支持,则使用WifiManager.startScan()结合侦听器在准备就绪时获取结果


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

关于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);
}
}
}
package com.android.wifitester;
导入java.util.List;
导入android.app.Activity;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.content.IntentFilter;
导入android.net.wifi.ScanResult;
导入android.net.wifi.WifiManager;
导入android.os.Bundle;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.widget.TextView;
公共类WifiTester扩展活动{
文本视图主文本;
WifiManager mainWifi;
无线接收器接收器;
列表wifiList;
StringBuilder sb=新的StringBuilder();
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mainText=(TextView)findViewById(R.id.mainText);
mainWifi=(WifiManager)getSystemService(Context.WIFI\u SERVICE);
receiverWifi=新WifiReceiver();
registerReceiver(接收方WiFi,新的意向过滤器(WifiManager.SCAN\u RESULTS\u AVAILABLE\u ACTION));
mainWifi.startScan();
mainText.setText(\\n开始扫描…\\n”);
}
公共布尔onCreateOptions菜单(菜单){
添加(0,0,0,“刷新”);
返回super.onCreateOptions菜单(菜单);
}
公共布尔值onMenuItemSelected(int-featureId,MenuItem项){
mainWifi.startScan();
setText(“开始扫描”);
返回super.onMenuItemSelected(featureId,item);
}
受保护的void onPause(){
未注册的接收器(接收器);
super.onPause();
}
受保护的void onResume(){
registerReceiver(接收方WiFi,新的意向过滤器(WifiManager.SCAN\u RESULTS\u AVAILABLE\u ACTION));
super.onResume();
}
类WifiReceiver扩展了BroadcastReceiver{
接收时公共无效(上下文c,意图){
sb=新的StringBuilder();
wifiList=mainWifi.getScanResults();
对于(int i=0;i
我现在确实是这样做的,但这是一种被动扫描,速度非常慢:s