调整当前电量初始化时的默认值。处理bean类序列化问题,未调试。

This commit is contained in:
2025-12-16 21:16:34 +08:00
parent bba48a4458
commit d2ddfedc96
8 changed files with 138 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 20:17:03 HKT 2025 #Tue Dec 16 13:12:57 GMT 2025
stageCount=9 stageCount=9
libraryProject= libraryProject=
baseVersion=15.14 baseVersion=15.14
publishVersion=15.14.8 publishVersion=15.14.8
buildCount=0 buildCount=4
baseBetaVersion=15.14.9 baseBetaVersion=15.14.9

View File

@@ -297,7 +297,7 @@ public class MainActivity extends WinBoLLActivity {
if (mViewHolder == null || mAppConfigUtils == null) return; if (mViewHolder == null || mAppConfigUtils == null) return;
int nChargeReminderValue = mAppConfigUtils.getChargeReminderValue(); int nChargeReminderValue = mAppConfigUtils.getChargeReminderValue();
int nUsegeReminderValue = mAppConfigUtils.getUsegeReminderValue(); int nUsegeReminderValue = mAppConfigUtils.getUsageReminderValue();
int nCurrentValue = mAppConfigUtils.getCurrentValue(); int nCurrentValue = mAppConfigUtils.getCurrentValue();
if (mViewHolder.llLeftSeekBar != null && mViewHolder.llRightSeekBar != null && mDrawableFrame != null) { if (mViewHolder.llLeftSeekBar != null && mViewHolder.llRightSeekBar != null && mDrawableFrame != null) {
@@ -327,7 +327,7 @@ public class MainActivity extends WinBoLLActivity {
mViewHolder.chargeReminderSeekBar.setProgress(nChargeReminderValue); mViewHolder.chargeReminderSeekBar.setProgress(nChargeReminderValue);
} }
if (mViewHolder.cbIsEnableChargeReminder != null) { if (mViewHolder.cbIsEnableChargeReminder != null) {
mViewHolder.cbIsEnableChargeReminder.setChecked(mAppConfigUtils.getIsEnableChargeReminder()); mViewHolder.cbIsEnableChargeReminder.setChecked(mAppConfigUtils.isEnableChargeReminder());
} }
if (mViewHolder.tvUsegeReminderValue != null) { if (mViewHolder.tvUsegeReminderValue != null) {
@@ -338,7 +338,7 @@ public class MainActivity extends WinBoLLActivity {
mViewHolder.usegeReminderSeekBar.setProgress(nUsegeReminderValue); mViewHolder.usegeReminderSeekBar.setProgress(nUsegeReminderValue);
} }
if (mViewHolder.cbIsEnableUsegeReminder != null) { if (mViewHolder.cbIsEnableUsegeReminder != null) {
mViewHolder.cbIsEnableUsegeReminder.setChecked(mAppConfigUtils.getIsEnableUsegeReminder()); mViewHolder.cbIsEnableUsegeReminder.setChecked(mAppConfigUtils.isEnableUsageReminder());
} }
if (mViewHolder.tvCurrentValue != null) { if (mViewHolder.tvCurrentValue != null) {
@@ -368,7 +368,7 @@ public class MainActivity extends WinBoLLActivity {
mViewHolder.cbIsEnableChargeReminder.setOnClickListener(new View.OnClickListener() { mViewHolder.cbIsEnableChargeReminder.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
mAppConfigUtils.setIsEnableChargeReminder(mViewHolder.cbIsEnableChargeReminder.isChecked()); mAppConfigUtils.setEnableChargeReminder(mViewHolder.cbIsEnableChargeReminder.isChecked());
} }
}); });
} }
@@ -380,7 +380,7 @@ public class MainActivity extends WinBoLLActivity {
mViewHolder.cbIsEnableUsegeReminder.setOnClickListener(new View.OnClickListener() { mViewHolder.cbIsEnableUsegeReminder.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
mAppConfigUtils.setIsEnableUsegeReminder(mViewHolder.cbIsEnableUsegeReminder.isChecked()); mAppConfigUtils.setEnableUsageReminder(mViewHolder.cbIsEnableUsegeReminder.isChecked());
} }
}); });
} }
@@ -589,7 +589,7 @@ public class MainActivity extends WinBoLLActivity {
public void onStopTrackingTouch(SeekBar seekBar) { public void onStopTrackingTouch(SeekBar seekBar) {
if (mAppConfigUtils == null || mViewHolder == null || mViewHolder.tvUsegeReminderValue == null) return; if (mAppConfigUtils == null || mViewHolder == null || mViewHolder.tvUsegeReminderValue == null) return;
int nUsegeReminderValue = ((VerticalSeekBar) seekBar)._mnProgress; int nUsegeReminderValue = ((VerticalSeekBar) seekBar)._mnProgress;
mAppConfigUtils.setUsegeReminderValue(nUsegeReminderValue); mAppConfigUtils.setUsageReminderValue(nUsegeReminderValue);
mViewHolder.tvUsegeReminderValue.setText(String.valueOf(nUsegeReminderValue) + "%"); mViewHolder.tvUsegeReminderValue.setText(String.valueOf(nUsegeReminderValue) + "%");
} }
} }

