summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Li <pyli@google.com>2021-07-01 19:35:59 -0700
committerPeter Li <pyli@google.com>2021-07-02 16:48:54 -0700
commit23c236e623bbe99d5ed54c906f15bd634f4601c1 (patch)
tree32ddc5d0d9b0cc67066540c95c9b370e367905b0
parentbe4a0f57958fd51464c96ae34d1461c3e9524045 (diff)
downloadDialer-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.java22
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.
}