# 眼镜设置同步

## 示例说明

演示手机端如何通过 `DeviceLinkerManager` 向眼镜端同步配置、查询系统信息，并下发亮度、音量等设置指令。

## 使用位置

核心能力类：

- `DeviceLinkerManager.sendConfig(...)`
- `DeviceLinkerManager.getGlassSystemInfoMsg()`
- `DeviceLinkerManager.setBrightness(...)`
- `DeviceLinkerManager.setVolume(...)`
- `DeviceLinkerManager.setCustomWake(...)`

## 适用端

- 手机端
- 眼镜端

## 关键文件

- [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/data/Config.kt](https://gitee.com/as_pixar/glass3sdkdemo/blob/main/glass3sdkphonedemo/app/src/main/java/com/rokid/phone/data/Config.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)

## 配置同步字段

`Config` 中当前包含以下字段：

- `configVersion`：配置版本。
- `envType`：当前环境。
- `showToHide`：将默认显示的应用配置为隐藏。
- `hideToShow`：将默认隐藏的应用配置为显示。
- `voiceAction`：离线语音指令词。

亮度、音量、自定义唤醒等设置不在 `Config` 字段里，而是通过 `DeviceLinkerManager` 的独立方法发送到眼镜端。

## 流程说明

1. 手机端读取或生成 `Config` 配置。
2. 蓝牙连接成功后，调用 `DeviceLinkerManager.sendConfig(config)` 发送配置。
3. 需要查询系统信息时，调用 `DeviceLinkerManager.getGlassSystemInfoMsg()`。
4. 需要调整亮度、音量或自定义唤醒时，调用对应的 `DeviceLinkerManager` 方法。
5. 眼镜端收到消息后按业务协议处理。

## 实现说明

`DeviceLinkerManager.sendConfig(config)` 会将 `Config` 转成自定义消息，并通过经典蓝牙消息通道发送到眼镜端。

```kotlin
DeviceLinkerManager.sendConfig(MyApplication.config)
```

亮度和音量属于即时设置指令，可以直接调用：

```kotlin
DeviceLinkerManager.setBrightness(progress)
DeviceLinkerManager.setVolume(progress)
DeviceLinkerManager.setCustomWake(true)
```

## 注意事项

- `Config` 字段属于手机端和眼镜端约定的业务协议，字段变更需要两端同步处理。
- 如果新增配置项，需要同时确认发送端、接收端和眼镜端业务处理逻辑。
