# 设备状态同步与远程控制

## 示例说明

演示手机端如何通过经典蓝牙通道向眼镜发消息，请求系统信息、拉取电量，并设置亮度、音量和配置项。

## 使用位置

手机端首页：

- `MainPhoneActivity`

设置页：

- `SettingActivity`

核心状态管理：

- `DeviceLinkerManager`

## 适用端

- 手机端
- 眼镜端

## 关键文件

- [glass3sdkphonedemo/app/src/main/java/com/rokid/phone/DeviceLinkerManager.kt](https://gitee.com/as_pixar/glass3sdkdemo/blob/main/glass3sdkphonedemo/app/src/main/java/com/rokid/phone/DeviceLinkerManager.kt)
- [glass3sdkphonedemo/app/src/main/java/com/rokid/phone/ui/MainPhoneActivity.kt](https://gitee.com/as_pixar/glass3sdkdemo/blob/main/glass3sdkphonedemo/app/src/main/java/com/rokid/phone/ui/MainPhoneActivity.kt)
- [glass3sdkphonedemo/app/src/main/java/com/rokid/phone/SettingActivity.kt](https://gitee.com/as_pixar/glass3sdkdemo/blob/main/glass3sdkphonedemo/app/src/main/java/com/rokid/phone/SettingActivity.kt)

## 流程说明

<div class="sample-flow">
  <div class="sample-flow-step" data-step="1">
    <strong>发送业务消息</strong>
    <span>手机端通过经典蓝牙发送 JSON 文本消息。</span>
  </div>
  <div class="sample-flow-step" data-step="2">
    <strong>眼镜端处理</strong>
    <span>眼镜端按 <code>ProjectBusinessType</code> 分发业务逻辑。</span>
  </div>
  <div class="sample-flow-step" data-step="3">
    <strong>返回状态数据</strong>
    <span>眼镜端回传系统信息、电量、亮度、音量等数据。</span>
  </div>
  <div class="sample-flow-step" data-step="4">
    <strong>手机端刷新 UI</strong>
    <span>手机端解析回调并更新全局连接状态和页面展示。</span>
  </div>
</div>

1. 手机端通过 `sendTextMessageByClassicBT()` 发送业务消息。
2. 消息体使用 `CustomMessage` + `ProjectBusinessType` 约定类型。
3. 眼镜端处理后，再通过经典蓝牙回传系统信息。
4. 手机端在 `messageListener` 中解析：
   - 系统版本
   - 设备 ID
   - 电量
   - 亮度
   - 音量
   - 指环连接状态
5. 页面根据全局状态刷新 UI。

## 典型指令

- 获取系统信息：`GET_SYSTEM_INFO`
- 获取电量：`POWER_UPDATE`
- 设置亮度：`SET_BRIGHTNESS`
- 设置音量：`SET_VOLUME`
- 发送配置：`SEND_CONFIG`
- 设置变焦：`SET_ZOOM_CAMERA`

## 相关 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-message-file)
- [眼镜端 API：设备与系统能力](/terminal-sdk/api-reference/Glass3%20%20SDK(%E7%9C%BC%E9%95%9C%E7%AB%AF)%20API%E6%96%87%E6%A1%A3.md#device-system-capabilities)
- [眼镜端 API：消息与文件传输](/terminal-sdk/api-reference/Glass3%20%20SDK(%E7%9C%BC%E9%95%9C%E7%AB%AF)%20API%E6%96%87%E6%A1%A3.md#messaging-file-transfer)

## 扩展方式

因为很多控制命令都属于轻量级请求，使用 JSON 文本消息最容易扩展和排查。

新增控制能力时，通常需要同步调整：

1. 增加一个 `ProjectBusinessType`
2. 扩展 `CustomMessage`
3. 在两端各自补充发送和处理逻辑

## 注意事项

- 当前协议是项目内自定义协议，不是 SDK 内置标准消息协议。
- 新增字段时要注意前后兼容。
- 首页中的亮度和音量操作要求蓝牙已连接。
