From acd4dad5970699150be99e7edfb6edaf0545b210 Mon Sep 17 00:00:00 2001 From: Grace Jia Date: Tue, 17 Jan 2023 18:14:36 -0800 Subject: Address Call Streaming API review comments. 1. Make CallStreamingService and StreamingCall SystemApi and hide 2. Add android.permission.BIND_STREAMING_SERVICE 3. Change StreamingCall#DisplayName to CharSequence 4. Hide StreamingCall constructor 5. Fix CallControl#startCallStreaming doc Bug: 265304561 Test: build; add cts API-Coverage-Bug: 268061643 Change-Id: I29771cfbf60553eb8325e40b2cd11c5828a445e4 --- telecomm/java/android/telecom/CallControl.java | 4 ++-- .../java/android/telecom/CallStreamingService.java | 27 +++++++++++++++++++--- telecomm/java/android/telecom/StreamingCall.java | 17 ++++++++++---- 3 files changed, 38 insertions(+), 10 deletions(-) (limited to 'telecomm/java') diff --git a/telecomm/java/android/telecom/CallControl.java b/telecomm/java/android/telecom/CallControl.java index f3c91f664dee..2135e276e591 100644 --- a/telecomm/java/android/telecom/CallControl.java +++ b/telecomm/java/android/telecom/CallControl.java @@ -197,10 +197,10 @@ public final class CallControl { * of the requested operation. * * {@link OutcomeReceiver#onResult} will be called if Telecom has successfully - * rejected the incoming call. + * started the call streaming. * * {@link OutcomeReceiver#onError} will be called if Telecom has failed to - * reject the incoming call. A {@link CallException} will be passed that + * start the call streaming. A {@link CallException} will be passed that * details why the operation failed. */ public void startCallStreaming(@CallbackExecutor @NonNull Executor executor, diff --git a/telecomm/java/android/telecom/CallStreamingService.java b/telecomm/java/android/telecom/CallStreamingService.java index 7f1112830222..3f538a7f262d 100644 --- a/telecomm/java/android/telecom/CallStreamingService.java +++ b/telecomm/java/android/telecom/CallStreamingService.java @@ -19,6 +19,7 @@ package android.telecom; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.SdkConstant; +import android.annotation.SystemApi; import android.app.Service; import android.content.Intent; import android.os.Handler; @@ -38,10 +39,22 @@ import java.lang.annotation.RetentionPolicy; /** * This service is implemented by an app that wishes to provide functionality for a general call * streaming sender for voip calls. - * - * TODO: add doc of how to be the general streaming sender - * + *

+ * Below is an example manifest registration for a {@code CallStreamingService}. + *

+ * {@code
+ * 
+ *     ...
+ *     
+ *         
+ *     
+ * 
+ * }
+ * 
+ * @hide */ +@SystemApi public abstract class CallStreamingService extends Service { /** * The {@link android.content.Intent} that must be declared as handled by the service. @@ -119,6 +132,13 @@ public abstract class CallStreamingService extends Service { } } + /** + * Call streaming request reject reason used with + * {@link CallEventCallback#onCallStreamingFailed(int)} to indicate that telecom is rejecting a + * call streaming request due to unknown reason. + */ + public static final int STREAMING_FAILED_UNKNOWN = 0; + /** * Call streaming request reject reason used with * {@link CallEventCallback#onCallStreamingFailed(int)} to indicate that telecom is rejecting a @@ -149,6 +169,7 @@ public abstract class CallStreamingService extends Service { */ @IntDef(prefix = {"STREAMING_FAILED"}, value = { + STREAMING_FAILED_UNKNOWN, STREAMING_FAILED_ALREADY_STREAMING, STREAMING_FAILED_NO_SENDER, STREAMING_FAILED_SENDER_BINDING_ERROR diff --git a/telecomm/java/android/telecom/StreamingCall.java b/telecomm/java/android/telecom/StreamingCall.java index 4b27dd6f1e59..d4f43225139b 100644 --- a/telecomm/java/android/telecom/StreamingCall.java +++ b/telecomm/java/android/telecom/StreamingCall.java @@ -18,6 +18,7 @@ package android.telecom; import android.annotation.IntDef; import android.annotation.NonNull; +import android.annotation.SystemApi; import android.content.ComponentName; import android.net.Uri; import android.os.Bundle; @@ -30,7 +31,10 @@ import java.lang.annotation.RetentionPolicy; /** * Represents a voip call requested to stream to another device that the general streaming sender * app should present to the receiver. + * + * @hide */ +@SystemApi public final class StreamingCall implements Parcelable { /** * The state of a {@code StreamingCall} when newly created. General streaming sender should @@ -50,9 +54,12 @@ public final class StreamingCall implements Parcelable { */ public static final int STATE_DISCONNECTED = 3; + /** + * @hide + */ private StreamingCall(@NonNull Parcel in) { mComponentName = in.readParcelable(ComponentName.class.getClassLoader()); - mDisplayName = in.readString16NoHelper(); + mDisplayName = in.readCharSequence(); mAddress = in.readParcelable(Uri.class.getClassLoader()); mExtras = in.readBundle(); mState = in.readInt(); @@ -79,7 +86,7 @@ public final class StreamingCall implements Parcelable { @Override public void writeToParcel(@androidx.annotation.NonNull Parcel dest, int flags) { dest.writeParcelable(mComponentName, flags); - dest.writeString16NoHelper(mDisplayName); + dest.writeCharSequence(mDisplayName); dest.writeParcelable(mAddress, flags); dest.writeBundle(mExtras); dest.writeInt(mState); @@ -98,14 +105,14 @@ public final class StreamingCall implements Parcelable { public @interface StreamingCallState {} private final ComponentName mComponentName; - private final String mDisplayName; + private final CharSequence mDisplayName; private final Uri mAddress; private final Bundle mExtras; @StreamingCallState private int mState; private StreamingCallAdapter mAdapter = null; - public StreamingCall(@NonNull ComponentName componentName, @NonNull String displayName, + public StreamingCall(@NonNull ComponentName componentName, @NonNull CharSequence displayName, @NonNull Uri address, @NonNull Bundle extras) { mComponentName = componentName; mDisplayName = displayName; @@ -137,7 +144,7 @@ public final class StreamingCall implements Parcelable { * {@code StreamingCall} to the receiver side. */ @NonNull - public String getDisplayName() { + public CharSequence getDisplayName() { return mDisplayName; } -- cgit v1.2.3-59-g8ed1b