View File

@@ -1,95 +1,115 @@
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; // 默认满电
boolean isEnableUsegeReminder = false; // ====================== 成员变量(规范命名+访问控制transient排除无需序列化字段 ======================
int usegeReminderValue = 45; // 低电量提醒开关
boolean isEnableChargeReminder = false; private boolean isEnableUsageReminder = DEFAULT_ENABLE_USAGE_REMINDER;
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);
} }
public void setReminderIntervalTime(int reminderIntervalTime) { // ====================== Getter/Setter规范命名+参数校验,避免非法值) ======================
this.reminderIntervalTime = reminderIntervalTime; public boolean isEnableUsageReminder() {
return isEnableUsageReminder;
} }
public int getReminderIntervalTime() { public void setEnableUsageReminder(boolean enableUsageReminder) {
return reminderIntervalTime; isEnableUsageReminder = enableUsageReminder;
} }
public void setIsCharging(boolean isCharging) { public int getUsageReminderValue() {
this.isCharging = isCharging; return usageReminderValue;
} }
public boolean isCharging() { public void setUsageReminderValue(int usageReminderValue) {
return isCharging; // 校验电量阈值限制在0-100之间避免非法值导致业务异常
} this.usageReminderValue = Math.min(Math.max(usageReminderValue, 0), 100);
public void setCurrentValue(int currentValue) {
this.currentValue = currentValue;
}
public int getCurrentValue() {
return currentValue;
}
public void setIsEnableUsegeReminder(boolean isEnableUsegeReminder) {
this.isEnableUsegeReminder = isEnableUsegeReminder;
}
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() { public boolean isEnableChargeReminder() {
return isEnableChargeReminder; return isEnableChargeReminder;
} }
public void setChargeReminderValue(int chargeReminderValue) { public void setEnableChargeReminder(boolean enableChargeReminder) {
this.chargeReminderValue = chargeReminderValue; isEnableChargeReminder = enableChargeReminder;
} }
public int getChargeReminderValue() { public int getChargeReminderValue() {
return chargeReminderValue; return chargeReminderValue;
} }
public void setChargeReminderValue(int chargeReminderValue) {
// 校验电量阈值限制在0-100之间
this.chargeReminderValue = Math.min(Math.max(chargeReminderValue, 0), 100);
}
public int getReminderIntervalTime() {
return reminderIntervalTime;
}
public void setReminderIntervalTime(int reminderIntervalTime) {
// 校验间隔时间不小于1秒1000ms避免过短触发频繁提醒
this.reminderIntervalTime = Math.max(reminderIntervalTime, 1000);
}
// 瞬时状态字段仅保留Get/Set无序列化影响
public boolean isCharging() {
return isCharging;
}
public void setCharging(boolean charging) {
isCharging = charging;
}
public int getCurrentValue() {
return currentValue;
}
public void setCurrentValue(int currentValue) {
// 校验当前电量限制在0-100之间
this.currentValue = Math.min(Math.max(currentValue, 0), 100);
}
// ====================== 父类方法重写补全JSON序列化逻辑兼容所有配置字段 ======================
@Override @Override
public String getName() { public String getName() {
return AppConfigBean.class.getName(); return AppConfigBean.class.getName();
@@ -98,11 +118,12 @@ 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);
AppConfigBean bean = this; // 仅序列化「配置类字段」瞬时状态isCharging/currentValue不序列化
jsonWriter.name("isEnableUsegeReminder").value(bean.isEnableUsegeReminder()); jsonWriter.name("isEnableUsageReminder").value(isEnableUsageReminder());
jsonWriter.name("usegeReminderValue").value(bean.getUsegeReminderValue()); jsonWriter.name("usageReminderValue").value(getUsageReminderValue());
jsonWriter.name("isEnableChargeReminder").value(bean.isEnableChargeReminder()); jsonWriter.name("isEnableChargeReminder").value(isEnableChargeReminder());
jsonWriter.name("chargeReminderValue").value(bean.getChargeReminderValue()); jsonWriter.name("chargeReminderValue").value(getChargeReminderValue());
jsonWriter.name("reminderIntervalTime").value(getReminderIntervalTime()); // 补全之前遗漏的间隔时间序列化
} }
@Override @Override
@@ -111,20 +132,29 @@ 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();
if (name.equals("isEnableUsegeReminder")) { switch (name) {
bean.setIsEnableUsegeReminder(jsonReader.nextBoolean()); case "isEnableUsageReminder":
} else if (name.equals("usegeReminderValue")) { bean.setEnableUsageReminder(jsonReader.nextBoolean());
bean.setUsegeReminderValue(jsonReader.nextInt()); break;
} else if (name.equals("isEnableChargeReminder")) { case "usageReminderValue":
bean.setIsEnableChargeReminder(jsonReader.nextBoolean()); bean.setUsageReminderValue(jsonReader.nextInt());
} else if (name.equals("chargeReminderValue")) { break;
bean.setChargeReminderValue(jsonReader.nextInt()); case "isEnableChargeReminder":
} else { bean.setEnableChargeReminder(jsonReader.nextBoolean());
jsonReader.skipValue(); break;
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

@@ -50,7 +50,7 @@ public class ControlCenterServiceReceiver extends BroadcastReceiver {
appConfigUtils.loadAppConfigBean(); appConfigUtils.loadAppConfigBean();
AppConfigBean appConfigBean = appConfigUtils.mAppConfigBean; AppConfigBean appConfigBean = appConfigUtils.mAppConfigBean;
appConfigBean.setCurrentValue(nTheQuantityOfElectricity); appConfigBean.setCurrentValue(nTheQuantityOfElectricity);
appConfigBean.setIsCharging(isCharging); appConfigBean.setCharging(isCharging);
mwrService.get().startRemindThread(appConfigBean); mwrService.get().startRemindThread(appConfigBean);
// 保存电池报告 // 保存电池报告

View File

@@ -35,7 +35,7 @@ public class GlobalApplicationReceiver extends BroadcastReceiver {
// 先设置好新电池状态标志 // 先设置好新电池状态标志
boolean isCharging = BatteryUtils.isCharging(intent); boolean isCharging = BatteryUtils.isCharging(intent);
if (_mIsCharging != isCharging) { if (_mIsCharging != isCharging) {
mAppConfigUtils.setIsCharging(isCharging); mAppConfigUtils.setCharging(isCharging);
} }
int nTheQuantityOfElectricity = BatteryUtils.getTheQuantityOfElectricity(intent); int nTheQuantityOfElectricity = BatteryUtils.getTheQuantityOfElectricity(intent);
if (_mnTheQuantityOfElectricityOld != nTheQuantityOfElectricity) { if (_mnTheQuantityOfElectricityOld != nTheQuantityOfElectricity) {

View File

@@ -132,9 +132,9 @@ public class ControlCenterService extends Service {
String getValuesString() { String getValuesString() {
String szReturn = "Usege: "; String szReturn = "Usege: ";
szReturn += mAppConfigUtils.getIsEnableUsegeReminder() ? Integer.toString(mAppConfigUtils.getUsegeReminderValue()) : "?"; szReturn += mAppConfigUtils.isEnableUsageReminder() ? Integer.toString(mAppConfigUtils.getUsageReminderValue()) : "?";
szReturn += "% Charge: "; szReturn += "% Charge: ";
szReturn += mAppConfigUtils.getIsEnableChargeReminder() ? Integer.toString(mAppConfigUtils.getChargeReminderValue()) : "?"; szReturn += mAppConfigUtils.isEnableChargeReminder() ? Integer.toString(mAppConfigUtils.getChargeReminderValue()) : "?";
szReturn += "%\nCurrent: " + Integer.toString(mAppConfigUtils.getCurrentValue()) + "%"; szReturn += "%\nCurrent: " + Integer.toString(mAppConfigUtils.getCurrentValue()) + "%";
return szReturn; return szReturn;
} }
@@ -185,9 +185,9 @@ public class ControlCenterService extends Service {
} else { } else {
// 提醒进程正在进行中就更新状态后退出 // 提醒进程正在进行中就更新状态后退出
mRemindThread.setChargeReminderValue(appConfigBean.getChargeReminderValue()); mRemindThread.setChargeReminderValue(appConfigBean.getChargeReminderValue());
mRemindThread.setUsegeReminderValue(appConfigBean.getUsegeReminderValue()); mRemindThread.setUsegeReminderValue(appConfigBean.getUsageReminderValue());
mRemindThread.setIsEnableChargeReminder(appConfigBean.isEnableChargeReminder()); mRemindThread.setIsEnableChargeReminder(appConfigBean.isEnableChargeReminder());
mRemindThread.setIsEnableUsegeReminder(appConfigBean.isEnableUsegeReminder()); mRemindThread.setIsEnableUsegeReminder(appConfigBean.isEnableUsageReminder());
mRemindThread.setSleepTime(appConfigBean.getReminderIntervalTime()); mRemindThread.setSleepTime(appConfigBean.getReminderIntervalTime());
mRemindThread.setIsCharging(appConfigBean.isCharging()); mRemindThread.setIsCharging(appConfigBean.isCharging());
mRemindThread.setQuantityOfElectricity(appConfigBean.getCurrentValue()); mRemindThread.setQuantityOfElectricity(appConfigBean.getCurrentValue());
@@ -196,12 +196,12 @@ public class ControlCenterService extends Service {
} }
} }
mRemindThread.setChargeReminderValue(appConfigBean.getChargeReminderValue()); mRemindThread.setChargeReminderValue(appConfigBean.getChargeReminderValue());
mRemindThread.setUsegeReminderValue(appConfigBean.getUsegeReminderValue()); mRemindThread.setUsegeReminderValue(appConfigBean.getUsageReminderValue());
mRemindThread.setSleepTime(appConfigBean.getReminderIntervalTime()); mRemindThread.setSleepTime(appConfigBean.getReminderIntervalTime());
mRemindThread.setIsCharging(appConfigBean.isCharging()); mRemindThread.setIsCharging(appConfigBean.isCharging());
mRemindThread.setQuantityOfElectricity(appConfigBean.getCurrentValue()); mRemindThread.setQuantityOfElectricity(appConfigBean.getCurrentValue());
mRemindThread.setIsEnableChargeReminder(appConfigBean.isEnableChargeReminder()); mRemindThread.setIsEnableChargeReminder(appConfigBean.isEnableChargeReminder());
mRemindThread.setIsEnableUsegeReminder(appConfigBean.isEnableUsegeReminder()); mRemindThread.setIsEnableUsegeReminder(appConfigBean.isEnableUsageReminder());
mRemindThread.start(); mRemindThread.start();
//LogUtils.d(TAG, "mRemindThread.start()"); //LogUtils.d(TAG, "mRemindThread.start()");
} }

View File

@@ -93,22 +93,22 @@ public class AppConfigUtils {
return bean.isEnableService(); return bean.isEnableService();
} }
public void setIsEnableChargeReminder(boolean isEnableChargeReminder) { public void setEnableChargeReminder(boolean isEnableChargeReminder) {
mAppConfigBean.setIsEnableChargeReminder(isEnableChargeReminder); mAppConfigBean.setEnableChargeReminder(isEnableChargeReminder);
saveConfigData(MainActivity._mMainActivity); saveConfigData(MainActivity._mMainActivity);
} }
public boolean getIsEnableChargeReminder() { public boolean isEnableChargeReminder() {
return mAppConfigBean.isEnableChargeReminder(); return mAppConfigBean.isEnableChargeReminder();
} }
public void setIsEnableUsegeReminder(boolean isEnableUsegeReminder) { public void setEnableUsageReminder(boolean isEnableUsegeReminder) {
mAppConfigBean.setIsEnableUsegeReminder(isEnableUsegeReminder); mAppConfigBean.setEnableUsageReminder(isEnableUsegeReminder);
saveConfigData(MainActivity._mMainActivity); saveConfigData(MainActivity._mMainActivity);
} }
public boolean getIsEnableUsegeReminder() { public boolean isEnableUsageReminder() {
return mAppConfigBean.isEnableUsegeReminder(); return mAppConfigBean.isEnableUsageReminder();
} }
public void setChargeReminderValue(int value) { public void setChargeReminderValue(int value) {
@@ -120,17 +120,17 @@ public class AppConfigUtils {
return mAppConfigBean.getChargeReminderValue(); return mAppConfigBean.getChargeReminderValue();
} }
public void setUsegeReminderValue(int value) { public void setUsageReminderValue(int value) {
mAppConfigBean.setUsegeReminderValue(value); mAppConfigBean.setUsageReminderValue(value);
saveConfigData(MainActivity._mMainActivity); saveConfigData(MainActivity._mMainActivity);
} }
public int getUsegeReminderValue() { public int getUsageReminderValue() {
return mAppConfigBean.getUsegeReminderValue(); return mAppConfigBean.getUsageReminderValue();
} }
public void setIsCharging(boolean isCharging) { public void setCharging(boolean isCharging) {
mAppConfigBean.setIsCharging(isCharging); mAppConfigBean.setCharging(isCharging);
} }
public boolean isCharging() { public boolean isCharging() {
@@ -162,9 +162,9 @@ public class AppConfigUtils {
bean = new AppConfigBean(); bean = new AppConfigBean();
AppConfigBean.saveBean(mContext, mAppConfigBean); AppConfigBean.saveBean(mContext, mAppConfigBean);
} }
mAppConfigBean.setIsEnableUsegeReminder(bean.isEnableUsegeReminder()); mAppConfigBean.setEnableUsageReminder(bean.isEnableUsageReminder());
mAppConfigBean.setUsegeReminderValue(bean.getUsegeReminderValue()); mAppConfigBean.setUsageReminderValue(bean.getUsageReminderValue());
mAppConfigBean.setIsEnableChargeReminder(bean.isEnableChargeReminder()); mAppConfigBean.setEnableChargeReminder(bean.isEnableChargeReminder());
mAppConfigBean.setChargeReminderValue(bean.getChargeReminderValue()); mAppConfigBean.setChargeReminderValue(bean.getChargeReminderValue());
} }

View File

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