Hi, I’m currently using the arm64 build of FMOD on Android and I’ve tested on multiple devices, where it seems to work fine. However, on the Samsung Galaxy Z Fold 6, I’m seeing an issue where the audio stream appears to repeatedly close and reopen, which then causes a noticeable hitch.
From my profiling, the spike happens during SoundSystem->update(), and on this device I keep seeing logs showing AAudioStream_close, AAudioStreamBuilder_openStream, and then AAudioStream_requestStart failing with messages like “stream was probably stolen”.
This only seems to happen specifically on the Z Fold 6. On the other Android devices I tested, I did not run into this problem.
I’m mainly wondering:
has anyone else seen this specifically on the Samsung Z Fold 6,
is this a known device-specific AAudio / FMOD issue,
or is there anything I should check on my side for why the stream would keep reopening on this device only
I’ve included the relevant log below.
026-03-10 01:29:12.812 18558-18851 AAudio com.example.jnicpp D AAudioStream_requestStop(s#108) called
2026-03-10 01:29:12.812 18558-18851 AAudioStream com.example.jnicpp D setState(s#108) from 2 to 10
2026-03-10 01:29:12.823 18558-18851 AAudio com.example.jnicpp D AAudioStream_close(s#108) called ---------------
2026-03-10 01:29:12.823 18558-18851 AudioStrea…nal_Client com.example.jnicpp D release_l(): mServiceStreamHandle = 0x00007CB0
2026-03-10 01:29:12.823 18558-18851 AAudioStream com.example.jnicpp D joinThread() - but has no thread or already join()ed
2026-03-10 01:29:12.823 18558-18851 AudioStrea…nal_Client com.example.jnicpp W requestStop_l() stop callback returned -895, returning early
2026-03-10 01:29:12.823 18558-18851 AAudioStream com.example.jnicpp D setState(s#108) from 10 to 11
2026-03-10 01:29:12.823 18558-18851 AAudioStream com.example.jnicpp D setState(s#108) from 11 to 11
2026-03-10 01:29:12.823 18558-18851 AAudioStream com.example.jnicpp D setState(s#108) from 11 to 12
2026-03-10 01:29:12.823 18558-18851 AudioStrea…nal_Client com.example.jnicpp D ~AudioStreamInternal() 0xb4000077eaf50980 called
2026-03-10 01:29:12.823 18558-18851 AAudioStream com.example.jnicpp D ~AudioStream(s#108) mPlayerBase strongCount = 2
2026-03-10 01:29:12.823 18558-18851 AAudio com.example.jnicpp D AAudioStream_close(s#108) returned 0 ---------
2026-03-10 01:29:12.834 18558-18851 AAudio com.example.jnicpp I AAudioStreamBuilder_openStream() called ----------------------------------------
2026-03-10 01:29:12.834 18558-18851 AudioStreamBuilder com.example.jnicpp I rate = 0, channels = 0, channelMask = 0, format = 0, sharing = SH, dir = OUTPUT
2026-03-10 01:29:12.834 18558-18851 AudioStreamBuilder com.example.jnicpp I device = 0, sessionId = -1, perfMode = 12, callback: OFF with frames = 0
2026-03-10 01:29:12.834 18558-18851 AudioStreamBuilder com.example.jnicpp I usage = 14, contentType = 0, inputPreset = 0, allowedCapturePolicy = 0
2026-03-10 01:29:12.834 18558-18851 AudioStreamBuilder com.example.jnicpp I privacy sensitive = false, opPackageName = (null), attributionTag = (null)
2026-03-10 01:29:12.834 18558-18851 .example.jnicpp com.example.jnicpp D PlayerBase::PlayerBase()
2026-03-10 01:29:12.835 18558-18851 AudioStrea…nal_Client com.example.jnicpp D configureDataInformation() original HW burst = 96, minMicros = 2000 => SW burst = 96
2026-03-10 01:29:12.835 18558-18851 IsochronousClockModel com.example.jnicpp D setFramesPerBurst() - mFramesPerBurst = 96 - mBurstPeriodNanos = 2000000
2026-03-10 01:29:12.835 18558-18851 AAudioStream com.example.jnicpp D setState(s#109) from 0 to 2
2026-03-10 01:29:12.835 18558-18851 AAudioFlowGraph com.example.jnicpp I configure() source format = 0x00000005, channels = 2, sink format = 0x00000005, channels = 2, useMonoBlend = 0, audioBalance = 0.000000, isExclusive 0
2026-03-10 01:29:12.836 18558-18851 AAudio com.example.jnicpp I AAudioStreamBuilder_openStream() returns 0 = AAUDIO_OK for s#109 ----------------
2026-03-10 01:29:12.847 18558-18851 AAudio com.example.jnicpp D AAudioStream_close(s#109) called ---------------
2026-03-10 01:29:12.847 18558-18851 AudioStrea…nal_Client com.example.jnicpp D release_l(): mServiceStreamHandle = 0x00007CB1
2026-03-10 01:29:12.847 18558-18851 AAudioStream com.example.jnicpp D setState(s#109) from 2 to 11
2026-03-10 01:29:12.847 18558-18851 AAudioStream com.example.jnicpp D setState(s#109) from 11 to 11
2026-03-10 01:29:12.847 18558-18851 AAudioStream com.example.jnicpp D setState(s#109) from 11 to 12
2026-03-10 01:29:12.847 18558-18851 AudioStrea…nal_Client com.example.jnicpp D ~AudioStreamInternal() 0xb4000077eaf50980 called
2026-03-10 01:29:12.847 18558-18851 AAudioStream com.example.jnicpp D ~AudioStream(s#109) mPlayerBase strongCount = 2
2026-03-10 01:29:12.847 18558-18851 AAudio com.example.jnicpp D AAudioStream_close(s#109) returned 0 ---------
2026-03-10 01:29:12.857 18558-18851 fmod com.example.jnicpp I FMOD::supportsLowLatency : Low latency = false, Pro Audio = false, Bluetooth On = false, Acceptable Block Size = false (0)
2026-03-10 01:29:12.858 18558-18851 AAudio com.example.jnicpp I AAudioStreamBuilder_openStream() called ----------------------------------------
2026-03-10 01:29:12.858 18558-18851 AudioStreamBuilder com.example.jnicpp I rate = 0, channels = 0, channelMask = 0, format = 0, sharing = SH, dir = OUTPUT
2026-03-10 01:29:12.858 18558-18851 AudioStreamBuilder com.example.jnicpp I device = 0, sessionId = -1, perfMode = 12, callback: ON with frames = 0
2026-03-10 01:29:12.858 18558-18851 AudioStreamBuilder com.example.jnicpp I usage = 14, contentType = 0, inputPreset = 0, allowedCapturePolicy = 0
2026-03-10 01:29:12.858 18558-18851 AudioStreamBuilder com.example.jnicpp I privacy sensitive = false, opPackageName = (null), attributionTag = (null)
2026-03-10 01:29:12.858 18558-18851 .example.jnicpp com.example.jnicpp D PlayerBase::PlayerBase()
2026-03-10 01:29:12.859 18558-18851 AudioStrea…nal_Client com.example.jnicpp D configureDataInformation() original HW burst = 96, minMicros = 2000 => SW burst = 96
2026-03-10 01:29:12.859 18558-18851 IsochronousClockModel com.example.jnicpp D setFramesPerBurst() - mFramesPerBurst = 96 - mBurstPeriodNanos = 2000000
2026-03-10 01:29:12.859 18558-18851 AAudioStream com.example.jnicpp D setState(s#110) from 0 to 2
2026-03-10 01:29:12.859 18558-18851 AAudioFlowGraph com.example.jnicpp I configure() source format = 0x00000005, channels = 2, sink format = 0x00000005, channels = 2, useMonoBlend = 0, audioBalance = 0.000000, isExclusive 0
2026-03-10 01:29:12.860 18558-18851 AAudio com.example.jnicpp I AAudioStreamBuilder_openStream() returns 0 = AAUDIO_OK for s#110 ----------------
2026-03-10 01:29:12.869 18558-18558 ViewRootIm…nActivity] com.example.jnicpp I ViewPostIme pointer 1
2026-03-10 01:29:12.871 18558-18851 AAudio com.example.jnicpp D AAudioStream_close(s#110) called ---------------
2026-03-10 01:29:12.871 18558-18851 AudioStrea…nal_Client com.example.jnicpp D release_l(): mServiceStreamHandle = 0x00007CB2
2026-03-10 01:29:12.871 18558-18851 AAudioStream com.example.jnicpp D setState(s#110) from 2 to 11
2026-03-10 01:29:12.871 18558-18851 AAudioStream com.example.jnicpp D setState(s#110) from 11 to 11
2026-03-10 01:29:12.871 18558-18851 AAudioStream com.example.jnicpp D setState(s#110) from 11 to 12
2026-03-10 01:29:12.871 18558-18851 AudioStrea…nal_Client com.example.jnicpp D ~AudioStreamInternal() 0xb4000077eaf50980 called
2026-03-10 01:29:12.871 18558-18851 AAudioStream com.example.jnicpp D ~AudioStream(s#110) mPlayerBase strongCount = 2
2026-03-10 01:29:12.871 18558-18851 AAudio com.example.jnicpp D AAudioStream_close(s#110) returned 0 ---------
2026-03-10 01:29:12.881 18558-18851 AAudio com.example.jnicpp I AAudioStreamBuilder_openStream() called ----------------------------------------
2026-03-10 01:29:12.881 18558-18851 AudioStreamBuilder com.example.jnicpp I rate = 0, channels = 0, channelMask = 0, format = 0, sharing = SH, dir = OUTPUT
2026-03-10 01:29:12.881 18558-18851 AudioStreamBuilder com.example.jnicpp I device = 0, sessionId = -1, perfMode = 12, callback: ON with frames = 0
2026-03-10 01:29:12.881 18558-18851 AudioStreamBuilder com.example.jnicpp I usage = 14, contentType = 0, inputPreset = 0, allowedCapturePolicy = 0
2026-03-10 01:29:12.881 18558-18851 AudioStreamBuilder com.example.jnicpp I privacy sensitive = false, opPackageName = (null), attributionTag = (null)
2026-03-10 01:29:12.882 18558-18851 .example.jnicpp com.example.jnicpp D PlayerBase::PlayerBase()
2026-03-10 01:29:12.883 18558-18851 AudioStrea…nal_Client com.example.jnicpp D configureDataInformation() original HW burst = 96, minMicros = 2000 => SW burst = 96
2026-03-10 01:29:12.883 18558-18851 IsochronousClockModel com.example.jnicpp D setFramesPerBurst() - mFramesPerBurst = 96 - mBurstPeriodNanos = 2000000
2026-03-10 01:29:12.883 18558-18851 AAudioStream com.example.jnicpp D setState(s#111) from 0 to 2
2026-03-10 01:29:12.883 18558-18851 AAudioFlowGraph com.example.jnicpp I configure() source format = 0x00000005, channels = 2, sink format = 0x00000005, channels = 2, useMonoBlend = 0, audioBalance = 0.000000, isExclusive 0
2026-03-10 01:29:12.885 18558-18851 AAudio com.example.jnicpp I AAudioStreamBuilder_openStream() returns 0 = AAUDIO_OK for s#111 ----------------
2026-03-10 01:29:12.885 18558-18851 AAudio com.example.jnicpp D AAudioStream_requestStart(s#111) called --------------
2026-03-10 01:29:12.885 18558-18851 AAudioStream com.example.jnicpp D setState(s#111) from 2 to 3
2026-03-10 01:29:12.885 18558-18851 AudioStrea…nal_Client com.example.jnicpp D requestStart_l() error = -895, stream was probably stolen
2026-03-10 01:29:12.885 18558-18851 AAudioStream com.example.jnicpp D setDisconnected setting disconnected, current disconnected: 0, current state: 3
2026-03-10 01:29:12.886 18558-18851 AAudioStream com.example.jnicpp D setState(s#111) from 3 to 2
2026-03-10 01:29:12.886 18558-18851 AAudio com.example.jnicpp D AAudioStream_requestStart(s#111) returned -899 ---------