更新记录
V1.0(2024-09-19) 下载此版本
初始版本,后续更新完整的demo。在使用过程中如有疑问请联系作者
平台兼容性
Vue2 | Vue3 |
---|---|
√ | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
HBuilderX 4.0,Android:4.4,iOS:不支持,HarmonyNext:不确定 | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 |
---|---|---|---|
× | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × |
1.uniapp引入原生插件,目前仅支持android。支持在线打包
2.引入插件
// 1.在项目根目录下创建nativeplugins文件夹
// 2.需要在uni_modules下找到xiangquan-RecordPlay文件夹,将里面的TestModule文件复制到nativeplugins文件夹中
// 3.manifest.json文件中配置App原生插件
// 4.选择本地插件TestModule
// 引入插件成功后需要通过一下代码添加到项目中进行使用
// 注意:真机运行时需要进行自定义基座才能使用原生插件
testModule = uni.requireNativePlugin("TestModule");
3.使用插件进行录音时先获取录音权限。可通过plus进行权限获取
// 获取录音权限
plus.android.requestPermissions(['android.permission.RECORD_AUDIO'], rs => {
if (e.deniedAlways.length > 0) console.log("用户被永久拒绝");
if (e.deniedPresent.length > 0) console.log("用户被临时拒绝");
if (e.granted.length > 0) console.log("用户已被授权");
})
4.插件提供的方法示例
// 初始化录音配置
testModule.config({
packageName: "com.android", // 项目包路径,用于生成录音文件存放目录
appIdName: "****", // appid,用于生成录音文件存放目录
sampleRate: 8000, // 录音采样率 默认8K采样率
bufferSize: 16000 // 录音片段大小,当录音数据达到bufferSize大小时触发录音的回调片段
}, rs => {
console.log("录音初始化成功,保存的目录为:", rs.path)
},err=>{
console.log("初始化录音失败:",err)
})
// 获取存放录音文件的目录
testModule.initHRVCacheDirPath(rs => {
console.log("文件存放目录:", rs.path)
})
// 删除文件
/**
* path: 文件地址
* callback: 回调函数
*/
testModule.deleteFile(path, callback)
// 启动录音
testModule.startRecordAudio({}, success => {
// 启动成功回调
},err => {
// 启动失败回调
},change => {
// 录音片段回调 base64Data: 录音片段base64字符串格式,data:array格式=》pcm原始数据,msg: 说明(音频片段)
const {base64Data, data, msg} = change
},final => {
// 一定会执行的回调
}
);
// 停止录音
testModule.stopRecordAudio(rs => {
// 停止录音回调
});
// 初始化播放器 sampleRate:播放数据的采样率, back:回调函数
testModule.configTrack(sampleRate, back)
// 向播放器写入数据 base64Data:base64字符串格式的pcm片段,对应启动录音的录音片段回调函数中的base64Data
testModule.plusTrackBase64(base64Data, rs => {
console.log("输入数据")
})
// 停止播放
testModule.stopTrack(rs => {
console.log("停止了播放器")
})