first commit
This commit is contained in:
commit
669f49b1d6
342 files changed
+320811
No files matched your search
@@ -0,0 +1,181 @@
|
||||
# YX_Voice 架构设计
|
||||
|
||||
## 整体架构图
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ YX_Voice 架构图 │
|
||||
├─────────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌──────────────┐ TXZ协议 ┌──────────────────────────────┐ │
|
||||
│ │ TXZ语音 │◄────────────►│ VoiceService │ │
|
||||
│ │ 助手模块 │ │ (服务入口 & TXZ连接管理) │ │
|
||||
│ └──────────────┘ └──────────────┬───────────────┘ │
|
||||
│ │ │
|
||||
│ ┌──────────────────────────┼────────────────┐ │
|
||||
│ │ │ │ │
|
||||
│ ▼ ▼ ▼ │
|
||||
│ ┌──────────────────────┐ ┌──────────────────────┐ ┌──────────┐│
|
||||
│ │ ProtocolManager │ │ VoiceManager │ │ Helpers ││
|
||||
│ │ (协议分发管理) │ │ (核心状态管理) │ │ (辅助类) ││
|
||||
│ └──────────┬───────────┘ └──────────┬───────────┘ └──────────┘│
|
||||
│ │ │ │
|
||||
│ ▼ ▼ │
|
||||
│ ┌──────────────────────────────────────────────────────────────┐ │
|
||||
│ │ Protocol Implementations │ │
|
||||
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌────────┐ │ │
|
||||
│ │ │ Voice │ │ Air │ │ Setting │ │ Media │ │ Car │ │ │
|
||||
│ │ │Protocol │ │Protocol │ │Protocol │ │Protocol │ │Control │ │ │
|
||||
│ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └────────┘ │ │
|
||||
│ └──────────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌──────────────────────────────────────────────────────────────┐ │
|
||||
│ │ IPC Communication Layer │ │
|
||||
│ │ YxIPC (跨进程通信框架) │ │
|
||||
│ └──────────────────────────┬───────────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ ┌───────────────────────┼───────────────────────┐ │
|
||||
│ ▼ ▼ ▼ │
|
||||
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
||||
│ │ 音乐 │ │ 设置 │ │ 空调 │ │
|
||||
│ │ 模块 │ │ 模块 │ │ 模块 │ │
|
||||
│ └─────────┘ └─────────┘ └─────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## 模块分层
|
||||
|
||||
| 层级 | 模块 | 职责 |
|
||||
|------|------|------|
|
||||
| 应用层 | VoiceService | 服务入口、生命周期管理 |
|
||||
| 核心层 | ProtocolManager, VoiceManager | 协议分发、状态管理 |
|
||||
| 协议层 | BaseProtocol及子类 | 具体协议解析与执行 |
|
||||
| 辅助层 | Helpers, Receivers, Observers | 状态监听、辅助功能 |
|
||||
| 通信层 | YxIPC, TxzProtocolManager | 跨进程通信 |
|
||||
|
||||
---
|
||||
|
||||
## 协议处理流程
|
||||
|
||||
```
|
||||
TXZ语音指令
|
||||
│
|
||||
▼
|
||||
TxzProtocolManager.setDefaultHandler()
|
||||
│
|
||||
├── 解析 commandType (协议名称)
|
||||
├── 解析 Bundle 参数
|
||||
├── 转换为JSON格式
|
||||
│
|
||||
▼
|
||||
ProtocolManager.onResponse()
|
||||
│
|
||||
▼
|
||||
YxProtocolHandler.onHandleProtocol()
|
||||
│
|
||||
▼
|
||||
具体Protocol实现类.onProtocolLogic()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## IPC通信架构
|
||||
|
||||
```
|
||||
┌─────────────────┐ YxIPC ┌─────────────────┐
|
||||
│ YX_Voice │◄──────────────►│ YX_Music │
|
||||
│ (Server) │ │ (Client) │
|
||||
└────────┬────────┘ └─────────────────┘
|
||||
│
|
||||
│ YxIPC
|
||||
▼
|
||||
┌─────────────────┐
|
||||
│ YX_Setting │
|
||||
└─────────────────┘
|
||||
```
|
||||
|
||||
**IPC配置**:
|
||||
```java
|
||||
YxIpcConfig yxIpcConfig = new YxIpcConfig();
|
||||
yxIpcConfig.addRemoteStartService(PackageConst.MUSIC_PKG);
|
||||
yxIpcConfig.addRemoteStartService(PackageConst.SETTING_PKG);
|
||||
yxIpcConfig.setRemoteListener(ProtocolManager.getInstance());
|
||||
YxIPC.getInstance().bind(this, yxIpcConfig);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## TXZ协议通信
|
||||
|
||||
```
|
||||
┌─────────────────┐ TxzProtocolManager ┌─────────────────┐
|
||||
│ YX_Voice │◄─────────────────────►│ TXZ语音助手 │
|
||||
│ (ConnectionService) │ (AIDL Service) │
|
||||
└─────────────────┘ └─────────────────┘
|
||||
```
|
||||
|
||||
**连接流程**:
|
||||
```java
|
||||
TxzProtocolManager.initialize(this);
|
||||
TxzProtocolManager.connect(PackageConst.TXZ_PKG_NEW);
|
||||
TxzProtocolManager.getConnection(PackageConst.TXZ_PKG_NEW).addConnectionListener(this);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 模块依赖关系
|
||||
|
||||
```
|
||||
YX_Voice
|
||||
├── YX_IPC_SDK (IPC通信)
|
||||
├── YX_Lib_CommonBase (公共基础库)
|
||||
├── YX_AutoMotiveSDK (车载SDK)
|
||||
├── library-release-0127.aar (TXZ协议库)
|
||||
├── tools.jar (工具库)
|
||||
├── framework_classes.jar (系统框架)
|
||||
└── serial-0.1.6_classes.jar (串口库)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 包名依赖
|
||||
|
||||
| 包名 | 说明 |
|
||||
|------|------|
|
||||
| com.txzing.voiceassistant | TXZ语音助手 |
|
||||
| com.yaxon.music | 音乐模块 |
|
||||
| com.yaxon.radio | 收音机模块 |
|
||||
| com.yaxon.hvac | 空调模块 |
|
||||
| com.yaxon.bluetooth | 蓝牙模块 |
|
||||
| com.yaxon.setting | 设置模块 |
|
||||
| com.yaxon.carcontrol | 车辆控制模块 |
|
||||
| com.yaxon.avm | 360环视模块 |
|
||||
| com.yaxon.dvr | 行车记录仪模块 |
|
||||
| com.android.systemui | 系统UI |
|
||||
|
||||
---
|
||||
|
||||
## 核心模块
|
||||
|
||||
### VoiceService
|
||||
- **继承关系**: `VoiceService extends BaseVoiceService implements ConnectionListener`
|
||||
- **职责**: 与TXZ语音助手建立连接、接收并分发语音指令
|
||||
|
||||
### ProtocolManager
|
||||
- **设计模式**: 单例模式
|
||||
- **职责**: 实现IPC消息监听接口、将消息分发给协议处理器
|
||||
|
||||
### YxProtocolHandler
|
||||
- **职责**: 维护包名到协议逻辑类的映射、在后台线程处理协议分发
|
||||
|
||||
### VoiceManager
|
||||
- **设计模式**: 单例模式
|
||||
- **职责**: 管理TXZ绑定状态、AVM/DVR前台状态、注册车辆状态回调
|
||||
|
||||
### VoiceEventHelper
|
||||
- **职责**: 封装所有语音控制操作、与各模块进行IPC通信
|
||||
|
||||
---
|
||||
|
||||
*文档生成日期: 2026-03-19*
|
||||
@@ -0,0 +1,655 @@
|
||||
# YX_Voice 详细设计文档
|
||||
|
||||
## 1. 概述
|
||||
|
||||
### 1.1 项目简介
|
||||
YX_Voice 是车载语音助手服务模块,作为第三方语音助手(同行者TXZ)与车载各功能模块之间的桥梁,负责语音指令的分发、处理以及车辆状态的同步。
|
||||
|
||||
### 1.2 项目信息
|
||||
- **包名**: `com.yaxon.voice`
|
||||
- **应用类型**: Android System Application
|
||||
- **进程类型**: 系统持久化进程 (`persistent=true`)
|
||||
- **共享UID**: `android.uid.system`
|
||||
|
||||
### 1.3 主要功能
|
||||
1. 语音指令接收与分发
|
||||
2. 车辆控制(空调、车窗、灯光等)
|
||||
3. 媒体播放控制
|
||||
4. 系统设置控制
|
||||
5. 蓝牙电话控制
|
||||
6. 车辆状态同步
|
||||
|
||||
---
|
||||
|
||||
## 2. 架构设计
|
||||
|
||||
### 2.1 整体架构图
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ YX_Voice 架构图 │
|
||||
├─────────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌──────────────┐ TXZ协议 ┌──────────────────────────────┐ │
|
||||
│ │ TXZ语音 │◄────────────►│ VoiceService │ │
|
||||
│ │ 助手模块 │ │ (服务入口 & TXZ连接管理) │ │
|
||||
│ └──────────────┘ └──────────────┬───────────────┘ │
|
||||
│ │ │
|
||||
│ ┌──────────────────────────┼────────────────┐ │
|
||||
│ │ │ │ │
|
||||
│ ▼ ▼ ▼ │
|
||||
│ ┌──────────────────────┐ ┌──────────────────────┐ ┌──────────┐│
|
||||
│ │ ProtocolManager │ │ VoiceManager │ │ Helpers ││
|
||||
│ │ (协议分发管理) │ │ (核心状态管理) │ │ (辅助类) ││
|
||||
│ └──────────┬───────────┘ └──────────┬───────────┘ └──────────┘│
|
||||
│ │ │ │
|
||||
│ ▼ ▼ │
|
||||
│ ┌──────────────────────────────────────────────────────────────┐ │
|
||||
│ │ Protocol Implementations │ │
|
||||
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌────────┐ │ │
|
||||
│ │ │ Voice │ │ Air │ │ Setting │ │ Media │ │ Car │ │ │
|
||||
│ │ │Protocol │ │Protocol │ │Protocol │ │Protocol │ │Control │ │ │
|
||||
│ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └────────┘ │ │
|
||||
│ └──────────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌──────────────────────────────────────────────────────────────┐ │
|
||||
│ │ IPC Communication Layer │ │
|
||||
│ │ YxIPC (跨进程通信框架) │ │
|
||||
│ └──────────────────────────┬───────────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ ┌───────────────────────┼───────────────────────┐ │
|
||||
│ ▼ ▼ ▼ │
|
||||
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
||||
│ │ 音乐 │ │ 设置 │ │ 空调 │ │
|
||||
│ │ 模块 │ │ 模块 │ │ 模块 │ │
|
||||
│ └─────────┘ └─────────┘ └─────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 2.2 模块分层
|
||||
|
||||
| 层级 | 模块 | 职责 |
|
||||
|------|------|------|
|
||||
| 应用层 | VoiceService | 服务入口、生命周期管理 |
|
||||
| 核心层 | ProtocolManager, VoiceManager | 协议分发、状态管理 |
|
||||
| 协议层 | BaseProtocol及子类 | 具体协议解析与执行 |
|
||||
| 辅助层 | Helpers, Receivers, Observers | 状态监听、辅助功能 |
|
||||
| 通信层 | YxIPC, TxzProtocolManager | 跨进程通信 |
|
||||
|
||||
---
|
||||
|
||||
## 3. 核心模块详细设计
|
||||
|
||||
### 3.1 应用入口 (YxApplication)
|
||||
|
||||
**文件路径**: `com/yaxon/voice/YxApplication.java`
|
||||
|
||||
**职责**:
|
||||
- 继承 `AutoMotiveSDKApplication`,提供车载SDK上下文
|
||||
- 初始化IPC通信框架
|
||||
- 初始化崩溃处理机制
|
||||
- 启动语音服务
|
||||
|
||||
**关键代码流程**:
|
||||
```
|
||||
onCreate()
|
||||
├── ToolInit.init() // 工具类初始化
|
||||
├── CrashExceptionHandler // 崩溃处理
|
||||
├── YxIPC.bind() // IPC绑定
|
||||
│ └── ProtocolManager // 设置消息监听
|
||||
├── PackagePermissionManager // 权限管理
|
||||
└── startVoiceService() // 启动服务
|
||||
```
|
||||
|
||||
### 3.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指令处理流程**:
|
||||
```
|
||||
TXZ语音指令
|
||||
│
|
||||
▼
|
||||
TxzProtocolManager.setDefaultHandler()
|
||||
│
|
||||
├── 解析 commandType (协议名称)
|
||||
├── 解析 Bundle 参数
|
||||
├── 转换为JSON格式
|
||||
│
|
||||
▼
|
||||
ProtocolManager.onResponse()
|
||||
│
|
||||
▼
|
||||
YxProtocolHandler.onHandleProtocol()
|
||||
│
|
||||
▼
|
||||
具体Protocol实现类.onProtocolLogic()
|
||||
```
|
||||
|
||||
### 3.3 协议管理器 (ProtocolManager)
|
||||
|
||||
**文件路径**: `com/yaxon/voice/core/ProtocolManager.java`
|
||||
|
||||
**设计模式**: 单例模式
|
||||
|
||||
**职责**:
|
||||
- 实现IPC消息监听接口 (`MessageListener`, `RemoteListener`)
|
||||
- 将消息分发给协议处理器
|
||||
|
||||
**类图**:
|
||||
```
|
||||
┌─────────────────────────────────┐
|
||||
│ ProtocolManager │
|
||||
├─────────────────────────────────┤
|
||||
│ - sInstance: ProtocolManager │
|
||||
│ - mProtocolHandler: IProtocolHandler │
|
||||
├─────────────────────────────────┤
|
||||
│ + getInstance() │
|
||||
│ + setProtocolHandler() │
|
||||
│ + onResponse() │ ← MessageListener
|
||||
│ + onBindRemote() │ ← RemoteListener
|
||||
│ + release() │
|
||||
└─────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 3.4 协议处理器 (YxProtocolHandler)
|
||||
|
||||
**文件路径**: `com/yaxon/voice/core/YxProtocolHandler.java`
|
||||
|
||||
**职责**:
|
||||
- 维护包名到协议逻辑类的映射
|
||||
- 在后台线程处理协议分发
|
||||
|
||||
**协议映射表**:
|
||||
```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()); // 行车记录仪协议
|
||||
```
|
||||
|
||||
### 3.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前台状态
|
||||
```
|
||||
|
||||
### 3.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 | 唤醒词、发音人设置 |
|
||||
|
||||
---
|
||||
|
||||
## 4. 协议设计
|
||||
|
||||
### 4.1 协议接口定义
|
||||
|
||||
**IProtocolHandler (协议处理接口)**:
|
||||
```java
|
||||
public interface IProtocolHandler {
|
||||
void onHandleProtocol(long msgSendTime, String remoteName, Bundle data);
|
||||
}
|
||||
```
|
||||
|
||||
**IProtocolLogic (协议逻辑接口)**:
|
||||
```java
|
||||
public interface IProtocolLogic {
|
||||
void onProtocolLogic(Bundle data);
|
||||
}
|
||||
```
|
||||
|
||||
### 4.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);
|
||||
}
|
||||
```
|
||||
|
||||
### 4.3 TXZ协议常量定义
|
||||
|
||||
协议命令类型(部分):
|
||||
|
||||
#### 车辆控制类
|
||||
| 命令常量 | 命令名称 | 说明 |
|
||||
|----------|----------|------|
|
||||
| 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环视 |
|
||||
|
||||
#### 空调控制类
|
||||
| 命令常量 | 命令名称 | 说明 |
|
||||
|----------|----------|------|
|
||||
| CMD_OPEN_AC | openAc | 打开空调 |
|
||||
| CMD_CLOSE_AC | closeAc | 关闭空调 |
|
||||
| CMD_SET_AC_WIND_SPEED_LEVEL | setAcWindSpeedLevel | 设置风速档位 |
|
||||
| CMD_SET_AC_TEMP_VALUE | setAcTempValue | 设置温度 |
|
||||
|
||||
#### 系统设置类
|
||||
| 命令常量 | 命令名称 | 说明 |
|
||||
|----------|----------|------|
|
||||
| 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 | 自定义唤醒词 |
|
||||
|
||||
#### 媒体控制类
|
||||
| 命令常量 | 命令名称 | 说明 |
|
||||
|----------|----------|------|
|
||||
| CMD_PLAY_PAUSE | playPause | 暂停播放 |
|
||||
| CMD_PLAY_RESUME | playResume | 继续播放 |
|
||||
| CMD_PLAY_PREV | playPrev | 上一首 |
|
||||
| CMD_PLAY_NEXT | playNext | 下一首 |
|
||||
| CMD_OPEN_APP | openApp | 打开应用 |
|
||||
|
||||
---
|
||||
|
||||
## 5. 模块间通信设计
|
||||
|
||||
### 5.1 IPC通信架构
|
||||
|
||||
YX_Voice 使用 `YxIPC` 框架进行跨进程通信:
|
||||
|
||||
```
|
||||
┌─────────────────┐ YxIPC ┌─────────────────┐
|
||||
│ YX_Voice │◄──────────────►│ YX_Music │
|
||||
│ (Server) │ │ (Client) │
|
||||
└────────┬────────┘ └─────────────────┘
|
||||
│
|
||||
│ YxIPC
|
||||
▼
|
||||
┌─────────────────┐
|
||||
│ YX_Setting │
|
||||
└─────────────────┘
|
||||
```
|
||||
|
||||
**IPC配置**:
|
||||
```java
|
||||
YxIpcConfig yxIpcConfig = new YxIpcConfig();
|
||||
yxIpcConfig.addRemoteStartService(PackageConst.MUSIC_PKG);
|
||||
yxIpcConfig.addRemoteStartService(PackageConst.SETTING_PKG);
|
||||
yxIpcConfig.setRemoteListener(ProtocolManager.getInstance());
|
||||
YxIPC.getInstance().bind(this, yxIpcConfig);
|
||||
```
|
||||
|
||||
### 5.2 TXZ协议通信
|
||||
|
||||
TXZ语音助手使用自定义协议框架:
|
||||
|
||||
```
|
||||
┌─────────────────┐ TxzProtocolManager ┌─────────────────┐
|
||||
│ YX_Voice │◄─────────────────────►│ TXZ语音助手 │
|
||||
│ (ConnectionService) │ (AIDL Service) │
|
||||
└─────────────────┘ └─────────────────┘
|
||||
```
|
||||
|
||||
**连接流程**:
|
||||
```java
|
||||
TxzProtocolManager.initialize(this);
|
||||
TxzProtocolManager.connect(PackageConst.TXZ_PKG_NEW);
|
||||
TxzProtocolManager.getConnection(PackageConst.TXZ_PKG_NEW).addConnectionListener(this);
|
||||
```
|
||||
|
||||
### 5.3 消息格式
|
||||
|
||||
**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, "类型");
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 接收器与观察者
|
||||
|
||||
### 6.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 | 静音状态变化 |
|
||||
| TestReceiver | 测试相关Action | 测试功能 |
|
||||
|
||||
### 6.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等 | 通用设置 |
|
||||
|
||||
---
|
||||
|
||||
## 7. 状态同步机制
|
||||
|
||||
### 7.1 初始化同步
|
||||
|
||||
当TXZ连接成功时,同步所有状态:
|
||||
```java
|
||||
public void onConnected() {
|
||||
VoiceManager.getInstance().setVoiceBind(true);
|
||||
VoiceManager.VOICE_EVENT_HELPER.sendVoiceBindSuccess(null);
|
||||
AppHelper.getInstance().startScanApp();
|
||||
initNotifyCarConfig(); // 车辆配置
|
||||
initNotifyBluetoothStatus(); // 蓝牙状态
|
||||
initNotifyVolumeStatus(); // 音量状态
|
||||
initNotifyCarSettingStatus(); // 车辆设置状态
|
||||
sendBrightnessStatus(); // 亮度状态
|
||||
}
|
||||
```
|
||||
|
||||
### 7.2 状态同步命令
|
||||
|
||||
同步类命令(部分):
|
||||
| 命令 | 说明 |
|
||||
|------|------|
|
||||
| syncAcStatus | 同步空调状态 |
|
||||
| syncBlueToothStatus | 同步蓝牙状态 |
|
||||
| syncWiFiStatus | 同步WiFi状态 |
|
||||
| syncMediaVolume | 同步媒体音量 |
|
||||
| syncScreenBrightness | 同步屏幕亮度 |
|
||||
| syncVoiceWakeUpStatus | 同步语音唤醒开关 |
|
||||
|
||||
---
|
||||
|
||||
## 8. 依赖关系
|
||||
|
||||
### 8.1 模块依赖
|
||||
|
||||
```
|
||||
YX_Voice
|
||||
├── YX_IPC_SDK (IPC通信)
|
||||
├── YX_Lib_CommonBase (公共基础库)
|
||||
├── YX_AutoMotiveSDK (车载SDK)
|
||||
├── library-release-0127.aar (TXZ协议库)
|
||||
├── tools.jar (工具库)
|
||||
├── framework_classes.jar (系统框架)
|
||||
└── serial-0.1.6_classes.jar (串口库)
|
||||
```
|
||||
|
||||
### 8.2 包名依赖
|
||||
|
||||
| 包名 | 说明 |
|
||||
|------|------|
|
||||
| com.txzing.voiceassistant | TXZ语音助手 |
|
||||
| com.yaxon.music | 音乐模块 |
|
||||
| com.yaxon.radio | 收音机模块 |
|
||||
| com.yaxon.hvac | 空调模块 |
|
||||
| com.yaxon.bluetooth | 蓝牙模块 |
|
||||
| com.yaxon.setting | 设置模块 |
|
||||
| com.yaxon.carcontrol | 车辆控制模块 |
|
||||
| com.yaxon.avm | 360环视模块 |
|
||||
| com.yaxon.dvr | 行车记录仪模块 |
|
||||
| com.android.systemui | 系统UI |
|
||||
|
||||
---
|
||||
|
||||
## 9. 权限声明
|
||||
|
||||
```xml
|
||||
<!-- 系统权限 -->
|
||||
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS"/>
|
||||
<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"/>
|
||||
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
|
||||
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
|
||||
<uses-permission android:name="android.permission.DEVICE_POWER"/>
|
||||
|
||||
<!-- 网络权限 -->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
|
||||
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
|
||||
|
||||
<!-- 蓝牙权限 -->
|
||||
<uses-permission android:name="android.permission.BLUETOOTH"/>
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
|
||||
|
||||
<!-- 存储权限 -->
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
|
||||
<!-- 其他权限 -->
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
||||
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 10. 部署配置
|
||||
|
||||
### 10.1 Gradle配置
|
||||
|
||||
```groovy
|
||||
android {
|
||||
defaultConfig {
|
||||
applicationId "com.yaxon.voice"
|
||||
}
|
||||
|
||||
aaptOptions {
|
||||
noCompress "pcm" // 不压缩PCM音频文件
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
outputFileName = "YX_Voice.apk"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 10.2 Manifest配置
|
||||
|
||||
```xml
|
||||
<application
|
||||
android:name=".YxApplication"
|
||||
android:directBootAware="true"
|
||||
android:persistent="true"
|
||||
android:sharedUserId="android.uid.system">
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 11. 附录
|
||||
|
||||
### 11.1 文件结构
|
||||
|
||||
```
|
||||
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
|
||||
```
|
||||
|
||||
### 11.2 语音唤醒词设置流程
|
||||
|
||||
```
|
||||
用户语音输入唤醒词
|
||||
│
|
||||
▼
|
||||
TXZ解析并发送协议: customWakeupWord
|
||||
│
|
||||
▼
|
||||
VoiceProtocol.onProtocolLogic()
|
||||
│
|
||||
▼
|
||||
VoiceEventHelper.customWakeupWord()
|
||||
│
|
||||
├── 检查当前值是否相同
|
||||
├── 保存到Settings.System
|
||||
└── 通过IPC发送到CAR_CAR_CONTROL_PKG
|
||||
│
|
||||
▼
|
||||
车辆控制模块更新唤醒词
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 12. 版本历史
|
||||
|
||||
| 版本 | 日期 | 作者 | 说明 |
|
||||
|------|------|------|------|
|
||||
| 1.0 | 2024-01-05 | 张博威 | 初始版本 |
|
||||
| 1.1 | 2024-02-19 | mango | TXZ协议集成 |
|
||||
| 1.2 | 2024-07-02 | ZhangBoWei | 协议抽象优化 |
|
||||
| 1.3 | 2025-03-13 | - | 唤醒词修改功能 |
|
||||
|
||||
---
|
||||
|
||||
*文档生成日期: 2026-03-18*
|
||||
@@ -0,0 +1,338 @@
|
||||
# 蓝牙模块 Git 提交记录汇总
|
||||
|
||||
> 统计时间: 2024-01-01 ~ 2026-05-06
|
||||
> 提交总数: 230条
|
||||
> 涉及模块: YX_BlueTooth, YX_BluetoothSDK
|
||||
|
||||
---
|
||||
|
||||
## 一、语音与蓝牙交互 (35条)
|
||||
|
||||
### 1.1 语音控制蓝牙功能
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2026-03-27 | 7e9d994a8 | 修改语音蓝牙拒接逻辑 |
|
||||
| 2026-03-27 | c0dc00a8b | 蓝牙来电,语音拒接不了问题 |
|
||||
| 2026-03-24 | 0c7512035 | 新增蓝牙通讯录共享功能 |
|
||||
| 2026-03-11 | e362ac75d | 同步给语音蓝牙通讯录和通话记录页面打开和关闭状态 |
|
||||
| 2026-02-11 | 5fc8c14cb | 新增语音蓝牙查看通讯录和通话记录跳转 |
|
||||
| 2024-03-11 | 8faaffd29 | 增加通过语音控制蓝牙相关功能 |
|
||||
| 2024-03-08 | ac659eabb | 实现语音对蓝牙音乐的控制 |
|
||||
| 2024-04-07 | 7cead2675 | 增加语音对蓝牙通讯录同步开关进行控制 |
|
||||
|
||||
### 1.2 语音与蓝牙音乐交互
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2026-03-23 | 22b19dc21 | 修改蓝牙音乐播放没响应问题 |
|
||||
| 2026-03-17 | ac6575de4 | 新增亿连播放音乐的时候请求蓝牙音频焦点 |
|
||||
| 2024-10-22 | c258164fd | 修复蓝牙音乐播放过程中,唤醒语音,播放按钮多跳变 |
|
||||
| 2024-05-08 | d93dd2ede | 修复接听电话挂断后语音唤醒不了 |
|
||||
| 2024-05-07 | 0a54a8f97 | 修复语音与蓝牙音乐混响的问题 |
|
||||
| 2024-04-24 | 8b0aa26ba | 修复蓝牙音乐被语音连续打断两次后,停止播放 |
|
||||
| 2024-08-30 | 2b0735476 | 修改USB音乐和蓝牙音乐传给同行者播放状态有误 |
|
||||
| 2024-05-21 | 05136e9c3 | 提交语音音乐指令常量修改 |
|
||||
| 2024-05-21 | c0a852f9a | 去掉无用的媒体指令常量 |
|
||||
| 2024-04-24 | fd83a2721 | 去掉废弃的语音函数 |
|
||||
|
||||
### 1.3 电话状态同步给语音
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2024-09-25 | 9625bff28 | 拨打电话的状态同步给语音 |
|
||||
| 2024-03-11 | d7cfc38a6 | 增加电话信息同步给语音 |
|
||||
| 2024-03-11 | f8317495b | 同步电话拒接信息给语音 |
|
||||
| 2024-03-11 | 4eed44177 | 蓝牙连接状态通知给语音 |
|
||||
|
||||
---
|
||||
|
||||
## 二、蓝牙音乐功能 (25条)
|
||||
|
||||
### 2.1 音乐播放状态
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2026-03-25 | 0290c5a84 | 蓝牙音乐新增倒车暂停播放 |
|
||||
| 2025-12-16 | 916e700c1 | 修复强制杀死蓝牙音乐应用后,launcher播放中状态没改变 |
|
||||
| 2025-12-24 | 6a3d81c06 | 优化蓝牙音乐逻辑 |
|
||||
| 2025-03-21 | 3135c7b4d | 重启车机后自动连接,蓝牙音乐界面显示播放状态,实际没播放 |
|
||||
| 2025-02-24 | 15ba71006 | 播放蓝牙音乐中,电源OFF→ON后,界面显示播放但实际没播放 |
|
||||
| 2025-02-14 | fb76ce90e | 电源OFF→ON后,再次播放音乐,声音变小 |
|
||||
| 2025-02-05 | ae6337f0c | 车辆下电再上电后,音乐卡片播放按钮无法操作 |
|
||||
| 2024-04-15 | ccf44711b | 修复视频播放被蓝牙音乐暂停,点击未恢复播放 |
|
||||
| 2024-04-08 | 9bcd8929d | 修复手机播放音乐时连接蓝牙蓝牙音乐无声 |
|
||||
| 2024-03-19 | 82572176f | 重启自动连接后,手机播放,车机显示播放然后暂停 |
|
||||
|
||||
### 2.2 音乐投屏与仪表
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2024-02-20 | e45e30069 | 修复切换蓝牙音乐和USB音乐时,仪表投屏闪烁 |
|
||||
| 2023-10-08 | 8a749b570 | 修改专辑图片不为空时才传数据给投屏 |
|
||||
| 2023-08-11 | 99f9fd96a | 数据中心添加蓝牙专辑图片及歌曲进度,供投屏使用 |
|
||||
|
||||
### 2.3 音乐焦点与控制
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2023-09-27 | daa5146ff | 修改蓝牙音乐不申请焦点前,小控件不显示播放信息 |
|
||||
| 2023-08-25 | 58a661adb | 蓝牙音乐添加静音设置功能 |
|
||||
| 2023-08-17 | b42455a51 | 蓝牙音乐添加方控控制 |
|
||||
| 2023-08-11 | 6c58e6ed3 | 添加蓝牙音频流接口 |
|
||||
| 2024-05-24 | 39dbd133c | 过滤掉蓝牙音乐 Not Provided |
|
||||
|
||||
---
|
||||
|
||||
## 三、蓝牙电话功能 (40条)
|
||||
|
||||
### 3.1 来电/去电显示
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2025-11-05 | 0fb28752a | 优化网络电话功能 |
|
||||
| 2025-11-05 | 6af47aa37 | 优化网络电话判断逻辑 |
|
||||
| 2025-10-17 | 184c93201 | 更新蓝牙电话应用外float显示功能 |
|
||||
| 2025-10-16 | 0fd9c73ec | 优化电话来电不可以切换音频通道 |
|
||||
| 2025-10-09 | 5a4a9e6c0 | 更新电话拨打页面缩小UI及通讯录点击拨打逻辑 |
|
||||
| 2025-09-30 | c4018d7e9 | 优化更新应用外电话弹出框功能 |
|
||||
| 2024-05-21 | 4974f4cb1 | 修复蓝牙去电流程,功能示意图标处没显示当前连接蓝牙名称 |
|
||||
| 2024-04-20 | 231ae2bb6 | 修复拨打微信电话时提示语显示不完整 |
|
||||
| 2024-03-25 | 649577900 | 修复语音未及时同步通讯录的问题 |
|
||||
| 2023-12-23 | d9cd419e2 | 修复第三方来电时,不显示通话时间(全屏) |
|
||||
| 2023-12-23 | 29ac3327e | 修复来电时,左侧图不显示当前连接蓝牙名称 |
|
||||
| 2023-12-19 | 55862fb86 | 修复蓝牙电话去电未接通UI错误 |
|
||||
|
||||
### 3.2 电话通话状态
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2024-09-05 | b4452bb57 | 修复蓝牙电话搜索名字结果,点击后应先显示号码 |
|
||||
| 2024-03-15 | 8d6b61675 | 解决导航过程中方向盘按键暂停蓝牙音乐,导航播完后自动继续播放 |
|
||||
| 2024-03-19 | 810509299 | 修复蓝牙通话记录同步时,圈圈一卡一卡的问题 |
|
||||
| 2024-02-23 | ee6f6780c | 修复蓝牙通话时点击非通话悬浮框区域也跳转到通话页面 |
|
||||
| 2024-01-25 | a5fc79803 | 修复连接蓝牙,呼出电话,方控ok按键没有挂断电话 |
|
||||
| 2024-01-17 | b9f71dc21 | 修复通话记录中不应该记录网络通话记录的问题 |
|
||||
| 2023-12-13 | 18a297d93 | 修复蓝牙电话通话中,acc off,手机还显示蓝牙连接状态 |
|
||||
| 2023-11-11 | 4d72baadb | 修复蓝牙电话去电仪表没有投屏效果 |
|
||||
| 2023-11-07 | 96a1efe59 | 修复蓝牙电话挂断后挂断键没有置灰 |
|
||||
| 2023-10-08 | 0e6124187 | 传输蓝牙电话结束的状态给投屏 |
|
||||
| 2023-10-08 | 753ff3f7f | 把电话投屏数据通过json格式进行传输 |
|
||||
|
||||
### 3.3 电话投屏接口
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2023-08-22 | fc81093dd | 蓝牙电话投屏接口添加号码归属地及通话时长功能 |
|
||||
| 2023-08-11 | 803a170df | 添加蓝牙电话各状态至数据中心供投屏使用 |
|
||||
| 2023-08-14 | d19784227 | 联调蓝牙电话投屏状态错误问题 |
|
||||
|
||||
---
|
||||
|
||||
## 四、通讯录同步 (30条)
|
||||
|
||||
### 4.1 同步流程优化
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2025-07-21 | 6421f38b7 | 联系人和通话记录同步完成后,修正isPhoneBookPulling为false |
|
||||
| 2024-04-10 | 9deeb99c4 | 修复提示同步失败后,蓝牙通话记录一直在加载同步 |
|
||||
| 2024-04-04 | faaa29039 | 修复同步通讯录完成后,再次点击同步,界面卡在正在同步界面 |
|
||||
| 2024-03-30 | 271a40273 | 修复点击拨号键,界面闪现同步通讯录画面的问题 |
|
||||
| 2024-03-25 | 649577900 | 修复语音未及时同步通讯录的问题 |
|
||||
| 2024-03-12 | a731df32b | 修复系统设置界面开启自动同步通讯录开关后,蓝牙电话记录自动同步太慢 |
|
||||
| 2024-01-29 | 2b2f2e130 | 修复手机通话记录为空时,中控显示通话记录未同步的问题 |
|
||||
| 2024-01-25 | 8d541765c | 修复偶现同步联系人和通话记录后缺少一个通话记录的问题 |
|
||||
| 2024-01-22 | 6155a30fc | 修复联系人没有存电话号码,车机端不能同步该联系人 |
|
||||
| 2024-01-04 | 2c95dca9c | 修复在同步联系人过程中,同步时间很久的问题 |
|
||||
| 2024-01-03 | 0354c65d3 | 修复连接蓝牙后未同步通话记录下用车机拨号,通话记录消失 |
|
||||
| 2023-12-20 | 9dcbac50b | 修复蓝牙关闭自动同步,还能同步成功的问题 |
|
||||
| 2023-08-22 | a7e216453 | 通讯录盖尾限制2000条 |
|
||||
| 2023-08-17 | c02339467 | 通讯录限制在2500条,超出部分去除 |
|
||||
|
||||
### 4.2 通讯录UI与交互
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2025-03-21 | d2309fb29 | 修复配对完蓝牙,切换到通讯录界面,界面显示异常有重叠 |
|
||||
| 2025-10-13 | 0680db5b1 | 优化通讯录个数UI显示 |
|
||||
| 2025-10-16 | 0b947f3a4 | 更新蓝牙通讯录默认选中第一个 |
|
||||
| 2025-10-08 | 00415fb2d | 优化蓝牙通讯录页面连接断开逻辑 |
|
||||
| 2024-06-11 | 4c4092983 | 修复点击刷新按钮右侧会闪过联系人详情页 |
|
||||
| 2024-05-21 | 5b73c1cd0 | 修复多次点击通讯录刷新按钮,会跳出通讯录未同步 |
|
||||
| 2024-04-22 | 4e4c7d2f6 | 修复蓝牙电话滑动联系人列表,联系人详情页依然显示 |
|
||||
| 2024-04-19 | a7fb60fe3 | 修复蓝牙电话通讯录显示有中文 |
|
||||
| 2023-12-25 | 159ed069b | 修复连接蓝牙,点击最近使用的电话进入通讯录页面,加载不出来 |
|
||||
| 2023-12-15 | 3304c57a5 | 修复未连接蓝牙时,无法切换到通讯录页面 |
|
||||
| 2023-12-14 | 3f389a05b | 修复蓝牙电话-通讯录-字母查询-通讯录中没有的字母,无反应 |
|
||||
| 2023-08-11 | 409bc14f6 | 按照新的设计要求修改通讯录列表及添加通讯录搜索功能 |
|
||||
| 2023-07-26 | 991c8eea3 | 蓝牙添加通讯录和通话记录功能 |
|
||||
|
||||
---
|
||||
|
||||
## 五、蓝牙连接状态管理 (20条)
|
||||
|
||||
### 5.1 ACC电源状态处理
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2025-11-20 | 295607af2 | 修改acc开关,蓝牙不做断开或重连操作,保持原状态 |
|
||||
| 2024-01-15 | 3ee792ae9 | 修复负一屏点击整车下电后,踩刹车上电,蓝牙没有自动连接 |
|
||||
| 2024-01-09 | dd6d12c31 | 修复蓝牙上电后第一次进入蓝牙音乐界面时,蓝牙音乐会暂停一下 |
|
||||
| 2024-01-02 | 9258088f0 | 修复上电后,手机端播放蓝牙音乐,从主界面进入后蓝牙音乐暂停 |
|
||||
| 2023-12-07 | fdfe2c820 | 修复播放蓝牙音乐过程中断开ACC再重新连接,进度条显示00:00 |
|
||||
| 2023-12-13 | 18a297d93 | 修复蓝牙电话通话中,acc off,手机还显示蓝牙连接状态 |
|
||||
|
||||
### 5.2 蓝牙可见性与配对
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2026-01-28 | a0e15fe92 | 进入蓝牙设置页面,手机就搜不到车机的蓝牙问题 |
|
||||
| 2026-01-28 | c1a490f80 | 修改蓝牙可见性 |
|
||||
| 2025-12-29 | 6d491ec73 | 新增蓝牙配对设备最大数量限制为10;配对请求5s未响应自动拒绝 |
|
||||
| 2024-01-12 | d89e68cd7 | 修复连接一个蓝牙后,另一个手机配对成功,通讯录界面蓝牙名称没更新 |
|
||||
| 2023-12-21 | fbf1637bb | 修复打开蓝牙然后关闭开放蓝牙监测,手机还能搜索到车机 |
|
||||
| 2023-12-08 | a815b4bef | 修复车机连接手机的话,蓝牙连接和手机配对成功,连接失败 |
|
||||
| 2023-10-19 | 60c5779cd | 修复蓝牙可见性不可见性修改 |
|
||||
|
||||
### 5.3 蓝牙名称管理
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2025-09-05 | e238b8d4c | 修改默认蓝牙和WiFi名称 |
|
||||
| 2024-01-05 | 6a75240d7 | 连接时实时刷新蓝牙名称 |
|
||||
| 2023-12-21 | 42b72c8f2 | 修复写入新的vin码,蓝牙名称还显示原来的 |
|
||||
| 2023-11-14 | 5f3d5e800 | 修复蓝牙名称恢复出厂设置显示错误问题 |
|
||||
| 2023-09-27 | 538f326a6 | 蓝牙名称修改成vin后6位 |
|
||||
| 2023-08-17 | a5d1f78d2 | 修复蓝牙名称加vin码默认名称 |
|
||||
|
||||
---
|
||||
|
||||
## 六、UI适配与优化 (35条)
|
||||
|
||||
### 6.1 深色模式适配
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2025-11-21 | 49a6ca185 | 修改深色模式状态监听模式 |
|
||||
| 2025-11-14 | 2175a4bd8 | 修改联系人字母显示dark模式颜色 |
|
||||
| 2025-11-14 | f7999efe6 | 添加深色模式适配功能 |
|
||||
|
||||
### 6.2 右舵/国际化适配
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2026-01-17 | 9c43ac6ad | 添加适配12.3寸屏幕功能 |
|
||||
| 2025-02-26 | 83fb691b6 | 修改蓝牙电话右舵UI效果 |
|
||||
| 2025-02-25 | 8ef5fb690 | 蓝牙新增右舵项目布局资源 |
|
||||
| 2024-03-11 | 1b292b8ed | 新增阿拉伯语 |
|
||||
| 2023-08-15 | afb4eb70a | 修改通话记录两天以上,一周以内显示星期 |
|
||||
|
||||
### 6.3 界面UI更新
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2025-11-17 | 6c6a39f36 | 优化蓝牙电话背景图片以及搜索功能 |
|
||||
| 2025-11-04 | e3413202b | 修改蓝牙连接按键跳转到最新的页面 |
|
||||
| 2025-11-04 | 6b0c946ad | 更新通讯录文案为联系人 |
|
||||
| 2025-10-16 | 449e78098 | 修改拨号按键不可用时,透明度为0.6 |
|
||||
| 2025-10-16 | 5f97d7f07 | 根据最新UE调整蓝牙电话页面显示 |
|
||||
| 2025-10-15 | 8eb033ea3 | 优化拨号按键板功能 |
|
||||
| 2025-10-15 | 118b7c74c | 优化按键板搜索同时搜索通话记录和通讯录 |
|
||||
| 2025-10-08 | 85b3fc57e | 修改通话记录时间显示格式 |
|
||||
| 2025-09-28 | be6c7aa5e | 更新蓝牙UI |
|
||||
| 2025-09-26 | 5fedd8aea | 更新蓝牙UI相关功能 |
|
||||
| 2025-07-21 | 3ff34003d | 修改空联系人提示UI位置错误 |
|
||||
| 2024-05-24 | 738188f67 | 修复蓝牙来电显示界面,文言重叠 |
|
||||
| 2024-03-21 | 13bc1ecdf | 修复了蓝牙文字重叠的问题 |
|
||||
| 2023-12-21 | a3b1ba89f | 修复未连接蓝牙时通话界面和UI不一致 |
|
||||
| 2023-12-04 | dea35c78f | 修复蓝牙通话记录没有滚动条,与UI设计不符 |
|
||||
| 2023-10-31 | 5e6a03a0b | 蓝牙电话通话页面V1.3UI适配修改 |
|
||||
| 2023-10-27 | d9acac409 | 蓝牙通话记录和通讯录V1.3UI修改适配 |
|
||||
| 2023-08-31 | d893ecdf4 | 修复蓝牙相关的走查UI问题 |
|
||||
|
||||
---
|
||||
|
||||
## 七、国际化/翻译 (15条)
|
||||
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2024-07-11 | 07d05e2c0 | 修复蓝牙电话翻译显示格式错误 |
|
||||
| 2024-07-05 | a418fc475 | 修复未找到"%s"的相关结果的英文和需求对应不上 |
|
||||
| 2024-05-13 | b1d5b4b3b | 蓝牙翻译文本更新 |
|
||||
| 2024-04-18 | 67c6c9aa6 | 修复蓝牙(未找到"%s"的相关结果)的英文和需求对应不上 |
|
||||
| 2024-03-28 | 9dfce2f80 | 修复通话名称Dial和Deepway多语言翻译不一致 |
|
||||
| 2023-11-22 | c2d68a84d | 蓝牙数字统一设置DINGPRO格式 |
|
||||
| 2023-07-19 | da0d81c9f | 参照UE调整通讯录和通话记录 |
|
||||
|
||||
---
|
||||
|
||||
## 八、代码优化与重构 (15条)
|
||||
|
||||
### 8.1 工具类统一
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2025-12-24 | 653c4b6b3 | 统一使用YX_log工具打印 |
|
||||
| 2025-12-17 | 48c6f2d2d | 修改toast调用,统一调用自定义toast |
|
||||
| 2025-12-17 | 0f688b8fc | 不用系统toast,添加自定义toast |
|
||||
| 2024-03-25 | b232e10ad | 优化日志打印 |
|
||||
|
||||
### 8.2 构建优化
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2025-11-05 | 7ebb3b171 | 优化sdk build.gradle |
|
||||
| 2025-11-05 | b5b840b98 | 添加SharedPrefsManager.init |
|
||||
| 2024-12-24 | abf1034fd | 删除无效资源,png图片转webp,优化apk体积 |
|
||||
| 2024-12-25 | e39ee2e1e | 修改打包资源错误导致没有打包到中文资源 |
|
||||
| 2023-12-12 | 18a297d93 | 去掉依赖库,可以通过脚本编译release的apk |
|
||||
| 2024-03-05 | 6447ff187 | 优化代码,去掉无用的资源引用 |
|
||||
|
||||
---
|
||||
|
||||
## 九、Bug修复 (杂项) (15条)
|
||||
|
||||
| 日期 | Commit | 描述 |
|
||||
|------|--------|------|
|
||||
| 2024-04-18 | 2ffb50935 | 修复出现蓝牙ANR |
|
||||
| 2024-01-18 | e948b2e69 | 修复麦克风禁用问题 |
|
||||
| 2024-01-08 | 4e5eb00d7 | 修复monkey crash问题 |
|
||||
| 2023-11-02 | f5ef447c6 | 修复SQLiteCursor未关闭引起的异常 |
|
||||
| 2023-11-23 | 0bc5caee4 | 修复跑monkey时出现蓝牙ANR问题 |
|
||||
| 2023-10-13 | b61120c85 | 处理专辑封面闪烁问题 |
|
||||
| 2023-10-14 | b7cc4717a | 修复蓝牙电话切换音源,仪表会出现消失一下 |
|
||||
| 2023-10-20 | 8040146aa | 解决偶现断连后,状态栏不显示蓝牙图标 |
|
||||
| 2023-09-21 | ebf265af1 | 处理蓝牙电话和蓝牙音乐方向盘控制功能 |
|
||||
| 2023-09-21 | c6784f0ef | 处理空指针报错 |
|
||||
| 2023-09-06 | d2fd3d9be | 修复蓝牙跑monkey崩溃问题 |
|
||||
| 2023-08-24 | 6c58e6ed3 | 添加蓝牙音频流接口 |
|
||||
|
||||
---
|
||||
|
||||
## 十、关键修改点总结 (便于下次修改)
|
||||
|
||||
### 10.1 语音交互入口类
|
||||
- `VoiceEventHelper.java` - 语音事件处理,所有语音蓝牙操作入口
|
||||
- `MediaProtocol.java` - 媒体协议,蓝牙音乐状态同步
|
||||
- `VoiceNewProtocolConst.java` - TXZ语音协议常量
|
||||
|
||||
### 10.2 蓝牙音乐核心类
|
||||
- `BluetoothHfpClient.java` - HFP协议,电话状态
|
||||
- 音频焦点管理 - 与语音、导航、视频的焦点竞争
|
||||
- 投屏数据格式 - JSON格式传输给仪表
|
||||
|
||||
### 10.3 通讯录同步核心类
|
||||
- `BluetoothPbapClient.java` - PBAP协议入口
|
||||
- `BtContactsManager.java` - 通讯录管理
|
||||
- `isPhoneBookPulling` - 同步状态标志,需在完成后置false
|
||||
- 同步限制: 通讯录2500条/2000条盖尾,通话记录50条
|
||||
|
||||
### 10.4 ACC电源处理要点
|
||||
- ACC OFF时不主动断开蓝牙,保持原状态
|
||||
- ACC ON后恢复播放状态需校验实际播放状态
|
||||
- 下电再上电后播放按钮状态同步
|
||||
|
||||
### 10.5 UI适配要点
|
||||
- 深色模式: 联系人字母颜色、监听模式
|
||||
- 右舵项目: 需要单独布局资源
|
||||
- 12.3寸屏幕适配
|
||||
|
||||
### 10.6 国际化要点
|
||||
- 阿拉伯语已支持
|
||||
- 通话记录时间格式: "昨天"根据语言切换
|
||||
- 数字格式统一DINGPRO格式
|
||||
|
||||
---
|
||||
|
||||
## 十一、常见问题快速定位
|
||||
|
||||
| 问题类型 | 关键类/方法 | 日志关键字 |
|
||||
|---------|------------|-----------|
|
||||
| 通讯录不同步 | BluetoothPbapClient.phoneBookPullRequest() | BtContactsManager, onContactsPullCompleted |
|
||||
| 音乐状态异常 | 音频焦点处理 | AudioManager, onFocusChange |
|
||||
| 语音拒接失败 | VoiceEventHelper拒接逻辑 | 蓝牙拒接, HFP |
|
||||
| ACC状态处理 | 电源状态监听 | ACC_OFF, ACC_ON |
|
||||
| 投屏数据 | JSON数据传输 | 投屏, DataCenter |
|
||||
| ANR问题 | 主线程阻塞 | ANR, SQLiteCursor |
|
||||
Reference in new issue
Block a user