From 2bf63533ec5ac72de60f606d68bea8b349095ebb Mon Sep 17 00:00:00 2001 From: xiaowusky Date: Wed, 20 Dec 2023 15:01:07 +0800 Subject: [PATCH] =?UTF-8?q?desc:=E7=94=B5=E6=B1=A0=E4=B8=80=E9=80=9A?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 + .../watcher/ui/view/CommonTopBar.kt | 6 +- .../watcher/utils/BatteryHelper.kt | 61 +++++++++++++++--- .../res/drawable-hdpi/battery_charging.png | Bin 0 -> 3081 bytes app/src/main/res/drawable/battery.xml | 4 ++ 5 files changed, 61 insertions(+), 11 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/battery_charging.png diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f0ca2c5..757da5e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -28,6 +28,7 @@ + () private var mLevel = -1; + private var batteryManager: BatteryManager? = null +// private var charging = false; private val receiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { - val level = intent?.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) - mLevel = level!! - Log.i(this@BatteryHelper.javaClass.name, "onReceive level = $level") - callbacks.forEach { - if (level != null) { - it.onLevel(level) + val action = intent?.action + if (Intent.ACTION_BATTERY_CHANGED == action) { + val level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)!! + notifyUser(level) + mLevel = level + Log.i(this@BatteryHelper.javaClass.name, "onReceive level = $level") + callbacks.forEach { + it.onLevel(level, batteryManager?.isCharging == true) } + } /*else if (Intent.ACTION_POWER_CONNECTED == action) { + charging = true + } else if (Intent.ACTION_POWER_DISCONNECTED == action) { + charging = false + }*/ + } + } + + private fun notifyUser(level: Int) { + val tip = if (level < 10) { + if (mLevel >= 10 || mLevel == -1) { + "电池电量低于10%" + } else { + "" + } + } else if (level < 20) { + if (mLevel >= 20 || mLevel == -1) { + "电池电量低与20%" + } else { + "" + } + } else if (level == 100) { + if (mLevel < 100) { + "充电完成" + } else { + "" + } + } else { + "" + } + if (tip.isNotEmpty()) { + GlobalScope.launch(Dispatchers.Main) { + CommonApplication.getContext()?.showToast(tip) } } } fun init(context: Context) { watchBattery(context) + batteryManager = context.getSystemService(Context.BATTERY_SERVICE) as BatteryManager } private fun watchBattery(context: Context) { val filter = IntentFilter(Intent.ACTION_BATTERY_CHANGED) +// filter.addAction(Intent.ACTION_POWER_CONNECTED) +// filter.addAction(Intent.ACTION_POWER_DISCONNECTED) context.registerReceiver(receiver, filter) } fun addCallBack(callBack: OnBatteryLevelCallback) { callbacks.add(callBack) if (mLevel != -1) { - callBack.onLevel(mLevel) + callBack.onLevel(mLevel, batteryManager?.isCharging == true) } } @@ -50,6 +95,6 @@ object BatteryHelper { } interface OnBatteryLevelCallback { - fun onLevel(level: Int) + fun onLevel(level: Int, charging: Boolean) } } \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/battery_charging.png b/app/src/main/res/drawable-hdpi/battery_charging.png new file mode 100644 index 0000000000000000000000000000000000000000..b6a76240fa744914b2cf27e5208cd81b1bb3f322 GIT binary patch literal 3081 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 XiX|1SpQ|*R00000NkvXXu0mjfZ7 + \ No newline at end of file