summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--telephony/java/com/android/internal/telephony/CallManager.java25
1 files changed, 13 insertions, 12 deletions
diff --git a/telephony/java/com/android/internal/telephony/CallManager.java b/telephony/java/com/android/internal/telephony/CallManager.java
index 171b3714d527..3dd57ee742f2 100644
--- a/telephony/java/com/android/internal/telephony/CallManager.java
+++ b/telephony/java/com/android/internal/telephony/CallManager.java
@@ -379,18 +379,19 @@ public final class CallManager {
mode = AudioManager.MODE_RINGTONE;
break;
case OFFHOOK:
- Phone fgPhone = getFgPhone();
- // While foreground call is in DIALING,
- // ALERTING, ACTIVE and DISCONNECTING state
- if (getActiveFgCallState() != Call.State.IDLE
- && getActiveFgCallState() != Call.State.DISCONNECTED) {
- if (fgPhone instanceof SipPhone) {
- // enable IN_COMMUNICATION audio mode for sipPhone
- mode = AudioManager.MODE_IN_COMMUNICATION;
- } else {
- // enable IN_CALL audio mode for telephony
- mode = AudioManager.MODE_IN_CALL;
- }
+ Phone offhookPhone = getFgPhone();
+ if (getActiveFgCallState() == Call.State.IDLE) {
+ // There is no active Fg calls, the OFFHOOK state
+ // is set by the Bg call. So set the phone to bgPhone.
+ offhookPhone = getBgPhone();
+ }
+
+ if (offhookPhone instanceof SipPhone) {
+ // enable IN_COMMUNICATION audio mode for sipPhone
+ mode = AudioManager.MODE_IN_COMMUNICATION;
+ } else {
+ // enable IN_CALL audio mode for telephony
+ mode = AudioManager.MODE_IN_CALL;
}
break;
}