Android 检查wifi扫描是否完成
我正在编写一个代码,用于连续获取范围内所有接入点的信息 这是我的密码:Android 检查wifi扫描是否完成,android,android-wifi,Android,Android Wifi,我正在编写一个代码,用于连续获取范围内所有接入点的信息 这是我的密码: myRunnable = new Runnable() { @Override public void run() { while(){ wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); wifi.startScan(); List<ScanResult>
myRunnable = new Runnable() {
@Override public void run() {
while(){
wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifi.startScan();
List<ScanResult>results= wifi.getScanResults();
try{
//data Logging
}
}
}
};
myThread = new Thread(myRunnable);
myThread.start();
myRunnable=newrunnable(){
@重写公共无效运行(){
while(){
wifi=(WifiManager)getSystemService(Context.wifi\u服务);
wifi.startScan();
Listresults=wifi.getScanResults();
试一试{
//数据记录
}
}
}
};
myThread=新线程(myRunnable);
myThread.start();
由于数据的扫描和记录不断重复,我想在记录数据之前检查扫描是否完成。
在记录数据之前,是否有任何标志或函数检查wifi.startScan()是否完整。
你能帮我写个密码吗 您需要实现一个
BroadcastReceiver
侦听从WifiManager.startScan()返回的扫描结果onReceive()
允许您直接访问扫描结果。扫描完成并触发onReceive()大约需要1秒的时间
我想在记录数据之前检查扫描是否完成。是
有任何检查wifi的标志或函数。startScan()是
在记录数据之前,是否完成。你能帮帮我吗
带着密码出去
是的,有专门用于此目的的mechanizm。为了达到您的目标,您需要实施BroadcastReceiver
,它将监听WiFi
扫描
您只需使用适当的IntentFilter
创建BroadcastReceiver
。因此,您需要对筛选器执行以下操作:
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION
此操作意味着访问点扫描已完成,并且结果可用。然后只需创建BroadcastReceiver
(静态或动态,这无关紧要)
如果您不知道如何开始,请参阅本教程:
为了巩固上述答案,我只想添加相关代码以给出一个示例
1。注册活动
// don't forget to set permission to manifest
wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
context.registerReceiver(this,new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
//check if WIFI is enabled and whether scanning launched
if(!wifiManager.isWifiEnabled() || !wifiManager.startScan())
{
throw new Exception("WIFI is not enabled");
}
2。接收结果
// don't forget to set permission to manifest
wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
context.registerReceiver(this,new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
//check if WIFI is enabled and whether scanning launched
if(!wifiManager.isWifiEnabled() || !wifiManager.startScan())
{
throw new Exception("WIFI is not enabled");
}
要接收,注册的对象(在本例中)需要扩展BroadcastReceiver
,并实现以下方法:
public void onReceive(Context context, Intent intent) {
List<ScanResult> result = wifiManager.getScanResults();
}
public void onReceive(上下文、意图){
List result=wifiManager.getScanResults();
}
根据我的经验,在某些设备上需要25秒以上的时间。