HarmonyOS 鸿蒙Next OHAudio启动声音采集失败请协助

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS 鸿蒙Next OHAudio启动声音采集失败请协助

result = OH_AudioStreamBuilder_SetCapturerInfo(builder, AUDIOSTREAM_SOURCE_TYPE_VOICE_COMMUNICATION);
LOGV("OH_AudioStreamBuilder_SetCapturerInfo, builder:%p, result=%d", builder, result);

result = OH_AudioStreamBuilder_SetSamplingRate(builder, 8000);
LOGV("OH_AudioStreamBuilder_SetSamplingRate, builder:%p, result=%d", builder, result);

result = OH_AudioStreamBuilder_SetChannelCount(builder, 1);
LOGV("OH_AudioStreamBuilder_SetChannelCount, builder:%p, result=%d", builder, result);

result = OH_AudioStreamBuilder_SetSampleFormat(builder, AUDIOSTREAM_SAMPLE_S16LE);
LOGV("OH_AudioStreamBuilder_SetSampleFormat, builder:%p, result=%d", builder, result);

result = OH_AudioStreamBuilder_SetEncodingType(builder, AUDIOSTREAM_ENCODING_TYPE_RAW);
LOGV("OH_AudioStreamBuilder_SetEncodingType, builder:%p, result=%d", builder, result);

result = OH_AudioStreamBuilder_SetFrameSizeInCallback(builder, 640);
LOGV("OH_AudioStreamBuilder_SetFrameSizeInCallback, builder:%p, result=%d", builder, result);

//设置输出音频流的回调
callbacks.OH_AudioCapturer_OnReadData = OH_AudioCapturer_OnReadData_func;
callbacks.OH_AudioCapturer_OnStreamEvent = OH_AudioCapturer_OnStreamEvent_func;
callbacks.OH_AudioCapturer_OnInterruptEvent = OH_AudioCapturer_OnInterruptEvent_func;
callbacks.OH_AudioCapturer_OnError = OH_AudioCapturer_OnError_func;
result = OH_AudioStreamBuilder_SetCapturerCallback(builder, callbacks, this);
LOGV("OH_AudioStreamBuilder_SetCapturerCallback, builder:%p, result=%d", builder, result);

result = OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer);

以上代码,
OH_AudioStreamBuilder_GenerateCapturer调用失败,result返回1,请问可能是哪里存在问题。
MIC权限已增加申请,如下:
{
"name" : 'ohos.permission.MICROPHONE',
"reason": "$string:reason",
"usedScene": {
"abilities": [
"FormAbility"
],
"when":"always"
}
}

更多关于HarmonyOS 鸿蒙Next OHAudio启动声音采集失败请协助的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复
  1. 检查有没有申请用户权限,可以在 onWindowStageCreate 执行以下函数
atManager.requestPermissionsFromUser(this.context, ['ohos.permission.MICROPHONE']).then((data) => {
  console.info('data:' + JSON.stringify(data));
  console.info('data permissions:' + data.permissions);
  console.info('data authResults:' + data.authResults);
}).catch((err) => {
  console.info('data:' + JSON.stringify(err));
});
  1. OH_Audio 采集音频 demo:https://gitee.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Native/Audio,可以参照排查

更多关于HarmonyOS 鸿蒙Next OHAudio启动声音采集失败请协助的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


增加requestPermissionsFromUser后,问题解决。

针对“HarmonyOS 鸿蒙Next OHAudio启动声音采集失败”的问题,以下是一些可能的解决方案,专注于鸿蒙系统本身的特点和机制:

  1. 检查权限设置: 确保应用已获取麦克风使用权限。在鸿蒙系统中,权限管理较为严格,未授权的应用无法访问麦克风。

  2. 检查音频服务状态: 查看OHAudio服务是否正常运行。鸿蒙系统的服务管理可能影响音频采集功能,确保相关服务已启动且未出现异常。

  3. 检查硬件连接: 确认麦克风硬件连接无误,且设备本身无故障。硬件问题也可能导致声音采集失败。

  4. 查看系统日志: 分析系统日志,查找与OHAudio或音频采集相关的错误信息。这有助于定位问题根源。

  5. 重启设备: 尝试重启设备,以解决可能因系统缓存或临时故障导致的问题。

  6. 更新系统固件: 检查是否有鸿蒙系统的更新固件,有时系统更新可修复已知问题。

如果上述方法均未能解决问题,可能是系统或硬件层面的深层问题。此时,建议联系鸿蒙系统的官方技术支持,或访问官网客服获取进一步帮助。官网地址是:

如果问题依旧没法解决请联系官网客服。

回到顶部