102 lines
2.3 KiB
Markdown
102 lines
2.3 KiB
Markdown
# 语音通话功能配置说明
|
||
|
||
## 已完成的配置
|
||
|
||
### 1. manifest.json 配置
|
||
|
||
已添加以下权限:
|
||
|
||
#### Android 权限
|
||
```json
|
||
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
|
||
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>"
|
||
```
|
||
|
||
#### iOS 权限
|
||
```json
|
||
"privacyDescription" : {
|
||
"NSMicrophoneUsageDescription" : "与模拟女友聊天"
|
||
}
|
||
```
|
||
|
||
#### 模块配置
|
||
```json
|
||
"modules" : {
|
||
"Record" : {},
|
||
"Camera" : {},
|
||
"VideoPlayer" : {},
|
||
"OAuth" : {}
|
||
}
|
||
```
|
||
|
||
### 2. 小程序配置
|
||
|
||
微信小程序权限已配置:
|
||
```json
|
||
"permission" : {
|
||
"scope.record" : {
|
||
"desc" : "你的麦克风将用于音频录制"
|
||
}
|
||
}
|
||
```
|
||
|
||
## 使用说明
|
||
|
||
### 按住说话功能
|
||
|
||
1. **进入语音通话页面**:录音会自动初始化
|
||
2. **按住麦克风按钮**:开始发送音频数据
|
||
3. **松开按钮**:停止发送音频数据(录音继续但不发送)
|
||
4. **右上角开关**:控制麦克风权限的开启/关闭
|
||
|
||
### 交互逻辑
|
||
|
||
- 🎤 表示麦克风已开启
|
||
- 🔇 表示麦克风已关闭
|
||
- 按住说话时按钮会放大并发光
|
||
- 如果麦克风关闭,按住说话会提示"请先开启麦克风权限"
|
||
|
||
## 重新编译
|
||
|
||
修改 manifest.json 后需要:
|
||
|
||
1. **App 端**:重新打包(云打包或本地打包)
|
||
2. **小程序端**:重新编译并上传
|
||
3. **H5 端**:重新编译即可
|
||
|
||
## 调试建议
|
||
|
||
### 控制台日志
|
||
- 查看 "开始录制" 日志确认录音启动
|
||
- 查看 "开始说话" / "停止说话" 日志确认按钮事件
|
||
- 查看 WebSocket 连接状态
|
||
|
||
### 常见问题
|
||
|
||
1. **录音权限被拒绝**
|
||
- Android:检查应用权限设置
|
||
- iOS:检查隐私设置中的麦克风权限
|
||
- 小程序:首次使用会弹出授权提示
|
||
|
||
2. **recorderManager 未定义**
|
||
- 已修复:现在会在 onLoad 时根据平台初始化
|
||
- App 端使用原生插件,小程序端使用 uni.getRecorderManager()
|
||
|
||
3. **音频数据未发送**
|
||
- 确保 WebSocket 连接成功
|
||
- 确保按住了说话按钮
|
||
- 确保麦克风权限已开启
|
||
|
||
## 技术细节
|
||
|
||
### 录音参数
|
||
- 格式:PCM
|
||
- 采样率:16000Hz
|
||
- 声道:单声道
|
||
- 帧大小:2KB(低延迟)
|
||
|
||
### 按住说话实现
|
||
- 使用 `@touchstart` 和 `@touchend` 事件
|
||
- 录音持续进行,但只在按住时发送数据
|
||
- 避免频繁启停录音造成的延迟
|