diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2022-02-28 00:42:00 -0800 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2022-02-28 00:42:00 -0800 |
commit | 9172ebf478d3f986444187f48f32e81e68d0ee25 (patch) | |
tree | bf375642810d6f3fd3401538debc555d11cd8a48 | |
parent | 571edcfab5f5f585969ab36478ce2c79dbc86d7f (diff) | |
parent | ba4c53a1578434cf7602bfc9831818a4ec5220ef (diff) |
Merge ba4c53a1578434cf7602bfc9831818a4ec5220ef on remote branch
Change-Id: I38ac10e5d565bec5bf782eed107f0028bfce3e64
-rw-r--r-- | src/com/android/services/telephony/HoldAndAnswerHandler.java | 2 | ||||
-rw-r--r-- | src/com/android/services/telephony/TelephonyConnection.java | 31 |
2 files changed, 32 insertions, 1 deletions
diff --git a/src/com/android/services/telephony/HoldAndAnswerHandler.java b/src/com/android/services/telephony/HoldAndAnswerHandler.java index 94633972ac..93f17317a4 100644 --- a/src/com/android/services/telephony/HoldAndAnswerHandler.java +++ b/src/com/android/services/telephony/HoldAndAnswerHandler.java @@ -57,7 +57,7 @@ public class HoldAndAnswerHandler extends HoldHandlerBase { public void accept() { Log.i(this, "hold " + mConnToHold.getTelecomCallId() + " to answer " + mConnToAnswer.getTelecomCallId()); - mConnToHold.onHold(); + mConnToHold.performHoldAcrossSub(); } private void cleanup() { diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java index d1211b2cac..35abf056df 100644 --- a/src/com/android/services/telephony/TelephonyConnection.java +++ b/src/com/android/services/telephony/TelephonyConnection.java @@ -1359,6 +1359,37 @@ abstract class TelephonyConnection extends Connection implements Holdable, } } + /** + * Use cases for which this API is applicable + * is when call to be Held and call to be Accepted are in different subs + * For same active + held cases, onHold() needs to be used + * 1 - WAITING + ACTIVE on Sub1 | INCOMING on Sub2, accept sub 2 call + * 2 - ACTIVE on Sub1 | INCOMING on Sub2, accept sub 2 call + */ + public void performHoldAcrossSub() { + Log.v(this, "performHoldAcrossSub"); + try { + Phone phone = mOriginalConnection.getCall().getPhone(); + // For DSDA use cases accross sub we need to differentiate between + // this hold api and performHold. Call.State.WAITING is required for + // same sub use cases, which will make sure that hold is taken care by + // phonecalltracker, different sub cases will be taken care through this api + if (isContextBasedSwapDisabled() && + phone.getPhoneType() == PhoneConstants.PHONE_TYPE_IMS) { + ImsPhone imsPhone = (ImsPhone) phone; + imsPhone.holdActiveCallOnly(); + } + } catch (CallStateException e) { + Log.e(this, e, "Exception occurred while trying to put call on hold."); + } + } + + /** + * Use cases for which this API is applicable + * is when call to be Held and call to be accepted are on the same sub + * 1 - WAITING + ACTIVE on Sub1 | INCOMING on Sub2, accept sub 1 call + * 2 - ACTIVE + INCOMING on either sub, accept incoming call + */ public void performHold() { Log.v(this, "performHold"); // TODO: Can dialing calls be put on hold as well since they take up the |