diff --git a/lib/data/services/ble_manager.dart b/lib/data/services/ble_manager.dart index ee309c286..1bd4b11c5 100644 --- a/lib/data/services/ble_manager.dart +++ b/lib/data/services/ble_manager.dart @@ -395,7 +395,7 @@ class BleManager extends GetxService { Logger.info('lxm-- overallBattery: $overallBattery'); Logger.info('lxm--准备调用_updateDeviceInfoIfNeeded'); - + // 更新设备信息 _updateDeviceInfoIfNeeded( batteryLevel: overallBattery, @@ -488,8 +488,10 @@ class BleManager extends GetxService { deviceInfo.value = deviceInfo.value!.copyWith( batteryLevel: batteryLevel ?? deviceInfo.value?.batteryLevel, - leftEarBattery: leftEarBattery ?? deviceInfo.value?.leftEarBattery, - rightEarBattery: rightEarBattery ?? deviceInfo.value?.rightEarBattery, + leftEarBattery: _getValidBatteryValue( + leftEarBattery, deviceInfo.value?.leftEarBattery), + rightEarBattery: _getValidBatteryValue( + rightEarBattery, deviceInfo.value?.rightEarBattery), caseBattery: caseBattery ?? deviceInfo.value?.caseBattery, leftEarCharging: leftEarCharging ?? deviceInfo.value!.leftEarCharging, rightEarCharging: @@ -537,6 +539,24 @@ class BleManager extends GetxService { } } + // 新增智能电池值选择方法 + int? _getValidBatteryValue(int? newValue, int? currentValue) { + // 如果新值为null,使用当前值 + if (newValue == null) return currentValue; + + // 如果当前值为null或0,使用新值(即使新值为0) + if (currentValue == null || currentValue == 0) return newValue; + + // 如果新值为0但当前值不为0,保持当前值(避免有效数据被0覆盖) + if (newValue == 0 && currentValue > 0) { + Logger.warning('检测到电池数据异常(新值为0),保持当前值: $currentValue'); + return currentValue; + } + + // 其他情况使用新值 + return newValue; + } + /// 清除设备信息(用于完全断开连接或切换设备时) void clearDeviceInfo() { Logger.info('清除设备信息');