我在附带触摸屏的Raspberry Pi 3上运行Android Things。
我正在尝试在我的应用中创建自己的GUI,以使用WifiManager类连接到可用的wifi网络。但是,getScanResults()
函数始终返回一个空列表,即使您可以在IoT启动器中看到扫描的无线网络。
我从文档(https://developer.android.com/reference/android/net/wifi/WifiManager.html#getScanResults())
中知道如果存在远程异常(例如,系统服务的通信问题或框架内的异常),将返回空列表。
但是除了这个扫描功能外,一切似乎都运行良好。如何成功扫描网络?
我的代码:
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
List<ScanResult> scanResults = wifiManager.getScanResults();
Log.v(this.class.getSimpleName(), "scanResults.size() = " + scanResults.size()); //Prints "0"
清单:
<manifest ...>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
...
</manifest>
谢谢!
答案 0 :(得分:1)
Android上的Wifi扫描是一种异步机制。
您首先必须注册特定意图:SCAN_RESULTS_AVAILABLE_ACTION。
然后使用:startScan()
在广播接收器的onReceive()方法中,您可以拨打getScanResults()
您可以在以下帖子中找到更多信息:https://www.nplix.com/2017/03/12/scan-list-wifi-network-android/