Files
frameworks_base/telecomm/java/android/telecomm/CallServiceAdapter.java
Santos Cordon 20e3f02c2d Add disconnect cause to setDisconnected.
Change-Id: I4ba9b8f47a942b82b7a3d4bed43c0ca945957592
2014-03-31 14:58:11 -07:00

161 lines
5.2 KiB
Java

/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.telecomm;
import android.os.RemoteException;
import com.android.internal.telecomm.ICallServiceAdapter;
/**
* Provides methods for ICallService implementations to interact with the system phone app.
* TODO(santoscordon): Need final public-facing comments in this file.
*/
public final class CallServiceAdapter {
private final ICallServiceAdapter mAdapter;
/**
* {@hide}
*/
public CallServiceAdapter(ICallServiceAdapter adapter) {
mAdapter = adapter;
}
/**
* Receives confirmation of a call service's ability to place a call. This method is used in
* response to {@link CallService#isCompatibleWith}.
*
* @param callId The identifier of the call for which compatibility is being received. This ID
* should correspond to the ID given as part of the call information in
* {@link CallService#isCompatibleWith}.
* @param isCompatible True if the call service can place the call.
*/
public void setIsCompatibleWith(String callId, boolean isCompatible) {
try {
mAdapter.setIsCompatibleWith(callId, isCompatible);
} catch (RemoteException e) {
}
}
/**
* 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.
*
* @param callInfo The details of the relevant call.
*/
public void notifyIncomingCall(CallInfo callInfo) {
try {
mAdapter.notifyIncomingCall(callInfo);
} catch (RemoteException e) {
}
}
/**
* Tells Telecomm that an attempt to place the specified outgoing call succeeded.
* TODO(santoscordon): Consider adding a CallState parameter in case this outgoing call is
* somehow no longer in the DIALING state.
*
* @param callId The ID of the outgoing call.
*/
public void handleSuccessfulOutgoingCall(String callId) {
try {
mAdapter.handleSuccessfulOutgoingCall(callId);
} catch (RemoteException e) {
}
}
/**
* Tells Telecomm that an attempt to place the specified outgoing call failed.
*
* @param callId The ID of the outgoing call.
* @param errorMessage The error associated with the failed call attempt.
*/
public void handleFailedOutgoingCall(String callId, String errorMessage) {
try {
mAdapter.handleFailedOutgoingCall(callId, errorMessage);
} catch (RemoteException e) {
}
}
/**
* Sets a call's state to active (e.g., an ongoing call where two parties can actively
* communicate).
*
* @param callId The unique ID of the call whose state is changing to active.
*/
public void setActive(String callId) {
try {
mAdapter.setActive(callId);
} catch (RemoteException e) {
}
}
/**
* Sets a call's state to ringing (e.g., an inbound ringing call).
*
* @param callId The unique ID of the call whose state is changing to ringing.
*/
public void setRinging(String callId) {
try {
mAdapter.setRinging(callId);
} catch (RemoteException e) {
}
}
/**
* Sets a call's state to dialing (e.g., dialing an outbound call).
*
* @param callId The unique ID of the call whose state is changing to dialing.
*/
public void setDialing(String callId) {
try {
mAdapter.setDialing(callId);
} catch (RemoteException e) {
}
}
/**
* Sets a call's state to disconnected.
*
* @param callId The unique ID of the call whose state is changing to disconnected.
* @param disconnectCause The reason for the disconnection, any of
* {@link android.telephony.DisconnectCause}.
* @param disconnectMessage Optional call-service-provided message about the disconnect.
*/
public void setDisconnected(String callId, int disconnectCause, String disconnectMessage) {
try {
mAdapter.setDisconnected(callId, disconnectCause, disconnectMessage);
} catch (RemoteException e) {
}
}
/**
* Sets a call's state to be on hold.
*
* @param callId - The unique ID of the call whose state is changing to be on hold.
*/
public void setOnHold(String callId) {
try {
mAdapter.setOnHold(callId);
} catch (RemoteException e) {
}
}
}