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