TelecomAdapter.java revision 4b293f0f08030c97e1bb54d2f79ac2fb1a6e29ae
16c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie/* 2ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * Copyright (C) 2014 The Android Open Source Project 3ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * 4ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * Licensed under the Apache License, Version 2.0 (the "License"); 5ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * you may not use this file except in compliance with the License. 6ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * You may obtain a copy of the License at 7ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * 8ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * http://www.apache.org/licenses/LICENSE-2.0 9ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * 10ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * Unless required by applicable law or agreed to in writing, software 11ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * distributed under the License is distributed on an "AS IS" BASIS, 12ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * See the License for the specific language governing permissions and 14ede67c26e7b2564ea35db6d9b3027a269c150e13Zhihai Xu * limitations under the License 156c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie */ 166c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 176c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xiepackage com.android.incallui; 186c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 196c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xieimport android.content.ActivityNotFoundException; 206c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xieimport android.content.Context; 216c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xieimport android.content.Intent; 226c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xieimport android.os.Looper; 23c55a9837c004044051b71bb47182ace156691283Matthew Xieimport android.telecom.InCallAdapter; 246c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xieimport android.telecom.Phone; 256c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xieimport android.telecom.PhoneAccountHandle; 266c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 276c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xieimport android.telecom.PhoneCapabilities; 286c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 296c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xieimport com.google.common.base.Preconditions; 306c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 316c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xieimport java.util.List; 326c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 336c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie/** Wrapper around {@link InCallAdapter} that only forwards calls to the adapter when it's valid. */ 346c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xiefinal class TelecomAdapter implements InCallPhoneListener { 356c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie private static final String ADD_CALL_MODE_KEY = "add_call_mode"; 366c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 376c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie private static TelecomAdapter sInstance; 386c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie private Context mContext; 396c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie private Phone mPhone; 406c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 416c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie static TelecomAdapter getInstance() { 426c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie Preconditions.checkState(Looper.getMainLooper().getThread() == Thread.currentThread()); 436c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie if (sInstance == null) { 446c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie sInstance = new TelecomAdapter(); 45b6132733b6e386cc8c93b5598c72ed8efe04bf3eMatthew Xie } 466c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie return sInstance; 476c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 486c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 496c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie private TelecomAdapter() { 506c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 516c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 526c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie void setContext(Context context) { 532ab50a41dac634a78cef60a419c3bcc848c1aa78Mudumba Ananth mContext = context; 542ab50a41dac634a78cef60a419c3bcc848c1aa78Mudumba Ananth } 556c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 566c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie @Override 576c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie public void setPhone(Phone phone) { 586c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie mPhone = phone; 596c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 606c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 6193f548ff8560bdecdc4bdd2f91f7dacda1e6bbc3Kausik Sinnaswamy @Override 6293f548ff8560bdecdc4bdd2f91f7dacda1e6bbc3Kausik Sinnaswamy public void clearPhone() { 6393f548ff8560bdecdc4bdd2f91f7dacda1e6bbc3Kausik Sinnaswamy mPhone = null; 6493f548ff8560bdecdc4bdd2f91f7dacda1e6bbc3Kausik Sinnaswamy } 6593f548ff8560bdecdc4bdd2f91f7dacda1e6bbc3Kausik Sinnaswamy 6693f548ff8560bdecdc4bdd2f91f7dacda1e6bbc3Kausik Sinnaswamy private android.telecom.Call getTelecommCallById(String callId) { 6793f548ff8560bdecdc4bdd2f91f7dacda1e6bbc3Kausik Sinnaswamy return CallList.getInstance().getCallById(callId).getTelecommCall(); 686c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 696c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 706c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie void answerCall(String callId, int videoState) { 716c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie if (mPhone != null) { 726c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie getTelecommCallById(callId).answer(videoState); 73b6132733b6e386cc8c93b5598c72ed8efe04bf3eMatthew Xie } else { 74b6132733b6e386cc8c93b5598c72ed8efe04bf3eMatthew Xie Log.e(this, "error answerCall, mPhone is null"); 75b6132733b6e386cc8c93b5598c72ed8efe04bf3eMatthew Xie } 76b6132733b6e386cc8c93b5598c72ed8efe04bf3eMatthew Xie } 77b6132733b6e386cc8c93b5598c72ed8efe04bf3eMatthew Xie 78b6132733b6e386cc8c93b5598c72ed8efe04bf3eMatthew Xie void rejectCall(String callId, boolean rejectWithMessage, String message) { 79b6132733b6e386cc8c93b5598c72ed8efe04bf3eMatthew Xie if (mPhone != null) { 80b6132733b6e386cc8c93b5598c72ed8efe04bf3eMatthew Xie getTelecommCallById(callId).reject(rejectWithMessage, message); 81b6132733b6e386cc8c93b5598c72ed8efe04bf3eMatthew Xie } else { 82b6132733b6e386cc8c93b5598c72ed8efe04bf3eMatthew Xie Log.e(this, "error rejectCall, mPhone is null"); 83b6132733b6e386cc8c93b5598c72ed8efe04bf3eMatthew Xie } 84b6132733b6e386cc8c93b5598c72ed8efe04bf3eMatthew Xie } 85b6132733b6e386cc8c93b5598c72ed8efe04bf3eMatthew Xie 866c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie void disconnectCall(String callId) { 876c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie if (mPhone != null) { 886c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie getTelecommCallById(callId).disconnect(); 89c55a9837c004044051b71bb47182ace156691283Matthew Xie } else { 906c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie Log.e(this, "error disconnectCall, mPhone is null"); 916c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 926c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 936c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 94c55a9837c004044051b71bb47182ace156691283Matthew Xie void holdCall(String callId) { 956c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie if (mPhone != null) { 966c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie getTelecommCallById(callId).hold(); 976c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } else { 986c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie Log.e(this, "error holdCall, mPhone is null"); 996c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 1006c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 1016c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 1026c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie void unholdCall(String callId) { 1036c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie if (mPhone != null) { 1046c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie getTelecommCallById(callId).unhold(); 1056c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } else { 1066c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie Log.e(this, "error unholdCall, mPhone is null"); 1076c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 1086c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 1096c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 1106c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie void mute(boolean shouldMute) { 1116c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie if (mPhone != null) { 112c55a9837c004044051b71bb47182ace156691283Matthew Xie mPhone.setMuted(shouldMute); 1136c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } else { 1146c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie Log.e(this, "error mute, mPhone is null"); 1156c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 1166c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 1176c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 1186c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie void setAudioRoute(int route) { 1196c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie if (mPhone != null) { 1206c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie mPhone.setAudioRoute(route); 1216c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } else { 1226c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie Log.e(this, "error setAudioRoute, mPhone is null"); 12369d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 12469d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 12569d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava 1266c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie void turnOnProximitySensor() { 12769d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava if (mPhone != null) { 12869d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava mPhone.setProximitySensorOn(); 12969d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } else { 13069d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava Log.e(this, "error setProximitySensorOn, mPhone is null"); 13169d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 13269d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 13369d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava 13469d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava void turnOffProximitySensor(boolean screenOnImmediately) { 13569d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava if (mPhone != null) { 1366c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie mPhone.setProximitySensorOff(screenOnImmediately); 13769d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } else { 1386c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie Log.e(this, "error setProximitySensorOff, mPhone is null"); 1396c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 14069d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 14169d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava 14269d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava void separateCall(String callId) { 1436c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie if (mPhone != null) { 14469d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava getTelecommCallById(callId).splitFromConference(); 14569d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } else { 14669d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava Log.e(this, "error separateCall, mPhone is null."); 14769d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 14869d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 14969d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava 15069d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava void merge(String callId) { 15169d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava if (mPhone != null) { 15269d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava android.telecom.Call call = getTelecommCallById(callId); 1536c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie List<android.telecom.Call> conferenceable = call.getConferenceableCalls(); 15469d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava if (!conferenceable.isEmpty()) { 1556c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie call.conference(conferenceable.get(0)); 1566c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } else { 15769d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava int capabilities = call.getDetails().getCallCapabilities(); 15869d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava if (0 != (capabilities & PhoneCapabilities.MERGE_CONFERENCE)) { 15969d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava call.mergeConference(); 1606c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 16169d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 16269d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } else { 16369d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava Log.e(this, "error merge, mPhone is null."); 16469d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 16569d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 16669d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava 16769d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava void swap(String callId) { 16869d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava if (mPhone != null) { 16969d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava android.telecom.Call call = getTelecommCallById(callId); 1706c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie int capabilities = call.getDetails().getCallCapabilities(); 17169d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava if (0 != (capabilities & PhoneCapabilities.SWAP_CONFERENCE)) { 1726c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie call.swapConference(); 1736c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 17469d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } else { 17569d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava Log.e(this, "Error swap, mPhone is null."); 17669d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 1776c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 17869d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava 17969d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava void addCall() { 18069d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava if (mContext != null) { 18169d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava Intent intent = new Intent(Intent.ACTION_DIAL); 18269d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 18369d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava 18469d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava // when we request the dialer come up, we also want to inform 18569d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava // it that we're going through the "add call" option from the 18669d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava // InCallScreen / PhoneUtils. 18769d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava intent.putExtra(ADD_CALL_MODE_KEY, true); 1886c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie try { 18969d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava Log.d(this, "Sending the add Call intent"); 1906c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie mContext.startActivity(intent); 1916c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } catch (ActivityNotFoundException e) { 19269d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava // This is rather rare but possible. 19369d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava // Note: this method is used even when the phone is encrypted. At that moment 19469d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava // the system may not find any Activity which can accept this Intent. 1956c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie Log.e(this, "Activity for adding calls isn't found.", e); 19669d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 19769d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 19869d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 19969d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava 20069d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava void playDtmfTone(String callId, char digit) { 20169d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava if (mPhone != null) { 20269d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava getTelecommCallById(callId).playDtmfTone(digit); 20369d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } else { 204976912e5f597f015754aa67f2a74040e27f58eabSyed Ibrahim M Log.e(this, "error playDtmfTone, mPhone is null"); 2056c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 20669d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 2076c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 208976912e5f597f015754aa67f2a74040e27f58eabSyed Ibrahim M void stopDtmfTone(String callId) { 20969d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava if (mPhone != null) { 2106c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie getTelecommCallById(callId).stopDtmfTone(); 2116c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } else { 21269d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava Log.e(this, "error stopDtmfTone, mPhone is null"); 21369d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 21469d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 2156c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie 21669d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava void postDialContinue(String callId, boolean proceed) { 21769d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava if (mPhone != null) { 21869d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava getTelecommCallById(callId).postDialContinue(proceed); 21969d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } else { 22069d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava Log.e(this, "error postDialContinue, mPhone is null"); 22169d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 22269d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 22369d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava 2246c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie void phoneAccountSelected(String callId, PhoneAccountHandle accountHandle) { 22569d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava if (mPhone != null) { 2266c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie getTelecommCallById(callId).phoneAccountSelected(accountHandle); 22769d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } else { 2286c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie Log.e(this, "error phoneAccountSelected, mAdapter is null"); 2296c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 23069d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava 23169d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava if (accountHandle == null) { 23269d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava Log.e(this, "error phoneAccountSelected, accountHandle is null"); 2336c91bc0a163cc7600c40d7fb979777fd911d1ef1Matthew Xie } 23469d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava } 23569d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava} 23669d4ca45a25e86823fbdb754ca6a3995f8131d59Nitin Srivastava