# 蓝牙连接排查

本页用于排查手机端 App 与 Rokid Glass3 之间的蓝牙扫描、配对和连接问题。

## 1. 蓝牙在 SDK 中的作用

Glass3 SDK 中，蓝牙主要用于：

- 扫描和发现眼镜设备。
- 建立手机与眼镜的基础连接。
- 传输小消息、控制指令和部分轻量数据。
- 发起 P2P 建连协商。

大文件、图片、视频和实时音视频流建议走 P2P。

## 2. 连接前检查

| 检查项 | 要求 | 说明 |
| --- | --- | --- |
| 眼镜系统 | 企业版/工作系统 | Rokid AI 企业版只能连接企业系统。 |
| 手机 App | 企业版 App 或企业版 Demo | 消费版 App 与企业版系统不通用。 |
| 蓝牙开关 | 手机和眼镜均已开启 | 建议重启蓝牙后再试。 |
| 定位权限 | Android 10+ 通常需要 | 蓝牙扫描可能依赖定位权限。 |
| 附近设备权限 | Android 12+ 需要 | 包括 `BLUETOOTH_SCAN`、`BLUETOOTH_CONNECT`。 |
| 连接占用 | 眼镜未被其他手机连接 | 已连接其他手机时通常扫描不到。 |

## 3. 扫描不到眼镜

### 可能原因

- 手机未授予蓝牙、附近设备或定位权限。
- 手机蓝牙或眼镜蓝牙未开启。
- 眼镜已经被另一台手机连接。
- 眼镜系统和手机 App 版本不匹配。
- 扫描过滤条件不正确。

### 排查步骤

1. 在系统设置中确认 App 已获得蓝牙、附近设备和定位权限。
2. 确认眼镜未连接其他手机。
3. 在手机系统蓝牙设置中查看是否能发现 `Glass3_XXXX`。
4. 检查扫描过滤逻辑，确认没有过滤掉 `Glass3_` 前缀设备。
5. 保留从申请权限到开始扫描的完整 logcat。

## 4. 扫描到但连接失败

### 可能原因

- 历史配对信息失效。
- 眼镜已连接其他手机。
- 手机系统蓝牙栈异常。
- 企业版/消费版系统或 App 不匹配。
- 业务侧在 SDK 初始化前过早发起连接。

### 排查步骤

1. 在手机系统蓝牙设置中取消配对，再重新连接。
2. 重启手机和眼镜。
3. 确认使用的是企业版系统和企业版 App/Demo。
4. 确认 SDK 初始化完成后再发起扫描和连接。
5. 捕获连接失败前后 30 秒 logcat。

## 5. 蓝牙已连接但消息异常

### 现象

- 连接状态显示成功，但收不到消息。
- 手机发给眼镜无响应。
- 眼镜发给手机无响应。

### 排查重点

- 手机端和眼镜端 `clientId` 是否一致。
- 眼镜端应用是否已注册客户端。
- 接收回调是否已正确注册。
- 目标 App 是否在前台或未被系统清理。
- 大文件是否误走蓝牙传输。

## 6. 日志建议

请保留完整连接链路日志：

```text
申请权限 → 开始扫描 → 发现设备 → 发起连接 → 连接结果 → 发送/接收消息
```

提交问题时建议提供：

- 手机型号和 Android 版本。
- 眼镜 SN 和系统版本。
- SDK 版本。
- App 包名。
- 是否连接过其他手机。
- 完整 logcat。

## 7. 快速判断

| 现象 | 优先判断 |
| --- | --- |
| 完全扫描不到 | 权限、系统版本、是否被其他手机连接。 |
| 扫描到但连不上 | 配对状态、系统/App 是否匹配、蓝牙栈是否异常。 |
| 连接后消息不通 | `clientId`、回调注册、眼镜端 App 是否存活。 |
| 大文件传输慢 | 不要走蓝牙，改用 P2P。 |
