@@ -2,13 +2,17 @@ package com.blankj.utilcode.pkg.feature.network
22
33import android.content.Context
44import android.content.Intent
5+ import android.net.wifi.ScanResult
6+ import android.net.wifi.WifiManager
57import android.os.Bundle
68import android.view.View
79import com.blankj.common.activity.CommonActivity
10+ import com.blankj.common.helper.PermissionHelper
811import com.blankj.common.item.CommonItem
912import com.blankj.common.item.CommonItemClick
1013import com.blankj.common.item.CommonItemSwitch
1114import com.blankj.common.item.CommonItemTitle
15+ import com.blankj.utilcode.constant.PermissionConstants
1216import com.blankj.utilcode.pkg.R
1317import com.blankj.utilcode.util.*
1418
@@ -24,12 +28,24 @@ class NetworkActivity : CommonActivity(), NetworkUtils.OnNetworkStatusChangedLis
2428
2529 companion object {
2630 fun start (context : Context ) {
27- val starter = Intent (context, NetworkActivity ::class .java)
28- context.startActivity(starter)
31+ PermissionHelper .request(context, object : PermissionUtils .SimpleCallback {
32+ override fun onGranted () {
33+ val starter = Intent (context, NetworkActivity ::class .java)
34+ context.startActivity(starter)
35+ }
36+
37+ override fun onDenied () {
38+ }
39+ }, PermissionConstants .LOCATION )
2940 }
3041 }
3142
3243 private lateinit var itemsTask: ThreadUtils .SimpleTask <List <CommonItem <* >>>
44+ private lateinit var wifiScanResultItem: CommonItemTitle
45+ private val consumer = Utils .Consumer <NetworkUtils .WifiScanResults > { t ->
46+ wifiScanResultItem.setContent(scanResults2String(t.filterResults))
47+ wifiScanResultItem.update()
48+ }
3349
3450 override fun bindTitleRes (): Int {
3551 return R .string.demo_network
@@ -51,6 +67,7 @@ class NetworkActivity : CommonActivity(), NetworkUtils.OnNetworkStatusChangedLis
5167
5268 override fun bindItems (): List <CommonItem <* >> {
5369 if (ThreadUtils .isMainThread()) return arrayListOf ()
70+ wifiScanResultItem = CommonItemTitle (" getWifiScanResult" , scanResults2String(NetworkUtils .getWifiScanResult().filterResults))
5471 return CollectionUtils .newArrayList(
5572 CommonItemTitle (" isConnected" , NetworkUtils .isConnected().toString()),
5673 CommonItemTitle (" getMobileDataEnabled" , NetworkUtils .getMobileDataEnabled().toString()),
@@ -72,10 +89,19 @@ class NetworkActivity : CommonActivity(), NetworkUtils.OnNetworkStatusChangedLis
7289 CommonItemTitle (" isWifiAvailable" , NetworkUtils .isWifiAvailable().toString()),
7390 CommonItemTitle (" isAvailable" , NetworkUtils .isAvailable().toString()),
7491 CommonItemTitle (" getBaiduDomainAddress" , NetworkUtils .getDomainAddress(" baidu.com" )),
92+ wifiScanResultItem,
7593
7694 CommonItemSwitch (
7795 R .string.network_wifi_enabled,
78- { NetworkUtils .getWifiEnabled() },
96+ {
97+ val wifiEnabled = NetworkUtils .getWifiEnabled()
98+ if (wifiEnabled) {
99+ NetworkUtils .addOnWifiChangedConsumer(consumer)
100+ } else {
101+ NetworkUtils .removeOnWifiChangedConsumer(consumer)
102+ }
103+ wifiEnabled
104+ },
79105 {
80106 NetworkUtils .setWifiEnabled(it)
81107 ThreadUtils .executeByIo(getItemsTask())
@@ -112,5 +138,14 @@ class NetworkActivity : CommonActivity(), NetworkUtils.OnNetworkStatusChangedLis
112138 super .onDestroy()
113139 ThreadUtils .cancel(itemsTask)
114140 NetworkUtils .unregisterNetworkStatusChangedListener(this )
141+ NetworkUtils .removeOnWifiChangedConsumer(consumer)
142+ }
143+
144+ private fun scanResults2String (results : List <ScanResult >): String {
145+ val sb: StringBuilder = StringBuilder ()
146+ for (result in results) {
147+ sb.append(String .format(" ${result.SSID } , Level: ${WifiManager .calculateSignalLevel(result.level, 4 )} \n " ))
148+ }
149+ return sb.toString()
115150 }
116151}
0 commit comments