20251217_043730_107

This commit is contained in:
2025-12-17 04:37:34 +08:00
parent 1c7ceebb78
commit 405b914f02
4 changed files with 85 additions and 108 deletions

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Tue Dec 16 13:12:57 GMT 2025 #Tue Dec 16 20:29:08 GMT 2025
stageCount=9 stageCount=9
libraryProject= libraryProject=
baseVersion=15.14 baseVersion=15.14
publishVersion=15.14.8 publishVersion=15.14.8
buildCount=4 buildCount=8
baseBetaVersion=15.14.9 baseBetaVersion=15.14.9

View File

@@ -1,115 +1,95 @@
package cc.winboll.studio.powerbell.models; package cc.winboll.studio.powerbell.models;
/**
* @Author ZhanGSKen<zhangsken@qq.com>
* @Date 2024/04/29 17:24:53
* @Describe 应用运行参数类
*/
import android.util.JsonReader; import android.util.JsonReader;
import android.util.JsonWriter; import android.util.JsonWriter;
import cc.winboll.studio.libappbase.BaseBean; import cc.winboll.studio.libappbase.BaseBean;
import java.io.IOException; import java.io.IOException;
import java.io.Serializable; import java.io.Serializable;
/**
* @Author ZhanGSKen&豆包大模型<zhangsken@qq.com>
* @Date 2024/04/29 17:24:53
* @Describe 应用运行参数类(电池提醒配置、电量状态等)
*/
public class AppConfigBean extends BaseBean implements Serializable { public class AppConfigBean extends BaseBean implements Serializable {
// ====================== 核心修复:序列化版本号(固定不变,解决崩溃) ======================
private static final long serialVersionUID = -2588138142254163296L; // 直接用崩溃日志中的流版本号
// ====================== 常量定义(默认值抽离,统一管理) ====================== transient public static final String TAG = "AppConfigBean";
public static final String TAG = "AppConfigBean";
// 默认配置常量(避免魔法值,后续修改更便捷)
private static final boolean DEFAULT_ENABLE_USAGE_REMINDER = false;
private static final int DEFAULT_USAGE_REMINDER_VALUE = 10; // 低电量提醒阈值默认10%
private static final boolean DEFAULT_ENABLE_CHARGE_REMINDER = false;
private static final int DEFAULT_CHARGE_REMINDER_VALUE = 100; // 满电提醒阈值默认100%
private static final int DEFAULT_REMINDER_INTERVAL_TIME = 5000; // 提醒间隔默认5秒
private static final boolean DEFAULT_IS_CHARGING = false; // 默认未充电
private static final int DEFAULT_CURRENT_VALUE = 100; // 默认满电
// ====================== 成员变量(规范命名+访问控制transient排除无需序列化字段 ====================== boolean isEnableUsegeReminder = false;
// 低电量提醒开关 int usegeReminderValue = 45;
private boolean isEnableUsageReminder = DEFAULT_ENABLE_USAGE_REMINDER; boolean isEnableChargeReminder = false;
// 低电量提醒阈值(百分比) int chargeReminderValue = 100;
private int usageReminderValue = DEFAULT_USAGE_REMINDER_VALUE; // 铃声提醒间隔时间。.
// 满电提醒开关 int reminderIntervalTime = 5000;
private boolean isEnableChargeReminder = DEFAULT_ENABLE_CHARGE_REMINDER; // 电池是否正在充电。
// 满电提醒阈值(百分比) boolean isCharging = false;
private int chargeReminderValue = DEFAULT_CHARGE_REMINDER_VALUE; // 电池当前电量。.
// 铃声提醒间隔时间(毫秒) int currentValue = -1;
private int reminderIntervalTime = DEFAULT_REMINDER_INTERVAL_TIME;
// 电池充电状态瞬时状态无需序列化加transient
private transient boolean isCharging = DEFAULT_IS_CHARGING;
// 当前电池电量瞬时状态无需序列化加transient
private transient int currentValue = DEFAULT_CURRENT_VALUE;
// ====================== 构造方法(简化逻辑,与默认值保持一致) ======================
public AppConfigBean() { public AppConfigBean() {
// 直接复用常量默认值,无需重复赋值(构造方法逻辑极简) setChargeReminderValue(100);
setIsEnableChargeReminder(false);
setUsegeReminderValue(10);
setIsEnableUsegeReminder(false);
setReminderIntervalTime(5000);
} }
// ====================== Getter/Setter规范命名+参数校验,避免非法值) ====================== public void setReminderIntervalTime(int reminderIntervalTime) {
public boolean isEnableUsageReminder() { this.reminderIntervalTime = reminderIntervalTime;
return isEnableUsageReminder;
}
public void setEnableUsageReminder(boolean enableUsageReminder) {
isEnableUsageReminder = enableUsageReminder;
}
public int getUsageReminderValue() {
return usageReminderValue;
}
public void setUsageReminderValue(int usageReminderValue) {
// 校验电量阈值限制在0-100之间避免非法值导致业务异常
this.usageReminderValue = Math.min(Math.max(usageReminderValue, 0), 100);
}
public boolean isEnableChargeReminder() {
return isEnableChargeReminder;
}
public void setEnableChargeReminder(boolean enableChargeReminder) {
isEnableChargeReminder = enableChargeReminder;
}
public int getChargeReminderValue() {
return chargeReminderValue;
}
public void setChargeReminderValue(int chargeReminderValue) {
// 校验电量阈值限制在0-100之间
this.chargeReminderValue = Math.min(Math.max(chargeReminderValue, 0), 100);
} }
public int getReminderIntervalTime() { public int getReminderIntervalTime() {
return reminderIntervalTime; return reminderIntervalTime;
} }
public void setReminderIntervalTime(int reminderIntervalTime) { public void setIsCharging(boolean isCharging) {
// 校验间隔时间不小于1秒1000ms避免过短触发频繁提醒 this.isCharging = isCharging;
this.reminderIntervalTime = Math.max(reminderIntervalTime, 1000);
} }
// 瞬时状态字段仅保留Get/Set无序列化影响
public boolean isCharging() { public boolean isCharging() {
return isCharging; return isCharging;
} }
public void setCharging(boolean charging) { public void setCurrentValue(int currentValue) {
isCharging = charging; this.currentValue = currentValue;
} }
public int getCurrentValue() { public int getCurrentValue() {
return currentValue; return currentValue;
} }
public void setCurrentValue(int currentValue) { public void setIsEnableUsegeReminder(boolean isEnableUsegeReminder) {
// 校验当前电量限制在0-100之间 this.isEnableUsegeReminder = isEnableUsegeReminder;
this.currentValue = Math.min(Math.max(currentValue, 0), 100); }
public boolean isEnableUsegeReminder() {
return isEnableUsegeReminder;
}
public void setUsegeReminderValue(int usegeReminderValue) {
this.usegeReminderValue = usegeReminderValue;
}
public int getUsegeReminderValue() {
return usegeReminderValue;
}
public void setIsEnableChargeReminder(boolean isEnableChargeReminder) {
this.isEnableChargeReminder = isEnableChargeReminder;
}
public boolean isEnableChargeReminder() {
return isEnableChargeReminder;
}
public void setChargeReminderValue(int chargeReminderValue) {
this.chargeReminderValue = chargeReminderValue;
}
public int getChargeReminderValue() {
return chargeReminderValue;
} }
// ====================== 父类方法重写补全JSON序列化逻辑兼容所有配置字段 ======================
@Override @Override
public String getName() { public String getName() {
return AppConfigBean.class.getName(); return AppConfigBean.class.getName();
@@ -118,12 +98,11 @@ public class AppConfigBean extends BaseBean implements Serializable {
@Override @Override
public void writeThisToJsonWriter(JsonWriter jsonWriter) throws IOException { public void writeThisToJsonWriter(JsonWriter jsonWriter) throws IOException {
super.writeThisToJsonWriter(jsonWriter); super.writeThisToJsonWriter(jsonWriter);
// 仅序列化「配置类字段」瞬时状态isCharging/currentValue不序列化 AppConfigBean bean = this;
jsonWriter.name("isEnableUsageReminder").value(isEnableUsageReminder()); jsonWriter.name("isEnableUsegeReminder").value(bean.isEnableUsegeReminder());
jsonWriter.name("usageReminderValue").value(getUsageReminderValue()); jsonWriter.name("usegeReminderValue").value(bean.getUsegeReminderValue());
jsonWriter.name("isEnableChargeReminder").value(isEnableChargeReminder()); jsonWriter.name("isEnableChargeReminder").value(bean.isEnableChargeReminder());
jsonWriter.name("chargeReminderValue").value(getChargeReminderValue()); jsonWriter.name("chargeReminderValue").value(bean.getChargeReminderValue());
jsonWriter.name("reminderIntervalTime").value(getReminderIntervalTime()); // 补全之前遗漏的间隔时间序列化
} }
@Override @Override
@@ -132,29 +111,20 @@ public class AppConfigBean extends BaseBean implements Serializable {
jsonReader.beginObject(); jsonReader.beginObject();
while (jsonReader.hasNext()) { while (jsonReader.hasNext()) {
String name = jsonReader.nextName(); String name = jsonReader.nextName();
switch (name) { if (name.equals("isEnableUsegeReminder")) {
case "isEnableUsageReminder": bean.setIsEnableUsegeReminder(jsonReader.nextBoolean());
bean.setEnableUsageReminder(jsonReader.nextBoolean()); } else if (name.equals("usegeReminderValue")) {
break; bean.setUsegeReminderValue(jsonReader.nextInt());
case "usageReminderValue": } else if (name.equals("isEnableChargeReminder")) {
bean.setUsageReminderValue(jsonReader.nextInt()); bean.setIsEnableChargeReminder(jsonReader.nextBoolean());
break; } else if (name.equals("chargeReminderValue")) {
case "isEnableChargeReminder": bean.setChargeReminderValue(jsonReader.nextInt());
bean.setEnableChargeReminder(jsonReader.nextBoolean()); } else {
break; jsonReader.skipValue();
case "chargeReminderValue":
bean.setChargeReminderValue(jsonReader.nextInt());
break;
case "reminderIntervalTime":
bean.setReminderIntervalTime(jsonReader.nextInt()); // 补全间隔时间反序列化
break;
default:
jsonReader.skipValue(); // 未知字段跳过,避免解析崩溃
break;
} }
} }
// 结束 JSON 对象
jsonReader.endObject(); jsonReader.endObject();
return bean; return bean;
} }
} }

View File

@@ -67,8 +67,15 @@ public class ControlCenterServiceReceiver extends BroadcastReceiver {
LogUtils.d(TAG, "ACTION_START_REMINDTHREAD"); LogUtils.d(TAG, "ACTION_START_REMINDTHREAD");
//AppConfigUtils appConfigUtils = AppConfigUtils.getInstance(context); //AppConfigUtils appConfigUtils = AppConfigUtils.getInstance(context);
//appConfigUtils.loadAppConfigBean(); //appConfigUtils.loadAppConfigBean();
AppConfigBean appConfigBean = (AppConfigBean)intent.getSerializableExtra("appConfigBean"); try {
mwrService.get().startRemindThread(appConfigBean); AppConfigBean appConfigBean = intent.getParcelableExtra("appConfigBean");
if (appConfigBean != null) {
mwrService.get().startRemindThread(appConfigBean);
}
} catch (Exception e) {
LogUtils.e("ControlReceiver", "parse Parcelable config failed", e);
}
} }
} }

View File

@@ -14,7 +14,7 @@ public class BatteryDrawable extends Drawable {
// 电量颜色画笔 // 电量颜色画笔
final Paint mPaint; final Paint mPaint;
// 电量值 // 电量值
int mnValue = 100; int mnValue = -1;
// @int color 电量颜色 // @int color 电量颜色
// //