# 蓝牙连接功能使用说明

## 📱 功能概述

本应用已集成蓝牙连接功能，支持连接十二导联心电设备并实时接收数据。

## 🔧 功能特性

### 1. 蓝牙设备管理
- **自动扫描**：点击"连接蓝牙"按钮自动扫描附近设备
- **设备选择**：扫描完成后显示设备列表供用户选择
- **状态显示**：实时显示连接状态和数据接收情况

### 2. 数据流处理
- **实时接收**：自动接收蓝牙设备发送的数据
- **数据处理**：将接收的数据传递给现有的数据处理管道
- **实时显示**：在ECG曲线图上实时显示接收的数据

### 3. 用户界面
- **状态指示**：按钮颜色和文字显示当前连接状态
- **日志记录**：详细记录蓝牙操作和状态变化
- **错误处理**：友好的错误提示和状态恢复

## 🚀 使用方法

### 第一步：启用蓝牙
1. 确保设备蓝牙已启用
2. 确保心电设备已开启并处于可发现状态

### 第二步：连接设备
1. 点击"连接蓝牙"按钮
2. 等待扫描完成（约2-3秒）
3. 在弹出的设备列表中选择目标设备
4. 等待连接建立

### 第三步：开始数据采集
1. 连接成功后，点击"启动程序"按钮
2. 观察ECG曲线图开始显示实时数据
3. 查看状态信息确认数据接收正常

## 🔧 技术配置

### 蓝牙参数设置
```kotlin
// 服务UUID (根据设备协议调整)
private val SERVICE_UUID = UUID.fromString("0000fff0-0000-1000-8000-00805f9b34fb")

// 特征UUID (根据设备协议调整)  
private val CHARACTERISTIC_UUID = UUID.fromString("0000fff1-0000-1000-8000-00805f9b34fb")

// 设备名称前缀
private const val DEVICE_NAME_PREFIX = "ECG"
```

### 权限配置
```xml
<!-- 蓝牙权限 -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
```

## 📊 状态指示

### 按钮状态
| 状态 | 按钮文字 | 按钮颜色 | 说明 |
|------|----------|----------|------|
| 未连接 | "连接蓝牙" | 绿色 | 可以开始连接 |
| 扫描中 | "扫描中..." | 橙色 | 正在扫描设备 |
| 连接中 | "连接中..." | 橙色 | 正在连接设备 |
| 已连接 | "断开蓝牙" | 红色 | 可以断开连接 |

### 日志信息
- `[时间] 蓝牙状态: 正在扫描蓝牙设备...`
- `[时间] 发现设备: ECG_Device_001`
- `[时间] 蓝牙设备已连接: ECG_Device_001`
- `[时间] 接收到蓝牙数据: 128 字节`
- `[时间] 蓝牙设备已断开`

## 🔍 故障排除

### 常见问题

#### 1. 蓝牙未启用
**症状**：点击连接按钮无反应
**解决**：在系统设置中启用蓝牙

#### 2. 权限不足
**症状**：提示"缺少蓝牙扫描权限"
**解决**：在应用设置中授予蓝牙权限

#### 3. 设备未发现
**症状**：扫描完成但未找到设备
**解决**：
- 确认设备已开启
- 确认设备处于可发现状态
- 检查设备距离是否过远

#### 4. 连接失败
**症状**：选择设备后连接失败
**解决**：
- 确认设备未被其他应用占用
- 重新启动设备
- 检查设备电池电量

### 调试信息
应用会在日志中记录详细的调试信息，包括：
- 蓝牙初始化状态
- 设备扫描过程
- 连接建立过程
- 数据接收情况

## 🔄 数据流程

```
蓝牙设备 → BluetoothManager → MainActivity → DataManager → 信号处理 → 指标计算 → UI显示
```

1. **蓝牙设备**：发送原始心电数据
2. **BluetoothManager**：接收数据并传递给应用
3. **MainActivity**：处理蓝牙回调和数据转发
4. **DataManager**：解析和处理数据
5. **信号处理**：滤波和信号增强
6. **指标计算**：计算心率和HRV指标
7. **UI显示**：在曲线图上显示结果

## 📝 注意事项

1. **首次使用**：需要授予蓝牙权限
2. **设备兼容性**：确保设备支持BLE协议
3. **数据格式**：确保设备发送的数据格式与解析器兼容
4. **连接稳定性**：保持设备在有效范围内
5. **电池管理**：注意设备电池电量，避免连接中断

## 🔮 未来改进

1. **自动重连**：连接断开时自动尝试重连
2. **多设备支持**：同时连接多个设备
3. **数据缓存**：本地缓存数据防止丢失
4. **连接优化**：优化连接速度和稳定性
5. **设备管理**：保存常用设备列表
