更新记录
1.8.2(2024-12-18)
- 修复 Android 端 使用 targetSdkVersion: 34 打包,导致在android 14中出现新的权限问题导致使用不了。
- 增加 aac 音频格式录制
1.8.1(2024-05-07)
- 优化华为鸿蒙系统的麦克风录音时被占的检测。
1.8.0(2024-04-26)
- 优化安卓端 判断麦克风被占用的兼容性问题。
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 14.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | 适用版本区间:9 - 17 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
Android 和 IOS 原生录音插件,支持暂停继录
温馨提示一下, 这个插件不支持通话录音,重要的事说三遍:不支持通话录音,不支持通话录音,不支持通话录音
插件不支持:熄屏状态下开启录音偷偷录音,必须应用在前台用户点击录音操作,可以进入后台继续录音,不要问能不能在熄屏时开启录音,在后台开启用户不知情的情况开启录音
一 、插件使用
- 引用插件
const plug=uni.requireNativePlugin("html5app-recordaudio");
关于是否能在后台录音,会不会被清理掉
-
Android 如果需要在后台录音的,showNotification 设置为true 打开状态栏通知服务,来维持应用进入后台之前,能够继续录音而不被清理掉。
-
IOS 需要添加麦克风录音权限
"ios" : {
"privacyDescription" : {
"NSMicrophoneUsageDescription" : "用于录制音频,是否允许?"
},
"UIBackgroundModes" : [ "audio" ] //允许音频在后台播放,需要后台录音,需要添加此权限
},
二 、插件方法说明
方法名称 | 说明 |
---|---|
start | 开始录音 |
pause | 暂停录音 |
resume | 恢复录音 |
stop | 停止录音 |
deleteCache | 删除所有已录制的录音缓存文件 |
updateTime | 录音时间回调事件,单位秒 |
updateNotificationText | 安卓通知栏,更新文本提示语 |
1.开始录音
plug.start({
format:"wav", //音频格式,wav,mp3,aac,pcm
rate:16000, //音频采样率,8000hz,16000hz,44100hz
encode:16 //音频位宽,8位,16位
channel:2, //通道,1=>单声道,2=>双声道
saveDir:"", //自定义保存文件夹路径,留空默认保存路径,例如:let path=plus.io.convertLocalFileSystemURL("_doc");
showNotification:true, //是否显示状态栏,开启可以增强应用在后台录音和息屏录音的存活率
notificationName:"", //状态栏,默认是应用名称
notificationText:"正在录音中,不要关闭应用" //内容显示,默认显示是正在录音中...
},function(e){
console.log(JSON.stringify(e));
});
//监听录音回调进度, 可用可不用,不是必须的。
plug.updateTime(function(s){
//console.log(s);
//1分钟结束录音
if(s==60)
{
_this.stop();
}
});
回调参数
code 参数 | 说明 |
---|---|
1 | 暂停中 |
101 | 检测到麦克风被其他应用占用,点恢复录音可以继续 |
2 | 录音中 |
0 | 录音结束 |
监听录音回调进度
//监听录音回调进度, 可用可不用,不是必须的。
plug.updateTime(function(s){
//console.log(s);
//1分钟结束录音
if(s==60)
{
_this.stop();
}
});
2.暂停录音
plug.pause();
3.继续(恢复)录音
plug.resume();
4.停止录音
- 返回录音文件
plug.stop(function(e){
console.log(e.filePath);
});
- 返回录音参数
{"fileSize":218880,
"code":0,
"duration":7,
"filePath":"/storage/emulated/0/Android/data/uni.UNI7B74429/cache/RecordAudio/record_20211020_20_19_02.wav",
"msg":"录音结束"
}
5.删除缓存的录音文件
plug.deleteCache();
5.更新通知栏,通知内容
- 如果开启安卓通知栏显示,可以在需要时,根据不同的录音状态,显示不同的通知栏提示语
plug.updateNotificationText("暂停录音...");