|
|
@ -202,6 +202,8 @@ class BleManager extends GetxService { |
|
|
final _isCodecActive = false.obs; |
|
|
final _isCodecActive = false.obs; |
|
|
bool get isCodecActive => _isCodecActive.value; |
|
|
bool get isCodecActive => _isCodecActive.value; |
|
|
RxBool get isCodecActiveRx => _isCodecActive; |
|
|
RxBool get isCodecActiveRx => _isCodecActive; |
|
|
|
|
|
bool _awaitingCodecOpen = false; //是否正在等待编码器打开的成功应答 |
|
|
|
|
|
bool _awaitingCodecClose = false; //是否正在等待编码器关闭的成功应答 |
|
|
|
|
|
|
|
|
// 订阅 |
|
|
// 订阅 |
|
|
StreamSubscription<dynamic>? _statusSubscription; |
|
|
StreamSubscription<dynamic>? _statusSubscription; |
|
|
@ -267,7 +269,9 @@ class BleManager extends GetxService { |
|
|
state == BleConnectionState.error) { |
|
|
state == BleConnectionState.error) { |
|
|
Logger.info('lxm--BLE设备已断开或发生错误'); |
|
|
Logger.info('lxm--BLE设备已断开或发生错误'); |
|
|
_isConnected.value = false; |
|
|
_isConnected.value = false; |
|
|
// 更新设备信息Add commentMore actions |
|
|
_awaitingCodecOpen = false; |
|
|
|
|
|
_awaitingCodecClose = false; |
|
|
|
|
|
_isCodecActive.value = false; |
|
|
Logger.info('lxm--断开连接时重置设备信息为0'); |
|
|
Logger.info('lxm--断开连接时重置设备信息为0'); |
|
|
_updateDeviceInfoIfNeeded( |
|
|
_updateDeviceInfoIfNeeded( |
|
|
batteryLevel: 0, |
|
|
batteryLevel: 0, |
|
|
@ -376,7 +380,16 @@ class BleManager extends GetxService { |
|
|
print(" CONTROL_CODEC: $commandId,$data"); |
|
|
print(" CONTROL_CODEC: $commandId,$data"); |
|
|
|
|
|
|
|
|
final bool codecSuccess = _isCodecControlSuccess(data); |
|
|
final bool codecSuccess = _isCodecControlSuccess(data); |
|
|
_isCodecActive.value = codecSuccess; // 更新编解码器状态 |
|
|
if (_awaitingCodecOpen) { |
|
|
|
|
|
//如果正在等待打开编解码器 |
|
|
|
|
|
_isCodecActive.value = codecSuccess; // 只在等待打开时更新状态 |
|
|
|
|
|
_awaitingCodecOpen = false; |
|
|
|
|
|
} else if (_awaitingCodecClose) { |
|
|
|
|
|
if (codecSuccess) { |
|
|
|
|
|
_isCodecActive.value = false; |
|
|
|
|
|
} |
|
|
|
|
|
_awaitingCodecClose = false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
if (codecSuccess) { |
|
|
if (codecSuccess) { |
|
|
print("lxm--编解码控制成功 (rawData 第二字节非 0)"); |
|
|
print("lxm--编解码控制成功 (rawData 第二字节非 0)"); |
|
|
@ -991,19 +1004,27 @@ class BleManager extends GetxService { |
|
|
/// 打开解码器 |
|
|
/// 打开解码器 |
|
|
Future<bool> openDecoder() async { |
|
|
Future<bool> openDecoder() async { |
|
|
try { |
|
|
try { |
|
|
|
|
|
_awaitingCodecOpen = true; |
|
|
|
|
|
_awaitingCodecClose = false; |
|
|
|
|
|
_isCodecActive.value = false; |
|
|
return await _bleService.openDecoder(); |
|
|
return await _bleService.openDecoder(); |
|
|
} catch (e) { |
|
|
} catch (e) { |
|
|
Logger.error('打开解码器失败: ${e.toString()}'); |
|
|
Logger.error('打开解码器失败: ${e.toString()}'); |
|
|
|
|
|
_awaitingCodecOpen = false; |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/// 打开解码器 |
|
|
/// 打开A2DP解码器 |
|
|
Future<bool> openA2DPDecoder() async { |
|
|
Future<bool> openA2DPDecoder() async { |
|
|
try { |
|
|
try { |
|
|
|
|
|
_awaitingCodecOpen = true; |
|
|
|
|
|
_awaitingCodecClose = false; |
|
|
|
|
|
_isCodecActive.value = false; |
|
|
return await _bleService.openA2DPDecoder(); |
|
|
return await _bleService.openA2DPDecoder(); |
|
|
} catch (e) { |
|
|
} catch (e) { |
|
|
Logger.error('打开解码器失败: ${e.toString()}'); |
|
|
Logger.error('打开解码器失败: ${e.toString()}'); |
|
|
|
|
|
_awaitingCodecOpen = false; |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
@ -1021,9 +1042,13 @@ class BleManager extends GetxService { |
|
|
/// 关闭编解码器 |
|
|
/// 关闭编解码器 |
|
|
Future<bool> closeCodec() async { |
|
|
Future<bool> closeCodec() async { |
|
|
try { |
|
|
try { |
|
|
|
|
|
_awaitingCodecOpen = false; |
|
|
|
|
|
_awaitingCodecClose = true; |
|
|
|
|
|
_isCodecActive.value = false; |
|
|
return await _bleService.closeCodec(); |
|
|
return await _bleService.closeCodec(); |
|
|
} catch (e) { |
|
|
} catch (e) { |
|
|
Logger.error('关闭编解码器失败: ${e.toString()}'); |
|
|
Logger.error('关闭编解码器失败: ${e.toString()}'); |
|
|
|
|
|
_awaitingCodecClose = false; |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|