Browse Source

Merge branch 'new_dev' of https://github.com/deepcloud2048/deep_voice into new_dev

newdev_shunjiawei
liwei1dao 1 year ago
parent
commit
0a083cfc22
  1. 53
      lib/modules/home/controllers/home_controller.dart
  2. 45
      lib/modules/home/views/home_view.dart
  3. 2
      lib/modules/meeting/controllers/meeting_home_controller.dart
  4. 52
      lib/modules/ota_upgrade/controllers/ota_core_contropller.dart
  5. 2
      lib/modules/ota_upgrade/controllers/ota_upgrade_controller.dart
  6. 10
      lib/modules/ota_upgrade/views/ota_upgrade_view.dart
  7. 10
      lib/modules/pairing/controllers/pairing_controller.dart

53
lib/modules/home/controllers/home_controller.dart

@ -42,51 +42,48 @@ class HomeController extends GetxController {
BluetoothDevice? get currentDevice => _bluetoothManager.currentDevice;
Rx<DeviceInfo?> get deviceInfo => _bleManager.deviceInfo;
static final leftEarBattery = 0.obs;
static final rightEarBattery = 0.obs;
static final RxInt leftEarBattery = 0.obs;
static final RxInt rightEarBattery = 0.obs;
final caseBattery = 0.obs;
final leftEarCharging = false.obs;
final rightEarCharging = false.obs;
final caseCharging = false.obs;
final firmwareVersion = ''.obs;
void updateDeviceInfo(DeviceInfo? newDeviceInfo) {
Logger.d(_tag, 'lxm--updateDeviceInfo被调用');
Logger.d(_tag, 'lxm--接收到的DeviceInfo: $newDeviceInfo');
if (newDeviceInfo != null) {
// Logger.d(_tag, 'lxm--原始数据 - 左耳电量: ${newDeviceInfo.leftEarBattery}');
// Logger.d(_tag, 'lxm--原始数据 - 右耳电量: ${newDeviceInfo.rightEarBattery}');
// Logger.d(_tag, 'lxm--原始数据 - 充电仓电量: ${newDeviceInfo.caseBattery}');
// Logger.d(_tag, 'lxm--原始数据 - 左耳充电: ${newDeviceInfo.leftEarCharging}');
// Logger.d(_tag, 'lxm--原始数据 - 右耳充电: ${newDeviceInfo.rightEarCharging}');
// Logger.d(_tag, 'lxm--原始数据 - 充电仓充电: ${newDeviceInfo.caseCharging}');
// Logger.d(_tag, 'lxm--原始数据 - 固件版本: ${newDeviceInfo.firmwareVersion}');
Logger.d(_tag, 'lxm--原始数据 - 左耳电量: ${newDeviceInfo.leftEarBattery}');
Logger.d(_tag, 'lxm--原始数据 - 右耳电量: ${newDeviceInfo.rightEarBattery}');
Logger.d(_tag, 'lxm--原始数据 - 充电仓电量: ${newDeviceInfo.caseBattery}');
Logger.d(_tag, 'lxm--原始数据 - 左耳充电: ${newDeviceInfo.leftEarCharging}');
Logger.d(_tag, 'lxm--原始数据 - 右耳充电: ${newDeviceInfo.rightEarCharging}');
Logger.d(_tag, 'lxm--原始数据 - 充电仓充电: ${newDeviceInfo.caseCharging}');
Logger.d(_tag, 'lxm--原始数据 - 固件版本: ${newDeviceInfo.firmwareVersion}');
} else {
Logger.d(_tag, 'lxm--接收到的DeviceInfo为null');
}
// 只有当新数据不为0时才更新电池值,否则保持原值
if ((newDeviceInfo?.leftEarBattery ?? 0) != 0) {
Logger.d(_tag, 'lxm--更新左耳电量: ${newDeviceInfo!.leftEarBattery}');
leftEarBattery.value = newDeviceInfo.leftEarBattery;
}
if ((newDeviceInfo?.rightEarBattery ?? 0) != 0) {
Logger.d(_tag, 'lxm--更新右耳电量: ${newDeviceInfo!.rightEarBattery}');
rightEarBattery.value = newDeviceInfo.rightEarBattery;
}
leftEarBattery.value = newDeviceInfo?.leftEarBattery ?? 0;
rightEarBattery.value = newDeviceInfo?.rightEarBattery ?? 0;
caseBattery.value = newDeviceInfo?.caseBattery ?? 0;
leftEarCharging.value = newDeviceInfo?.leftEarCharging ?? false;
rightEarCharging.value = newDeviceInfo?.rightEarCharging ?? false;
caseCharging.value = newDeviceInfo?.caseCharging ?? false;
firmwareVersion.value = newDeviceInfo?.firmwareVersion ?? '';
// Logger.d(_tag, 'lxm--更新后的值 - 左耳电量: ${leftEarBattery.value}');
// Logger.d(_tag, 'lxm--更新后的值 - 右耳电量: ${rightEarBattery.value}');
// Logger.d(_tag, 'lxm--更新后的值 - 充电仓电量: ${caseBattery.value}');
// Logger.d(_tag, 'lxm--更新后的值 - 左耳充电: ${leftEarCharging.value}');
// Logger.d(_tag, 'lxm--更新后的值 - 右耳充电: ${rightEarCharging.value}');
// Logger.d(_tag, 'lxm--更新后的值 - 充电仓充电: ${caseCharging.value}');
// Logger.d(_tag, 'lxm--更新后的值 - 固件版本: ${firmwareVersion.value}');
Logger.d(_tag, 'lxm--更新后的值 - 左耳电量: ${leftEarBattery.value}');
Logger.d(_tag, 'lxm--更新后的值 - 右耳电量: ${rightEarBattery.value}');
Logger.d(_tag, 'lxm--更新后的值 - 充电仓电量: ${caseBattery.value}');
Logger.d(_tag, 'lxm--更新后的值 - 左耳充电: ${leftEarCharging.value}');
Logger.d(_tag, 'lxm--更新后的值 - 右耳充电: ${rightEarCharging.value}');
Logger.d(_tag, 'lxm--更新后的值 - 充电仓充电: ${caseCharging.value}');
Logger.d(_tag, 'lxm--更新后的值 - 固件版本: ${firmwareVersion.value}');
// rightEarCharging.refresh();
//update();
}
Worker? _deviceInfoWorker;
@ -131,7 +128,7 @@ class HomeController extends GetxController {
} else {
Logger.d(_tag, 'lxm--DeviceInfo为null,跳过更新');
}
update();
//update();
});
_classicBluetoothWorker =
@ -213,7 +210,7 @@ class HomeController extends GetxController {
if (_isFullyConnected.value != isNowConnected) {
_isFullyConnected.value = isNowConnected;
_isFullyConnected.refresh();
update();
//update();
if (!wasConnected && isNowConnected) {
// 连接成功后等待1秒再获取设备信息
@ -233,7 +230,7 @@ class HomeController extends GetxController {
// 移除了根据连接状态控制定时器的逻辑
}
update();
//update();
} catch (e) {
Logger.e(_tag, '${'checkConnectionStatusFailed'.tr}: $e');
if (_isFullyConnected.value) {
@ -241,7 +238,7 @@ class HomeController extends GetxController {
_isFullyConnected.refresh();
// 移除了发生错误时停止定时器的逻辑
// 注意:不再重置OTA检查状态,因为现在由全局服务管理
update();
//update();
}
}
}

45
lib/modules/home/views/home_view.dart

@ -500,17 +500,22 @@ class HomeView extends GetView<HomeController> {
Widget _buildBatteryInfoGrid(bool isDarkMode) {
return Obx(() {
// 获取各部分电池电量
final leftBattery = HomeController.leftEarBattery;
final rightBattery = HomeController.rightEarBattery;
final caseBattery = controller.caseBattery;
final leftBattery = HomeController.leftEarBattery.value;
final rightBattery = HomeController.rightEarBattery.value;
final caseBattery = controller.caseBattery.value;
// 获取充电状态
final leftEarCharging = controller.leftEarCharging;
final rightEarCharging = controller.rightEarCharging;
final caseCharging = controller.caseCharging;
final leftEarCharging = controller.leftEarCharging.value;
final rightEarCharging = controller.rightEarCharging.value;
final caseCharging = controller.caseCharging.value;
final isConnected = controller.isFullyConnectedRx.value;
print(
'lxm--电池信息UI - 左耳电量: $leftBattery, 右耳电量: $rightBattery, 充电仓电量: $caseBattery, '
'充电(L/R/C): $leftEarCharging/$rightEarCharging/$caseCharging, 已连接: $isConnected');
// 判断是否显示充电盒:充电盒电量大于0且设备已连接
final shouldShowCase =
caseBattery.value > 0 && controller.isFullyConnectedRx.value;
final shouldShowCase = caseBattery > 0 && isConnected;
// 判断是否为单端耳机
final isSingleHeadset = controller.isSingleHeadset();
@ -529,12 +534,12 @@ class HomeView extends GetView<HomeController> {
if (isSingleHeadset) ...[
_buildCompactBatteryItem(
label: 'deviceTypeBleBluetoothHeadset'.tr,
batteryLevel: (leftBattery.value > 0 || rightBattery.value == 0)
? leftBattery.value
: rightBattery.value,
isCharging: (leftBattery.value > 0 || rightBattery.value == 0)
? leftEarCharging.value
: rightEarCharging.value,
batteryLevel: (leftBattery > 0 || rightBattery == 0)
? leftBattery
: rightBattery,
isCharging: (leftBattery > 0 || rightBattery == 0)
? leftEarCharging
: rightEarCharging,
isDarkMode: isDarkMode,
),
] else ...[
@ -542,8 +547,8 @@ class HomeView extends GetView<HomeController> {
// 左耳机
_buildCompactBatteryItem(
label: 'left'.tr, // 左
batteryLevel: leftBattery.value,
isCharging: leftEarCharging.value,
batteryLevel: leftBattery,
isCharging: leftEarCharging,
isDarkMode: isDarkMode,
),
@ -557,8 +562,8 @@ class HomeView extends GetView<HomeController> {
// 右耳机
_buildCompactBatteryItem(
label: 'right'.tr, // 右
batteryLevel: rightBattery.value,
isCharging: rightEarCharging.value,
batteryLevel: rightBattery,
isCharging: rightEarCharging,
isDarkMode: isDarkMode,
),
],
@ -575,8 +580,8 @@ class HomeView extends GetView<HomeController> {
// 充电盒
_buildCompactBatteryItem(
label: 'chargingCase'.tr,
batteryLevel: caseBattery.value,
isCharging: caseCharging.value,
batteryLevel: caseBattery,
isCharging: caseCharging,
isDarkMode: isDarkMode,
),
]

2
lib/modules/meeting/controllers/meeting_home_controller.dart

@ -341,7 +341,7 @@ class MeetingHomeController extends GetxController {
} else {
FilePickerResult? result = await FilePicker.platform.pickFiles(
withData: false,
type: FileType.audio,
//type: FileType.audio,
allowMultiple: false,
);
if (result != null) {

52
lib/modules/ota_upgrade/controllers/ota_core_contropller.dart

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:logger/web.dart';
import '../../../data/services/ble_manager.dart';
import '../../../data/services/bluetooth_manager.dart'; // 添加蓝牙管理器导入
import '../../../data/models/appconfig.dart';
import '../../../data/models/appconfig_model.dart';
@ -9,6 +10,8 @@ import '../../../data/models/appconfig_model.dart';
/// 整合设备检查、版本管理和状态管理功能
class OtaCoreService {
final BleManager _bleManager = Get.find<BleManager>();
final BluetoothManager _bluetoothManager =
Get.find<BluetoothManager>(); // 添加蓝牙管理器引用
final int maxRetryAttempts = 3;
int currentRetryCount = 0;
@ -261,6 +264,35 @@ class OtaCoreService {
// ==================== 版本管理功能 ====================
/// 动态获取当前连接的设备名称
/// 参考home_controller中的getDeviceName方法实现
String getDeviceName() {
try {
// 优先从经典蓝牙获取设备名称
final currentDevice = _bluetoothManager.currentDevice;
if (currentDevice?.name != null && currentDevice!.name.isNotEmpty) {
return currentDevice.name;
}
// 其次从BLE设备信息获取
final deviceInfo = _bleManager.deviceInfo.value;
if (deviceInfo?.name != null && deviceInfo!.name.isNotEmpty) {
return deviceInfo.name;
}
// 最后从BLE管理器的最后连接设备名称获取
// if (_bleManager.currentDeviceName.isNotEmpty) {
// return _bleManager.currentDeviceName;
// }
// 如果都获取不到,返回默认值
return "unknownEquipment";
} catch (e) {
Logger().e("获取设备名称失败: $e");
return "unknownEquipment";
}
}
/// 获取当前设备版本信息
/// 返回包含当前版本、产品ID和设备信息的Map
/// 抛出异常如果获取失败
@ -288,10 +320,16 @@ class OtaCoreService {
throw "获取设备信息失败,请检查连接";
}
String deviceName = getDeviceName();
// 获取产品信息以确定设备类型
DBProduct? product = AppConfig.getproduct("DeapSound");
DBProduct? product = AppConfig.getproduct(deviceName);
if (product == null) {
throw "无法获取产品信息";
// 如果根据设备名称找不到产品,尝试使用默认产品名称
product = AppConfig.getproduct("DeapSound");
if (product == null) {
throw "无法获取产品信息,设备名称: $deviceName";
}
}
// 根据设备类型进行不同的版本校验
@ -342,10 +380,16 @@ class OtaCoreService {
/// 返回包含最新版本、更新描述和更新包地址的Map
/// 抛出异常如果获取失败
Future<Map<String, dynamic>> getLatestVersionInfo() async {
DBProduct? product = AppConfig.getproduct("DeapSound");
// 动态获取当前连接的设备名称
String deviceName = getDeviceName();
DBProduct? product = AppConfig.getproduct(deviceName);
if (product == null) {
throw "无法获取产品信息";
// 如果根据设备名称找不到产品,尝试使用默认产品名称
product = AppConfig.getproduct("DeapSound");
if (product == null) {
throw "无法获取产品信息,设备名称: $deviceName";
}
}
return {

2
lib/modules/ota_upgrade/controllers/ota_upgrade_controller.dart

@ -60,7 +60,7 @@ class OtaUpgradeController extends GetxController {
/// 从本地存储加载上一次连接设备的图片链接
void _loadLastConnectedDeviceImage() {
_lastConnectedDeviceImage = _storage.read('last_connected_device_name');
_lastConnectedDeviceImage = _storage.read('last_connected_device_image');
Logger.d(
'OtaUpgradeController', '加载上一次连接设备的图片: $_lastConnectedDeviceImage');
}

10
lib/modules/ota_upgrade/views/ota_upgrade_view.dart

@ -189,6 +189,16 @@ class OtaUpgradeView extends GetView<OtaUpgradeController> {
builder: (controller) {
final imagePath = controller.lastConnectedDeviceImage;
if (imagePath == null || imagePath.isEmpty) {
return Image.asset(
isDarkMode
? 'assets/images/headphone_new3.png'
: 'assets/images/headphone_new4.png',
height: 100.h,
fit: BoxFit.contain,
);
}
// 网络图片
return Image.network(
imagePath,

10
lib/modules/pairing/controllers/pairing_controller.dart

@ -1043,8 +1043,14 @@ class PairingController extends GetxController with WidgetsBindingObserver {
} catch (e) {
Logger.e(_tag, '启动AgentService失败: $e');
}
Get.offAllNamed(Routes.home);
//print('lxm-上一个路由: ${Get.previousRoute.toString()}');
if (Get.previousRoute == Routes.home) {
// 如果是从home页过来的,则直接返回
Get.back();
} else {
// 否则,跳转到home页并清空之前的路由栈
Get.offAllNamed(Routes.home);
}
});
}

Loading…
Cancel
Save