desc:监听wifi开关及信号强度变化

main
xiaowusky 2 years ago
parent 00d0ef8438
commit 7f7b447733

@ -7,6 +7,7 @@ import androidx.annotation.RequiresApi
import com.yinuo.safetywatcher.databinding.ActivityHomeBinding
import com.yinuo.safetywatcher.watcher.base.BaseActivity
import com.yinuo.safetywatcher.watcher.utils.BatteryHelper
import com.yinuo.safetywatcher.watcher.utils.WifiHelper
class HomeActivity : BaseActivity() {
@ -21,6 +22,7 @@ class HomeActivity : BaseActivity() {
@RequiresApi(Build.VERSION_CODES.R)
override fun initView() {
BatteryHelper.init(this@HomeActivity)
WifiHelper.init(this@HomeActivity)
mBinding.apply {
itemSetting.setOnClickListener {
startActivity(Intent(this@HomeActivity, SettingActivity::class.java))
@ -35,5 +37,6 @@ class HomeActivity : BaseActivity() {
override fun onDestroy() {
super.onDestroy()
BatteryHelper.release(this@HomeActivity)
WifiHelper.release(this@HomeActivity)
}
}

@ -5,7 +5,7 @@ import com.yinuo.safetywatcher.R
import com.yinuo.safetywatcher.databinding.ActivitySettingBinding
import com.yinuo.safetywatcher.watcher.base.BaseActivity
class SettingActivity: BaseActivity() {
class SettingActivity : BaseActivity() {
private val mBinding: ActivitySettingBinding by lazy {
ActivitySettingBinding.inflate(layoutInflater)
@ -17,5 +17,15 @@ class SettingActivity: BaseActivity() {
override fun initView() {
setTitle(getString(R.string.setting))
mBinding.apply {
itemTime.setOnClickListener { }
itemLight.setOnClickListener { }
itemQuery.setOnClickListener { }
itemWraning.setOnClickListener { }
itemSensor.setOnClickListener { }
itemCloud.setOnClickListener { }
itemNet.setOnClickListener { }
itemRecovery.setOnClickListener { }
}
}
}

@ -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)
}
}

@ -54,13 +54,16 @@ class CommonTopBar : LinearLayout {
}
private val wifiCallback = object : WifiHelper.OnWifiLevelCallback {
override fun onEnable(enable: Boolean) {
Log.i(this@CommonTopBar.javaClass.name, "wifiCallback onEnable = $enable")
mBinding?.wifi?.visibility = if (enable) VISIBLE else GONE
}
override fun onLevel(level: Int) {
Log.i(this@CommonTopBar.javaClass.name, "wifiCallback onEnable = $level")
override fun onLevel(enable: Boolean, level: Int) {
Log.i(
this@CommonTopBar.javaClass.name,
"wifiCallback onEnable = $enable , level = $level"
)
if (enable) {
mBinding?.wifi?.visibility = VISIBLE
} else {
mBinding?.wifi?.visibility = GONE
}
}
}
@ -76,5 +79,6 @@ class CommonTopBar : LinearLayout {
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
BatteryHelper.removeCallback(batteryCallback)
WifiHelper.removeCallback(wifiCallback)
}
}
Loading…
Cancel
Save