summaryrefslogtreecommitdiff
path: root/InCallUI
diff options
context:
space:
mode:
authorSantos Cordon <santoscordon@google.com>2015-04-17 00:02:25 +0000
committerAndroid Partner Code Review <android-gerrit-partner@google.com>2015-04-17 00:02:25 +0000
commitab97cf2b6de2226001c393891bf123544cb6f8bd (patch)
tree754379ebc7b38bbb2d254ea323c9960ad9bf8e31 /InCallUI
parentdd0d43e57ff8d073d90de4cc87c4c0285a8f1a7c (diff)
parentb8536d16bad1e00f3bb1c35a3337f4d588ca6f9a (diff)
Merge "DO NOT MERGE Remove usage of Phone.java in InCallService APIs." into m-wireless-dev
Diffstat (limited to 'InCallUI')
-rw-r--r--InCallUI/src/com/android/incallui/AudioModeProvider.java30
-rw-r--r--InCallUI/src/com/android/incallui/CallList.java61
-rw-r--r--InCallUI/src/com/android/incallui/InCallPresenter.java77
-rw-r--r--InCallUI/src/com/android/incallui/InCallServiceImpl.java57
-rw-r--r--InCallUI/src/com/android/incallui/InCallServiceListener.java (renamed from InCallUI/src/com/android/incallui/InCallPhoneListener.java)15
-rw-r--r--InCallUI/src/com/android/incallui/TelecomAdapter.java139
6 files changed, 183 insertions, 196 deletions
diff --git a/InCallUI/src/com/android/incallui/AudioModeProvider.java b/InCallUI/src/com/android/incallui/AudioModeProvider.java
index 6516e820a..887bc1809 100644
--- a/InCallUI/src/com/android/incallui/AudioModeProvider.java
+++ b/InCallUI/src/com/android/incallui/AudioModeProvider.java
@@ -16,18 +16,16 @@
package com.android.incallui;
-import com.google.common.collect.Lists;
-
import android.telecom.AudioState;
-import android.telecom.Phone;
+
+import com.google.common.collect.Lists;
import java.util.List;
/**
* Proxy class for getting and setting the audio mode.
*/
-/* package */ class AudioModeProvider implements InCallPhoneListener {
-
+public class AudioModeProvider {
static final int AUDIO_MODE_INVALID = 0;
private static AudioModeProvider sAudioModeProvider = new AudioModeProvider();
@@ -36,30 +34,14 @@ import java.util.List;
private int mSupportedModes = AudioState.ROUTE_EARPIECE | AudioState.ROUTE_BLUETOOTH |
AudioState.ROUTE_WIRED_HEADSET | AudioState.ROUTE_SPEAKER;
private final List<AudioModeListener> mListeners = Lists.newArrayList();
- private Phone mPhone;
-
- private Phone.Listener mPhoneListener = new Phone.Listener() {
- @Override
- public void onAudioStateChanged(Phone phone, AudioState audioState) {
- onAudioModeChange(audioState.getRoute(), audioState.isMuted());
- onSupportedAudioModeChange(audioState.getSupportedRouteMask());
- }
- };
public static AudioModeProvider getInstance() {
return sAudioModeProvider;
}
- @Override
- public void setPhone(Phone phone) {
- mPhone = phone;
- mPhone.addListener(mPhoneListener);
- }
-
- @Override
- public void clearPhone() {
- mPhone.removeListener(mPhoneListener);
- mPhone = null;
+ public void onAudioStateChanged(AudioState audioState) {
+ onAudioModeChange(audioState.getRoute(), audioState.isMuted());
+ onSupportedAudioModeChange(audioState.getSupportedRouteMask());
}
public void onAudioModeChange(int newMode, boolean muted) {
diff --git a/InCallUI/src/com/android/incallui/CallList.java b/InCallUI/src/com/android/incallui/CallList.java
index aba83e586..39ada99de 100644
--- a/InCallUI/src/com/android/incallui/CallList.java
+++ b/InCallUI/src/com/android/incallui/CallList.java
@@ -22,7 +22,11 @@ import com.google.common.base.Preconditions;
import android.os.Handler;
import android.os.Message;
import android.telecom.DisconnectCause;
-import android.telecom.Phone;
+import android.telecom.PhoneAccount;
+
+import com.android.contacts.common.testing.NeededForTesting;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Maps;
import java.util.Collections;
import java.util.HashMap;
@@ -36,7 +40,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
* as they are received from the telephony stack. Primary listener of changes to this class is
* InCallPresenter.
*/
-public class CallList implements InCallPhoneListener {
+public class CallList {
private static final int DISCONNECTED_CALL_SHORT_TIMEOUT_MS = 200;
private static final int DISCONNECTED_CALL_MEDIUM_TIMEOUT_MS = 2000;
@@ -59,8 +63,6 @@ public class CallList implements InCallPhoneListener {
private final HashMap<String, List<CallUpdateListener>> mCallUpdateListenerMap = Maps
.newHashMap();
- private Phone mPhone;
-
/**
* Static singleton accessor method.
*/
@@ -68,46 +70,33 @@ public class CallList implements InCallPhoneListener {
return sInstance;
}
- private Phone.Listener mPhoneListener = new Phone.Listener() {
- @Override
- public void onCallAdded(Phone phone, android.telecom.Call telecommCall) {
- Call call = new Call(telecommCall);
- Log.d(this, "onCallAdded: callState=" + call.getState());
- if (call.getState() == Call.State.INCOMING ||
- call.getState() == Call.State.CALL_WAITING) {
- onIncoming(call, call.getCannedSmsResponses());
- } else {
- onUpdate(call);
- }
- }
- @Override
- public void onCallRemoved(Phone phone, android.telecom.Call telecommCall) {
- if (mCallByTelecommCall.containsKey(telecommCall)) {
- Call call = mCallByTelecommCall.get(telecommCall);
- if (updateCallInMap(call)) {
- Log.w(this, "Removing call not previously disconnected " + call.getId());
- }
- updateCallTextMap(call, null);
- }
- }
- };
-
/**
* Private constructor. Instance should only be acquired through getInstance().
*/
private CallList() {
}
- @Override
- public void setPhone(Phone phone) {
- mPhone = phone;
- mPhone.addListener(mPhoneListener);
+ public void onCallAdded(android.telecom.Call telecommCall) {
+ Trace.beginSection("onCallAdded");
+ Call call = new Call(telecommCall);
+ Log.d(this, "onCallAdded: callState=" + call.getState());
+ if (call.getState() == Call.State.INCOMING ||
+ call.getState() == Call.State.CALL_WAITING) {
+ onIncoming(call, call.getCannedSmsResponses());
+ } else {
+ onUpdate(call);
+ }
+ Trace.endSection();
}
- @Override
- public void clearPhone() {
- mPhone.removeListener(mPhoneListener);
- mPhone = null;
+ public void onCallRemoved(android.telecom.Call telecommCall) {
+ if (mCallByTelecommCall.containsKey(telecommCall)) {
+ Call call = mCallByTelecommCall.get(telecommCall);
+ if (updateCallInMap(call)) {
+ Log.w(this, "Removing call not previously disconnected " + call.getId());
+ }
+ updateCallTextMap(call, null);
+ }
}
/**
diff --git a/InCallUI/src/com/android/incallui/InCallPresenter.java b/InCallUI/src/com/android/incallui/InCallPresenter.java
index 078dd49ce..4225f86fa 100644
--- a/InCallUI/src/com/android/incallui/InCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/InCallPresenter.java
@@ -27,7 +27,6 @@ import android.os.Bundle;
import android.os.Handler;
import android.telecom.DisconnectCause;
import android.telecom.PhoneAccount;
-import android.telecom.Phone;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
import android.telecom.VideoProfile;
@@ -38,11 +37,10 @@ import android.view.View;
import android.view.Window;
import android.view.WindowManager;
-import com.google.common.base.Preconditions;
-
import com.android.contacts.common.interactions.TouchPointManager;
import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette;
import com.android.incalluibind.ObjectFactory;
+import com.google.common.base.Preconditions;
import java.util.Collections;
import java.util.List;
@@ -60,8 +58,8 @@ import java.util.concurrent.CopyOnWriteArrayList;
* that want to listen in on the in-call state changes.
* TODO: This class has become more of a state machine at this point. Consider renaming.
*/
-public class InCallPresenter implements CallList.Listener, InCallPhoneListener {
-
+public class InCallPresenter implements CallList.Listener,
+ CircularRevealFragment.OnCircularRevealCompleteListener {
private static final String EXTRA_FIRST_TIME_SHOWN =
"com.android.incallui.intent.extra.FIRST_TIME_SHOWN";
@@ -100,28 +98,6 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener {
private boolean mAccountSelectionCancelled = false;
private InCallCameraManager mInCallCameraManager = null;
- private final Phone.Listener mPhoneListener = new Phone.Listener() {
- @Override
- public void onBringToForeground(Phone phone, boolean showDialpad) {
- Log.i(this, "Bringing UI to foreground.");
- bringToForeground(showDialpad);
- }
- @Override
- public void onCallAdded(Phone phone, android.telecom.Call call) {
- call.addListener(mCallListener);
- }
- @Override
- public void onCallRemoved(Phone phone, android.telecom.Call call) {
- call.removeListener(mCallListener);
- }
- @Override
- public void onCanAddCallChanged(Phone phone, boolean canAddCall) {
- for (CanAddCallListener listener : mCanAddCallListeners) {
- listener.onCanAddCallChanged(canAddCall);
- }
- }
- };
-
private final android.telecom.Call.Listener mCallListener =
new android.telecom.Call.Listener() {
@Override
@@ -185,8 +161,6 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener {
*/
private boolean mIsChangingConfigurations = false;
- private Phone mPhone;
-
private Handler mHandler = new Handler();
/** Display colors for the UI. Consists of a primary color and secondary (darker) color */
@@ -201,16 +175,9 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener {
return sInCallPresenter;
}
- @Override
- public void setPhone(Phone phone) {
- mPhone = phone;
- mPhone.addListener(mPhoneListener);
- }
-
- @Override
- public void clearPhone() {
- mPhone.removeListener(mPhoneListener);
- mPhone = null;
+ @NeededForTesting
+ static synchronized void setInstance(InCallPresenter inCallPresenter) {
+ sInCallPresenter = inCallPresenter;
}
public InCallState getInCallState() {
@@ -401,6 +368,38 @@ public class InCallPresenter implements CallList.Listener, InCallPhoneListener {
}
}
+ private boolean mAwaitingCallListUpdate = false;
+
+ public void onBringToForeground(boolean showDialpad) {
+ Log.i(this, "Bringing UI to foreground.");
+ bringToForeground(showDialpad);
+ }
+
+ /**
+ * TODO: Consider listening to CallList callbacks to do this instead of receiving a direct
+ * method invocation from InCallService.
+ */
+ public void onCallAdded(android.telecom.Call call) {
+ // Since a call has been added we are no longer waiting for Telecom to send us a
+ // call.
+ setBoundAndWaitingForOutgoingCall(false, null);
+ call.addListener(mCallListener);
+ }
+
+ /**
+ * TODO: Consider listening to CallList callbacks to do this instead of receiving a direct
+ * method invocation from InCallService.
+ */
+ public void onCallRemoved(android.telecom.Call call) {
+ call.removeListener(mCallListener);
+ }
+
+ public void onCanAddCallChanged(boolean canAddCall) {
+ for (CanAddCallListener listener : mCanAddCallListeners) {
+ listener.onCanAddCallChanged(canAddCall);
+ }
+ }
+
/**
* Called when there is a change to the call list.
* Sets the In-Call state for the entire in-call app based on the information it gets from
diff --git a/InCallUI/src/com/android/incallui/InCallServiceImpl.java b/InCallUI/src/com/android/incallui/InCallServiceImpl.java
index 17f4e174d..41656a097 100644
--- a/InCallUI/src/com/android/incallui/InCallServiceImpl.java
+++ b/InCallUI/src/com/android/incallui/InCallServiceImpl.java
@@ -18,8 +18,9 @@ package com.android.incallui;
import android.content.Intent;
import android.os.IBinder;
+import android.telecom.AudioState;
+import android.telecom.Call;
import android.telecom.InCallService;
-import android.telecom.Phone;
/**
* Used to receive updates about calls from the Telecomm component. This service is bound to
@@ -30,25 +31,30 @@ import android.telecom.Phone;
public class InCallServiceImpl extends InCallService {
@Override
- public void onPhoneCreated(Phone phone) {
- Log.v(this, "onPhoneCreated");
- CallList.getInstance().setPhone(phone);
- AudioModeProvider.getInstance().setPhone(phone);
- TelecomAdapter.getInstance().setPhone(phone);
- InCallPresenter.getInstance().setPhone(phone);
- TelecomAdapter.getInstance().setContext(InCallServiceImpl.this);
+ public void onAudioStateChanged(AudioState audioState) {
+ AudioModeProvider.getInstance().onAudioStateChanged(audioState);
}
@Override
- public void onPhoneDestroyed(Phone phone) {
- Log.v(this, "onPhoneDestroyed");
- // Tear down the InCall system
- CallList.getInstance().clearPhone();
- AudioModeProvider.getInstance().clearPhone();
- TelecomAdapter.getInstance().clearPhone();
- TelecomAdapter.getInstance().setContext(null);
- CallList.getInstance().clearOnDisconnect();
- InCallPresenter.getInstance().tearDown();
+ public void onBringToForeground(boolean showDialpad) {
+ InCallPresenter.getInstance().onBringToForeground(showDialpad);
+ }
+
+ @Override
+ public void onCallAdded(Call call) {
+ CallList.getInstance().onCallAdded(call);
+ InCallPresenter.getInstance().onCallAdded(call);
+ }
+
+ @Override
+ public void onCallRemoved(Call call) {
+ CallList.getInstance().onCallRemoved(call);
+ InCallPresenter.getInstance().onCallRemoved(call);
+ }
+
+ @Override
+ public void onCanAddCallChanged(boolean canAddCall) {
+ InCallPresenter.getInstance().onCanAddCallChanged(canAddCall);
}
@Override
@@ -59,12 +65,27 @@ public class InCallServiceImpl extends InCallService {
AudioModeProvider.getInstance());
InCallPresenter.getInstance().onServiceBind();
InCallPresenter.getInstance().maybeStartRevealAnimation(intent);
+ TelecomAdapter.getInstance().setInCallService(this);
+
return super.onBind(intent);
}
@Override
public boolean onUnbind(Intent intent) {
+ super.onUnbind(intent);
+
InCallPresenter.getInstance().onServiceUnbind();
- return super.onUnbind(intent);
+ tearDown();
+
+ return false;
+ }
+
+ private void tearDown() {
+ Log.v(this, "tearDown");
+ // Tear down the InCall system
+ TelecomAdapter.getInstance().clearInCallService();
+ CallList.getInstance().clearOnDisconnect();
+ InCallPresenter.getInstance().tearDown();
}
+
}
diff --git a/InCallUI/src/com/android/incallui/InCallPhoneListener.java b/InCallUI/src/com/android/incallui/InCallServiceListener.java
index 2fd6afe22..295385d8e 100644
--- a/InCallUI/src/com/android/incallui/InCallPhoneListener.java
+++ b/InCallUI/src/com/android/incallui/InCallServiceListener.java
@@ -16,25 +16,26 @@
package com.android.incallui;
-import android.telecom.Phone;
+import android.telecom.InCallService;
/**
* Interface implemented by In-Call components that maintain a reference to the Telecomm API
- * {@code Phone} object. Clarifies the expectations associated with the relevant method calls.
+ * {@code InCallService} object. Clarifies the expectations associated with the relevant method
+ * calls.
*/
-public interface InCallPhoneListener {
+public interface InCallServiceListener {
/**
- * Called once at {@code InCallService} startup time with a valid {@code Phone}. At
+ * Called once at {@code InCallService} startup time with a valid instance. At
* that time, there will be no existing {@code Call}s.
*
- * @param phone The {@code Phone} object.
+ * @param inCallService The {@code InCallService} object.
*/
- void setPhone(Phone phone);
+ void setInCallService(InCallService inCallService);
/**
* Called once at {@code InCallService} shutdown time. At that time, any {@code Call}s
* will have transitioned through the disconnected state and will no longer exist.
*/
- void clearPhone();
+ void clearInCallService();
}
diff --git a/InCallUI/src/com/android/incallui/TelecomAdapter.java b/InCallUI/src/com/android/incallui/TelecomAdapter.java
index 10c230713..37efdee59 100644
--- a/InCallUI/src/com/android/incallui/TelecomAdapter.java
+++ b/InCallUI/src/com/android/incallui/TelecomAdapter.java
@@ -17,22 +17,20 @@
package com.android.incallui;
import android.content.ActivityNotFoundException;
-import android.content.Context;
import android.content.Intent;
import android.os.Looper;
-import android.telecom.Phone;
+import android.telecom.InCallService;
import android.telecom.PhoneAccountHandle;
import com.google.common.base.Preconditions;
import java.util.List;
-final class TelecomAdapter implements InCallPhoneListener {
+final class TelecomAdapter implements InCallServiceListener {
private static final String ADD_CALL_MODE_KEY = "add_call_mode";
private static TelecomAdapter sInstance;
- private Context mContext;
- private Phone mPhone;
+ private InCallService mInCallService;
static TelecomAdapter getInstance() {
Preconditions.checkState(Looper.getMainLooper().getThread() == Thread.currentThread());
@@ -45,102 +43,94 @@ final class TelecomAdapter implements InCallPhoneListener {
private TelecomAdapter() {
}
- void setContext(Context context) {
- mContext = context;
- }
-
@Override
- public void setPhone(Phone phone) {
- mPhone = phone;
+ public void setInCallService(InCallService inCallService) {
+ mInCallService = inCallService;
}
@Override
- public void clearPhone() {
- mPhone = null;
+ public void clearInCallService() {
+ mInCallService = null;
}
private android.telecom.Call getTelecommCallById(String callId) {
- final Call call = CallList.getInstance().getCallById(callId);
+ Call call = CallList.getInstance().getCallById(callId);
return call == null ? null : call.getTelecommCall();
}
void answerCall(String callId, int videoState) {
- if (mPhone != null) {
- final android.telecom.Call call = getTelecommCallById(callId);
- if (call != null) {
- call.answer(videoState);
- } else {
- Log.e(this, "error answerCall, call not in call list: " + callId);
- }
+ android.telecom.Call call = getTelecommCallById(callId);
+ if (call != null) {
+ call.answer(videoState);
} else {
- Log.e(this, "error answerCall, mPhone is null");
+ Log.e(this, "error answerCall, call not in call list: " + callId);
}
}
void rejectCall(String callId, boolean rejectWithMessage, String message) {
- if (mPhone != null) {
- final android.telecom.Call call = getTelecommCallById(callId);
- if (call != null) {
- call.reject(rejectWithMessage, message);
- } else {
- Log.e(this, "error rejectCall, call not in call list: " + callId);
- }
+ android.telecom.Call call = getTelecommCallById(callId);
+ if (call != null) {
+ call.reject(rejectWithMessage, message);
} else {
- Log.e(this, "error rejectCall, mPhone is null");
+ Log.e(this, "error rejectCall, call not in call list: " + callId);
}
}
void disconnectCall(String callId) {
- if (mPhone != null) {
- getTelecommCallById(callId).disconnect();
+ android.telecom.Call call = getTelecommCallById(callId);
+ if (call != null) {
+ call.disconnect();
} else {
- Log.e(this, "error disconnectCall, mPhone is null");
+ Log.e(this, "error disconnectCall, call not in call list " + callId);
}
}
void holdCall(String callId) {
- if (mPhone != null) {
- getTelecommCallById(callId).hold();
+ android.telecom.Call call = getTelecommCallById(callId);
+ if (call != null) {
+ call.hold();
} else {
- Log.e(this, "error holdCall, mPhone is null");
+ Log.e(this, "error holdCall, call not in call list " + callId);
}
}
void unholdCall(String callId) {
- if (mPhone != null) {
- getTelecommCallById(callId).unhold();
+ android.telecom.Call call = getTelecommCallById(callId);
+ if (call != null) {
+ call.unhold();
} else {
- Log.e(this, "error unholdCall, mPhone is null");
+ Log.e(this, "error unholdCall, call not in call list " + callId);
}
}
void mute(boolean shouldMute) {
- if (mPhone != null) {
- mPhone.setMuted(shouldMute);
+ if (mInCallService != null) {
+ mInCallService.setMuted(shouldMute);
} else {
- Log.e(this, "error mute, mPhone is null");
+ Log.e(this, "error mute, mInCallService is null");
}
}
void setAudioRoute(int route) {
- if (mPhone != null) {
- mPhone.setAudioRoute(route);
+ if (mInCallService != null) {
+ mInCallService.setAudioRoute(route);
} else {
- Log.e(this, "error setAudioRoute, mPhone is null");
+ Log.e(this, "error setAudioRoute, mInCallService is null");
}
}
void separateCall(String callId) {
- if (mPhone != null) {
- getTelecommCallById(callId).splitFromConference();
+ android.telecom.Call call = getTelecommCallById(callId);
+ if (call != null) {
+ call.splitFromConference();
} else {
- Log.e(this, "error separateCall, mPhone is null.");
+ Log.e(this, "error separateCall, call not in call list " + callId);
}
}
void merge(String callId) {
- if (mPhone != null) {
- android.telecom.Call call = getTelecommCallById(callId);
+ android.telecom.Call call = getTelecommCallById(callId);
+ if (call != null) {
List<android.telecom.Call> conferenceable = call.getConferenceableCalls();
if (!conferenceable.isEmpty()) {
call.conference(conferenceable.get(0));
@@ -151,24 +141,24 @@ final class TelecomAdapter implements InCallPhoneListener {
}
}
} else {
- Log.e(this, "error merge, mPhone is null.");
+ Log.e(this, "error merge, call not in call list " + callId);
}
}
void swap(String callId) {
- if (mPhone != null) {
- android.telecom.Call call = getTelecommCallById(callId);
+ android.telecom.Call call = getTelecommCallById(callId);
+ if (call != null) {
if (call.getDetails().can(
android.telecom.Call.Details.CAPABILITY_SWAP_CONFERENCE)) {
call.swapConference();
}
} else {
- Log.e(this, "Error swap, mPhone is null.");
+ Log.e(this, "error swap, call not in call list " + callId);
}
}
void addCall() {
- if (mContext != null) {
+ if (mInCallService != null) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
@@ -178,7 +168,7 @@ final class TelecomAdapter implements InCallPhoneListener {
intent.putExtra(ADD_CALL_MODE_KEY, true);
try {
Log.d(this, "Sending the add Call intent");
- mContext.startActivity(intent);
+ mInCallService.startActivity(intent);
} catch (ActivityNotFoundException e) {
// This is rather rare but possible.
// Note: this method is used even when the phone is encrypted. At that moment
@@ -189,43 +179,48 @@ final class TelecomAdapter implements InCallPhoneListener {
}
void playDtmfTone(String callId, char digit) {
- if (mPhone != null) {
- getTelecommCallById(callId).playDtmfTone(digit);
+ android.telecom.Call call = getTelecommCallById(callId);
+ if (call != null) {
+ call.playDtmfTone(digit);
} else {
- Log.e(this, "error playDtmfTone, mPhone is null");
+ Log.e(this, "error playDtmfTone, call not in call list " + callId);
}
}
void stopDtmfTone(String callId) {
- if (mPhone != null) {
- getTelecommCallById(callId).stopDtmfTone();
+ android.telecom.Call call = getTelecommCallById(callId);
+ if (call != null) {
+ call.stopDtmfTone();
} else {
- Log.e(this, "error stopDtmfTone, mPhone is null");
+ Log.e(this, "error stopDtmfTone, call not in call list " + callId);
}
}
void postDialContinue(String callId, boolean proceed) {
- if (mPhone != null) {
- getTelecommCallById(callId).postDialContinue(proceed);
+ android.telecom.Call call = getTelecommCallById(callId);
+ if (call != null) {
+ call.postDialContinue(proceed);
} else {
- Log.e(this, "error postDialContinue, mPhone is null");
+ Log.e(this, "error postDialContinue, call not in call list " + callId);
}
}
void phoneAccountSelected(String callId, PhoneAccountHandle accountHandle, boolean setDefault) {
- if (mPhone != null) {
- getTelecommCallById(callId).phoneAccountSelected(accountHandle, setDefault);
- } else {
- Log.e(this, "error phoneAccountSelected, mAdapter is null");
- }
-
if (accountHandle == null) {
Log.e(this, "error phoneAccountSelected, accountHandle is null");
+ // TODO: Do we really want to send null accountHandle?
+ }
+
+ android.telecom.Call call = getTelecommCallById(callId);
+ if (call != null) {
+ call.phoneAccountSelected(accountHandle, setDefault);
+ } else {
+ Log.e(this, "error phoneAccountSelected, call not in call list " + callId);
}
}
boolean canAddCall() {
// Default to true if we are not connected to telecom.
- return mPhone == null ? true : mPhone.canAddCall();
+ return mInCallService == null ? true : mInCallService.canAddCall();
}
}