# 经典蓝牙扫描与连接

## 示例说明

演示如何在手机端扫描 Glass 3 设备、展示可连接设备列表，并触发经典蓝牙连接流程。

## 使用位置

手机端首页：

- `MainPhoneActivity` 点击添加设备入口

示例页面：

- `com.rokid.phone.ui.classicbt.ui.ClassicBtActivity`

## 适用端

- 手机端

## 关键文件

- [glass3sdkphonedemo/app/src/main/java/com/rokid/phone/ui/classicbt/ui/ClassicBtActivity.kt](https://gitee.com/as_pixar/glass3sdkdemo/blob/main/glass3sdkphonedemo/app/src/main/java/com/rokid/phone/ui/classicbt/ui/ClassicBtActivity.kt)
- [glass3sdkphonedemo/app/src/main/java/com/rokid/phone/ui/classicbt/viewmodel/ClassicBtViewModel.kt](https://gitee.com/as_pixar/glass3sdkdemo/blob/main/glass3sdkphonedemo/app/src/main/java/com/rokid/phone/ui/classicbt/viewmodel/ClassicBtViewModel.kt)
- [glass3sdkphonedemo/app/src/main/java/com/rokid/phone/ui/classicbt/repository/ClassicBtRepository.kt](https://gitee.com/as_pixar/glass3sdkdemo/blob/main/glass3sdkphonedemo/app/src/main/java/com/rokid/phone/ui/classicbt/repository/ClassicBtRepository.kt)

## 流程说明

<div class="sample-flow">
  <div class="sample-flow-step" data-step="1">
    <strong>检查蓝牙状态</strong>
    <span>确认系统蓝牙可用，必要时拉起系统开启流程。</span>
  </div>
  <div class="sample-flow-step" data-step="2">
    <strong>扫描设备</strong>
    <span>进入页面后触发扫描，并通过 ViewModel 接收设备列表。</span>
  </div>
  <div class="sample-flow-step" data-step="3">
    <strong>选择目标设备</strong>
    <span>用户点击目标 Glass3 设备，记录待连接对象。</span>
  </div>
  <div class="sample-flow-step" data-step="4">
    <strong>进入配对页</strong>
    <span>跳转到 <code>BtWifiConnectActivity</code>，由统一配对页继续完成连接。</span>
  </div>
</div>

1. 检查系统蓝牙是否开启。
2. 进入扫描页面后触发 `startScanBt`。
3. 扫描结果通过 ViewModel 事件流回到页面。
4. 用户点击某个设备后，记录当前待连接设备。
5. 跳转到统一配对页 `BtWifiConnectActivity`。

## 实现说明

本示例只负责“找设备”和“选设备”。

真正的连接动作和后续 P2P 联动，被统一收口到了 `BtWifiConnectActivity`，这样可以避免蓝牙配对页和 P2P 配网页各做一套状态机。

页面展示的是经典蓝牙设备列表，不是 BLE 广播列表。

## 相关 API

- [手机端 API：蓝牙与指环](/terminal-sdk/api-reference/Glass3%20%20SDK(%E6%89%8B%E6%9C%BA%E7%AB%AF)%20API%E6%96%87%E6%A1%A3.md#phone-bluetooth)

## 注意事项

- 如果系统蓝牙未开启，会先拉起系统蓝牙开启流程。
- 页面退出时会停止动画和加载状态。
- 如果未找到设备，会跳转到“未发现设备”提示页。
