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` 事件
|
|||
|
|
- 录音持续进行,但只在按住时发送数据
|
|||
|
|
- 避免频繁启停录音造成的延迟
|