switch audio device when switching to video

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/services/CallIntegration.java        | 7 
src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java | 2 
2 files changed, 9 insertions(+)

Detailed changes

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<AudioDevice> getAudioDevicesUpsideDownCake() {
         return ImmutableSet.copyOf(

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();
     }