权限
由于录音权限属于用户权限,所以需要向用户申请权限,注意要换成你自已的包名
//进入页面前检测录音权限
async aboutToAppear() {
this.requestPermisses()
// 2. 加载首选项中的数据
this.list = await recordAudioManager.getRecord()
}
async requestPermisses() {
const mgr = abilityAccessCtrl.createAtManager()
const result = await mgr.requestPermissionsFromUser(getContext(), ['ohos.permission.MICROPHONE'])
if (result.authResults[0] === 0) {
return
}
// 不允许-> 提示用户进行二次授权
const confirmOk = await promptAction.showDialog({
title: '录音权限申请',
message: '您访问的页面必须开启麦克风的权限,请允许,否则影响你的录音功能使用',
buttons: [
{
text: '确定',
color: '#0094ff'
}
]
})
// 调起鸿蒙内置的权限开放的app
const want: Want = {
bundleName: 'com.huawei.hmos.settings', //固定的
abilityName: 'com.huawei.hmos.settings.MainAbility', //固定
uri: 'application_info_entry', //固定
parameters: {
// ✨✨✨修改成你的应用包名,跳转到该应用的设置页面
pushParams: 'com.text.myapplication' //我们开发的app的包名称 -> AppScope-> app.json5中获取
}
}
// 利用上面的参数直接调起授权页面(操作系统)
let ctx = getContext() as common.UIAbilityContext
ctx.startAbility(want)
}
使用AVRecoder录音
进行应用开发的过程中,开发者可以通过AVRecorder的state属性,主动获取当前状态或使用on('stateChange')方法监听状态变化。开发过程中应该严格遵循状态机要求,例如只能在started状态下调用pause()接口,只能在paused状态下调用resume()接口。AvRecoder状态示意图
开发步骤及注意事项
详细的API说明请参考AVRecorder API参考。
-
创建AVRecorder实例,实例创建完成进入idle状态。
import { media } from '@kit.MediaKit'; import { BusinessError } from '@kit.BasicServicesKit'; let avRecorder: media.AVRecorder; media.createAVRecorder().then((recorder: media.AVRecorder) => { avRecorder = recorder; }, (error: BusinessError) =