Handoff: Implement handoff in Telecomm
See the following CLs for more info on how handoff is enabled and
triggered: changeid - I94c28b10c0e0a253450f14d31ecdc416d5b44ca4
Once a Call is handoff enabled it will have a non-null mHandoffHandle.
When handoff is triggered we create a new Call object and set
mOriginalCall.
At this point we have two call objects.
1st call: Call1
- mHandoffHandle: non-null
- mOriginalCall: null
2nd (invisible) call: Call2
- mHandoffHandle: null
- mOriginalCall: non-null
Once the new call's state changes to active we do the following:
call1.disconnect() // hangup on the old call
removeCall(call2) // stop tracking the new call
// merge into call1
call1.setCallService(call2.getCallService());
call1.setState(call2.State());
At this point call2 is deleted and call1 has been fully handed off.
Bug: 13643568
Change-Id: I94c28b10c0e0a253450f14d31ecdc416d5b44ca4
diff --git a/src/com/android/telecomm/CallServiceAdapter.java b/src/com/android/telecomm/CallServiceAdapter.java
index 195ac17..39de235 100644
--- a/src/com/android/telecomm/CallServiceAdapter.java
+++ b/src/com/android/telecomm/CallServiceAdapter.java
@@ -55,7 +55,7 @@
mOutgoingCallsManager.setIsCompatibleWith(call,
msg.arg1 == 1 ? true : false);
} else {
- Log.w(this, "Unknown call: %s, id: %s", call, msg.obj);
+ Log.w(this, "setIsCompatibleWith, unknown call: %s, id: %s", call, msg.obj);
}
break;
case MSG_NOTIFY_INCOMING_CALL:
@@ -66,7 +66,7 @@
clientCallInfo.getHandle());
mIncomingCallsManager.handleSuccessfulIncomingCall(call, callInfo);
} else {
- Log.w(this, "Unknown incoming call: %s, id: %s", call,
+ Log.w(this, "notifyIncomingCall, unknown incoming call: %s, id: %s", call,
clientCallInfo.getId());
}
break;
@@ -76,7 +76,9 @@
mOutgoingCallsManager.handleSuccessfulCallAttempt(call);
} else {
// TODO(gilad): Figure out how to wire up the callService.abort() call.
- Log.w(this, "Unknown outgoing call: %s, id: %s", call, msg.obj);
+ Log.w(this,
+ "handleSuccessfulOutgoingCall, unknown outgoing call: %s, id: %s",
+ call, msg.obj);
}
break;
case MSG_HANDLE_FAILED_OUTGOING_CALL: {
@@ -87,7 +89,9 @@
if (call != null && mPendingCalls.remove(call) && !call.isIncoming()) {
mOutgoingCallsManager.handleFailedCallAttempt(call, reason);
} else {
- Log.w(this, "Unknown outgoing call: %s, id: %s", call, args.arg1);
+ Log.w(this,
+ "handleFailedOutgoingCall, unknown outgoing call: %s, id: %s",
+ call, args.arg1);
}
} finally {
args.recycle();
@@ -99,7 +103,7 @@
if (call != null) {
mCallsManager.markCallAsActive(call);
} else {
- Log.w(this, "Unknown call id: %s", msg.obj);
+ Log.w(this, "setActive, unknown call id: %s", msg.obj);
}
break;
case MSG_SET_RINGING:
@@ -107,7 +111,7 @@
if (call != null) {
mCallsManager.markCallAsRinging(call);
} else {
- Log.w(this, "Unknown call id: %s", msg.obj);
+ Log.w(this, "setRinging, unknown call id: %s", msg.obj);
}
break;
case MSG_SET_DIALING:
@@ -115,7 +119,7 @@
if (call != null) {
mCallsManager.markCallAsDialing(call);
} else {
- Log.w(this, "Unknown call id: %s", msg.obj);
+ Log.w(this, "setDialing, unknown call id: %s", msg.obj);
}
break;
case MSG_SET_DISCONNECTED: {
@@ -128,7 +132,7 @@
mCallsManager.markCallAsDisconnected(call, disconnectCause,
disconnectMessage);
} else {
- Log.w(this, "Unknown call id: %s", args.arg1);
+ Log.w(this, "setDisconnected, unknown call id: %s", args.arg1);
}
} finally {
args.recycle();
@@ -140,7 +144,7 @@
if (call != null) {
mCallsManager.markCallAsOnHold(call);
} else {
- Log.w(this, "Unknown call id: %s", msg.obj);
+ Log.w(this, "setOnHold, unknown call id: %s", msg.obj);
}
break;
}