From 0773d9496dd5f12806558fb338f66edae99efa7c Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sun, 10 May 2026 14:31:23 +0200 Subject: [PATCH] =?UTF-8?q?fix(audio):=20AudioTrack=20auf=20USAGE=5FMEDIA?= =?UTF-8?q?=20=E2=80=94=20USAGE=5FASSISTANT=20stallt=20auf=20OnePlus=20A12?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Letzter Test zeigte: 163456B im Buffer mit play()-nach-Padding stallt (pos=0), aber 170048B im Pre-Roll-Pfad startet einwandfrei. Differenz nur 4% Daten — kein Buffer-Threshold-Problem, sondern AudioTrack-Quirk mit USAGE_ASSISTANT bei "voller Buffer, dann play()". USAGE_MEDIA ist robuster, AudioFocus laeuft eh separat ueber das AudioFocusModule. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../src/main/java/com/ariacockpit/PcmStreamPlayerModule.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/android/android/app/src/main/java/com/ariacockpit/PcmStreamPlayerModule.kt b/android/android/app/src/main/java/com/ariacockpit/PcmStreamPlayerModule.kt index c448f17..92f3947 100644 --- a/android/android/app/src/main/java/com/ariacockpit/PcmStreamPlayerModule.kt +++ b/android/android/app/src/main/java/com/ariacockpit/PcmStreamPlayerModule.kt @@ -92,7 +92,12 @@ class PcmStreamPlayerModule(reactContext: ReactApplicationContext) : ReactContex val newTrack = AudioTrack.Builder() .setAudioAttributes( AudioAttributes.Builder() - .setUsage(AudioAttributes.USAGE_ASSISTANT) + // USAGE_MEDIA statt USAGE_ASSISTANT — auf OnePlus A12 stallt + // AudioTrack mit USAGE_ASSISTANT wenn play() nach komplettem + // Buffer-Fuellen called wird (pos bleibt 0). USAGE_MEDIA ist + // robust. AudioFocus wird eh separat ueber AudioFocusModule + // gehandhabt, nicht ueber dieses USAGE-Tag. + .setUsage(AudioAttributes.USAGE_MEDIA) .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH) .build(), )