@@ -2,10 +2,12 @@ package com.livekit.reactnative
22
33import android.annotation.SuppressLint
44import android.content.Context
5+ import android.media.AudioAttributes
56import com.facebook.react.bridge.*
67import com.livekit.reactnative.audio.AudioDeviceKind
78import com.livekit.reactnative.audio.AudioManagerUtils
89import com.livekit.reactnative.audio.AudioSwitchManager
10+ import org.webrtc.audio.WebRtcAudioTrackHelper
911
1012
1113class LivekitReactNativeModule (reactContext : ReactApplicationContext ) : ReactContextBaseJavaModule(reactContext) {
@@ -32,6 +34,10 @@ class LivekitReactNativeModule(reactContext: ReactApplicationContext) : ReactCon
3234 if (androidConfig.hasKey(" audioTypeOptions" )) {
3335 val audioTypeOptions = androidConfig.getMap(" audioTypeOptions" ) ? : return
3436
37+ val adm = LiveKitReactNative .audioDeviceModule
38+ val oldAudioAttributes = WebRtcAudioTrackHelper .getAudioOutputAttributes(adm)
39+ val attributesBuilder = AudioAttributes .Builder (oldAudioAttributes)
40+
3541 if (audioTypeOptions.hasKey(" manageAudioFocus" )) {
3642 val manageFocus = audioTypeOptions.getBoolean(" manageAudioFocus" )
3743 audioManager.setManageAudioFocus(manageFocus)
@@ -68,6 +74,7 @@ class LivekitReactNativeModule(reactContext: ReactApplicationContext) : ReactCon
6874 val usageType = AudioManagerUtils .audioAttributesUsageTypeFromString(usageTypeString)
6975 if (usageType != null ) {
7076 audioManager.setAudioAttributesUsageType(usageType)
77+ attributesBuilder.setUsage(usageType)
7178 }
7279 }
7380 }
@@ -77,6 +84,7 @@ class LivekitReactNativeModule(reactContext: ReactApplicationContext) : ReactCon
7784 val contentType = AudioManagerUtils .audioAttributesContentTypeFromString(contentTypeString)
7885 if (contentType != null ) {
7986 audioManager.setAudioAttributesContentType(contentType)
87+ attributesBuilder.setContentType(contentType)
8088 }
8189 }
8290 }
@@ -85,6 +93,8 @@ class LivekitReactNativeModule(reactContext: ReactApplicationContext) : ReactCon
8593 val force = audioTypeOptions.getBoolean(" forceHandleAudioRouting" )
8694 audioManager.setForceHandleAudioRouting(force)
8795 }
96+
97+ WebRtcAudioTrackHelper .setAudioOutputAttributes(adm, attributesBuilder.build())
8898 }
8999 }
90100
0 commit comments