144 lines
3.9 KiB
Markdown
144 lines
3.9 KiB
Markdown
# 蓝牙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
|
||
```
|
||
|
||
## 🚀 测试步骤
|
||
|
||
### 第一步:连接设备
|
||
1. **点击"连接蓝牙"按钮**
|
||
2. **选择你的ECG设备**
|
||
3. **等待连接完成**
|
||
|
||
### 第二步:查看调试信息
|
||
1. **观察Logcat输出**:
|
||
```
|
||
蓝牙状态: 服务发现成功
|
||
发现服务: 0000fff0-0000-1000-8000-00805f9b34fb
|
||
发现特征: 0000fff1-0000-1000-8000-00805f9b34fb
|
||
```
|
||
|
||
2. **检查状态信息**:
|
||
- ✅ 如果显示"数据通道已建立,开始接收数据" → 成功
|
||
- ❌ 如果显示"未找到匹配的服务或特征" → 需要手动配置
|
||
|
||
### 第三步:手动配置UUID(如果需要)
|
||
如果自动匹配失败,请:
|
||
|
||
1. **查看可用服务UUID**:
|
||
```
|
||
状态信息: 可用服务: 0000xxxx-0000-1000-8000-00805f9b34fb, ...
|
||
```
|
||
|
||
2. **记录你的设备UUID**:
|
||
- 服务UUID: `0000xxxx-0000-1000-8000-00805f9b34fb`
|
||
- 特征UUID: `0000yyyy-0000-1000-8000-00805f9b34fb`
|
||
|
||
3. **修改代码**:
|
||
```kotlin
|
||
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!🎯
|