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