Merge "Expose new Telecom APIs for use by Telephony"

This commit is contained in:
Hall Liu
2019-12-02 21:43:02 +00:00
committed by Gerrit Code Review
4 changed files with 53 additions and 13 deletions

View File

@@ -7373,6 +7373,10 @@ package android.telecom {
field public static final int PROPERTY_REMOTELY_HOSTED = 2048; // 0x800 field public static final int PROPERTY_REMOTELY_HOSTED = 2048; // 0x800
} }
public final class ConnectionRequest implements android.os.Parcelable {
method @Nullable public String getTelecomCallId();
}
public abstract class ConnectionService extends android.app.Service { public abstract class ConnectionService extends android.app.Service {
method public final void addExistingConnection(@NonNull android.telecom.PhoneAccountHandle, @NonNull android.telecom.Connection, @NonNull android.telecom.Conference); method public final void addExistingConnection(@NonNull android.telecom.PhoneAccountHandle, @NonNull android.telecom.Connection, @NonNull android.telecom.Conference);
} }
@@ -7579,6 +7583,7 @@ package android.telecom {
method public java.util.List<android.telecom.PhoneAccountHandle> getAllPhoneAccountHandles(); method public java.util.List<android.telecom.PhoneAccountHandle> getAllPhoneAccountHandles();
method public java.util.List<android.telecom.PhoneAccount> getAllPhoneAccounts(); method public java.util.List<android.telecom.PhoneAccount> getAllPhoneAccounts();
method public int getAllPhoneAccountsCount(); method public int getAllPhoneAccountsCount();
method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List<android.telecom.PhoneAccountHandle> getCallCapablePhoneAccounts(boolean);
method public int getCallState(); method public int getCallState();
method public android.telecom.PhoneAccountHandle getConnectionManager(); method public android.telecom.PhoneAccountHandle getConnectionManager();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCurrentTtyMode(); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCurrentTtyMode();

View File

@@ -2832,6 +2832,23 @@ package android.telecom {
field public static final int PROPERTY_REMOTELY_HOSTED = 2048; // 0x800 field public static final int PROPERTY_REMOTELY_HOSTED = 2048; // 0x800
} }
public final class ConnectionRequest implements android.os.Parcelable {
method @Nullable public String getTelecomCallId();
}
public static final class ConnectionRequest.Builder {
ctor public ConnectionRequest.Builder();
method @NonNull public android.telecom.ConnectionRequest build();
method @NonNull public android.telecom.ConnectionRequest.Builder setAccountHandle(@NonNull android.telecom.PhoneAccountHandle);
method @NonNull public android.telecom.ConnectionRequest.Builder setAddress(@NonNull android.net.Uri);
method @NonNull public android.telecom.ConnectionRequest.Builder setExtras(@NonNull android.os.Bundle);
method @NonNull public android.telecom.ConnectionRequest.Builder setRttPipeFromInCall(@NonNull android.os.ParcelFileDescriptor);
method @NonNull public android.telecom.ConnectionRequest.Builder setRttPipeToInCall(@NonNull android.os.ParcelFileDescriptor);
method @NonNull public android.telecom.ConnectionRequest.Builder setShouldShowIncomingCallUi(boolean);
method @NonNull public android.telecom.ConnectionRequest.Builder setTelecomCallId(@NonNull String);
method @NonNull public android.telecom.ConnectionRequest.Builder setVideoState(int);
}
public static class PhoneAccount.Builder { public static class PhoneAccount.Builder {
method @NonNull public android.telecom.PhoneAccount.Builder setGroupId(@NonNull String); method @NonNull public android.telecom.PhoneAccount.Builder setGroupId(@NonNull String);
} }
@@ -2845,6 +2862,7 @@ package android.telecom {
} }
public class TelecomManager { public class TelecomManager {
method @NonNull @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public java.util.List<android.telecom.PhoneAccountHandle> getCallCapablePhoneAccounts(boolean);
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public int getCurrentTtyMode(); method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public int getCurrentTtyMode();
method @Nullable @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDefaultDialerPackage(int); method @Nullable @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDefaultDialerPackage(int);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isInEmergencyCall(); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isInEmergencyCall();

View File

@@ -16,6 +16,10 @@
package android.telecom; package android.telecom;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Parcel; import android.os.Parcel;
@@ -32,6 +36,7 @@ public final class ConnectionRequest implements Parcelable {
* Builder class for {@link ConnectionRequest} * Builder class for {@link ConnectionRequest}
* @hide * @hide
*/ */
@TestApi // For convenience in CTS tests
public static final class Builder { public static final class Builder {
private PhoneAccountHandle mAccountHandle; private PhoneAccountHandle mAccountHandle;
private Uri mAddress; private Uri mAddress;
@@ -48,7 +53,7 @@ public final class ConnectionRequest implements Parcelable {
* Sets the phone account handle for the resulting {@link ConnectionRequest} * Sets the phone account handle for the resulting {@link ConnectionRequest}
* @param accountHandle The accountHandle which should be used to place the call. * @param accountHandle The accountHandle which should be used to place the call.
*/ */
public Builder setAccountHandle(PhoneAccountHandle accountHandle) { public @NonNull Builder setAccountHandle(@NonNull PhoneAccountHandle accountHandle) {
this.mAccountHandle = accountHandle; this.mAccountHandle = accountHandle;
return this; return this;
} }
@@ -58,7 +63,7 @@ public final class ConnectionRequest implements Parcelable {
* @param address The address(e.g., phone number) to which the {@link Connection} is to * @param address The address(e.g., phone number) to which the {@link Connection} is to
* connect. * connect.
*/ */
public Builder setAddress(Uri address) { public @NonNull Builder setAddress(@NonNull Uri address) {
this.mAddress = address; this.mAddress = address;
return this; return this;
} }
@@ -67,7 +72,7 @@ public final class ConnectionRequest implements Parcelable {
* Sets the extras bundle for the resulting {@link ConnectionRequest} * Sets the extras bundle for the resulting {@link ConnectionRequest}
* @param extras Application-specific extra data. * @param extras Application-specific extra data.
*/ */
public Builder setExtras(Bundle extras) { public @NonNull Builder setExtras(@NonNull Bundle extras) {
this.mExtras = extras; this.mExtras = extras;
return this; return this;
} }
@@ -76,7 +81,7 @@ public final class ConnectionRequest implements Parcelable {
* Sets the video state for the resulting {@link ConnectionRequest} * Sets the video state for the resulting {@link ConnectionRequest}
* @param videoState Determines the video state for the connection. * @param videoState Determines the video state for the connection.
*/ */
public Builder setVideoState(int videoState) { public @NonNull Builder setVideoState(int videoState) {
this.mVideoState = videoState; this.mVideoState = videoState;
return this; return this;
} }
@@ -85,7 +90,7 @@ public final class ConnectionRequest implements Parcelable {
* Sets the Telecom call ID for the resulting {@link ConnectionRequest} * Sets the Telecom call ID for the resulting {@link ConnectionRequest}
* @param telecomCallId The telecom call ID. * @param telecomCallId The telecom call ID.
*/ */
public Builder setTelecomCallId(String telecomCallId) { public @NonNull Builder setTelecomCallId(@NonNull String telecomCallId) {
this.mTelecomCallId = telecomCallId; this.mTelecomCallId = telecomCallId;
return this; return this;
} }
@@ -97,7 +102,7 @@ public final class ConnectionRequest implements Parcelable {
* its own incoming call UI for an incoming call. When * its own incoming call UI for an incoming call. When
* {@code false}, Telecom shows the incoming call UI. * {@code false}, Telecom shows the incoming call UI.
*/ */
public Builder setShouldShowIncomingCallUi(boolean shouldShowIncomingCallUi) { public @NonNull Builder setShouldShowIncomingCallUi(boolean shouldShowIncomingCallUi) {
this.mShouldShowIncomingCallUi = shouldShowIncomingCallUi; this.mShouldShowIncomingCallUi = shouldShowIncomingCallUi;
return this; return this;
} }
@@ -107,7 +112,8 @@ public final class ConnectionRequest implements Parcelable {
* resulting {@link ConnectionRequest} * resulting {@link ConnectionRequest}
* @param rttPipeFromInCall The data pipe to read from. * @param rttPipeFromInCall The data pipe to read from.
*/ */
public Builder setRttPipeFromInCall(ParcelFileDescriptor rttPipeFromInCall) { public @NonNull Builder setRttPipeFromInCall(
@NonNull ParcelFileDescriptor rttPipeFromInCall) {
this.mRttPipeFromInCall = rttPipeFromInCall; this.mRttPipeFromInCall = rttPipeFromInCall;
return this; return this;
} }
@@ -117,12 +123,16 @@ public final class ConnectionRequest implements Parcelable {
* resulting {@link ConnectionRequest} * resulting {@link ConnectionRequest}
* @param rttPipeToInCall The data pipe to write to. * @param rttPipeToInCall The data pipe to write to.
*/ */
public Builder setRttPipeToInCall(ParcelFileDescriptor rttPipeToInCall) { public @NonNull Builder setRttPipeToInCall(@NonNull ParcelFileDescriptor rttPipeToInCall) {
this.mRttPipeToInCall = rttPipeToInCall; this.mRttPipeToInCall = rttPipeToInCall;
return this; return this;
} }
public ConnectionRequest build() { /**
* Build the {@link ConnectionRequest}
* @return Result of the builder
*/
public @NonNull ConnectionRequest build() {
return new ConnectionRequest( return new ConnectionRequest(
mAccountHandle, mAccountHandle,
mAddress, mAddress,
@@ -261,7 +271,9 @@ public final class ConnectionRequest implements Parcelable {
* @return The Telecom ID. * @return The Telecom ID.
* @hide * @hide
*/ */
public String getTelecomCallId() { @SystemApi
@TestApi
public @Nullable String getTelecomCallId() {
return mTelecomCallId; return mTelecomCallId;
} }

View File

@@ -18,6 +18,7 @@ import static android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE;
import android.Manifest; import android.Manifest;
import android.annotation.IntDef; import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable; import android.annotation.Nullable;
import android.annotation.RequiresPermission; import android.annotation.RequiresPermission;
import android.annotation.SuppressAutoDoc; import android.annotation.SuppressAutoDoc;
@@ -1028,12 +1029,16 @@ public class TelecomManager {
* by the user. * by the user.
* *
* @param includeDisabledAccounts When {@code true}, disabled phone accounts will be included, * @param includeDisabledAccounts When {@code true}, disabled phone accounts will be included,
* when {@code false}, only * when {@code false}, only enabled phone accounts will be
* included.
* @return A list of {@code PhoneAccountHandle} objects. * @return A list of {@code PhoneAccountHandle} objects.
* @hide * @hide
*/ */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 119305590) @SystemApi
public List<PhoneAccountHandle> getCallCapablePhoneAccounts(boolean includeDisabledAccounts) { @TestApi
@RequiresPermission(READ_PRIVILEGED_PHONE_STATE)
public @NonNull List<PhoneAccountHandle> getCallCapablePhoneAccounts(
boolean includeDisabledAccounts) {
try { try {
if (isServiceConnected()) { if (isServiceConnected()) {
return getTelecomService().getCallCapablePhoneAccounts( return getTelecomService().getCallCapablePhoneAccounts(