【发布时间】:2015-02-19 12:17:19
【问题描述】:
当我想获取可用 wifi 网络列表时,最好使用 startscan 的哪种理念? 我在主线程中这样做:
List<ScanResult> wifiList;
wifiManager = (WifiManager) context.getSystemService(context.WIFI_SERVICE);
if (!wifiManager.isWifiEnabled()) wifiManager.setWifiEnabled(true);
wifiManager.startScan();
wifiList = wifiManager.getScanResults();
for (int i = 0; i < wifiList.size(); i++) {
String[] networkInfo = wifiList.get(i).toString().split(",");
if (networkInfo[0].trim().equals(AP_SEARCH_SSID))
petcub_networks++;
}
在我用于测试的所有设备中,它都可以正常工作,除了少数三星智能手机。它发生在客户设备上,我无法快速调试它。 有人和三星有同样的问题吗?或者会更好地在后台扫描AP?能解决我的问题吗?
**UPD:**接下来我的问题的本质:我想扫描可用的 wifi 网络,然后如果找到需要的网络,我将连接到它(到套接字)。此过程在管道中使用,如第一步。
【问题讨论】:
-
究竟是什么问题?您绝对应该为
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION注册一个接收器,而不是立即调用getScanResults() -
你的意思是在广播接收器中使用这个功能?
-
检查我的答案,它从多个角度解决了这个问题
-
实际上我的要求的问题更直接。三星设备总是返回空的 ssid 名称。
标签: android android-wifi