From fc20bc146b3359a1ecbd5fa2fc92e0c51ae23984 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Mon, 11 Jul 2022 12:46:09 -0500 Subject: [PATCH 1/2] Use a more familiar ringback for north american users --- .../java/eu/siacs/conversations/xmpp/jingle/ToneManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/ToneManager.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/ToneManager.java index 5c49b34e1934f99a60e9913a64139297e9503c30..d0c98f52f253083ae53a352ad116d2ff661d59ca 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/ToneManager.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/ToneManager.java @@ -131,7 +131,7 @@ class ToneManager { private void scheduleWaitingTone() { this.currentTone = JingleConnectionManager.SCHEDULED_EXECUTOR_SERVICE.scheduleAtFixedRate(() -> { - startTone(ToneGenerator.TONE_CDMA_DIAL_TONE_LITE, 750); + startTone(ToneGenerator.TONE_CDMA_NETWORK_USA_RINGBACK, 750); }, 0, 3, TimeUnit.SECONDS); } From 9f7a9498f941327132774e9c96f689cb64c57bba Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Mon, 11 Jul 2022 12:46:31 -0500 Subject: [PATCH 2/2] Support mute during dialler integration calls --- .../cheogram/android/ConnectionService.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/cheogram/java/com/cheogram/android/ConnectionService.java b/src/cheogram/java/com/cheogram/android/ConnectionService.java index 0f5dfa172654e67504fb25cbb1be971adb5c2b16..9f02369a1ecfc4d7af7be916975f2c9f095a5fa3 100644 --- a/src/cheogram/java/com/cheogram/android/ConnectionService.java +++ b/src/cheogram/java/com/cheogram/android/ConnectionService.java @@ -197,6 +197,7 @@ public class ConnectionService extends android.telecom.ConnectionService { protected String sessionId = null; protected Stack postDial = new Stack<>(); protected Icon gatewayIcon; + protected CallAudioState pendingState = null; protected WeakReference rtpConnection = null; CheogramConnection(Account account, Jid with, String postDialString) { @@ -222,7 +223,8 @@ public class ConnectionService extends android.telecom.ConnectionService { ); setAudioModeIsVoip(true); setConnectionCapabilities( - Connection.CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION + Connection.CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION | + Connection.CAPABILITY_MUTE ); } @@ -271,6 +273,8 @@ public class ConnectionService extends android.telecom.ConnectionService { public void onAudioDeviceChanged(AppRTCAudioManager.AudioDevice selectedAudioDevice, Set availableAudioDevices) { if (Build.VERSION.SDK_INT < 26) return; + if (pendingState != null) onCallAudioStateChanged(pendingState); + switch(selectedAudioDevice) { case SPEAKER_PHONE: setAudioRoute(CallAudioState.ROUTE_SPEAKER); @@ -285,6 +289,22 @@ public class ConnectionService extends android.telecom.ConnectionService { } } + @Override + public void onCallAudioStateChanged(CallAudioState state) { + pendingState = null; + if (rtpConnection == null || rtpConnection.get() == null) { + pendingState = state; + return; + } + + try { + rtpConnection.get().setMicrophoneEnabled(!state.isMuted()); + } catch (final IllegalStateException e) { + pendingState = state; + Log.w("com.cheogram.android.CheogramConnection", "Could not set microphone mute to " + (state.isMuted() ? "true" : "false") + ": " + e.toString()); + } + } + @Override public void onAnswer() { // For incoming calls, a connection update may not have been triggered before answering