diff --git a/src/main/java/eu/siacs/conversations/services/CallIntegration.java b/src/main/java/eu/siacs/conversations/services/CallIntegration.java index fbd3e8c2c..a4dffffaa 100644 --- a/src/main/java/eu/siacs/conversations/services/CallIntegration.java +++ b/src/main/java/eu/siacs/conversations/services/CallIntegration.java @@ -145,6 +145,13 @@ public class CallIntegration extends Connection { } } + public void setAudioDeviceWhenAvailable(final AudioDevice audioDevice) { + final var available = getAudioDevices(); + if (available.contains(audioDevice)) { + this.setAudioDevice(audioDevice); + } + } + @RequiresApi(api = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) private Set getAudioDevicesUpsideDownCake() { return ImmutableSet.copyOf( diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java index dc0980e1b..e9d750319 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java @@ -2610,6 +2610,8 @@ public class JingleRtpConnection extends AbstractJingleConnection private void modifyLocalContentMap(final RtpContentMap rtpContentMap) { final RtpContentMap activeContents = rtpContentMap.activeContents(); setLocalContentMap(activeContents); + this.callIntegration.setAudioDeviceWhenAvailable( + CallIntegration.initialAudioDevice(activeContents.getMedia())); updateEndUserState(); }