From c221570277cdda111bd1beb51aca4df85e12a463 Mon Sep 17 00:00:00 2001 From: kuanglinfei Date: Fri, 14 Aug 2020 10:00:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=85=E7=94=B5=E6=8E=A7=E5=88=B6=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E7=9A=84=E7=BB=86=E5=BE=AE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../omarea/charger_booster/BatteryReceiver.kt | 51 ++++++++++--------- .../com/omarea/data_collection/EventType.java | 1 + .../vtools/activities/ActivityBattery.kt | 19 ++++--- 3 files changed, 42 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/com/omarea/charger_booster/BatteryReceiver.kt b/app/src/main/java/com/omarea/charger_booster/BatteryReceiver.kt index 3210304bd..8f49659e1 100644 --- a/app/src/main/java/com/omarea/charger_booster/BatteryReceiver.kt +++ b/app/src/main/java/com/omarea/charger_booster/BatteryReceiver.kt @@ -25,7 +25,8 @@ class BatteryReceiver(private var service: Context, override val isAsync: Boolea EventType.BATTERY_CHANGED, // 这个执行频率可能有点太高了,耗电 EventType.BATTERY_LOW, EventType.POWER_CONNECTED, - EventType.POWER_DISCONNECTED -> true + EventType.POWER_DISCONNECTED, + EventType.CHARGE_CONFIG_CHANGED -> true else -> false } } @@ -278,35 +279,39 @@ class BatteryReceiver(private var service: Context, override val isAsync: Boolea private fun setChargerLimitToValue(speedMa: Int, eventType: EventType, protectedMode: Boolean) { val execMode = chargeConfig.getInt(SpfConfig.CHARGE_SPF_EXEC_MODE, SpfConfig.CHARGE_SPF_EXEC_MODE_DEFAULT) try { - val required = when (execMode) { - // 如果目标是降低充电速度,则不比频繁尝试调节速度,只需要在电量变化或者插拔充电器时执行即可 - SpfConfig.CHARGE_SPF_EXEC_MODE_SPEED_DOWN -> { - if (eventType != EventType.BATTERY_CHANGED) { - Log.d("@Scene", "CHARGE_SPF_EXEC_MODE_SPEED_DOWN > " + eventType.name) + val required = if (eventType == EventType.CHARGE_CONFIG_CHANGED) { + true + } else { + when (execMode) { + // 如果目标是降低充电速度,则不比频繁尝试调节速度,只需要在电量变化或者插拔充电器时执行即可 + SpfConfig.CHARGE_SPF_EXEC_MODE_SPEED_DOWN -> { + if (eventType != EventType.BATTERY_CHANGED) { + Log.d("@Scene", "CHARGE_SPF_EXEC_MODE_SPEED_DOWN > " + eventType.name) + } + eventType == EventType.BATTERY_CAPACITY_CHANGED || eventType == EventType.POWER_CONNECTED || eventType == EventType.POWER_DISCONNECTED } - eventType == EventType.BATTERY_CAPACITY_CHANGED || eventType == EventType.POWER_CONNECTED || eventType == EventType.POWER_DISCONNECTED - } - // 如果是暴力充电加速,则要尽可能高频率的执行速度调节,并且开启定时任务不断执行(除非已经进入动态调速保护阶段) - SpfConfig.CHARGE_SPF_EXEC_MODE_SPEED_FORCE -> { - if (!protectedMode) { - if (eventType != EventType.TIMER) { - startGovernorTimer() + // 如果是暴力充电加速,则要尽可能高频率的执行速度调节,并且开启定时任务不断执行(除非已经进入动态调速保护阶段) + SpfConfig.CHARGE_SPF_EXEC_MODE_SPEED_FORCE -> { + if (!protectedMode) { + if (eventType != EventType.TIMER) { + startGovernorTimer() + } else { + Log.d("@Scene", "Exec ForceQuickChargeTimer") + } + true } else { - Log.d("@Scene", "Exec ForceQuickChargeTimer") + stopGovernorTimer() + // 如果已经进入充电保护阶段,还是要限制一下执行频率 + !(protectedMode && (System.currentTimeMillis() - lastSetChargeLimit < 5000)) } - true - } else { - stopGovernorTimer() + } + // 如果是常规加速,则在每次电池状态发生辩护时都执行(除非已经进入动态调速保护阶段) + SpfConfig.CHARGE_SPF_EXEC_MODE_SPEED_UP -> { // 如果已经进入充电保护阶段,还是要限制一下执行频率 !(protectedMode && (System.currentTimeMillis() - lastSetChargeLimit < 5000)) } + else -> false } - // 如果是常规加速,则在每次电池状态发生辩护时都执行(除非已经进入动态调速保护阶段) - SpfConfig.CHARGE_SPF_EXEC_MODE_SPEED_UP -> { - // 如果已经进入充电保护阶段,还是要限制一下执行频率 - !(protectedMode && (System.currentTimeMillis() - lastSetChargeLimit < 5000)) - } - else -> false } if (required) { diff --git a/app/src/main/java/com/omarea/data_collection/EventType.java b/app/src/main/java/com/omarea/data_collection/EventType.java index bf20bcac1..475278673 100644 --- a/app/src/main/java/com/omarea/data_collection/EventType.java +++ b/app/src/main/java/com/omarea/data_collection/EventType.java @@ -7,6 +7,7 @@ public enum EventType { BATTERY_CAPACITY_CHANGED, // 电池电量变化 BATTERY_CHANGED, // 电池状态变化 BATTERY_FULL, // 电池充满 + CHARGE_CONFIG_CHANGED, // 充电控制配置改变 SCREEN_ON, // 屏幕打开 SCREEN_OFF, // 屏幕关闭 APP_SWITCH, // 应用切换 diff --git a/app/src/main/java/com/omarea/vtools/activities/ActivityBattery.kt b/app/src/main/java/com/omarea/vtools/activities/ActivityBattery.kt index 536e8ae21..4a34706be 100644 --- a/app/src/main/java/com/omarea/vtools/activities/ActivityBattery.kt +++ b/app/src/main/java/com/omarea/vtools/activities/ActivityBattery.kt @@ -97,10 +97,10 @@ class ActivityBattery: ActivityBase() { }, spf, battery_bp_level_desc)) settings_qc_limit.setOnSeekBarChangeListener(OnSeekBarChangeListener2(Runnable { val level = spf.getInt(SpfConfig.CHARGE_SPF_QC_LIMIT, SpfConfig.CHARGE_SPF_QC_LIMIT_DEFAULT) - notifyConfigChanged() if (spf.getBoolean(SpfConfig.CHARGE_SPF_QC_BOOSTER, false)) { batteryUnits.setChargeInputLimit(level, this) } + notifyConfigChanged() }, spf, settings_qc_limit_desc)) if (!qcSettingSuupport) { @@ -188,20 +188,23 @@ class ActivityBattery: ActivityBase() { Scene.toast(R.string.battery_charge_resumed, Toast.LENGTH_LONG) } - val nightModeGetUp = spf.getInt(SpfConfig.CHARGE_SPF_TIME_GET_UP, SpfConfig.CHARGE_SPF_TIME_GET_UP_DEFAULT) - battery_get_up.setText(String.format(getString(R.string.battery_night_mode_time), nightModeGetUp / 60, nightModeGetUp % 60)) + battery_get_up.setText(minutes2Str(spf.getInt(SpfConfig.CHARGE_SPF_TIME_GET_UP, SpfConfig.CHARGE_SPF_TIME_GET_UP_DEFAULT))) battery_get_up.setOnClickListener { + val nightModeGetUp = spf.getInt(SpfConfig.CHARGE_SPF_TIME_GET_UP, SpfConfig.CHARGE_SPF_TIME_GET_UP_DEFAULT) TimePickerDialog(this.context, TimePickerDialog.OnTimeSetListener { view, hourOfDay, minute -> spf.edit().putInt(SpfConfig.CHARGE_SPF_TIME_GET_UP, hourOfDay * 60 + minute).apply() battery_get_up.setText(String.format(getString(R.string.battery_night_mode_time), hourOfDay, minute)) + notifyConfigChanged() }, nightModeGetUp / 60, nightModeGetUp % 60, true).show() } - val nightModeSleep = spf.getInt(SpfConfig.CHARGE_SPF_TIME_SLEEP, SpfConfig.CHARGE_SPF_TIME_SLEEP_DEFAULT) - battery_sleep.setText(String.format(getString(R.string.battery_night_mode_time), nightModeSleep / 60, nightModeSleep % 60)) + + battery_sleep.setText(minutes2Str(spf.getInt(SpfConfig.CHARGE_SPF_TIME_SLEEP, SpfConfig.CHARGE_SPF_TIME_SLEEP_DEFAULT))) battery_sleep.setOnClickListener { + val nightModeSleep = spf.getInt(SpfConfig.CHARGE_SPF_TIME_SLEEP, SpfConfig.CHARGE_SPF_TIME_SLEEP_DEFAULT) TimePickerDialog(this.context, TimePickerDialog.OnTimeSetListener { view, hourOfDay, minute -> spf.edit().putInt(SpfConfig.CHARGE_SPF_TIME_SLEEP, hourOfDay * 60 + minute).apply() battery_sleep.setText(String.format(getString(R.string.battery_night_mode_time), hourOfDay, minute)) + notifyConfigChanged() }, nightModeSleep / 60, nightModeSleep % 60, true).show() } battery_night_mode.isChecked = spf.getBoolean(SpfConfig.CHARGE_SPF_NIGHT_MODE, false) @@ -217,6 +220,10 @@ class ActivityBattery: ActivityBase() { } } + private fun minutes2Str(minutes:Int): String { + return String.format(getString(R.string.battery_night_mode_time), minutes / 60, minutes % 60) + } + private var myHandler: Handler = Handler(Looper.getMainLooper()) private var timer: Timer? = null private lateinit var batteryMAH: String @@ -419,7 +426,7 @@ class ActivityBattery: ActivityBase() { private fun notifyConfigChanged() { Thread(Runnable { - EventBus.publish(EventType.BATTERY_CHANGED) + EventBus.publish(EventType.CHARGE_CONFIG_CHANGED) }).start() }