diff options
| author | 2010-10-01 14:52:00 -0700 | |
|---|---|---|
| committer | 2010-10-01 14:52:00 -0700 | |
| commit | 10e2120bdd2d99e100db187d49ac6a8495c7f956 (patch) | |
| tree | bbe34b743a7d3369228527ed37c167fee499db02 | |
| parent | 98f310879790a98c4c24cd06677e08bf49f1cea0 (diff) | |
| parent | 23f21600d0927365e5e7bdc4e566ba52101301b4 (diff) | |
Merge "Add CallManager/Phone.setEchoSuppressionEnabled()." into gingerbread
5 files changed, 46 insertions, 0 deletions
diff --git a/telephony/java/com/android/internal/telephony/CallManager.java b/telephony/java/com/android/internal/telephony/CallManager.java index 7c3508ff2189..09b7d053db66 100644 --- a/telephony/java/com/android/internal/telephony/CallManager.java +++ b/telephony/java/com/android/internal/telephony/CallManager.java @@ -861,6 +861,25 @@ public final class CallManager { } /** + * Enables or disables echo suppression. + */ + public void setEchoSuppressionEnabled(boolean enabled) { + if (VDBG) { + Log.d(LOG_TAG, " setEchoSuppression(" + enabled + ")"); + Log.d(LOG_TAG, this.toString()); + } + + if (hasActiveFgCall()) { + getActiveFgCall().getPhone().setEchoSuppressionEnabled(enabled); + } + + if (VDBG) { + Log.d(LOG_TAG, "End setEchoSuppression(" + enabled + ")"); + Log.d(LOG_TAG, this.toString()); + } + } + + /** * Play a DTMF tone on the active call. * * @param c should be one of 0-9, '*' or '#'. Other values will be diff --git a/telephony/java/com/android/internal/telephony/Phone.java b/telephony/java/com/android/internal/telephony/Phone.java index 9afade33b006..d5791ebbcee5 100644 --- a/telephony/java/com/android/internal/telephony/Phone.java +++ b/telephony/java/com/android/internal/telephony/Phone.java @@ -1169,6 +1169,11 @@ public interface Phone { boolean getMute(); /** + * Enables or disables echo suppression. + */ + void setEchoSuppressionEnabled(boolean enabled); + + /** * Invokes RIL_REQUEST_OEM_HOOK_RAW on RIL implementation. * * @param data The data for the request. diff --git a/telephony/java/com/android/internal/telephony/PhoneBase.java b/telephony/java/com/android/internal/telephony/PhoneBase.java index ff28773df5c2..53503a53c227 100644 --- a/telephony/java/com/android/internal/telephony/PhoneBase.java +++ b/telephony/java/com/android/internal/telephony/PhoneBase.java @@ -505,6 +505,10 @@ public abstract class PhoneBase extends Handler implements Phone { mCM.unregisterForResendIncallMute(h); } + public void setEchoSuppressionEnabled(boolean enabled) { + // no need for regular phone + } + /** * Subclasses of Phone probably want to replace this with a * version scoped to their packages diff --git a/telephony/java/com/android/internal/telephony/PhoneProxy.java b/telephony/java/com/android/internal/telephony/PhoneProxy.java index e1511e6ed79f..6f08868dda8d 100644 --- a/telephony/java/com/android/internal/telephony/PhoneProxy.java +++ b/telephony/java/com/android/internal/telephony/PhoneProxy.java @@ -568,6 +568,10 @@ public class PhoneProxy extends Handler implements Phone { return mActivePhone.getMute(); } + public void setEchoSuppressionEnabled(boolean enabled) { + mActivePhone.setEchoSuppressionEnabled(enabled); + } + public void invokeOemRilRequestRaw(byte[] data, Message response) { mActivePhone.invokeOemRilRequestRaw(data, response); } diff --git a/telephony/java/com/android/internal/telephony/sip/SipPhone.java b/telephony/java/com/android/internal/telephony/sip/SipPhone.java index af3e0886a304..e3c3d6591585 100755 --- a/telephony/java/com/android/internal/telephony/sip/SipPhone.java +++ b/telephony/java/com/android/internal/telephony/sip/SipPhone.java @@ -327,6 +327,20 @@ public class SipPhone extends SipPhoneBase { Log.e(LOG_TAG, "call waiting not supported"); } + @Override + public void setEchoSuppressionEnabled(boolean enabled) { + synchronized (SipPhone.class) { + AudioGroup audioGroup = foregroundCall.getAudioGroup(); + if (audioGroup == null) return; + int mode = audioGroup.getMode(); + audioGroup.setMode(enabled + ? AudioGroup.MODE_ECHO_SUPPRESSION + : AudioGroup.MODE_NORMAL); + Log.d(LOG_TAG, String.format("audioGroup mode change: %d --> %d", + mode, audioGroup.getMode())); + } + } + public void setMute(boolean muted) { synchronized (SipPhone.class) { foregroundCall.setMute(muted); |