【鸿蒙开发】HarmonyOS Next中录音与音频渲染

一、录音实现

使用AudioCapturer录制音频涉及到AudioCapturer实例的创建、音频采集参数的配置、采集的开始与停止、资源的释放等。建议搭配AudioCapturer的API说明阅读。
实现步骤

●在module.json5中配置权限

{
  "module": {
  ...
    "requestPermissions": [
    ...
        // 麦克风
        {
          "name": "ohos.permission.MICROPHONE",
          "reason": '$string:permission_reason_microphone',
          "usedScene": {}
        },
    ]
  }
}

●向用户申请调用麦克风权限

/**
 * 动态申请授权(首次弹窗申请)
 * @param permissions 权限列表
 * @returns 返回授权结果,授权成功为 Promise.resolve(), 拒绝授权为 Promise.reject()
 */
async requestPermissions(permissions: Permissions[]) {
  // 1. 创建应用权限管理器
  const atManager = abilityAccessCtrl.createAtManager()
  // 2. 向用户申请 user_grant 权限(温馨提示:首次申请时会弹窗,后续申请则不会再出现弹窗)
  const requestResult = await atManager.requestPermissionsFromUser(
    getContext(), // 应用上下文
    permissions   // 参数:权限列表(数组)
  )
  // 通过 every 检查权限是否都成功授权
  const isAuth = requestResult.authResults.every(item => item === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED)
  // Promise.resolve()   返回 Promise 成功,await 后续代码,正常执行
  // Promise.reject()    返回 Promise 错误,await 后续代码,不被执行,Promise.reject() 的结果可被 catch 捕获
  return isAuth === true ? Promise.resolve(true) : Promise.reject(false)
}
/**
 * 打开系统设置的权限管理页(处理授权结果)
 */
openPermissionSettingsPage() {
  // 1. 获取应用上下文,并通过 as 断言收窄类型为 UIAbilityContext,否则 context 默认类型无法调用 startAbility 方法
  const context = getContext() as common.UIAbilityContext
  // 2. 获取 bundle 包信息
  const bundleInfo = bundleManager.getBundleInfoForSelfSync(bundleManag
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值