fix(app): Mund-halten-Button stoppt ARIA jetzt sofort — AudioTrack flush vor stop
Stefan-Bug-Report: wenn ich in der App auf den Mund-halten-Button klicke waehrend ARIA redet, stoppt sie nicht. Ursache: stopInternal() rief nur AudioTrack.stop() + release(). Das stoppt zwar den Track, aber der bereits in den Hardware-Buffer geschriebene PCM-Audio (200-500ms je nach Geraet) spielt noch hoerbar weiter. Fuer den User klang das so als wuerde der Button nichts tun. Fix in 2 Zeilen: AudioTrack.pause() + AudioTrack.flush() vor stop(). flush() verwirft den Hardware-Buffer-Inhalt, dadurch ist die Wiedergabe wirklich sofort still. pause() davor weil flush() laut Android-Docs nur in non-playing state safe ist. Native module ist kompiliert in app/build/tmp/kotlin-classes — APK muss neu gebaut werden damit der Fix greift. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -361,6 +361,12 @@ class PcmStreamPlayerModule(reactContext: ReactApplicationContext) : ReactContex
|
||||
writerThread = null
|
||||
val t = track
|
||||
if (t != null) {
|
||||
// pause() + flush() vor stop() — sonst spielt der Hardware-Buffer
|
||||
// (200-500ms PCM-Samples) noch hörbar weiter, nachdem der User
|
||||
// den Mute-Button gedrückt hat. Stefan-Bug-Report: "wenn ich auf
|
||||
// den Mund halten Button klicke während ARIA redet stoppt sie nicht".
|
||||
try { t.pause() } catch (_: Exception) {}
|
||||
try { t.flush() } catch (_: Exception) {}
|
||||
try { t.stop() } catch (_: Exception) {}
|
||||
try { t.release() } catch (_: Exception) {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user