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