使用Kotlin获取WiFi扫描结果列表

时间:2018-03-08 21:20:21

标签: android kotlin android-wifi

我需要在我的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,所以我不确定我做错了什么。我确定我错过了一些明显的东西,但是一些帮助会受到赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

你忘了开始扫描。在wifiManager.startScan()方法中添加startScanning来电。

相关问题