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 8a6c84ef7..87355f98c 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 @@ -346,7 +346,7 @@ object BleService { } val filter = ScanFilter.Builder() - //.setServiceUuid(ParcelUuid(uuid)) + .setServiceUuid(ParcelUuid(uuid)) .build() filters.add(filter) Log.d(TAG, "添加扫描过滤器UUID: $uuid") diff --git a/local_plugins/ble_service/ios/ble_service/Sources/ble_service/BleService.swift b/local_plugins/ble_service/ios/ble_service/Sources/ble_service/BleService.swift index 87c242ef8..da86e4dca 100644 --- a/local_plugins/ble_service/ios/ble_service/Sources/ble_service/BleService.swift +++ b/local_plugins/ble_service/ios/ble_service/Sources/ble_service/BleService.swift @@ -300,13 +300,13 @@ private var cmdReplyType: UInt8 = 0 } } - // // 开始扫描,使用构建的服务UUID数组进行过滤 - // manager.scanForPeripherals(withServices: serviceUUIDs.isEmpty ? nil : serviceUUIDs, options: [ - // CBCentralManagerScanOptionAllowDuplicatesKey: true // 允许重复以获取更新的广播数据 - // ]) - manager.scanForPeripherals(withServices: nil , options: [ + // 开始扫描,使用构建的服务UUID数组进行过滤 + manager.scanForPeripherals(withServices: serviceUUIDs.isEmpty ? nil : serviceUUIDs, options: [ CBCentralManagerScanOptionAllowDuplicatesKey: true // 允许重复以获取更新的广播数据 ]) + // manager.scanForPeripherals(withServices: nil , options: [ + // CBCentralManagerScanOptionAllowDuplicatesKey: true // 允许重复以获取更新的广播数据 + // ]) let filterInfo = serviceUUIDs.isEmpty ? "无过滤" : "过滤器数量: \(serviceUUIDs.count)" os_log("🔍 开始扫描BLE设备(%{public}@),超时时间: %.1f秒", log: logger, type: .info, filterInfo, timeout) diff --git a/local_plugins/classic_bluetooth/ios/classic_bluetooth/Package.swift b/local_plugins/classic_bluetooth/ios/classic_bluetooth/Package.swift index c5a9d1c96..9150e4b8e 100644 --- a/local_plugins/classic_bluetooth/ios/classic_bluetooth/Package.swift +++ b/local_plugins/classic_bluetooth/ios/classic_bluetooth/Package.swift @@ -11,12 +11,16 @@ let package = Package( ) ], dependencies: [ - // 如果需要其他依赖,在这里添加 + // 添加对ble_service的依赖 + .package(path: "../../../ble_service/ios/ble_service") ], targets: [ .target( name: "classic_bluetooth", - dependencies: [], + dependencies: [ + // 添加ble_service产品依赖 + .product(name: "ble-service", package: "ble_service") + ], path: "Sources" ) ] diff --git a/local_plugins/classic_bluetooth/ios/classic_bluetooth/Sources/classic_bluetooth/ClassicBluetoothHelper.swift b/local_plugins/classic_bluetooth/ios/classic_bluetooth/Sources/classic_bluetooth/ClassicBluetoothHelper.swift index 7a83661db..6db8ac026 100644 --- a/local_plugins/classic_bluetooth/ios/classic_bluetooth/Sources/classic_bluetooth/ClassicBluetoothHelper.swift +++ b/local_plugins/classic_bluetooth/ios/classic_bluetooth/Sources/classic_bluetooth/ClassicBluetoothHelper.swift @@ -1,7 +1,7 @@ import Foundation import AVFoundation import CoreBluetooth - +import ble_service /// 蓝牙事件类型 public enum BluetoothEventType { case stateChanged @@ -65,16 +65,35 @@ public class ClassicBluetoothHelper: NSObject, CBCentralManagerDelegate { case .stateChanged: if let state = data["state"] as? String { print("蓝牙状态变化: \(state)") -// configureAudioRouteBasedOnBluetoothState() } case .deviceConnected: print("蓝牙设备已连接") - // 蓝牙设备连接时:末端在手机,输出端在耳机 -// configureAudioForBluetoothConnected() case .deviceDisconnected: print("蓝牙设备已断开") - // 蓝牙设备断开时:末端和输出端都在手机 - /*configureAudioForBluetoothDisconnected*/() + // 蓝牙设备断开时:调用BLE断开连接 + disconnectBleOnClassicBluetoothDisconnected() + } + } + + /** + * 经典蓝牙断开时调用BLE断开连接 + * 当检测到经典蓝牙设备断开时,主动断开BLE连接 + */ + private func disconnectBleOnClassicBluetoothDisconnected() { + // 检查BLE服务是否可用 + if #available(iOS 13.0, *) { + let bleService = BleService.shared + + // 检查BLE是否已连接 + if bleService.isConnected() { + print("检测到经典蓝牙断开,正在断开BLE连接...") + bleService.disconnect() + print("BLE连接已断开") + } else { + print("BLE未连接,无需断开") + } + } else { + print("iOS版本不支持BLE服务") } } @@ -290,6 +309,9 @@ public class ClassicBluetoothHelper: NSObject, CBCentralManagerDelegate { "address": cleanDeviceAddress(output.uid) ] stateCallback?(.deviceDisconnected, ["device": device]) + + // 在这里调用BLE断开连接 + disconnectBleOnClassicBluetoothDisconnected() } // 检查当前是否还有蓝牙设备