Merge "API declarations for Call Handover." am: d88abc7b60
am: c376ca6bc1
Change-Id: Icac2039c60928af408d011c0062bcdcf4f207039
This commit is contained in:
@@ -38879,6 +38879,7 @@ package android.telecom {
|
||||
method public android.telecom.Call.RttCall getRttCall();
|
||||
method public int getState();
|
||||
method public android.telecom.InCallService.VideoCall getVideoCall();
|
||||
method public void handoverTo(android.telecom.PhoneAccountHandle, int, android.os.Bundle);
|
||||
method public void hold();
|
||||
method public boolean isRttActive();
|
||||
method public void mergeConference();
|
||||
@@ -38923,6 +38924,8 @@ package android.telecom {
|
||||
method public void onConferenceableCallsChanged(android.telecom.Call, java.util.List<android.telecom.Call>);
|
||||
method public void onConnectionEvent(android.telecom.Call, java.lang.String, android.os.Bundle);
|
||||
method public void onDetailsChanged(android.telecom.Call, android.telecom.Call.Details);
|
||||
method public void onHandoverComplete(android.telecom.Call);
|
||||
method public void onHandoverFailed(android.telecom.Call, int);
|
||||
method public void onParentChanged(android.telecom.Call, android.telecom.Call);
|
||||
method public void onPostDialWait(android.telecom.Call, java.lang.String);
|
||||
method public void onRttInitiationFailure(android.telecom.Call, int);
|
||||
@@ -38931,6 +38934,10 @@ package android.telecom {
|
||||
method public void onRttStatusChanged(android.telecom.Call, boolean, android.telecom.Call.RttCall);
|
||||
method public void onStateChanged(android.telecom.Call, int);
|
||||
method public void onVideoCallChanged(android.telecom.Call, android.telecom.InCallService.VideoCall);
|
||||
field public static final int HANDOVER_FAILURE_DEST_APP_REJECTED = 1; // 0x1
|
||||
field public static final int HANDOVER_FAILURE_DEST_INVALID_PERM = 3; // 0x3
|
||||
field public static final int HANDOVER_FAILURE_DEST_NOT_SUPPORTED = 2; // 0x2
|
||||
field public static final int HANDOVER_FAILURE_DEST_USER_REJECTED = 4; // 0x4
|
||||
}
|
||||
|
||||
public static class Call.Details {
|
||||
@@ -39265,8 +39272,11 @@ package android.telecom {
|
||||
method public void onConference(android.telecom.Connection, android.telecom.Connection);
|
||||
method public android.telecom.Connection onCreateIncomingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public void onCreateIncomingConnectionFailed(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public android.telecom.Connection onCreateIncomingHandoverConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public android.telecom.Connection onCreateOutgoingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public void onCreateOutgoingConnectionFailed(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public android.telecom.Connection onCreateOutgoingHandoverConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public void onHandoverFailed(android.telecom.ConnectionRequest, int);
|
||||
method public void onRemoteConferenceAdded(android.telecom.RemoteConference);
|
||||
method public void onRemoteExistingConnectionAdded(android.telecom.RemoteConnection);
|
||||
field public static final java.lang.String SERVICE_INTERFACE = "android.telecom.ConnectionService";
|
||||
@@ -39389,6 +39399,9 @@ package android.telecom {
|
||||
field public static final android.os.Parcelable.Creator<android.telecom.PhoneAccount> CREATOR;
|
||||
field public static final java.lang.String EXTRA_CALL_SUBJECT_CHARACTER_ENCODING = "android.telecom.extra.CALL_SUBJECT_CHARACTER_ENCODING";
|
||||
field public static final java.lang.String EXTRA_CALL_SUBJECT_MAX_LENGTH = "android.telecom.extra.CALL_SUBJECT_MAX_LENGTH";
|
||||
field public static final java.lang.String EXTRA_LOG_SELF_MANAGED_CALLS = "android.telecom.extra.LOG_SELF_MANAGED_CALLS";
|
||||
field public static final java.lang.String EXTRA_SUPPORTS_HANDOVER_FROM = "android.telecom.extra.SUPPORTS_HANDOVER_FROM";
|
||||
field public static final java.lang.String EXTRA_SUPPORTS_HANDOVER_TO = "android.telecom.extra.SUPPORTS_HANDOVER_TO";
|
||||
field public static final int NO_HIGHLIGHT_COLOR = 0; // 0x0
|
||||
field public static final int NO_RESOURCE_ID = -1; // 0xffffffff
|
||||
field public static final java.lang.String SCHEME_SIP = "sip";
|
||||
@@ -39549,6 +39562,7 @@ package android.telecom {
|
||||
}
|
||||
|
||||
public class TelecomManager {
|
||||
method public void acceptHandover(android.net.Uri, int, android.telecom.PhoneAccountHandle);
|
||||
method public void acceptRingingCall();
|
||||
method public void acceptRingingCall(int);
|
||||
method public void addNewIncomingCall(android.telecom.PhoneAccountHandle, android.os.Bundle);
|
||||
|
||||
@@ -42122,6 +42122,7 @@ package android.telecom {
|
||||
method public android.telecom.Call.RttCall getRttCall();
|
||||
method public int getState();
|
||||
method public android.telecom.InCallService.VideoCall getVideoCall();
|
||||
method public void handoverTo(android.telecom.PhoneAccountHandle, int, android.os.Bundle);
|
||||
method public void hold();
|
||||
method public boolean isRttActive();
|
||||
method public void mergeConference();
|
||||
@@ -42168,6 +42169,8 @@ package android.telecom {
|
||||
method public void onConferenceableCallsChanged(android.telecom.Call, java.util.List<android.telecom.Call>);
|
||||
method public void onConnectionEvent(android.telecom.Call, java.lang.String, android.os.Bundle);
|
||||
method public void onDetailsChanged(android.telecom.Call, android.telecom.Call.Details);
|
||||
method public void onHandoverComplete(android.telecom.Call);
|
||||
method public void onHandoverFailed(android.telecom.Call, int);
|
||||
method public void onParentChanged(android.telecom.Call, android.telecom.Call);
|
||||
method public void onPostDialWait(android.telecom.Call, java.lang.String);
|
||||
method public void onRttInitiationFailure(android.telecom.Call, int);
|
||||
@@ -42176,6 +42179,10 @@ package android.telecom {
|
||||
method public void onRttStatusChanged(android.telecom.Call, boolean, android.telecom.Call.RttCall);
|
||||
method public void onStateChanged(android.telecom.Call, int);
|
||||
method public void onVideoCallChanged(android.telecom.Call, android.telecom.InCallService.VideoCall);
|
||||
field public static final int HANDOVER_FAILURE_DEST_APP_REJECTED = 1; // 0x1
|
||||
field public static final int HANDOVER_FAILURE_DEST_INVALID_PERM = 3; // 0x3
|
||||
field public static final int HANDOVER_FAILURE_DEST_NOT_SUPPORTED = 2; // 0x2
|
||||
field public static final int HANDOVER_FAILURE_DEST_USER_REJECTED = 4; // 0x4
|
||||
}
|
||||
|
||||
public static class Call.Details {
|
||||
@@ -42521,8 +42528,11 @@ package android.telecom {
|
||||
method public void onConference(android.telecom.Connection, android.telecom.Connection);
|
||||
method public android.telecom.Connection onCreateIncomingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public void onCreateIncomingConnectionFailed(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public android.telecom.Connection onCreateIncomingHandoverConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public android.telecom.Connection onCreateOutgoingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public void onCreateOutgoingConnectionFailed(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public android.telecom.Connection onCreateOutgoingHandoverConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public void onHandoverFailed(android.telecom.ConnectionRequest, int);
|
||||
method public void onRemoteConferenceAdded(android.telecom.RemoteConference);
|
||||
method public void onRemoteExistingConnectionAdded(android.telecom.RemoteConnection);
|
||||
field public static final java.lang.String SERVICE_INTERFACE = "android.telecom.ConnectionService";
|
||||
@@ -42770,6 +42780,9 @@ package android.telecom {
|
||||
field public static final android.os.Parcelable.Creator<android.telecom.PhoneAccount> CREATOR;
|
||||
field public static final java.lang.String EXTRA_CALL_SUBJECT_CHARACTER_ENCODING = "android.telecom.extra.CALL_SUBJECT_CHARACTER_ENCODING";
|
||||
field public static final java.lang.String EXTRA_CALL_SUBJECT_MAX_LENGTH = "android.telecom.extra.CALL_SUBJECT_MAX_LENGTH";
|
||||
field public static final java.lang.String EXTRA_LOG_SELF_MANAGED_CALLS = "android.telecom.extra.LOG_SELF_MANAGED_CALLS";
|
||||
field public static final java.lang.String EXTRA_SUPPORTS_HANDOVER_FROM = "android.telecom.extra.SUPPORTS_HANDOVER_FROM";
|
||||
field public static final java.lang.String EXTRA_SUPPORTS_HANDOVER_TO = "android.telecom.extra.SUPPORTS_HANDOVER_TO";
|
||||
field public static final int NO_HIGHLIGHT_COLOR = 0; // 0x0
|
||||
field public static final int NO_RESOURCE_ID = -1; // 0xffffffff
|
||||
field public static final java.lang.String SCHEME_SIP = "sip";
|
||||
@@ -42971,6 +42984,7 @@ package android.telecom {
|
||||
}
|
||||
|
||||
public class TelecomManager {
|
||||
method public void acceptHandover(android.net.Uri, int, android.telecom.PhoneAccountHandle);
|
||||
method public void acceptRingingCall();
|
||||
method public void acceptRingingCall(int);
|
||||
method public void addNewIncomingCall(android.telecom.PhoneAccountHandle, android.os.Bundle);
|
||||
|
||||
@@ -39134,6 +39134,7 @@ package android.telecom {
|
||||
method public android.telecom.Call.RttCall getRttCall();
|
||||
method public int getState();
|
||||
method public android.telecom.InCallService.VideoCall getVideoCall();
|
||||
method public void handoverTo(android.telecom.PhoneAccountHandle, int, android.os.Bundle);
|
||||
method public void hold();
|
||||
method public boolean isRttActive();
|
||||
method public void mergeConference();
|
||||
@@ -39178,6 +39179,8 @@ package android.telecom {
|
||||
method public void onConferenceableCallsChanged(android.telecom.Call, java.util.List<android.telecom.Call>);
|
||||
method public void onConnectionEvent(android.telecom.Call, java.lang.String, android.os.Bundle);
|
||||
method public void onDetailsChanged(android.telecom.Call, android.telecom.Call.Details);
|
||||
method public void onHandoverComplete(android.telecom.Call);
|
||||
method public void onHandoverFailed(android.telecom.Call, int);
|
||||
method public void onParentChanged(android.telecom.Call, android.telecom.Call);
|
||||
method public void onPostDialWait(android.telecom.Call, java.lang.String);
|
||||
method public void onRttInitiationFailure(android.telecom.Call, int);
|
||||
@@ -39186,6 +39189,10 @@ package android.telecom {
|
||||
method public void onRttStatusChanged(android.telecom.Call, boolean, android.telecom.Call.RttCall);
|
||||
method public void onStateChanged(android.telecom.Call, int);
|
||||
method public void onVideoCallChanged(android.telecom.Call, android.telecom.InCallService.VideoCall);
|
||||
field public static final int HANDOVER_FAILURE_DEST_APP_REJECTED = 1; // 0x1
|
||||
field public static final int HANDOVER_FAILURE_DEST_INVALID_PERM = 3; // 0x3
|
||||
field public static final int HANDOVER_FAILURE_DEST_NOT_SUPPORTED = 2; // 0x2
|
||||
field public static final int HANDOVER_FAILURE_DEST_USER_REJECTED = 4; // 0x4
|
||||
}
|
||||
|
||||
public static class Call.Details {
|
||||
@@ -39536,8 +39543,11 @@ package android.telecom {
|
||||
method public void onConference(android.telecom.Connection, android.telecom.Connection);
|
||||
method public android.telecom.Connection onCreateIncomingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public void onCreateIncomingConnectionFailed(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public android.telecom.Connection onCreateIncomingHandoverConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public android.telecom.Connection onCreateOutgoingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public void onCreateOutgoingConnectionFailed(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public android.telecom.Connection onCreateOutgoingHandoverConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||
method public void onHandoverFailed(android.telecom.ConnectionRequest, int);
|
||||
method public void onRemoteConferenceAdded(android.telecom.RemoteConference);
|
||||
method public void onRemoteExistingConnectionAdded(android.telecom.RemoteConnection);
|
||||
field public static final java.lang.String SERVICE_INTERFACE = "android.telecom.ConnectionService";
|
||||
@@ -39660,6 +39670,9 @@ package android.telecom {
|
||||
field public static final android.os.Parcelable.Creator<android.telecom.PhoneAccount> CREATOR;
|
||||
field public static final java.lang.String EXTRA_CALL_SUBJECT_CHARACTER_ENCODING = "android.telecom.extra.CALL_SUBJECT_CHARACTER_ENCODING";
|
||||
field public static final java.lang.String EXTRA_CALL_SUBJECT_MAX_LENGTH = "android.telecom.extra.CALL_SUBJECT_MAX_LENGTH";
|
||||
field public static final java.lang.String EXTRA_LOG_SELF_MANAGED_CALLS = "android.telecom.extra.LOG_SELF_MANAGED_CALLS";
|
||||
field public static final java.lang.String EXTRA_SUPPORTS_HANDOVER_FROM = "android.telecom.extra.SUPPORTS_HANDOVER_FROM";
|
||||
field public static final java.lang.String EXTRA_SUPPORTS_HANDOVER_TO = "android.telecom.extra.SUPPORTS_HANDOVER_TO";
|
||||
field public static final int NO_HIGHLIGHT_COLOR = 0; // 0x0
|
||||
field public static final int NO_RESOURCE_ID = -1; // 0xffffffff
|
||||
field public static final java.lang.String SCHEME_SIP = "sip";
|
||||
@@ -39820,6 +39833,7 @@ package android.telecom {
|
||||
}
|
||||
|
||||
public class TelecomManager {
|
||||
method public void acceptHandover(android.net.Uri, int, android.telecom.PhoneAccountHandle);
|
||||
method public void acceptRingingCall();
|
||||
method public void acceptRingingCall(int);
|
||||
method public void addNewIncomingCall(android.telecom.PhoneAccountHandle, android.os.Bundle);
|
||||
|
||||
@@ -854,6 +854,39 @@ public final class Call {
|
||||
* {@link InCallService#onCallAdded(Call)}.
|
||||
*/
|
||||
public static abstract class Callback {
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
@IntDef({HANDOVER_FAILURE_DEST_APP_REJECTED, HANDOVER_FAILURE_DEST_NOT_SUPPORTED,
|
||||
HANDOVER_FAILURE_DEST_INVALID_PERM, HANDOVER_FAILURE_DEST_USER_REJECTED})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface HandoverFailureErrors {}
|
||||
|
||||
/**
|
||||
* Handover failure reason returned via {@link #onHandoverFailed(Call, int)} when the app
|
||||
* to handover the call rejects handover.
|
||||
*/
|
||||
public static final int HANDOVER_FAILURE_DEST_APP_REJECTED = 1;
|
||||
|
||||
/**
|
||||
* Handover failure reason returned via {@link #onHandoverFailed(Call, int)} when there is
|
||||
* an error associated with unsupported handover.
|
||||
*/
|
||||
public static final int HANDOVER_FAILURE_DEST_NOT_SUPPORTED = 2;
|
||||
|
||||
/**
|
||||
* Handover failure reason returned via {@link #onHandoverFailed(Call, int)} when there
|
||||
* are some permission errors associated with APIs doing handover.
|
||||
*/
|
||||
public static final int HANDOVER_FAILURE_DEST_INVALID_PERM = 3;
|
||||
|
||||
/**
|
||||
* Handover failure reason returned via {@link #onHandoverFailed(Call, int)} when user
|
||||
* rejects handover.
|
||||
*/
|
||||
public static final int HANDOVER_FAILURE_DEST_USER_REJECTED = 4;
|
||||
|
||||
|
||||
/**
|
||||
* Invoked when the state of this {@code Call} has changed. See {@link #getState()}.
|
||||
*
|
||||
@@ -989,6 +1022,21 @@ public final class Call {
|
||||
* {@link android.telecom.Connection.RttModifyStatus#SESSION_MODIFY_REQUEST_SUCCESS}.
|
||||
*/
|
||||
public void onRttInitiationFailure(Call call, int reason) {}
|
||||
|
||||
/**
|
||||
* Invoked when Call handover from one {@link PhoneAccount} to other {@link PhoneAccount}
|
||||
* has completed successfully.
|
||||
* @param call The call which had initiated handover.
|
||||
*/
|
||||
public void onHandoverComplete(Call call) {}
|
||||
|
||||
/**
|
||||
* Invoked when Call handover from one {@link PhoneAccount} to other {@link PhoneAccount}
|
||||
* has failed.
|
||||
* @param call The call which had initiated handover.
|
||||
* @param failureReason Error reason for failure
|
||||
*/
|
||||
public void onHandoverFailed(Call call, @HandoverFailureErrors int failureReason) {}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1366,6 +1414,24 @@ public final class Call {
|
||||
mInCallAdapter.respondToRttRequest(mTelecomCallId, id, accept);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initiates a handover of this {@link Call} to the {@link ConnectionService} identified
|
||||
* by {@code toHandle}. The videoState specified indicates the desired video state after the
|
||||
* handover.
|
||||
* <p>
|
||||
* A handover request is initiated by the user from one app to indicate a desire
|
||||
* to handover a call to another.
|
||||
*
|
||||
* @param toHandle {@link PhoneAccountHandle} of the {@link ConnectionService} to handover
|
||||
* this call to.
|
||||
* @param videoState Indicates the video state desired after the handover.
|
||||
* @param extras Bundle containing extra information to be passed to the
|
||||
* {@link ConnectionService}
|
||||
*/
|
||||
public void handoverTo(PhoneAccountHandle toHandle, int videoState, Bundle extras) {
|
||||
mInCallAdapter.handoverTo(mTelecomCallId, toHandle, videoState, extras);
|
||||
}
|
||||
|
||||
/**
|
||||
* Terminate the RTT session on this call. The resulting state change will be notified via
|
||||
* the {@link Callback#onRttStatusChanged(Call, boolean, RttCall)} callback.
|
||||
|
||||
@@ -2032,6 +2032,43 @@ public abstract class ConnectionService extends Service {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by Telecom on the initiating side of the handover to create an instance of a
|
||||
* handover connection.
|
||||
* @param fromPhoneAccountHandle {@link PhoneAccountHandle} associated with the
|
||||
* ConnectionService which needs to handover the call.
|
||||
* @param request Details about the call which needs to be handover.
|
||||
* @return Connection object corresponding to the handover call.
|
||||
*/
|
||||
public Connection onCreateOutgoingHandoverConnection(PhoneAccountHandle fromPhoneAccountHandle,
|
||||
ConnectionRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by Telecom on the receiving side of the handover to request the
|
||||
* {@link ConnectionService} to create an instance of a handover connection.
|
||||
* @param fromPhoneAccountHandle {@link PhoneAccountHandle} associated with the
|
||||
* ConnectionService which needs to handover the call.
|
||||
* @param request Details about the call which needs to be handover.
|
||||
* @return {@link Connection} object corresponding to the handover call.
|
||||
*/
|
||||
public Connection onCreateIncomingHandoverConnection(PhoneAccountHandle fromPhoneAccountHandle,
|
||||
ConnectionRequest request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by Telecom in response to a {@code TelecomManager#acceptHandover()}
|
||||
* invocation which failed.
|
||||
* @param request Details about the call which needs to be handover.
|
||||
* @param error Reason for handover failure as defined in
|
||||
* {@link android.telecom.Call.Callback#HANDOVER_FAILURE_DEST_INVALID_PERM}
|
||||
*/
|
||||
public void onHandoverFailed(ConnectionRequest request, int error) {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@code Connection} for a new unknown call. An unknown call is a call originating
|
||||
* from the ConnectionService that was neither a user-initiated outgoing call, nor an incoming
|
||||
|
||||
@@ -435,4 +435,21 @@ public final class InCallAdapter {
|
||||
} catch (RemoteException ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Initiates a handover of this {@link Call} to the {@link ConnectionService} identified
|
||||
* by destAcct.
|
||||
* @param callId The callId of the Call which calls this function.
|
||||
* @param destAcct ConnectionService to which the call should be handed over.
|
||||
* @param videoState The video state desired after the handover.
|
||||
* @param extras Extra information to be passed to ConnectionService
|
||||
*/
|
||||
public void handoverTo(String callId, PhoneAccountHandle destAcct, int videoState,
|
||||
Bundle extras) {
|
||||
try {
|
||||
mAdapter.handoverTo(callId, destAcct, videoState, extras);
|
||||
} catch (RemoteException ignored) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,13 +86,11 @@ public final class PhoneAccount implements Parcelable {
|
||||
/**
|
||||
* Boolean {@link PhoneAccount} extras key (see {@link PhoneAccount#getExtras()}) which
|
||||
* indicates whether this {@link PhoneAccount} is capable of supporting a request to handover a
|
||||
* connection (see {@link android.telecom.Call#EVENT_REQUEST_HANDOVER}) to this
|
||||
* {@link PhoneAccount} from a {@link PhoneAccount} specifying
|
||||
* {@link #EXTRA_SUPPORTS_HANDOVER_FROM}.
|
||||
* connection (see {@code android.telecom.Call#handoverTo()}) to this {@link PhoneAccount} from
|
||||
* a {@link PhoneAccount} specifying {@link #EXTRA_SUPPORTS_HANDOVER_FROM}.
|
||||
* <p>
|
||||
* A handover request is initiated by the user from the default dialer app to indicate a desire
|
||||
* to handover a call from one {@link PhoneAccount}/{@link ConnectionService} to another.
|
||||
* @hide
|
||||
*/
|
||||
public static final String EXTRA_SUPPORTS_HANDOVER_TO =
|
||||
"android.telecom.extra.SUPPORTS_HANDOVER_TO";
|
||||
@@ -113,12 +111,11 @@ public final class PhoneAccount implements Parcelable {
|
||||
* Boolean {@link PhoneAccount} extras key (see {@link PhoneAccount#getExtras()}) which
|
||||
* indicates whether this {@link PhoneAccount} is capable of supporting a request to handover a
|
||||
* connection from this {@link PhoneAccount} to another {@link PhoneAccount}.
|
||||
* (see {@link android.telecom.Call#EVENT_REQUEST_HANDOVER}) which specifies
|
||||
* (see {@code android.telecom.Call#handoverTo()}) which specifies
|
||||
* {@link #EXTRA_SUPPORTS_HANDOVER_TO}.
|
||||
* <p>
|
||||
* A handover request is initiated by the user from the default dialer app to indicate a desire
|
||||
* to handover a call from one {@link PhoneAccount}/{@link ConnectionService} to another.
|
||||
* @hide
|
||||
*/
|
||||
public static final String EXTRA_SUPPORTS_HANDOVER_FROM =
|
||||
"android.telecom.extra.SUPPORTS_HANDOVER_FROM";
|
||||
@@ -132,7 +129,6 @@ public final class PhoneAccount implements Parcelable {
|
||||
* <p>
|
||||
* By default, Self-Managed {@link PhoneAccount}s do not log their calls to the call log.
|
||||
* Setting this extra to {@code true} provides a means for them to log their calls.
|
||||
* @hide
|
||||
*/
|
||||
public static final String EXTRA_LOG_SELF_MANAGED_CALLS =
|
||||
"android.telecom.extra.LOG_SELF_MANAGED_CALLS";
|
||||
|
||||
@@ -1749,6 +1749,41 @@ public class TelecomManager {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called from the recipient side of a handover to indicate a desire to accept the handover
|
||||
* of an ongoing call to another {@link ConnectionService} identified by
|
||||
* {@link PhoneAccountHandle} destAcct. For managed {@link ConnectionService}s, the specified
|
||||
* {@link PhoneAccountHandle} must have been registered with {@link #registerPhoneAccount} and
|
||||
* the user must have enabled the corresponding {@link PhoneAccount}. This can be checked using
|
||||
* {@link #getPhoneAccount}. Self-managed {@link ConnectionService}s must have
|
||||
* {@link android.Manifest.permission#MANAGE_OWN_CALLS} to handover a call to it.
|
||||
* <p>
|
||||
* Once invoked, this method will cause the system to bind to the {@link ConnectionService}
|
||||
* associated with the {@link PhoneAccountHandle} destAcct and call
|
||||
* (See {@link ConnectionService#onCreateIncomingHandoverConnection}).
|
||||
* <p>
|
||||
* For a managed {@link ConnectionService}, a {@link SecurityException} will be thrown if either
|
||||
* the {@link PhoneAccountHandle} destAcct does not correspond to a registered
|
||||
* {@link PhoneAccount} or the associated {@link PhoneAccount} is not currently enabled by the
|
||||
* user.
|
||||
* <p>
|
||||
* For a self-managed {@link ConnectionService}, a {@link SecurityException} will be thrown if
|
||||
* the calling app does not have {@link android.Manifest.permission#MANAGE_OWN_CALLS}.
|
||||
*
|
||||
* @param srcAddr The {@link android.net.Uri} of the ongoing call to handover to the caller’s
|
||||
* {@link ConnectionService}.
|
||||
* @param videoState Video state after the handover.
|
||||
* @param destAcct The {@link PhoneAccountHandle} registered to the calling package.
|
||||
*/
|
||||
public void acceptHandover(Uri srcAddr, int videoState, PhoneAccountHandle destAcct) {
|
||||
try {
|
||||
if (isServiceConnected()) {
|
||||
getTelecomService().acceptHandover(srcAddr, videoState, destAcct);
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "RemoteException acceptHandover: " + e);
|
||||
}
|
||||
}
|
||||
|
||||
private ITelecomService getTelecomService() {
|
||||
if (mTelecomServiceOverride != null) {
|
||||
|
||||
@@ -77,4 +77,7 @@ oneway interface IInCallAdapter {
|
||||
void stopRtt(String callId);
|
||||
|
||||
void setRttMode(String callId, int mode);
|
||||
|
||||
void handoverTo(String callId, in PhoneAccountHandle destAcct, int videoState,
|
||||
in Bundle extras);
|
||||
}
|
||||
|
||||
@@ -274,4 +274,9 @@ interface ITelecomService {
|
||||
* @see TelecomServiceImpl#waitOnHandler
|
||||
*/
|
||||
void waitOnHandlers();
|
||||
|
||||
/**
|
||||
* @see TelecomServiceImpl#acceptHandover
|
||||
*/
|
||||
void acceptHandover(in Uri srcAddr, int videoState, in PhoneAccountHandle destAcct);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user