HarmonyOS createAudioCapturer调用\{"code":6800301\}?

如题:HarmonyOS createAudioCapturer调用{"code":6800301}?

阅读 665
1 个回答

code 6800301 指的是系统处理异常,通常情况是音频采集需要调用麦克风录制音频,但该行为属于隐私敏感行为,在调用麦克风前,需要先向用户申请权限“ohos.permission.MICROPHONE”。看一下麦克风权限配置是否正确

"requestPermissions": [
{
  "name": "ohos.permission.MICROPHONE",
"reason": "$string:app_name",
"usedScene": {
  "abilities": [
  "EntryAbility"
  ],
  "when": "always"
}
}
]

demo如下,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/using-audiocapturer-for-recording-V5

import audio from '@ohos.multimedia.audio';
import { BusinessError } from '@ohos.base';
import { abilityAccessCtrl, PermissionRequestResult, Permissions } from '@kit.AbilityKit';

@Entry
@Component
struct Index10 {

  @State message: string = '';
  context: Context = getContext(this) as Context;

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Button("点") .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            let permissions: Array<Permissions> = ['ohos.permission.MICROPHONE'];
            let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
            // requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗
            atManager.requestPermissionsFromUser(this.context, permissions).then((data: PermissionRequestResult) => {
              let grantStatus: Array<number> = data.authResults;
              let length: number = grantStatus.length;
              for (let i = 0; i < length; i++) {
                if (grantStatus[i] != 0) {
                  // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
                  return;
                }
              }
              fun1();
              console.info(` Success to request permissions from user. authResults is ${grantStatus}.`); })
              .catch((err: BusinessError) => {
                console.error(` Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
              })
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

function fun1() {
  let audioStreamInfo: audio.AudioStreamInfo = {
    samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_48000, // 采样率
    channels: audio.AudioChannel.CHANNEL_2, // 通道
    sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, // 采样格式
    encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW // 编码格式
  };
  let audioCapturerInfo: audio.AudioCapturerInfo = {
    source: audio.SourceType.SOURCE_TYPE_MIC,
    capturerFlags: 0
  };
  let audioCapturerOptions: audio.AudioCapturerOptions = {
    streamInfo: audioStreamInfo,
    capturerInfo: audioCapturerInfo
  };
  audio.createAudioCapturer(audioCapturerOptions, (err, data) => {
    if (err) {
      console.error(`Invoke createAudioCapturer failed, code is ${err.code}, message is ${err.message}`);
    } else {
      console.info('Invoke createAudioCapturer succeeded.');
    }
  });
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进