|
|
@ -307,27 +307,32 @@ object BleService { |
|
|
Log.i(TAG, "开始主动扫描BLE设备...") |
|
|
Log.i(TAG, "开始主动扫描BLE设备...") |
|
|
scanResults.clear() |
|
|
scanResults.clear() |
|
|
// Log.i(TAG, "liwei---------startScan 5") |
|
|
// Log.i(TAG, "liwei---------startScan 5") |
|
|
// val filter = ScanFilter.Builder() |
|
|
val filter = ScanFilter.Builder() |
|
|
// // .setServiceUuid(ParcelUuid(BleConst.PRIMARY_SERVICE_UUID)) |
|
|
// .setServiceUuid(ParcelUuid(BleConst.PRIMARY_SERVICE_UUID)) |
|
|
// .setManufacturerData(0xEFAB, byteArrayOf(0xA0.toByte(), 0x01)) |
|
|
// .setManufacturerData(0xEFAB, byteArrayOf(0xA0.toByte(), 0x01)) |
|
|
// .build() |
|
|
.build() |
|
|
// Log.i(TAG, "liwei---------startScan 6") |
|
|
// val filters = uuids.mapNotNull { uuidStr -> |
|
|
// val settings = ScanSettings.Builder() |
|
|
// try { |
|
|
// .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY) |
|
|
// // 清理UUID字符串,移除非十六进制字符 |
|
|
// // .setCallbackType(ScanSettings.CALLBACK_TYPE_FIRST_MATCH) |
|
|
// val cleanUuidStr = uuidStr.replace("[^0-9A-Fa-f]".toRegex(), "") |
|
|
// .setCallbackType(ScanSettings.CALLBACK_TYPE_FIRST_MATCH) // 使用ALL_MATCHES获取所有结果 |
|
|
// |
|
|
// .setReportDelay(0) // 立即报告结果 |
|
|
// // 验证清理后的字符串长度(应该是4位十六进制字符) |
|
|
// .build() |
|
|
// if (cleanUuidStr.length != 4) { |
|
|
// val filter = ScanFilter.Builder() |
|
|
// Log.w(TAG, "无效的UUID格式: $uuidStr,清理后: $cleanUuidStr,长度: ${cleanUuidStr.length}") |
|
|
// // 建议用 Service UUID 或 Device Name 替代 Manufacturer Data |
|
|
// return@mapNotNull null |
|
|
// // .setServiceUuid(ParcelUuid(BleConst.PRIMARY_SERVICE_UUID)) |
|
|
// } |
|
|
//// .setDeviceName(deviceName) // 更通用、更安全 |
|
|
// |
|
|
// .build() |
|
|
// val fullUuid = "0000$cleanUuidStr-0000-1000-8000-00805f9b34fb" |
|
|
val filters = uuids.map { uuidStr -> |
|
|
// Log.d(TAG, "扫描uuid: $fullUuid") |
|
|
ScanFilter.Builder() |
|
|
// |
|
|
.setServiceUuid(ParcelUuid(UUID.fromString(uuidStr))) |
|
|
// ScanFilter.Builder() |
|
|
.build() |
|
|
// .setServiceUuid(ParcelUuid(UUID.fromString(fullUuid))) |
|
|
} |
|
|
// .build() |
|
|
|
|
|
// } catch (e: IllegalArgumentException) { |
|
|
|
|
|
// Log.e(TAG, "构造UUID失败: $uuidStr", e) |
|
|
|
|
|
// null |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
val settings = ScanSettings.Builder() |
|
|
val settings = ScanSettings.Builder() |
|
|
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY) |
|
|
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY) |
|
|
.setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES) // 推荐:不会触发权限问题 |
|
|
.setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES) // 推荐:不会触发权限问题 |
|
|
@ -335,7 +340,7 @@ object BleService { |
|
|
.build() |
|
|
.build() |
|
|
// Log.i(TAG, "liwei---------startScan 7") |
|
|
// Log.i(TAG, "liwei---------startScan 7") |
|
|
try { |
|
|
try { |
|
|
scanner.startScan(filters, settings, scanCallback) |
|
|
scanner.startScan(listOf(filter), settings, scanCallback) |
|
|
isScanning = true |
|
|
isScanning = true |
|
|
// Log.i(TAG, "liwei---------startScan 8") |
|
|
// Log.i(TAG, "liwei---------startScan 8") |
|
|
// 设置扫描超时 |
|
|
// 设置扫描超时 |
|
|
@ -468,10 +473,10 @@ object BleService { |
|
|
val serviceUuids = |
|
|
val serviceUuids = |
|
|
scanRecord?.serviceUuids?.joinToString(", ") { it.uuid.toString() } ?: "无" |
|
|
scanRecord?.serviceUuids?.joinToString(", ") { it.uuid.toString() } ?: "无" |
|
|
|
|
|
|
|
|
// Log.d( |
|
|
Log.d( |
|
|
// TAG, "liwei--------- 扫描到设备: 名称=${device.name ?: "未知"}, 地址=${device.address}, " + |
|
|
TAG, "liwei--------- 扫描到设备: 名称=${device.name ?: "未知"}, 地址=${device.address}, " + |
|
|
// "RSSI=${result.rssi}, 服务UUID=[$serviceUuids]" |
|
|
"RSSI=${result.rssi}, 服务UUID=[$serviceUuids]" |
|
|
// ) |
|
|
) |
|
|
val info = mutableMapOf( |
|
|
val info = mutableMapOf( |
|
|
"name" to (device.name ?: "未知"), |
|
|
"name" to (device.name ?: "未知"), |
|
|
"address" to device.address |
|
|
"address" to device.address |
|
|
|