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

main
xiaowusky
parent 00d0ef8438
commit 7f7b447733

@ -7,6 +7,7 @@ import androidx.annotation.RequiresApi
import com.yinuo.safetywatcher.databinding.ActivityHomeBinding import com.yinuo.safetywatcher.databinding.ActivityHomeBinding
import com.yinuo.safetywatcher.watcher.base.BaseActivity import com.yinuo.safetywatcher.watcher.base.BaseActivity
import com.yinuo.safetywatcher.watcher.utils.BatteryHelper import com.yinuo.safetywatcher.watcher.utils.BatteryHelper
import com.yinuo.safetywatcher.watcher.utils.WifiHelper
class HomeActivity : BaseActivity() { class HomeActivity : BaseActivity() {
@ -21,6 +22,7 @@ class HomeActivity : BaseActivity() {
@RequiresApi(Build.VERSION_CODES.R) @RequiresApi(Build.VERSION_CODES.R)
override fun initView() { override fun initView() {
BatteryHelper.init(this@HomeActivity) BatteryHelper.init(this@HomeActivity)
WifiHelper.init(this@HomeActivity)
mBinding.apply { mBinding.apply {
itemSetting.setOnClickListener { itemSetting.setOnClickListener {
startActivity(Intent(this@HomeActivity, SettingActivity::class.java)) startActivity(Intent(this@HomeActivity, SettingActivity::class.java))
@ -35,5 +37,6 @@ class HomeActivity : BaseActivity() {
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
BatteryHelper.release(this@HomeActivity) 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.databinding.ActivitySettingBinding
import com.yinuo.safetywatcher.watcher.base.BaseActivity import com.yinuo.safetywatcher.watcher.base.BaseActivity
class SettingActivity: BaseActivity() { class SettingActivity : BaseActivity() {
private val mBinding: ActivitySettingBinding by lazy { private val mBinding: ActivitySettingBinding by lazy {
ActivitySettingBinding.inflate(layoutInflater) ActivitySettingBinding.inflate(layoutInflater)
@ -17,5 +17,15 @@ class SettingActivity: BaseActivity() {
override fun initView() { override fun initView() {
setTitle(getString(R.string.setting)) 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 { object WifiHelper {
private var callbacks = mutableListOf<OnWifiLevelCallback>() private var callbacks = mutableListOf<OnWifiLevelCallback>()
private var mWifiState = -1;
private var mRssi = -1;
private val receiver = object : BroadcastReceiver() { private val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) { override fun onReceive(context: Context?, intent: Intent?) {
val wifiState = intent?.getIntExtra(WifiManager.EXTRA_WIFI_STATE, -1) 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 { 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) { private fun watchWifi(context: Context) {
val filter = IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION) val filter = IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION)
filter.addAction(WifiManager.RSSI_CHANGED_ACTION)
context.registerReceiver(receiver, filter) context.registerReceiver(receiver, filter)
} }
fun addCallBack(callBack: OnWifiLevelCallback) { fun addCallBack(callBack: OnWifiLevelCallback) {
callbacks.add(callBack) callbacks.add(callBack)
if (mWifiState != -1) {
callBack.onLevel(mWifiState == WifiManager.WIFI_STATE_ENABLED, mRssi)
}
} }
fun removeCallback(callBack: OnWifiLevelCallback) { fun removeCallback(callBack: OnWifiLevelCallback) {
@ -43,7 +57,6 @@ object WifiHelper {
} }
interface OnWifiLevelCallback { interface OnWifiLevelCallback {
fun onEnable(enable: Boolean) fun onLevel(enable: Boolean, level: Int)
fun onLevel(level: Int)
} }
} }

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