# 语音通话功能配置说明 ## 已完成的配置 ### 1. manifest.json 配置 已添加以下权限: #### Android 权限 ```json "", "" ``` #### 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` 事件 - 录音持续进行,但只在按住时发送数据 - 避免频繁启停录音造成的延迟