Files
Obsidian/项目文档/徐工/语音/YX_Voice_协议设计文档.md
2026-11-05 14:35:04 +08:00

4.5 KiB

YX_Voice 协议设计文档

1. 协议接口定义

1.1 IProtocolHandler (协议处理接口)

public interface IProtocolHandler {
    void onHandleProtocol(long msgSendTime, String remoteName, Bundle data);
}

1.2 IProtocolLogic (协议逻辑接口)

public interface IProtocolLogic {
    void onProtocolLogic(Bundle data);
}

2. 协议基类 (BaseProtocol)

public abstract class BaseProtocol implements IProtocolLogic {
    @Override
    public void onProtocolLogic(Bundle data) {
        String cmd = data.getString(VoiceConst.PARAMS_CMD_KEY, "");
        switch (cmd) {
            case CMD_SWITCH_TXZ_WINDOW:  // 切换TXZ窗口
            case CMD_PLAY_TTS:           // 播放TTS
            default:
                onProtocolParse(data);   // 子类实现具体解析
        }
    }

    protected abstract void onProtocolParse(Bundle data);
}

3. 协议映射表

protocolLogicMap.put(CAR_CAR_CONTROL_PKG, new CarControlProtocol());  // 车辆控制
protocolLogicMap.put(TXZ_PKG_NEW, new VoiceProtocol());               // 语音协议
protocolLogicMap.put(AIR_PKG, new AirProtocol());                     // 空调协议
protocolLogicMap.put(BLUETOOTH_PKG, new BluetoothProtocol());         // 蓝牙协议
protocolLogicMap.put(MUSIC_PKG, new MediaProtocol());                 // 媒体协议
protocolLogicMap.put(VIDEO_PKG, new MediaProtocol());                 // 视频协议
protocolLogicMap.put(PHOTO_PKG, new MediaProtocol());                 // 图库协议
protocolLogicMap.put(RADIO_PKG, new MediaProtocol());                 // 收音机协议
protocolLogicMap.put(YX_VOICE_PKG, new YxProtocol());                 // 内部协议
protocolLogicMap.put(SETTING_PKG, new SettingProtocol());             // 设置协议
protocolLogicMap.put(SYSTEM_UI_PKG, new SystemUIProtocol());          // 系统UI协议
protocolLogicMap.put(FACTORY_PKG, new FactoryProtocol());             // 工厂模式协议
protocolLogicMap.put(AVM_PKG, new AvmProtocol());                     // 360环视协议
protocolLogicMap.put(DVR_PKG, new DvrProtocol());                     // 行车记录仪协议

4. 协议命令常量

4.1 车辆控制类

命令常量 命令名称 说明
CMD_OPEN_SUNROOF openSunroof 打开天窗
CMD_CLOSE_SUNROOF closeSunroof 关闭天窗
CMD_OPEN_WINDOW openWindow 打开车窗
CMD_CLOSE_WINDOW closeWindow 关闭车窗
CMD_OPEN_MIRROR_HEAT openMirrorHeat 打开后视镜加热
CMD_OPEN_AVM openAvm 打开360环视

4.2 空调控制类

命令常量 命令名称 说明
CMD_OPEN_AC openAc 打开空调
CMD_CLOSE_AC closeAc 关闭空调
CMD_SET_AC_WIND_SPEED_LEVEL setAcWindSpeedLevel 设置风速档位
CMD_SET_AC_TEMP_VALUE setAcTempValue 设置温度

4.3 系统设置类

命令常量 命令名称 说明
CMD_OPEN_BLUETOOTH openBluetooth 打开蓝牙
CMD_OPEN_WIFI openWifi 打开WiFi
CMD_SET_VOLUME_TO_VALUE setVolumeToValue 设置音量
CMD_SET_SCREEN_BRIGHTNESS_VALUE setScreenBrightnessValue 设置亮度
CMD_SWITCH_VOICE_WAKEUP switchVoicewakeup 语音唤醒开关
CMD_CUSTOM_WAKE_UP_WORD customWakeupWord 自定义唤醒词

4.4 媒体控制类

命令常量 命令名称 说明
CMD_PLAY_PAUSE playPause 暂停播放
CMD_PLAY_RESUME playResume 继续播放
CMD_PLAY_PREV playPrev 上一首
CMD_PLAY_NEXT playNext 下一首
CMD_OPEN_APP openApp 打开应用

5. 消息格式

5.1 Bundle格式

Bundle bundle = new Bundle();
bundle.putString(VoiceConst.PARAMS_CMD_KEY, "命令类型");
bundle.putInt(VoiceConst.PARAMS_NUM_KEY, 数值);
bundle.putBoolean(VoiceConst.PARAMS_SWITCH_KEY, 开关状态);
bundle.putString(VoiceConst.PARAMS_TYPE_KEY, "类型");

5.2 参数说明

参数Key 类型 说明
PARAMS_CMD_KEY String 命令类型
PARAMS_NUM_KEY int 数值参数
PARAMS_SWITCH_KEY boolean 开关状态
PARAMS_TYPE_KEY String 类型参数

6. 状态同步命令

命令 说明
syncAcStatus 同步空调状态
syncBlueToothStatus 同步蓝牙状态
syncWiFiStatus 同步WiFi状态
syncMediaVolume 同步媒体音量
syncScreenBrightness 同步屏幕亮度
syncVoiceWakeUpStatus 同步语音唤醒开关

文档整理日期: 2026-05-27