InCallAdapter.java revision 8d5d9ddc66b55b6906364ab3c0e244dab4d58f13
1e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon/* 2e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * Copyright (C) 2014 The Android Open Source Project 3e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * 4e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * Licensed under the Apache License, Version 2.0 (the "License"); 5e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * you may not use this file except in compliance with the License. 6e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * You may obtain a copy of the License at 7e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * 8e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * http://www.apache.org/licenses/LICENSE-2.0 9e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * 10e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * Unless required by applicable law or agreed to in writing, software 11e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * distributed under the License is distributed on an "AS IS" BASIS, 12e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * See the License for the specific language governing permissions and 14e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * limitations under the License. 15e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon */ 16e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon 177cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunnpackage com.android.server.telecom; 189f2bed31374a56487f370be01224baf6ce97e8adBen Gilad 19e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordonimport android.os.Handler; 2010ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepalimport android.os.Message; 217cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunnimport android.telecom.PhoneAccountHandle; 22a439e1b6d6201dedecfc40b67c9347a8c563b9c1Sailesh Nepal 23352105c5d33ac94e5ad0cb5ac2e9268731423e65Evan Charltonimport com.android.internal.os.SomeArgs; 247cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunnimport com.android.internal.telecom.IInCallAdapter; 25e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon 26e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon/** 27e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * Receives call commands and updates from in-call app and passes them through to CallsManager. 28e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * {@link InCallController} creates an instance of this class and passes it to the in-call app after 29e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * binding to it. This adapter can receive commands and updates until the in-call app is unbound. 30e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon */ 31e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordonclass InCallAdapter extends IInCallAdapter.Stub { 32e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon private final CallsManager mCallsManager; 33e59bb195972d65a71618af4fe13f1ad982253e16Sailesh Nepal private final CallIdMapper mCallIdMapper; 348d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad private final TelecomSystem.SyncRoot mLock; 35e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon 36e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon /** Persists the specified parameters. */ 378d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad public InCallAdapter(CallsManager callsManager, CallIdMapper callIdMapper, TelecomSystem.SyncRoot lock) { 38e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon mCallsManager = callsManager; 39e59bb195972d65a71618af4fe13f1ad982253e16Sailesh Nepal mCallIdMapper = callIdMapper; 408d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mLock = lock; 41e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon } 42e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon 43e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon @Override 4438931d0ad60f00a9f50c90cef446166731f0b871Andrew Lee public void answerCall(String callId, int videoState) { 458d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad synchronized (mLock) { 468d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.d(this, "answerCall(%s,%d)", callId, videoState); 478d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (mCallIdMapper.isValidCallId(callId)) { 488d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Call call = mCallIdMapper.getCall(callId); 498d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (call != null) { 508d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mCallsManager.answerCall(call, videoState); 518d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } else { 528d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.w(this, "answerCall, unknown call id: %s", callId); 538d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 548d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 55969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 56e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon } 57e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon 58e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon @Override 59ff7493a8f620509d41dd8a5106c1d0dcd27cd274Ihab Awad public void rejectCall(String callId, boolean rejectWithMessage, String textMessage) { 608d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad synchronized (this) { 618d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.d(this, "rejectCall(%s,%b,%s)", callId, rejectWithMessage, textMessage); 628d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (mCallIdMapper.isValidCallId(callId)) { 638d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Call call = mCallIdMapper.getCall(callId); 648d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (call != null) { 658d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mCallsManager.rejectCall(call, rejectWithMessage, textMessage); 668d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } else { 678d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.w(this, "setRingback, unknown call id: %s", callId); 688d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 698d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 70969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 71e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon } 72e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon 7310ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal @Override 7410ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void playDtmfTone(String callId, char digit) { 758d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad synchronized (mLock) { 768d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.d(this, "playDtmfTone(%s,%c)", callId, digit); 778d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (mCallIdMapper.isValidCallId(callId)) { 788d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Call call = mCallIdMapper.getCall(callId); 798d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (call != null) { 808d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mCallsManager.playDtmfTone(call, digit); 818d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } else { 828d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.w(this, "playDtmfTone, unknown call id: %s", callId); 838d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 848d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 85969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 8674549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad } 8774549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad 8810ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal @Override 8910ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void stopDtmfTone(String callId) { 908d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad synchronized (mLock) { 918d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.d(this, "stopDtmfTone(%s)", callId); 928d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (mCallIdMapper.isValidCallId(callId)) { 938d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Call call = mCallIdMapper.getCall(callId); 948d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (call != null) { 958d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mCallsManager.stopDtmfTone(call); 968d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } else { 978d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.w(this, "stopDtmfTone, unknown call id: %s", callId); 988d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 998d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 100969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 10174549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad } 10274549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad 10310ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal @Override 104352105c5d33ac94e5ad0cb5ac2e9268731423e65Evan Charlton public void postDialContinue(String callId, boolean proceed) { 1058d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad synchronized (mLock) { 1068d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.d(this, "postDialContinue(%s)", callId); 1078d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (mCallIdMapper.isValidCallId(callId)) { 1088d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Call call = mCallIdMapper.getCall(callId); 1098d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (call != null) { 1108d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mCallsManager.postDialContinue(call, proceed); 1118d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } else { 1128d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.w(this, "postDialContinue, unknown call id: %s", callId); 1138d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 1148d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 115969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 11674549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad } 11774549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad 118e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon @Override 11910ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void disconnectCall(String callId) { 1208d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad synchronized (mLock) { 1218d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.v(this, "disconnectCall: %s", callId); 1228d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (mCallIdMapper.isValidCallId(callId)) { 1238d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Call call = mCallIdMapper.getCall(callId); 1248d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (call != null) { 1258d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mCallsManager.disconnectCall(call); 1268d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } else { 1278d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.w(this, "disconnectCall, unknown call id: %s", callId); 1288d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 1298d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 130969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 131e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon } 132cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee 133cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee @Override 13410ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void holdCall(String callId) { 1358d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad synchronized (mLock) { 1368d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (mCallIdMapper.isValidCallId(callId)) { 1378d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Call call = mCallIdMapper.getCall(callId); 1388d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (call != null) { 1398d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mCallsManager.holdCall(call); 1408d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } else { 1418d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.w(this, "holdCall, unknown call id: %s", callId); 1428d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 1438d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 144969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 145cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee } 146cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee 147cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee @Override 14810ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void unholdCall(String callId) { 1498d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad synchronized (mLock) { 1508d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (mCallIdMapper.isValidCallId(callId)) { 1518d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Call call = mCallIdMapper.getCall(callId); 1528d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (call != null) { 1538d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mCallsManager.unholdCall(call); 1548d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } else { 1558d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.w(this, "unholdCall, unknown call id: %s", callId); 1568d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 1578d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 158969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 15984fa5f8c59a1cd3c5716c239fb19c58244fc81feSailesh Nepal } 16084fa5f8c59a1cd3c5716c239fb19c58244fc81feSailesh Nepal 16184fa5f8c59a1cd3c5716c239fb19c58244fc81feSailesh Nepal @Override 162f5e5d3ccf108c41e06983a582742b00d221b78b7Nancy Chen public void phoneAccountSelected(String callId, PhoneAccountHandle accountHandle, 163f5e5d3ccf108c41e06983a582742b00d221b78b7Nancy Chen boolean setDefault) { 1648d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad synchronized (mLock) { 1658d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (mCallIdMapper.isValidCallId(callId)) { 1668d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Call call = mCallIdMapper.getCall(callId); 1678d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (call != null) { 1688d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mCallsManager.phoneAccountSelected(call, accountHandle, setDefault); 1698d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } else { 1708d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.w(this, "phoneAccountSelected, unknown call id: %s", callId); 1718d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 1728d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 173969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 17453ceedc1f5ae5a075c7a3186db8bb4db32cbe583Nancy Chen } 17553ceedc1f5ae5a075c7a3186db8bb4db32cbe583Nancy Chen 17653ceedc1f5ae5a075c7a3186db8bb4db32cbe583Nancy Chen @Override 17710ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void mute(boolean shouldMute) { 1788d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad synchronized (mLock) { 1798d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mCallsManager.mute(shouldMute); 1808d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 1816aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal } 1826aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal 1836aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal @Override 18410ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void setAudioRoute(int route) { 1858d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad synchronized (mLock) { 1868d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mCallsManager.setAudioRoute(route); 1878d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 1886aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal } 1898f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon 1908f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon @Override 19112d61825cd0d6aa06272db3f77b5e30dce379951Santos Cordon public void conference(String callId, String otherCallId) { 1928d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad synchronized (mLock) { 1938d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (mCallIdMapper.isValidCallId(callId) && 1948d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mCallIdMapper.isValidCallId(otherCallId)) { 1958d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Call call = mCallIdMapper.getCall(callId); 1968d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Call otherCall = mCallIdMapper.getCall(otherCallId); 1978d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (call != null && otherCall != null) { 1988d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mCallsManager.conference(call, otherCall); 1998d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } else { 2008d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.w(this, "conference, unknown call id: %s or %s", callId, otherCallId); 2018d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 2028d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad 2038d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 204969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 2058f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon } 2068f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon 2078f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon @Override 208a161070ea054f91a5b2d5b4e3413381134d548b8Santos Cordon public void splitFromConference(String callId) { 2098d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad synchronized (mLock) { 2108d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (mCallIdMapper.isValidCallId(callId)) { 2118d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Call call = mCallIdMapper.getCall(callId); 2128d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (call != null) { 2138d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad call.splitFromConference(); 2148d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } else { 2158d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.w(this, "splitFromConference, unknown call id: %s", callId); 2168d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 2178d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 218969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 2198f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon } 220e8ecb98d5341395e073d02c065143ae3ac76ef71Sailesh Nepal 221e8ecb98d5341395e073d02c065143ae3ac76ef71Sailesh Nepal @Override 2226805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon public void mergeConference(String callId) { 2238d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad synchronized (mLock) { 2248d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (mCallIdMapper.isValidCallId(callId)) { 2258d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Call call = mCallIdMapper.getCall(callId); 2268d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (call != null) { 2278d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad call.mergeConference(); 2288d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } else { 2298d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.w(this, "mergeConference, unknown call id: %s", callId); 2308d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 2318d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 2326805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon } 2336805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon } 2346805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon 2356805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon @Override 2366805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon public void swapConference(String callId) { 2378d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad synchronized (mLock) { 2388d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (mCallIdMapper.isValidCallId(callId)) { 2398d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Call call = mCallIdMapper.getCall(callId); 2408d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad if (call != null) { 2418d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad call.swapConference(); 2428d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } else { 2438d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad Log.w(this, "swapConference, unknown call id: %s", callId); 2448d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 2458d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 2466805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon } 2476805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon } 2486805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon 2496805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon @Override 250d134687adc2594ed43e912f427f494ef258e89bcYorke Lee public void turnOnProximitySensor() { 2518d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad synchronized (mLock) { 2528d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mCallsManager.turnOnProximitySensor(); 2538d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 254d134687adc2594ed43e912f427f494ef258e89bcYorke Lee } 255d134687adc2594ed43e912f427f494ef258e89bcYorke Lee 256d134687adc2594ed43e912f427f494ef258e89bcYorke Lee @Override 257d134687adc2594ed43e912f427f494ef258e89bcYorke Lee public void turnOffProximitySensor(boolean screenOnImmediately) { 2588d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad synchronized (mLock) { 2598d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mCallsManager.turnOffProximitySensor(screenOnImmediately); 2608d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 261d134687adc2594ed43e912f427f494ef258e89bcYorke Lee } 2629f2bed31374a56487f370be01224baf6ce97e8adBen Gilad} 263