双簧管AAudio流在物理设备上返回ErrorUnavailable-音频设备问题?

问题描述

有问题的错误

AAudioStream_requestStart(s#1) returned -889 ---------
AudioEngine: Error starting stream. ErrorUnavailable

更新:我已将此问题缩小为物理设备,并且似乎有可能是其原因,但我还没有发现。这种情况很少发生,因此很难确定。到目前为止,我已经注意到它发生在Pixel 3a和galaxy S9 +上。

我偶尔会遇到此错误,然后它就会消失,但我仍然没有找到解决方法或原因。我曾有过两次怀疑,但此后我证明了它们全都是虚假的,我将回到正题。

我尝试通过以下方式重现此内容

  • 打开/关闭蓝牙(工作一次,但是无法复制)
  • 连接蓝牙耳机
  • 连接插入式耳机
  • 上述所有操作均着眼于应用程序,以及加载了另一个应用程序时

解决此问题,我要做的就是重启物理设备。

我的Android Gradle插件4.0.1,而Gradle为6.1.1 NDK版本:21.0.6113669

我的用法和设置音频流:

AudioStreamBuilder builder;
builder.setCallback(this);
builder.setPerformanceMode(PerformanceMode::LowLatency);
builder.setSharingMode(SharingMode::Exclusive);
builder.setChannelCount(mChannelCount);

Result result = builder.openStream(&mStream);

if (result == Result::OK && mStream != nullptr) {
    // Grab stream info

    result = mStream->requestStart();
    if (result != Result::OK) {
        LOGE("AudioEngine: Error starting stream. %s",convertToText(result));
    }

    LOGD("AudioEngine: Starting Stream");
} else {
    LOGE("AudioEngine: Failed to create stream. Error: %s",convertToText(result));
}

调试信息:

I/AAudio: AAudioStreamBuilder_openStream() called ----------------------------------------
I/AudioStreamBuilder: rate   =      0,channels  = 2,format   = 0,sharing = EX,dir = OUTPUT
I/AudioStreamBuilder: device =      0,sessionId = -1,perfMode = 12,callback: ON with frames = 0
I/AudioStreamBuilder: usage  =      1,contentType = 2,inputPreset = 6,allowedCapturePolicy = 0
D/AudioStreamInternal_Client: open() original HW burst = 48,minMicros = 2000 => SW burst = 96
I/AAudio: AAudioStreamBuilder_openStream() returns 0 = AAUdio_OK for s#1 ----------------
D/MyApp: AudioEngine: Sample Rate: 48000 FramesPerBurst: 96 BufferSize: 192
D/MyApp: AudioEngine: Channel count: 2 Format: Float Direction: Output
D/MyApp: AudioEngine: Current Buffer Size: 288 BufferCapacity: 3072 SharingMode: Exclusive PerformanceMode: LowLatency
D/AAudio: AAudioStream_requestStart(s#1) called --------------
D/AAudio: AAudioStream_requestStart(s#1) returned -889 ---------
E/MyApp: AudioEngine: Error starting stream. ErrorUnavailable

我的怀疑是,由于我没有以编程方式定义播放方法(耳机,扬声器,蓝牙等),因此偶尔会发生这种情况,但是我目前无法确认这一点或不知道这实际上是否是问题所在。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)