From 9d9d6b289df7b4da87e381f88633fa9611f6b551 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Tue, 25 Mar 2025 12:37:05 -0500 Subject: [PATCH] Prevent audio feedback loop on some devices --- .../java/com/cheogram/android/ConnectionService.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/cheogram/java/com/cheogram/android/ConnectionService.java b/src/cheogram/java/com/cheogram/android/ConnectionService.java index 34419e45fecc5f397f3a7437641476fc1195bebc..78d322c38fefa9d202fc18cbc26d8999e303856d 100644 --- a/src/cheogram/java/com/cheogram/android/ConnectionService.java +++ b/src/cheogram/java/com/cheogram/android/ConnectionService.java @@ -220,6 +220,7 @@ public class ConnectionService extends android.telecom.ConnectionService { protected Icon gatewayIcon; protected CallAudioState pendingState = null; protected WeakReference rtpConnection = null; + protected long lastAudioChange = 0; CheogramConnection(Account account, Jid with, String postDialString) { super(); @@ -302,6 +303,12 @@ public class ConnectionService extends android.telecom.ConnectionService { return; } + // Prevent feedback loop on some devices + if (System.currentTimeMillis() - lastAudioChange < 5000) { + return; + } + + lastAudioChange = System.currentTimeMillis(); Log.d("com.cheogram.android.CheogramConnection", "onAudioDeviceChanged: " + selectedAudioDevice); switch(selectedAudioDevice) { @@ -331,6 +338,7 @@ public class ConnectionService extends android.telecom.ConnectionService { } Log.d("com.cheogram.android.CheogramConnection", "onCallAudioStateChanged: " + state); + lastAudioChange = System.currentTimeMillis(); rtpConnection.get().callIntegration.onCallAudioStateChanged(state); try {