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 198731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awadimport android.os.Binder; 20d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunnimport android.os.Bundle; 217cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunnimport android.telecom.PhoneAccountHandle; 22a439e1b6d6201dedecfc40b67c9347a8c563b9c1Sailesh Nepal 237cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunnimport com.android.internal.telecom.IInCallAdapter; 24e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon 25961694a9750626c067be960170bc95f10b5efcc2Tyler Gunnimport java.util.List; 26961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn 27e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon/** 28e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * Receives call commands and updates from in-call app and passes them through to CallsManager. 29e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * {@link InCallController} creates an instance of this class and passes it to the in-call app after 30e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * binding to it. This adapter can receive commands and updates until the in-call app is unbound. 31e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon */ 32e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordonclass InCallAdapter extends IInCallAdapter.Stub { 33e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon private final CallsManager mCallsManager; 34e59bb195972d65a71618af4fe13f1ad982253e16Sailesh Nepal private final CallIdMapper mCallIdMapper; 358d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad private final TelecomSystem.SyncRoot mLock; 36209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger private final String mOwnerComponentName; 37e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon 38e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon /** Persists the specified parameters. */ 398731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad public InCallAdapter(CallsManager callsManager, CallIdMapper callIdMapper, 40209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger TelecomSystem.SyncRoot lock, String ownerComponentName) { 41e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon mCallsManager = callsManager; 42e59bb195972d65a71618af4fe13f1ad982253e16Sailesh Nepal mCallIdMapper = callIdMapper; 438d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mLock = lock; 44209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger mOwnerComponentName = ownerComponentName; 45e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon } 46e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon 47e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon @Override 4838931d0ad60f00a9f50c90cef446166731f0b871Andrew Lee public void answerCall(String callId, int videoState) { 498731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 50209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.aC", mOwnerComponentName); 5111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 5211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 5311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 5411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.d(this, "answerCall(%s,%d)", callId, videoState); 5511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 5611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 5711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.answerCall(call, videoState); 5811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 5911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "answerCall, unknown call id: %s", callId); 6011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 618d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 6211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 6311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 648d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 658731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 6611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 67969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 68e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon } 69e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon 70e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon @Override 71ff7493a8f620509d41dd8a5106c1d0dcd27cd274Ihab Awad public void rejectCall(String callId, boolean rejectWithMessage, String textMessage) { 728731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 73209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.rC", mOwnerComponentName); 7411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 7511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 7611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 7711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.d(this, "rejectCall(%s,%b,%s)", callId, rejectWithMessage, textMessage); 7811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 7911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 8011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.rejectCall(call, rejectWithMessage, textMessage); 8111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 8211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "setRingback, unknown call id: %s", callId); 8311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 848d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 8511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 8611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 878d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 888731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 8911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 90969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 91e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon } 92e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon 9310ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal @Override 9410ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void playDtmfTone(String callId, char digit) { 958731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 96209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.pDT", mOwnerComponentName); 9711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 9811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 9911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 10011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.d(this, "playDtmfTone(%s,%c)", callId, digit); 10111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 10211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 10311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.playDtmfTone(call, digit); 10411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 10511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "playDtmfTone, unknown call id: %s", callId); 10611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 1078d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 10811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 10911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 1108d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 1118731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 11211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 113969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 11474549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad } 11574549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad 11610ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal @Override 11710ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void stopDtmfTone(String callId) { 1188731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 119209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.sDT", mOwnerComponentName); 12011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 12111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 12211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 12311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.d(this, "stopDtmfTone(%s)", callId); 12411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 12511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 12611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.stopDtmfTone(call); 12711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 12811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "stopDtmfTone, unknown call id: %s", callId); 12911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 1308d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 13111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 13211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 1338d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 1348731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 13511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 136969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 13774549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad } 13874549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad 13910ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal @Override 140352105c5d33ac94e5ad0cb5ac2e9268731423e65Evan Charlton public void postDialContinue(String callId, boolean proceed) { 1418731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 142209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.pDC", mOwnerComponentName); 14311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 14411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 14511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 14611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.d(this, "postDialContinue(%s)", callId); 14711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 14811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 14911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.postDialContinue(call, proceed); 15011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 15111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "postDialContinue, unknown call id: %s", callId); 15211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 1538d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 15411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 15511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 1568d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 1578731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 15811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 159969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 16074549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad } 16174549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad 162e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon @Override 16310ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void disconnectCall(String callId) { 1648731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 165209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.dC", mOwnerComponentName); 16611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 16711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 16811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 16911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.v(this, "disconnectCall: %s", callId); 17011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 17111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 17211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.disconnectCall(call); 17311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 17411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "disconnectCall, unknown call id: %s", callId); 17511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 1768d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 17711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 17811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 1798d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 1808731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 18111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 182969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 183e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon } 184cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee 185cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee @Override 18610ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void holdCall(String callId) { 1878731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 188209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.hC", mOwnerComponentName); 18911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 19011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 19111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 19211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 19311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 19411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.holdCall(call); 19511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 19611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "holdCall, unknown call id: %s", callId); 19711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 1988d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 19911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 20011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 2018d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 2028731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 20311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 204969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 205cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee } 206cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee 207cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee @Override 20810ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void unholdCall(String callId) { 2098731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 210209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.uC", mOwnerComponentName); 21111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 21211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 21311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 21411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 21511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 21611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.unholdCall(call); 21711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 21811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "unholdCall, unknown call id: %s", callId); 21911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 2208d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 22111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 22211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 2238d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 2248731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 22511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 226969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 22784fa5f8c59a1cd3c5716c239fb19c58244fc81feSailesh Nepal } 22884fa5f8c59a1cd3c5716c239fb19c58244fc81feSailesh Nepal 22984fa5f8c59a1cd3c5716c239fb19c58244fc81feSailesh Nepal @Override 230f5e5d3ccf108c41e06983a582742b00d221b78b7Nancy Chen public void phoneAccountSelected(String callId, PhoneAccountHandle accountHandle, 231f5e5d3ccf108c41e06983a582742b00d221b78b7Nancy Chen boolean setDefault) { 2328731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 233209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.pAS", mOwnerComponentName); 23411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 23511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 23611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 23711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 23811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 23911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.phoneAccountSelected(call, accountHandle, setDefault); 24011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 24111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "phoneAccountSelected, unknown call id: %s", callId); 24211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 2438d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 24411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 24511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 2468d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 2478731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 24811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 249969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 25053ceedc1f5ae5a075c7a3186db8bb4db32cbe583Nancy Chen } 25153ceedc1f5ae5a075c7a3186db8bb4db32cbe583Nancy Chen 25253ceedc1f5ae5a075c7a3186db8bb4db32cbe583Nancy Chen @Override 25310ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void mute(boolean shouldMute) { 2548731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 255209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.m", mOwnerComponentName); 25611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 25711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 25811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 25911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.mute(shouldMute); 26011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 26111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 26211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 2638731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } 2648731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 26511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 2668d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 2676aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal } 2686aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal 2696aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal @Override 27010ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void setAudioRoute(int route) { 2718731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 272209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.sAR", mOwnerComponentName); 27311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 27411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 27511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 27611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.setAudioRoute(route); 27711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 27811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 27911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 2808731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } 2818731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 28211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 2838d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 2846aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal } 2858f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon 2868f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon @Override 28712d61825cd0d6aa06272db3f77b5e30dce379951Santos Cordon public void conference(String callId, String otherCallId) { 2888731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 289209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.c", mOwnerComponentName); 29011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 29111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 29211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 29311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 29411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call otherCall = mCallIdMapper.getCall(otherCallId); 29511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null && otherCall != null) { 29611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.conference(call, otherCall); 29711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 29811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "conference, unknown call id: %s or %s", callId, otherCallId); 29911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 3008731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } 30111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 30211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 3038d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 3048731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 30511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 306969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 3078f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon } 3088f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon 3098f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon @Override 310a161070ea054f91a5b2d5b4e3413381134d548b8Santos Cordon public void splitFromConference(String callId) { 3118731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 312209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.sFC", mOwnerComponentName); 31311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 31411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 31511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 31611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 31711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 31811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger call.splitFromConference(); 31911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 32011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "splitFromConference, unknown call id: %s", callId); 32111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 3228d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 32311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 32411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 3258d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 3268731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 32711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 328969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 3298f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon } 330e8ecb98d5341395e073d02c065143ae3ac76ef71Sailesh Nepal 331e8ecb98d5341395e073d02c065143ae3ac76ef71Sailesh Nepal @Override 3326805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon public void mergeConference(String callId) { 3338731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 334209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.mC", mOwnerComponentName); 33511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 33611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 33711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 33811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 33911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 34011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger call.mergeConference(); 34111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 34211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "mergeConference, unknown call id: %s", callId); 34311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 3448d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 34511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 34611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 3478d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 3488731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 34911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 3506805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon } 3516805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon } 3526805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon 3536805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon @Override 3546805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon public void swapConference(String callId) { 3558731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 356209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.sC", mOwnerComponentName); 35711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 35811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 35911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 36011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 36111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 36211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger call.swapConference(); 36311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 36411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "swapConference, unknown call id: %s", callId); 36511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 3668d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 36711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 36811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 3698d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 3708731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 37111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 3726805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon } 3736805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon } 374d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn 375d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn @Override 376d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn public void pullExternalCall(String callId) { 377d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn try { 378d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Log.startSession("ICA.pEC", mOwnerComponentName); 379d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn long token = Binder.clearCallingIdentity(); 380d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn try { 381d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn synchronized (mLock) { 382d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Call call = mCallIdMapper.getCall(callId); 383d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn if (call != null) { 384d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn call.pullExternalCall(); 385d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } else { 386d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Log.w(this, "pullExternalCall, unknown call id: %s", callId); 387d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 388d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 389d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } finally { 390d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Binder.restoreCallingIdentity(token); 391d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 392d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } finally { 393d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Log.endSession(); 394d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 395d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 396d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn 397d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn @Override 398d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn public void sendCallEvent(String callId, String event, Bundle extras) { 399d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn try { 400d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Log.startSession("ICA.sCE", mOwnerComponentName); 401d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn long token = Binder.clearCallingIdentity(); 402d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn try { 403d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn synchronized (mLock) { 404d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Call call = mCallIdMapper.getCall(callId); 405d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn if (call != null) { 406d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn call.sendCallEvent(event, extras); 407d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } else { 408d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Log.w(this, "sendCallEvent, unknown call id: %s", callId); 409d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 410d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 411d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } finally { 412d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Binder.restoreCallingIdentity(token); 413d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 414d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } finally { 415d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Log.endSession(); 416d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 417d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 418961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn 419961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn @Override 420961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn public void putExtras(String callId, Bundle extras) { 421961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn try { 422961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Log.startSession("ICA.pE", mOwnerComponentName); 423961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn long token = Binder.clearCallingIdentity(); 424961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn try { 425961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn synchronized (mLock) { 426961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Call call = mCallIdMapper.getCall(callId); 427961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn if (call != null) { 428961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn call.putExtras(Call.SOURCE_INCALL_SERVICE, extras); 429961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } else { 430961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Log.w(this, "putExtras, unknown call id: %s", callId); 431961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 432961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 433961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } finally { 434961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Binder.restoreCallingIdentity(token); 435961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 436961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } finally { 437961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Log.endSession(); 438961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 439961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 440961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn 441961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn @Override 442961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn public void removeExtras(String callId, List<String> keys) { 443961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn try { 444961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Log.startSession("ICA.rE", mOwnerComponentName); 445961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn long token = Binder.clearCallingIdentity(); 446961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn try { 447961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn synchronized (mLock) { 448961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Call call = mCallIdMapper.getCall(callId); 449961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn if (call != null) { 450961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn call.removeExtras(Call.SOURCE_INCALL_SERVICE, keys); 451961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } else { 452961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Log.w(this, "removeExtra, unknown call id: %s", callId); 453961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 454961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 455961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } finally { 456961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Binder.restoreCallingIdentity(token); 457961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 458961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } finally { 459961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Log.endSession(); 460961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 461961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 4626805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon 4636805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon @Override 464d134687adc2594ed43e912f427f494ef258e89bcYorke Lee public void turnOnProximitySensor() { 4658731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 466209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.tOnPS", mOwnerComponentName); 46711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 46811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 46911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 47011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.turnOnProximitySensor(); 47111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 47211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 47311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 4748731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } 4758731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 47611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 4778d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 478d134687adc2594ed43e912f427f494ef258e89bcYorke Lee } 479d134687adc2594ed43e912f427f494ef258e89bcYorke Lee 480d134687adc2594ed43e912f427f494ef258e89bcYorke Lee @Override 481d134687adc2594ed43e912f427f494ef258e89bcYorke Lee public void turnOffProximitySensor(boolean screenOnImmediately) { 4828731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 483209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.tOffPS", mOwnerComponentName); 48411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 48511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 48611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 48711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.turnOffProximitySensor(screenOnImmediately); 48811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 48911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 49011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 4918731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } 4928731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 49311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 4948d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 495d134687adc2594ed43e912f427f494ef258e89bcYorke Lee } 4969f2bed31374a56487f370be01224baf6ce97e8adBen Gilad} 497