diff --git a/api/current.txt b/api/current.txt index 6d67fb962d008..305b4481ac488 100644 --- a/api/current.txt +++ b/api/current.txt @@ -35017,6 +35017,7 @@ package android.telecom { method public static boolean hasProperty(int, int); method public boolean hasProperty(int); method public static java.lang.String propertiesToString(int); + field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 4194304; // 0x400000 field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000 field public static final int CAPABILITY_DISCONNECT_FROM_CONFERENCE = 8192; // 0x2000 field public static final int CAPABILITY_HOLD = 1; // 0x1 @@ -35157,6 +35158,7 @@ package android.telecom { method public final void setVideoProvider(android.telecom.Connection.VideoProvider); method public final void setVideoState(int); method public static java.lang.String stateToString(int); + field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 8388608; // 0x800000 field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000 field public static final int CAPABILITY_CAN_UPGRADE_TO_VIDEO = 524288; // 0x80000 field public static final int CAPABILITY_DISCONNECT_FROM_CONFERENCE = 8192; // 0x2000 diff --git a/api/system-current.txt b/api/system-current.txt index d4efb8c830977..a191d2dd3fce2 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -37239,6 +37239,7 @@ package android.telecom { method public static boolean hasProperty(int, int); method public boolean hasProperty(int); method public static java.lang.String propertiesToString(int); + field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 4194304; // 0x400000 field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000 field public static final int CAPABILITY_DISCONNECT_FROM_CONFERENCE = 8192; // 0x2000 field public static final int CAPABILITY_HOLD = 1; // 0x1 @@ -37390,6 +37391,7 @@ package android.telecom { method public final void setVideoProvider(android.telecom.Connection.VideoProvider); method public final void setVideoState(int); method public static java.lang.String stateToString(int); + field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 8388608; // 0x800000 field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000 field public static final int CAPABILITY_CAN_UPGRADE_TO_VIDEO = 524288; // 0x80000 field public static final int CAPABILITY_DISCONNECT_FROM_CONFERENCE = 8192; // 0x2000 diff --git a/api/test-current.txt b/api/test-current.txt index 57c735beb723c..cbbc2b02a4e69 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -35031,6 +35031,7 @@ package android.telecom { method public static boolean hasProperty(int, int); method public boolean hasProperty(int); method public static java.lang.String propertiesToString(int); + field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 4194304; // 0x400000 field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000 field public static final int CAPABILITY_DISCONNECT_FROM_CONFERENCE = 8192; // 0x2000 field public static final int CAPABILITY_HOLD = 1; // 0x1 @@ -35171,6 +35172,7 @@ package android.telecom { method public final void setVideoProvider(android.telecom.Connection.VideoProvider); method public final void setVideoState(int); method public static java.lang.String stateToString(int); + field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 8388608; // 0x800000 field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000 field public static final int CAPABILITY_CAN_UPGRADE_TO_VIDEO = 524288; // 0x80000 field public static final int CAPABILITY_DISCONNECT_FROM_CONFERENCE = 8192; // 0x2000 diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java index aa95e1d69a10e..385929428a524 100644 --- a/telecomm/java/android/telecom/Call.java +++ b/telecomm/java/android/telecom/Call.java @@ -24,7 +24,6 @@ import android.os.Handler; import java.lang.String; import java.util.ArrayList; import java.util.Collections; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Objects; @@ -210,7 +209,22 @@ public final class Call { * Call sends responses through connection. * @hide */ - public static final int CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION = 0x00400000; + public static final int CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION = 0x00200000; + + /** + * When set, prevents a video {@code Call} from being downgraded to an audio-only call. + *
+ * Should be set when the VideoState has the {@link VideoProfile#STATE_TX_ENABLED} or + * {@link VideoProfile#STATE_RX_ENABLED} bits set to indicate that the connection cannot be + * downgraded from a video call back to a VideoState of + * {@link VideoProfile#STATE_AUDIO_ONLY}. + *
+ * Intuitively, a call which can be downgraded to audio should also have local and remote + * video + * capabilities (see {@link #CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL} and + * {@link #CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL}). + */ + public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 0x00400000; //****************************************************************************************** // Next CAPABILITY value: 0x00800000 @@ -332,6 +346,9 @@ public final class Call { if (can(capabilities, CAPABILITY_SUPPORTS_VT_REMOTE_TX)) { builder.append(" CAPABILITY_SUPPORTS_VT_REMOTE_TX"); } + if (can(capabilities, CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO)) { + builder.append(" CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO"); + } if (can(capabilities, CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL)) { builder.append(" CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL"); } diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java index deb98f4211b16..fa7a59d76f09c 100644 --- a/telecomm/java/android/telecom/Connection.java +++ b/telecomm/java/android/telecom/Connection.java @@ -255,8 +255,23 @@ public abstract class Connection extends Conferenceable { */ public static final int CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION = 0x00400000; + /** + * When set, prevents a video call from being downgraded to an audio-only call. + *
+ * Should be set when the VideoState has the {@link VideoProfile#STATE_TX_ENABLED} or + * {@link VideoProfile#STATE_RX_ENABLED} bits set to indicate that the connection cannot be + * downgraded from a video call back to a VideoState of + * {@link VideoProfile#STATE_AUDIO_ONLY}. + *
+ * Intuitively, a call which can be downgraded to audio should also have local and remote + * video + * capabilities (see {@link #CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL} and + * {@link #CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL}). + */ + public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 0x00800000; + //********************************************************************************************** - // Next CAPABILITY value: 0x00800000 + // Next CAPABILITY value: 0x01000000 //********************************************************************************************** /** @@ -371,6 +386,9 @@ public abstract class Connection extends Conferenceable { if (can(capabilities, CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL)) { builder.append(" CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL"); } + if (can(capabilities, CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO)) { + builder.append(" CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO"); + } if (can(capabilities, CAPABILITY_HIGH_DEF_AUDIO)) { builder.append(" CAPABILITY_HIGH_DEF_AUDIO"); }