Adding API support for incoming calls.
Change-Id: I7b1530d13e5adac530c4f451aa2cd97f275f9cae
This commit is contained in:
@@ -62,11 +62,14 @@ public abstract class CallService extends Service {
|
||||
case MSG_DISCONNECT:
|
||||
disconnect((String) msg.obj);
|
||||
break;
|
||||
case MSG_CONFIRM_INCOMING_CALL:
|
||||
SomeArgs args = (SomeArgs) msg.obj;
|
||||
String callId = (String) args.arg1;
|
||||
String callToken = (String) args.arg2;
|
||||
confirmIncomingCall(callId, callToken);
|
||||
case MSG_SET_INCOMING_CALL_ID:
|
||||
setIncomingCallId((String) msg.obj);
|
||||
break;
|
||||
case MSG_ANSWER:
|
||||
answer((String) msg.obj);
|
||||
break;
|
||||
case MSG_REJECT:
|
||||
reject((String) msg.obj);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -100,11 +103,18 @@ public abstract class CallService extends Service {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void confirmIncomingCall(String callId, String callToken) {
|
||||
SomeArgs args = SomeArgs.obtain();
|
||||
args.arg1 = callId;
|
||||
args.arg2 = callToken;
|
||||
mMessageHandler.obtainMessage(MSG_CONFIRM_INCOMING_CALL, args).sendToTarget();
|
||||
public void setIncomingCallId(String callId) {
|
||||
mMessageHandler.obtainMessage(MSG_SET_INCOMING_CALL_ID, callId).sendToTarget();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void answer(String callId) {
|
||||
mMessageHandler.obtainMessage(MSG_ANSWER, callId).sendToTarget();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reject(String callId) {
|
||||
mMessageHandler.obtainMessage(MSG_REJECT, callId).sendToTarget();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,7 +128,9 @@ public abstract class CallService extends Service {
|
||||
MSG_IS_COMPATIBLE_WITH = 2,
|
||||
MSG_CALL = 3,
|
||||
MSG_DISCONNECT = 4,
|
||||
MSG_CONFIRM_INCOMING_CALL = 5;
|
||||
MSG_SET_INCOMING_CALL_ID = 5,
|
||||
MSG_ANSWER = 6,
|
||||
MSG_REJECT = 7;
|
||||
|
||||
/**
|
||||
* Message handler for consolidating binder callbacks onto a single thread.
|
||||
@@ -183,14 +195,29 @@ public abstract class CallService extends Service {
|
||||
public abstract void disconnect(String callId);
|
||||
|
||||
/**
|
||||
* Confirms that the specified incoming call is connecting through this call service. Telecomm
|
||||
* receives all incoming calls initially as intents that include information about a call
|
||||
* and a token identifying the call. Before displaying any UI to the user, Telecomm confirms
|
||||
* the existence of the incoming call by binding to the specified call service and calling
|
||||
* this method. Confirmation responses are received through {@link ICallServiceAdapter}.
|
||||
* Receives a new call ID to use with an incoming call. Invoked by Telecomm after it is notified
|
||||
* that this call service has a pending incoming call, see
|
||||
* {@link TelecommConstants#ACTION_INCOMING_CALL}. The call service must first give Telecomm
|
||||
* additional information about the call through {@link ICallServiceAdapter#handleIncomingCall}.
|
||||
* Following that, the call service can update the call at will using the specified call ID.
|
||||
*
|
||||
* @param callId The ID of the call.
|
||||
* @param callToken The call token received through the incoming call intent.
|
||||
*/
|
||||
public abstract void confirmIncomingCall(String callId, String callToken);
|
||||
public abstract void setIncomingCallId(String callId);
|
||||
|
||||
/**
|
||||
* Answers a ringing call identified by callId. Telecomm invokes this method as a result of the
|
||||
* user hitting the "answer" button in the incoming call screen.
|
||||
*
|
||||
* @param callId The ID of the call.
|
||||
*/
|
||||
public abstract void answer(String callId);
|
||||
|
||||
/**
|
||||
* Rejects a ringing call identified by callId. Telecomm invokes this method as a result of the
|
||||
* user hitting the "reject" button in the incoming call screen.
|
||||
*
|
||||
* @param callId The ID of the call.
|
||||
*/
|
||||
public abstract void reject(String callId);
|
||||
}
|
||||
|
||||
@@ -189,7 +189,8 @@ public final class CallServiceDescriptor implements Parcelable {
|
||||
dest.writeInt(mNetworkType);
|
||||
}
|
||||
|
||||
static final Creator<CallServiceDescriptor> CREATOR = new Creator<CallServiceDescriptor>() {
|
||||
public static final Creator<CallServiceDescriptor> CREATOR =
|
||||
new Creator<CallServiceDescriptor>() {
|
||||
@Override
|
||||
public CallServiceDescriptor createFromParcel(Parcel source) {
|
||||
String id = source.readString();
|
||||
|
||||
@@ -61,8 +61,7 @@ oneway interface ICallService {
|
||||
* handle-calling systems. See {@link #isCompatibleWith}. It is expected that the
|
||||
* call service respond via {@link ICallServiceAdapter#handleSuccessfulOutgoingCall} if it can
|
||||
* successfully make the call.
|
||||
* TODO(santoscordon): Figure out how a calls service can short-circuit a failure to
|
||||
* the adapter.
|
||||
* TODO(santoscordon): Figure out how a call service can short-circuit a failure to the adapter.
|
||||
*
|
||||
* @param callInfo The details of the relevant call.
|
||||
*/
|
||||
@@ -76,14 +75,29 @@ oneway interface ICallService {
|
||||
void disconnect(String callId);
|
||||
|
||||
/**
|
||||
* Confirms that the specified incoming call is connecting through this call service. Telecomm
|
||||
* receives all incoming calls initially as intents that include information about a call
|
||||
* and a token identifying the call. Before displaying any UI to the user, Telecomm confirms
|
||||
* the existence of the incoming call by binding to the specified call service and calling
|
||||
* this method. Confirmation responses are received through {@link ICallServiceAdapter}.
|
||||
* Receives a new call ID to use with an incoming call. Invoked by Telecomm after it is notified
|
||||
* that this call service has a pending incoming call, see
|
||||
* {@link TelecommConstants#ACTION_INCOMING_CALL}. The call service must first give Telecomm
|
||||
* additional information of the call through {@link ICallServiceAdapter#handleIncomingCall}.
|
||||
* Following that, the call service can update the call at will using the specified call ID.
|
||||
*
|
||||
* @param callId The ID of the call.
|
||||
* @param callToken The call token received through the incoming call intent.
|
||||
*/
|
||||
void confirmIncomingCall(String callId, String callToken);
|
||||
void setIncomingCallId(String callId);
|
||||
|
||||
/**
|
||||
* Answers a ringing call identified by callId. Telecomm invokes this method as a result of the
|
||||
* user hitting the "answer" button in the incoming call screen.
|
||||
*
|
||||
* @param callId The ID of the call.
|
||||
*/
|
||||
void answer(String callId);
|
||||
|
||||
/**
|
||||
* Rejects a ringing call identified by callId. Telecomm invokes this method as a result of the
|
||||
* user hitting the "reject" button in the incoming call screen.
|
||||
*
|
||||
* @param callId The ID of the call.
|
||||
*/
|
||||
void reject(String callId);
|
||||
}
|
||||
|
||||
@@ -37,15 +37,15 @@ oneway interface ICallServiceAdapter {
|
||||
void setCompatibleWith(String callId, boolean isCompatible);
|
||||
|
||||
/**
|
||||
* Receives confirmation of the existence of an incoming call connected through the call
|
||||
* service. Invoked by the call service after it receives a confirmation request from Telecomm
|
||||
* through {@link ICallService#confirmIncomingCall}. The call info object must contain all the
|
||||
* updated status of the call and use the same call ID as was passed into
|
||||
* {@link ICallService#confirmIncomingCall}.
|
||||
* Provides Telecomm with the details of an incoming call. An invocation of this method must
|
||||
* follow {@link CallService#setIncomingCallId} and use the call ID specified therein. Upon
|
||||
* the invocation of this method, Telecomm will bring up the incoming-call interface where the
|
||||
* user can elect to answer or reject a call.
|
||||
* TODO(santoscordon): Consider renaming from handle* to notify*.
|
||||
*
|
||||
* @param callInfo The details of the relevant call.
|
||||
*/
|
||||
void handleConfirmedIncomingCall(in CallInfo callInfo);
|
||||
void handleIncomingCall(in CallInfo callInfo);
|
||||
|
||||
/**
|
||||
* Tells Telecomm that an attempt to place the specified outgoing call succeeded.
|
||||
|
||||
Reference in New Issue
Block a user