diff options
author | Peter Li <pyli@google.com> | 2021-07-01 19:35:59 -0700 |
---|---|---|
committer | Peter Li <pyli@google.com> | 2021-07-02 16:48:54 -0700 |
commit | 23c236e623bbe99d5ed54c906f15bd634f4601c1 (patch) | |
tree | 32ddc5d0d9b0cc67066540c95c9b370e367905b0 | |
parent | be4a0f57958fd51464c96ae34d1461c3e9524045 (diff) | |
download | Dialer-23c236e623bbe99d5ed54c906f15bd634f4601c1.tar.gz |
Send SCO state on conference calls
Fix: 191206390
Test: Manual
Change-Id: I1473d26d34992f46b8ee58204692d4655d700aaa
-rw-r--r-- | src/com/android/car/dialer/telecom/UiCallManager.java | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/com/android/car/dialer/telecom/UiCallManager.java b/src/com/android/car/dialer/telecom/UiCallManager.java index 7c6aaffb..bd587998 100644 --- a/src/com/android/car/dialer/telecom/UiCallManager.java +++ b/src/com/android/car/dialer/telecom/UiCallManager.java @@ -185,14 +185,20 @@ public final class UiCallManager { /** * Re-route the audio out phone of the ongoing phone call. */ - public void setAudioRoute(int audioRoute, Call call) { - if (call != null) { - if (audioRoute == CallAudioState.ROUTE_BLUETOOTH) { - call.sendCallEvent(EVENT_SCO_CONNECT, null); - setMuted(false); - } else if ((audioRoute & CallAudioState.ROUTE_WIRED_OR_EARPIECE) != 0) { - call.sendCallEvent(EVENT_SCO_DISCONNECT, null); - } + public void setAudioRoute(int audioRoute, Call primaryCall) { + if (primaryCall == null) { + return; + } + + boolean isConference = !primaryCall.getChildren().isEmpty() + && primaryCall.getDetails().hasProperty(Call.Details.PROPERTY_CONFERENCE); + Call call = isConference ? primaryCall.getChildren().get(0) : primaryCall; + + if (audioRoute == CallAudioState.ROUTE_BLUETOOTH) { + call.sendCallEvent(EVENT_SCO_CONNECT, null); + setMuted(false); + } else if ((audioRoute & CallAudioState.ROUTE_WIRED_OR_EARPIECE) != 0) { + call.sendCallEvent(EVENT_SCO_DISCONNECT, null); } // TODO: Implement routing audio if current call is not a bluetooth call. } |