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 0000000..b6a7624 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/battery_charging.png differ diff --git a/app/src/main/res/drawable/battery.xml b/app/src/main/res/drawable/battery.xml index c6899c2..442b9e6 100644 --- a/app/src/main/res/drawable/battery.xml +++ b/app/src/main/res/drawable/battery.xml @@ -25,4 +25,8 @@ android:drawable="@drawable/battery_100" android:maxLevel="100" android:minLevel="81" /> + \ No newline at end of file