# YX_Voice 协议设计文档 ## 1. 协议接口定义 ### 1.1 IProtocolHandler (协议处理接口) ```java public interface IProtocolHandler { void onHandleProtocol(long msgSendTime, String remoteName, Bundle data); } ``` ### 1.2 IProtocolLogic (协议逻辑接口) ```java public interface IProtocolLogic { void onProtocolLogic(Bundle data); } ``` ## 2. 协议基类 (BaseProtocol) ```java 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. 协议映射表 ```java 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格式 ```java 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*