Skip to content

命令协议

Android SDK 支持的设备命令列表。

命令类型

基础命令

命令类型说明
CmdReqBind请求设备绑定
CmdReqUnbind请求设备解绑
CmdReqGetVersion请求获取固件版本
CmdReqGetBattery请求获取电池状态

设置命令

命令类型说明
CmdReqSetBrightness请求设置亮度
CmdReqGetBrightness请求获取亮度
CmdReqSetVolume请求设置音量
CmdReqGetVolume请求获取音量
CmdReqSetLanguage请求设置语言
CmdReqGetLanguage请求获取语言
CmdReqSetSystemTime请求同步时间

功能命令

命令类型说明
CmdReqMicEnable请求麦克风开关
CmdReqMsgNotification请求发送通知
CmdReqVoiceRttText请求实时文本

发送命令

基本用法

kotlin
val cmd = CmdReqGetBattery()
DeviceManager.getInstance().sendCmd(cmd)

带参数命令

kotlin
val cmd = CmdReqSetBrightness().apply {
    brightness = 80  // 0-100
}
DeviceManager.getInstance().sendCmd(cmd)

接收响应

响应监听

kotlin
MetaGlassDeviceGlobal.addGlassDeviceCmdRspListener { address, response ->
    when (response.type) {
        CmdType.CMD_GET_BATTERY_INFO -> handleBattery(response)
        CmdType.CMD_GET_VERSION -> handleVersion(response)
        CmdType.CMD_BIND -> handleBind(response)
    }
}

响应处理

kotlin
private fun handleBattery(response: CmdRsp) {
    val battery = response as CmdRspBattery
    val level = battery.level
    val isCharging = battery.isCharging
    updateBatteryUI(level, isCharging)
}

private fun handleVersion(response: CmdRsp) {
    val version = response as CmdRspVersion
    val firmwareVersion = version.firmwareVersion
    showVersion(firmwareVersion)
}

常用命令示例

获取电池状态

kotlin
DeviceManager.getInstance().sendCmd(CmdReqGetBattery())

// 响应处理
fun onBatteryResponse(response: CmdRspBattery) {
    val level = response.level       // 电量百分比
    val charging = response.isCharging  // 是否充电
}

设置亮度

kotlin
val cmd = CmdReqSetBrightness().apply {
    brightness = 70
}
DeviceManager.getInstance().sendCmd(cmd)

发送通知

kotlin
val cmd = CmdReqMsgNotification().apply {
    title = "新消息"
    content = "您有一条新消息"
    packageName = "com.example.app"
}
DeviceManager.getInstance().sendCmd(cmd)

发送实时文本 (字幕)

kotlin
val cmd = CmdReqVoiceRttText().apply {
    text = "这是实时字幕内容"
    isFinal = false  // 是否为最终结果
}
DeviceManager.getInstance().sendCmd(cmd)

同步系统时间

kotlin
val cmd = CmdReqSetSystemTime().apply {
    timestamp = System.currentTimeMillis()
}
DeviceManager.getInstance().sendCmd(cmd)

消息类型

MessageType 常量

java
public class MessageType {
    public static final int NOTIFICATION_PACKAGE_FILTER = 3000;
    public static final int NOTIFICATION_NEW_MSG = 3001;
    public static final int NOTIFICATION_SMS_PACKAGE_NAME = 3002;
}

错误处理

kotlin
MetaGlassDeviceGlobal.addGlassDeviceCmdRspListener { address, response ->
    if (response.status != STATUS_SUCCESS) {
        Log.e("CMD", "Command failed: ${response.type}, status: ${response.status}")
        handleError(response.type, response.status)
    }
}

Mooting 开发者文档