API declarations for Call Handover.

Design doc:
https://docs.google.com/document/d/1qY3oAzjff_4A1ttYb_CGrE_OwTRmXMG_KGsIuPT1ey8/edit#

Bug: 65415068
Test: manual.
Change-Id: I0c2f561d92ad6504f858eadde09980fc1ce8727f
This commit is contained in:
Sanket Padawe
2017-11-03 11:07:35 -07:00
parent 62893396bd
commit a8eddd48c4
10 changed files with 208 additions and 7 deletions

View File

@@ -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) {