参考代码:
ALOGI("初始化音频AudioCapture");
OH_AudioStreamBuilder_Create(&builder, AUDIOSTREAM_TYPE_CAPTURER);
// 设置音频采样率
OH_AudioStreamBuilder_SetSamplingRate(builder, 8000);
// 设置音频声道
OH_AudioStreamBuilder_SetChannelCount(builder, 1);
// 设置音频采样格式
OH_AudioStreamBuilder_SetSampleFormat(builder, AUDIOSTREAM_SAMPLE_S16LE);
// 设置音频流的编码类型
OH_AudioStreamBuilder_SetEncodingType(builder, AUDIOSTREAM_ENCODING_TYPE_RAW);
// 设置输出音频流的工作场景
OH_AudioStreamBuilder_SetCapturerInfo(builder, OH_AudioStream_SourceType::AUDIOSTREAM_SOURCE_TYPE_MIC);
OH_AudioCapturer_Callbacks callbacks;
// 配置回调函数
callbacks.OH_AudioCapturer_OnReadData = OnReadData; // OnReadAudioData;
callbacks.OH_AudioCapturer_OnStreamEvent = OnStreamEvent;
callbacks.OH_AudioCapturer_OnInterruptEvent = OnInterruptEvent;
callbacks.OH_AudioCapturer_OnError = OnError;
// 设置输出音频流的回调
OH_AudioStream_Result result = OH_AudioStreamBuilder_SetCapturerCallback(builder, callbacks, nullptr);
ALOGI("OH_AudioStreamBuilder_SetCapturerCallback result:%d", result);
//此处返回了1(AUDIOSTREAM_ERROR_INVALID_PARAM),下面audioCapture是nullptr
result = OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);
ALOGI("OH_AudioStreamBuilder_GenerateCapturer result:%d", result);
ALOGE("OH_AudioStreamBuilder_GenerateCapturer:%p",audioCapturer);
// 启动抓取麦克风音频数据
result = OH_AudioCapturer_Start(audioCapturer);
ALOGI("OH_AudioCapturer_Start result:%d", result);
权限问题,需要打开MICROPHONE权限,audioCapturer才能创建成功。