有问题的错误:
AAudioStream_requestStart(s#1) returned -889 ---------
AudioEngine: Error starting stream. ErrorUnavailable
更新:我已将此问题缩小到物理设备,并且似乎有其原因的条件,但我还没有发现。它很少发生,所以很难确定。到目前为止,我注意到它发生在 Pixel 3a 和 Galaxy S9+ 上。
我偶尔会遇到这个错误,然后它会消失,我仍然没有找到解决它的方法或它发生的原因。我有几个怀疑,但后来我证明它们都是错误的,我又回到了原点。
我尝试通过以下方式重现此内容:
- 打开/关闭蓝牙(工作一次,但无法重现)
- 连接蓝牙耳机
- 连接插入式耳机
- 以上所有内容均以应用程序为焦点,并且在加载另一个应用程序时
要解决这个问题,我所要做的就是重新启动物理设备。
我的 Android Gradle Plugin 是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
我的怀疑是,由于我没有以编程方式定义播放方法(耳机、扬声器、蓝牙等),这种情况偶尔会发生,但我目前无法确认或知道这是否真的是问题所在。