3.9 KiB
3.9 KiB
蓝牙UUID调试指南
🎯 问题描述
连接蓝牙设备后出现"未找到目标服务"错误,这是因为设备的UUID与预设的不匹配。
🔧 解决方案
1. 自动UUID匹配 ✅
- 实现:支持多种常见ECG设备UUID
- 效果:自动尝试匹配不同的服务UUID和特征UUID
- UUID列表:
服务UUID: - 0000fff0-0000-1000-8000-00805f9b34fb (默认) - 0000ffe0-0000-1000-8000-00805f9b34fb (变体1) - 0000ffe5-0000-1000-8000-00805f9b34fb (变体2) - 0000ff00-0000-1000-8000-00805f9b34fb (变体3) - 0000ff10-0000-1000-8000-00805f9b34fb (变体4) 特征UUID: - 0000fff1-0000-1000-8000-00805f9b34fb (默认) - 0000ffe1-0000-1000-8000-00805f9b34fb (变体1) - 0000ffe6-0000-1000-8000-00805f9b34fb (变体2) - 0000ff01-0000-1000-8000-00805f9b34fb (变体3) - 0000ff11-0000-1000-8000-00805f9b34fb (变体4)
2. 详细调试信息 ✅
- 实现:打印所有可用服务和特征
- 效果:显示设备实际提供的UUID
- 日志输出:
D/BluetoothManager: 设备提供的服务数量: 3 D/BluetoothManager: 发现服务: 0000fff0-0000-1000-8000-00805f9b34fb D/BluetoothManager: 服务 0000fff0-0000-1000-8000-00805f9b34fb 的特征数量: 2 D/BluetoothManager: 发现特征: 0000fff1-0000-1000-8000-00805f9b34fb D/BluetoothManager: 发现特征: 0000fff2-0000-1000-8000-00805f9b34fb
🚀 测试步骤
第一步:连接设备
- 点击"连接蓝牙"按钮
- 选择你的ECG设备
- 等待连接完成
第二步:查看调试信息
-
观察Logcat输出:
蓝牙状态: 服务发现成功 发现服务: 0000fff0-0000-1000-8000-00805f9b34fb 发现特征: 0000fff1-0000-1000-8000-00805f9b34fb -
检查状态信息:
- ✅ 如果显示"数据通道已建立,开始接收数据" → 成功
- ❌ 如果显示"未找到匹配的服务或特征" → 需要手动配置
第三步:手动配置UUID(如果需要)
如果自动匹配失败,请:
-
查看可用服务UUID:
状态信息: 可用服务: 0000xxxx-0000-1000-8000-00805f9b34fb, ... -
记录你的设备UUID:
- 服务UUID:
0000xxxx-0000-1000-8000-00805f9b34fb - 特征UUID:
0000yyyy-0000-1000-8000-00805f9b34fb
- 服务UUID:
-
修改代码:
private val SERVICE_UUIDS = listOf( UUID.fromString("你的服务UUID"), // 添加你的UUID UUID.fromString("0000fff0-0000-1000-8000-00805f9b34fb"), // ... 其他UUID )
📱 常见ECG设备UUID
1. 标准ECG设备
服务UUID: 0000fff0-0000-1000-8000-00805f9b34fb
特征UUID: 0000fff1-0000-1000-8000-00805f9b34fb
2. 心电监护仪
服务UUID: 0000ffe0-0000-1000-8000-00805f9b34fb
特征UUID: 0000ffe1-0000-1000-8000-00805f9b34fb
3. 便携式ECG
服务UUID: 0000ffe5-0000-1000-8000-00805f9b34fb
特征UUID: 0000ffe6-0000-1000-8000-00805f9b34fb
🔍 调试技巧
1. 使用Logcat过滤
adb logcat | grep BluetoothManager
2. 查看设备信息
adb logcat | grep "发现服务\|发现特征"
3. 检查连接状态
adb logcat | grep "设备已连接\|服务发现成功"
⚠️ 注意事项
1. UUID格式
- UUID必须是标准格式:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - 16位UUID会自动扩展为128位
2. 权限要求
- 需要
BLUETOOTH_CONNECT权限 - Android 12+需要额外权限
3. 设备兼容性
- 不同厂商的ECG设备可能使用不同UUID
- 需要根据实际设备调整
🎉 预期效果
成功连接:
- ✅ 显示"数据通道已建立,开始接收数据"
- ✅ 开始接收ECG数据
- ✅ 数据传递给数据处理模块
需要调试:
- ❌ 显示"未找到匹配的服务或特征"
- ℹ️ 显示所有可用服务的UUID
- 🔧 需要手动添加正确的UUID
现在请重新连接你的设备,查看调试信息,告诉我你的设备实际使用的UUID!🎯