使用 Kotlin 获取 WiFi 扫描结果列表
Get WiFi Scan Results List With Kotlin
我需要在我的 android 应用程序中扫描 wifi 接入点列表。我过去曾使用 java 完成过此操作,但我无法让我的 kotlin 代码正常工作。
我的代码:
var resultList = ArrayList<ScanResult>()
lateinit var wifiManager: WifiManager
val broadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(contxt: Context?, intent: Intent?) {
resultList = wifiManager.scanResults as ArrayList<ScanResult>
Log.d("TESTING", "onReceive Called")
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
wifiManager = this.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
}
override fun onGridTileClicked(x: Int, y: Int) {
startScanning()
}
fun startScanning() {
registerReceiver(broadcastReceiver, IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION))
Handler().postDelayed({
stopScanning()
}, 10000)
}
fun stopScanning() {
unregisterReceiver(broadcastReceiver)
val axisList = ArrayList<Axis>()
for (result in resultList) {
axisList.add(Axis(result.BSSID, result.level))
}
Log.d("TESTING", axisList.toString())
}
永远不会调用 onReceive() 函数,并且我在清单中声明了 ACCESS_FINE_LOCATION 和 ACCESS_WIFI_STATE,所以我不确定我做错了什么。我确定我遗漏了一些明显的东西,但我们将不胜感激。谢谢!
您忘记开始扫描了。在您的 startScanning
方法中添加 wifiManager.startScan()
调用。
我需要在我的 android 应用程序中扫描 wifi 接入点列表。我过去曾使用 java 完成过此操作,但我无法让我的 kotlin 代码正常工作。
我的代码:
var resultList = ArrayList<ScanResult>()
lateinit var wifiManager: WifiManager
val broadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(contxt: Context?, intent: Intent?) {
resultList = wifiManager.scanResults as ArrayList<ScanResult>
Log.d("TESTING", "onReceive Called")
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
wifiManager = this.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
}
override fun onGridTileClicked(x: Int, y: Int) {
startScanning()
}
fun startScanning() {
registerReceiver(broadcastReceiver, IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION))
Handler().postDelayed({
stopScanning()
}, 10000)
}
fun stopScanning() {
unregisterReceiver(broadcastReceiver)
val axisList = ArrayList<Axis>()
for (result in resultList) {
axisList.add(Axis(result.BSSID, result.level))
}
Log.d("TESTING", axisList.toString())
}
永远不会调用 onReceive() 函数,并且我在清单中声明了 ACCESS_FINE_LOCATION 和 ACCESS_WIFI_STATE,所以我不确定我做错了什么。我确定我遗漏了一些明显的东西,但我们将不胜感激。谢谢!
您忘记开始扫描了。在您的 startScanning
方法中添加 wifiManager.startScan()
调用。