From 9313994e382969135af21ad3b281eaef926c35e9 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 28 Sep 2012 10:10:21 +0200 Subject: [PATCH] Fix Galaxy S audio issue --- src/org/linphone/InCallActivity.java | 8 ++++++++ src/org/linphone/LinphoneManager.java | 5 +++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/org/linphone/InCallActivity.java b/src/org/linphone/InCallActivity.java index bf1802ed6..487fcb597 100644 --- a/src/org/linphone/InCallActivity.java +++ b/src/org/linphone/InCallActivity.java @@ -868,6 +868,14 @@ public class InCallActivity extends FragmentActivity implements if (isVideoEnabledInCall != isVideoEnabled) { isVideoEnabled = isVideoEnabledInCall; switchVideo(isVideoEnabled); + } else { + //Hack to fix Galaxy S issue + if (isSpeakerEnabled) { + LinphoneManager.getInstance().routeAudioToSpeaker(); + } else { + LinphoneManager.getInstance().routeAudioToReceiver(); + } + LinphoneManager.getLc().enableSpeaker(isSpeakerEnabled); } isMicMuted = LinphoneManager.getLc().isMicMuted(); diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java index cccb02a50..82b05a658 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -204,7 +204,7 @@ public final class LinphoneManager implements LinphoneCoreListener { @SuppressWarnings("deprecation") private void routeAudioToSpeakerHelperHelper(boolean speakerOn) { boolean different = isSpeakerOn() ^ speakerOn; - if (!different) { + if (!different && !Hacks.needGalaxySAudioHack()) { Log.d("Skipping change audio route by the same route ", speakerOn ? "speaker" : "earpiece"); return; @@ -227,7 +227,8 @@ public final class LinphoneManager implements LinphoneCoreListener { listener.onAudioStateChanged(speakerOn ? AudioState.SPEAKER : AudioState.EARPIECE); } } - private synchronized void routeAudioToSpeakerHelper(boolean speakerOn) { + + public synchronized void routeAudioToSpeakerHelper(boolean speakerOn) { final LinphoneCall call = mLc.getCurrentCall(); if (call != null && call.getState() == State.StreamsRunning && Hacks.needPausingCallForSpeakers()) { Log.d("Hack to have speaker=",speakerOn," while on call");