From 5c789a965977e5e40c1f29ca2fe6a542591046a3 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Mon, 8 Sep 2025 16:30:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=8B=A6=E6=88=AA=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/services/ble_manager.dart | 9 +++++++++ .../pairing/controllers/pairing_controller.dart | 14 ++++++++------ .../com/yunqiinnovation/ble_service/BleService.kt | 7 +++---- .../ble_service/BleServicePlugin.kt | 6 +++++- local_plugins/ble_service/lib/ble_service.dart | 10 ++++++++++ .../com/yunqiinnovation/qq_music/QQMusicManager.kt | 2 -- 6 files changed, 35 insertions(+), 13 deletions(-) diff --git a/lib/data/services/ble_manager.dart b/lib/data/services/ble_manager.dart index 414268fed..b0b79dbd9 100644 --- a/lib/data/services/ble_manager.dart +++ b/lib/data/services/ble_manager.dart @@ -1000,6 +1000,15 @@ class BleManager extends GetxService { } } + /// 启动设备关联 + Future connect() async { + try { + await _bleService.connect(); + } catch (e) { + Logger.error('连接设备失败: ${e.toString()}'); + } + } + /// 注册后台扫描 Future registerBackgroundScan({String? macAddress}) async { try { diff --git a/lib/modules/pairing/controllers/pairing_controller.dart b/lib/modules/pairing/controllers/pairing_controller.dart index 8131d1e01..a714d174c 100644 --- a/lib/modules/pairing/controllers/pairing_controller.dart +++ b/lib/modules/pairing/controllers/pairing_controller.dart @@ -708,12 +708,13 @@ class PairingController extends GetxController with WidgetsBindingObserver { // 注册后台扫描以开始BLE配对 if (_verifiedDeviceAddress != null) { - final success = await _bleManager.registerBackgroundScan( - macAddress: _verifiedDeviceAddress); - if (!success && _currentState.value == PairingState.waitingBle) { - _setError( - ErrorType.bleTimeout, 'blePairingStartupFailed'.tr); //BLE配对启动失败 - } + await _bleManager.connect(); + // final success = await _bleManager.registerBackgroundScan( + // macAddress: _verifiedDeviceAddress); + // if (!success && _currentState.value == PairingState.waitingBle) { + // _setError( + // ErrorType.bleTimeout, 'blePairingStartupFailed'.tr); //BLE配对启动失败 + // } } } catch (e) { Logger.e(_tag, 'BLE连接失败: $e'); @@ -1032,6 +1033,7 @@ class PairingController extends GetxController with WidgetsBindingObserver { try { Logger.i(_tag, '启动AgentService服务'); await _bleManager.startAgentService(); + _bleManager.registerBackgroundScan(macAddress: _verifiedDeviceAddress); } catch (e) { Logger.e(_tag, '启动AgentService失败: $e'); } diff --git a/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleService.kt b/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleService.kt index baaed09ec..e5283f305 100644 --- a/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleService.kt +++ b/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleService.kt @@ -308,7 +308,7 @@ object BleService { // Log.i(TAG, "liwei---------startScan 5") val filter = ScanFilter.Builder() // .setServiceUuid(ParcelUuid(BleConst.PRIMARY_SERVICE_UUID)) -// .setManufacturerData(0xEFAB, byteArrayOf(0xA0.toByte(), 0x01)) +// .setServiceUuid(ParcelUuid(java.util.UUID.fromString("00000201-0000-1000-8000-00805f9b34fb"))) .build() // val filters = uuids.mapNotNull { uuidStr -> // try { @@ -333,7 +333,7 @@ object BleService { // } // } val settings = ScanSettings.Builder() - .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY) + .setScanMode(ScanSettings.SCAN_MODE_LOW_POWER) .setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES) // 推荐:不会触发权限问题 .setReportDelay(0) .build() @@ -627,7 +627,7 @@ object BleService { when { status == BluetoothGatt.GATT_SUCCESS && newState == BluetoothProfile.STATE_CONNECTED -> { updateConnectionState(BleConst.STATE_CONNECTED) - + Log.d(TAG, "成功连接Ble蓝牙设备:${g.device.name}") // 设置PHY值为2M以提高传输速度 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { try { @@ -1446,7 +1446,6 @@ startBytesStatistics() Log.e(TAG, "音频发送线程异常: ${e.message}", e) } } - Log.i(TAG, "音频发送线程已停止") }.apply { name = "AudioSendThread" diff --git a/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleServicePlugin.kt b/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleServicePlugin.kt index 3e2a2677d..e4b456c91 100644 --- a/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleServicePlugin.kt +++ b/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleServicePlugin.kt @@ -189,7 +189,7 @@ class BleServicePlugin : FlutterPlugin, MethodCallHandler, ActivityAware, val success = BleService.getDeviceVersion() result.success(success) } - "getProductId" -> { + "getProductId" -> { val success = BleService.getProductId() result.success(success) } @@ -322,6 +322,10 @@ class BleServicePlugin : FlutterPlugin, MethodCallHandler, ActivityAware, Log.d(TAG, "getDeviceList $infos") result.success(infos) } + "connect" -> { + BleService.connect(); + result.success(null) + } "disconnect" -> { BleService.disconnect(); result.success(null) diff --git a/local_plugins/ble_service/lib/ble_service.dart b/local_plugins/ble_service/lib/ble_service.dart index 50a113cb8..bf10c4736 100644 --- a/local_plugins/ble_service/lib/ble_service.dart +++ b/local_plugins/ble_service/lib/ble_service.dart @@ -295,6 +295,16 @@ class BleService { } } + /// 停止TTS播放 + Future connect() async { + try { + await _methodChannel.invokeMethod('connect'); + } catch (e) { + print('连接设备失败: $e'); + return; + } + } + /// 断开连接 Future disconnect() async { try { diff --git a/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicManager.kt b/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicManager.kt index 414d46856..472b3b3b6 100644 --- a/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicManager.kt +++ b/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicManager.kt @@ -706,8 +706,6 @@ class QQMusicManager(private val context: Context) { } } - - /** * 获取当前平台对应的QQ音乐包名 */