鸿蒙5.0开发【录音与音频渲染】

一、录音实现

使用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

你可能感兴趣的:(鸿蒙开发,harmonyos,音视频,OpenHarmony,鸿蒙,渲染,程序员,鸿蒙系统)