|
|
|
@ -9,13 +9,23 @@ import android.util.Log
|
|
|
|
|
|
|
|
|
|
object WifiHelper {
|
|
|
|
|
private var callbacks = mutableListOf<OnWifiLevelCallback>()
|
|
|
|
|
private var mWifiState = -1;
|
|
|
|
|
private var mRssi = -1;
|
|
|
|
|
|
|
|
|
|
private val receiver = object : BroadcastReceiver() {
|
|
|
|
|
override fun onReceive(context: Context?, intent: Intent?) {
|
|
|
|
|
val wifiState = intent?.getIntExtra(WifiManager.EXTRA_WIFI_STATE, -1)
|
|
|
|
|
Log.i(this@WifiHelper.javaClass.name, "onReceive wifiState = $wifiState")
|
|
|
|
|
val rssi = intent?.getIntExtra(WifiManager.EXTRA_NEW_RSSI, -1)
|
|
|
|
|
mWifiState = wifiState!!
|
|
|
|
|
mRssi = WifiManager.calculateSignalLevel(rssi!!, 5)
|
|
|
|
|
Log.i(
|
|
|
|
|
this@WifiHelper.javaClass.name,
|
|
|
|
|
"onReceive wifiState = $wifiState, mRssi = $mRssi"
|
|
|
|
|
)
|
|
|
|
|
callbacks.forEach {
|
|
|
|
|
it.onEnable(wifiState == WifiManager.WIFI_STATE_ENABLED)
|
|
|
|
|
it.onLevel(
|
|
|
|
|
wifiState == WifiManager.WIFI_STATE_ENABLED, mRssi
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -26,11 +36,15 @@ object WifiHelper {
|
|
|
|
|
|
|
|
|
|
private fun watchWifi(context: Context) {
|
|
|
|
|
val filter = IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION)
|
|
|
|
|
filter.addAction(WifiManager.RSSI_CHANGED_ACTION)
|
|
|
|
|
context.registerReceiver(receiver, filter)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun addCallBack(callBack: OnWifiLevelCallback) {
|
|
|
|
|
callbacks.add(callBack)
|
|
|
|
|
if (mWifiState != -1) {
|
|
|
|
|
callBack.onLevel(mWifiState == WifiManager.WIFI_STATE_ENABLED, mRssi)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun removeCallback(callBack: OnWifiLevelCallback) {
|
|
|
|
@ -43,7 +57,6 @@ object WifiHelper {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
interface OnWifiLevelCallback {
|
|
|
|
|
fun onEnable(enable: Boolean)
|
|
|
|
|
fun onLevel(level: Int)
|
|
|
|
|
fun onLevel(enable: Boolean, level: Int)
|
|
|
|
|
}
|
|
|
|
|
}
|