254 lines
8.8 KiB
Markdown
254 lines
8.8 KiB
Markdown
# YX_Voice 模块详细文档
|
|||
|
|
|
||
|
|
## 1. 应用入口 (YxApplication)
|
||
|
|
|
||
|
|
**文件路径**: `com/yaxon/voice/YxApplication.java`
|
||
|
|
|
||
|
|
**职责**:
|
||
|
|
- 继承 `AutoMotiveSDKApplication`,提供车载SDK上下文
|
||
|
|
- 初始化IPC通信框架
|
||
|
|
- 初始化崩溃处理机制
|
||
|
|
- 启动语音服务
|
||
|
|
|
||
|
|
**初始化流程**:
|
||
|
|
```
|
||
|
|
onCreate()
|
||
|
|
├── ToolInit.init() // 工具类初始化
|
||
|
|
├── CrashExceptionHandler // 崩溃处理
|
||
|
|
├── YxIPC.bind() // IPC绑定
|
||
|
|
│ └── ProtocolManager // 设置消息监听
|
||
|
|
├── PackagePermissionManager // 权限管理
|
||
|
|
└── startVoiceService() // 启动服务
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2. 语音服务 (VoiceService)
|
||
|
|
|
||
|
|
**文件路径**: `com/yaxon/voice/service/VoiceService.java`
|
||
|
|
|
||
|
|
**继承关系**: `VoiceService extends BaseVoiceService implements ConnectionListener`
|
||
|
|
|
||
|
|
**职责**:
|
||
|
|
- 与TXZ语音助手建立连接
|
||
|
|
- 接收并分发语音指令
|
||
|
|
- 管理各模块监听器生命周期
|
||
|
|
|
||
|
|
**初始化流程**:
|
||
|
|
```
|
||
|
|
onCreate()
|
||
|
|
├── initTxz() // 初始化TXZ连接
|
||
|
|
│ ├── TxzProtocolManager.initialize()
|
||
|
|
│ ├── TxzProtocolManager.connect()
|
||
|
|
│ └── addConnectionListener()
|
||
|
|
├── registerTxzCommandReceiver() // 注册指令接收器
|
||
|
|
├── BlueToothHelper.register() // 蓝牙监听
|
||
|
|
├── VoiceManager.registerCallbacks() // 车辆状态监听
|
||
|
|
└── 注册各种Receiver和Callback
|
||
|
|
```
|
||
|
|
|
||
|
|
**TXZ连接成功同步**:
|
||
|
|
```java
|
||
|
|
public void onConnected() {
|
||
|
|
VoiceManager.getInstance().setVoiceBind(true);
|
||
|
|
VoiceManager.VOICE_EVENT_HELPER.sendVoiceBindSuccess(null);
|
||
|
|
AppHelper.getInstance().startScanApp();
|
||
|
|
initNotifyCarConfig(); // 车辆配置
|
||
|
|
initNotifyBluetoothStatus(); // 蓝牙状态
|
||
|
|
initNotifyVolumeStatus(); // 音量状态
|
||
|
|
initNotifyCarSettingStatus(); // 车辆设置状态
|
||
|
|
sendBrightnessStatus(); // 亮度状态
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3. 协议管理器 (ProtocolManager)
|
||
|
|
|
||
|
|
**文件路径**: `com/yaxon/voice/core/ProtocolManager.java`
|
||
|
|
|
||
|
|
**设计模式**: 单例模式
|
||
|
|
|
||
|
|
**职责**:
|
||
|
|
- 实现IPC消息监听接口 (`MessageListener`, `RemoteListener`)
|
||
|
|
- 将消息分发给协议处理器
|
||
|
|
|
||
|
|
**类图**:
|
||
|
|
```
|
||
|
|
┌─────────────────────────────────┐
|
||
|
|
│ ProtocolManager │
|
||
|
|
├─────────────────────────────────┤
|
||
|
|
│ - sInstance: ProtocolManager │
|
||
|
|
│ - mProtocolHandler: IProtocolHandler │
|
||
|
|
├─────────────────────────────────┤
|
||
|
|
│ + getInstance() │
|
||
|
|
│ + setProtocolHandler() │
|
||
|
|
│ + onResponse() │ ← MessageListener
|
||
|
|
│ + onBindRemote() │ ← RemoteListener
|
||
|
|
│ + release() │
|
||
|
|
└─────────────────────────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 4. 协议处理器 (YxProtocolHandler)
|
||
|
|
|
||
|
|
**文件路径**: `com/yaxon/voice/core/YxProtocolHandler.java`
|
||
|
|
|
||
|
|
**职责**:
|
||
|
|
- 维护包名到协议逻辑类的映射
|
||
|
|
- 在后台线程处理协议分发
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 5. 语音管理器 (VoiceManager)
|
||
|
|
|
||
|
|
**文件路径**: `com/yaxon/voice/core/VoiceManager.java`
|
||
|
|
|
||
|
|
**设计模式**: 单例模式
|
||
|
|
|
||
|
|
**职责**:
|
||
|
|
- 管理TXZ绑定状态
|
||
|
|
- 管理AVM/DVR前台状态
|
||
|
|
- 注册车辆状态回调(空调、设置、智能驾驶)
|
||
|
|
- 提供AudioTrackPlayer实例
|
||
|
|
|
||
|
|
**状态管理**:
|
||
|
|
```java
|
||
|
|
private boolean isVoiceBind; // TXZ绑定状态
|
||
|
|
private AtomicBoolean isAvm; // AVM前台状态
|
||
|
|
private AtomicBoolean isDvr; // DVR前台状态
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 6. 语音事件助手 (VoiceEventHelper)
|
||
|
|
|
||
|
|
**文件路径**: `com/yaxon/voice/helper/VoiceEventHelper.java`
|
||
|
|
|
||
|
|
**职责**:
|
||
|
|
- 封装所有语音控制操作
|
||
|
|
- 与各模块进行IPC通信
|
||
|
|
- 通知TXZ状态变化
|
||
|
|
|
||
|
|
**主要功能分类**:
|
||
|
|
|
||
|
|
| 类别 | 方法示例 | 说明 |
|
||
|
|
|------|----------|------|
|
||
|
|
| 空调控制 | sendAirSwitch, sendAcSwitch, sendAirTempTo | 温度、风速、模式控制 |
|
||
|
|
| 音量控制 | sendVolumeTo, sendVolumeMute, sendVolumeElevator | 音量调节、静音 |
|
||
|
|
| 屏幕控制 | setMpuBrightnessLevel, sendScreenOff, sendScreenClean | 亮度、熄屏、清洁 |
|
||
|
|
| 系统设置 | switchSystemLanguage, switchDistanceUnit | 语言、单位切换 |
|
||
|
|
| 车窗控制 | sendWindowSwitch, sendWindowPercent | 开关、百分比控制 |
|
||
|
|
| 语音设置 | sendSwitchVoiceWakeup, customWakeupWord, switchVoiceMan | 唤醒词、发音人设置 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 7. 接收器与观察者
|
||
|
|
|
||
|
|
### 7.1 BroadcastReceiver
|
||
|
|
|
||
|
|
| 类名 | 监听Action | 功能 |
|
||
|
|
|------|------------|------|
|
||
|
|
| BootReceiver | ACTION_BOOT_COMPLETED | 开机启动服务 |
|
||
|
|
| PowerReceiver | ACTION_SCREEN_ON/OFF | 屏幕亮灭监听 |
|
||
|
|
| NetworkChangedReceiver | WIFI_STATE_CHANGED | WiFi状态变化 |
|
||
|
|
| BluetoothMonitorReceiver | Bluetooth状态广播 | 蓝牙连接状态 |
|
||
|
|
| HomeStatusReceiver | ACTION_HOME_STATUS_CHANGED | 主页状态变化 |
|
||
|
|
| VolumeChangedCallback | 音量变化回调 | 音量变化监听 |
|
||
|
|
| SettingReceiver | STREAM_MUTE_CHANGED_ACTION | 静音状态变化 |
|
||
|
|
|
||
|
|
### 7.2 ContentObserver
|
||
|
|
|
||
|
|
| 类名 | 监听URI | 功能 |
|
||
|
|
|------|---------|------|
|
||
|
|
| ScreenSaversObserver | STATE_URI + STANDBY_DIALOG_STATE | 屏保状态 |
|
||
|
|
| MediaObserver | MEDIA_SOURCE_URI, MUSIC_INFO_URI | 媒体信息 |
|
||
|
|
| ReverseObserver | 倒车相关URI | 倒车状态 |
|
||
|
|
| BrightnessObserver | MPU_BRIGHTNESS_LEVEL | 亮度变化 |
|
||
|
|
| SettingCommonObserver | VIDEO_LIMIT_URI等 | 通用设置 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 8. 文件结构
|
||
|
|
|
||
|
|
```
|
||
|
|
YX_Voice/
|
||
|
|
├── src/main/java/com/yaxon/voice/
|
||
|
|
│ ├── YxApplication.java # 应用入口
|
||
|
|
│ ├── api/ # 接口定义
|
||
|
|
│ │ ├── IProtocolHandler.java
|
||
|
|
│ │ └── IProtocolLogic.java
|
||
|
|
│ ├── constant/ # 常量定义
|
||
|
|
│ │ ├── PackageConst.java
|
||
|
|
│ │ ├── VoiceNewProtocolConst.java
|
||
|
|
│ │ └── VoiceProtocolConst.java
|
||
|
|
│ ├── core/ # 核心类
|
||
|
|
│ │ ├── PackagePermissionManager.java
|
||
|
|
│ │ ├── ProtocolManager.java
|
||
|
|
│ │ ├── VoiceManager.java
|
||
|
|
│ │ └── YxProtocolHandler.java
|
||
|
|
│ ├── crash/ # 崩溃处理
|
||
|
|
│ │ └── CrashExceptionHandler.java
|
||
|
|
│ ├── helper/ # 辅助类
|
||
|
|
│ │ ├── AppHelper.java
|
||
|
|
│ │ ├── AudioFocusHelper.java
|
||
|
|
│ │ ├── AudioTrackPlayer.java
|
||
|
|
│ │ ├── BlueToothHelper.java
|
||
|
|
│ │ ├── BrightnessHelper.java
|
||
|
|
│ │ ├── ContactHelper.java
|
||
|
|
│ │ ├── HandlerHelper.java
|
||
|
|
│ │ ├── JsonHelper.java
|
||
|
|
│ │ ├── McuHelper.java
|
||
|
|
│ │ ├── VoiceEventHelper.java
|
||
|
|
│ │ ├── VolumeHelper.java
|
||
|
|
│ │ └── WifiHelper.java
|
||
|
|
│ ├── impl/ # 回调实现
|
||
|
|
│ │ ├── CarAirCallback.java
|
||
|
|
│ │ ├── CarIntelligentDrivingCallBack.java
|
||
|
|
│ │ └── CarSettingCallback.java
|
||
|
|
│ ├── protocol/ # 协议实现
|
||
|
|
│ │ ├── AirProtocol.java
|
||
|
|
│ │ ├── AvmProtocol.java
|
||
|
|
│ │ ├── BaseProtocol.java
|
||
|
|
│ │ ├── BluetoothProtocol.java
|
||
|
|
│ │ ├── CarControlProtocol.java
|
||
|
|
│ │ ├── DvrProtocol.java
|
||
|
|
│ │ ├── FactoryProtocol.java
|
||
|
|
│ │ ├── MediaProtocol.java
|
||
|
|
│ │ ├── SettingProtocol.java
|
||
|
|
│ │ ├── SystemUIProtocol.java
|
||
|
|
│ │ ├── VoiceProtocol.java
|
||
|
|
│ │ └── YxProtocol.java
|
||
|
|
│ ├── provider/ # ContentObserver
|
||
|
|
│ │ ├── BrightnessObserver.java
|
||
|
|
│ │ ├── MediaObserver.java
|
||
|
|
│ │ ├── ReverseObserver.java
|
||
|
|
│ │ ├── ScreenSaversObserver.java
|
||
|
|
│ │ └── SettingCommonObserver.java
|
||
|
|
│ ├── receiver/ # 广播接收器
|
||
|
|
│ │ ├── BluetoothMonitorReceiver.java
|
||
|
|
│ │ ├── BootReceiver.java
|
||
|
|
│ │ ├── HomeStatusReceiver.java
|
||
|
|
│ │ ├── NetworkChangedReceiver.java
|
||
|
|
│ │ ├── PowerReceiver.java
|
||
|
|
│ │ ├── SettingReceiver.java
|
||
|
|
│ │ ├── TestReceiver.java
|
||
|
|
│ │ └── VolumeChangedCallback.java
|
||
|
|
│ ├── service/ # 服务
|
||
|
|
│ │ ├── BaseVoiceService.java
|
||
|
|
│ │ └── VoiceService.java
|
||
|
|
│ └── utils/ # 工具类
|
||
|
|
│ ├── AppUtils.java
|
||
|
|
│ ├── BroadcastUtils.java
|
||
|
|
│ └── DataConvert.java
|
||
|
|
├── libs/ # 依赖库
|
||
|
|
│ ├── library-release-0127.aar
|
||
|
|
│ └── tools.jar
|
||
|
|
├── assets/tts/ # TTS音频资源
|
||
|
|
└── build.gradle
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
*文档整理日期: 2026-05-27*
|