diff options
Diffstat (limited to 'telecomm/java/android/telecom/Connection.java')
-rw-r--r-- | telecomm/java/android/telecom/Connection.java | 118 |
1 files changed, 115 insertions, 3 deletions
diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java index 082474b..dc3f963 100644 --- a/telecomm/java/android/telecom/Connection.java +++ b/telecomm/java/android/telecom/Connection.java @@ -186,10 +186,58 @@ public abstract class Connection implements IConferenceable { */ public static final int CAPABILITY_SPEED_UP_MT_AUDIO = 0x00040000; + /** + * Call type can be modified for IMS call + * @hide + */ + public static final int CAPABILITY_CAN_UPGRADE_TO_VIDEO = 0x00080000; + //********************************************************************************************** - // Next CAPABILITY value: 0x00080000 + // Next CAPABILITY value: 0x00100000 //********************************************************************************************** + /** + * Call substate bitmask values + */ + + /* Default case */ + /** + * @hide + */ + public static final int SUBSTATE_NONE = 0; + + /* Indicates that the call is connected but audio attribute is suspended */ + /** + * @hide + */ + public static final int SUBSTATE_AUDIO_CONNECTED_SUSPENDED = 0x1; + + /* Indicates that the call is connected but video attribute is suspended */ + /** + * @hide + */ + public static final int SUBSTATE_VIDEO_CONNECTED_SUSPENDED = 0x2; + + /* Indicates that the call is established but media retry is needed */ + /** + * @hide + */ + public static final int SUBSTATE_AVP_RETRY = 0x4; + + /* Indicates that the call is multitasking */ + /** + * @hide + */ + public static final int SUBSTATE_MEDIA_PAUSED = 0x8; + + /* Mask containing all the call substate bits set */ + /** + * @hide + */ + public static final int SUBSTATE_ALL = SUBSTATE_AUDIO_CONNECTED_SUSPENDED | + SUBSTATE_VIDEO_CONNECTED_SUSPENDED | SUBSTATE_AVP_RETRY | + SUBSTATE_MEDIA_PAUSED; + // Flag controlling whether PII is emitted into the logs private static final boolean PII_DEBUG = Log.isLoggable(android.util.Log.DEBUG); @@ -294,6 +342,9 @@ public abstract class Connection implements IConferenceable { if (can(capabilities, CAPABILITY_SPEED_UP_MT_AUDIO)) { builder.append(" CAPABILITY_SPEED_UP_MT_AUDIO"); } + if (can(capabilities, CAPABILITY_CAN_UPGRADE_TO_VIDEO)) { + builder.append(" CAPABILITY_CAN_UPGRADE_TO_VIDEO"); + } builder.append("]"); return builder.toString(); } @@ -322,6 +373,7 @@ public abstract class Connection implements IConferenceable { public void onConferenceParticipantsChanged(Connection c, List<ConferenceParticipant> participants) {} public void onConferenceStarted() {} + public void onCallSubstateChanged(Connection c, int substate) {} } /** @hide */ @@ -377,6 +429,16 @@ public abstract class Connection implements IConferenceable { */ public static final int SESSION_MODIFY_REQUEST_INVALID = 3; + /** + * Session modify request timed out. + */ + public static final int SESSION_MODIFY_REQUEST_TIMED_OUT = 4; + + /** + * Session modify request rejected by remote UE. + */ + public static final int SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE = 5; + private static final int MSG_SET_VIDEO_CALLBACK = 1; private static final int MSG_SET_CAMERA = 2; private static final int MSG_SET_PREVIEW_SURFACE = 3; @@ -462,7 +524,8 @@ public abstract class Connection implements IConferenceable { } public void setDeviceOrientation(int rotation) { - mMessageHandler.obtainMessage(MSG_SET_DEVICE_ORIENTATION, rotation).sendToTarget(); + mMessageHandler.obtainMessage( + MSG_SET_DEVICE_ORIENTATION, rotation, 0).sendToTarget(); } public void setZoom(float value) { @@ -656,7 +719,7 @@ public abstract class Connection implements IConferenceable { * * @param dataUsage The updated data usage. */ - public void changeCallDataUsage(int dataUsage) { + public void changeCallDataUsage(long dataUsage) { if (mVideoCallback != null) { try { mVideoCallback.changeCallDataUsage(dataUsage); @@ -678,6 +741,20 @@ public abstract class Connection implements IConferenceable { } } } + + /** + * Invokes callback method defined in In-Call UI. + * + * @param videoQuality The updated video quality. + */ + public void changeVideoQuality(int videoQuality) { + if (mVideoCallback != null) { + try { + mVideoCallback.changeVideoQuality(videoQuality); + } catch (RemoteException ignored) { + } + } + } } private final Listener mConnectionDeathListener = new Listener() { @@ -724,6 +801,7 @@ public abstract class Connection implements IConferenceable { private DisconnectCause mDisconnectCause; private Conference mConference; private ConnectionService mConnectionService; + private int mCallSubstate; /** * Create a new Connection. @@ -782,6 +860,21 @@ public abstract class Connection implements IConferenceable { } /** + * Returns the call substate of the call. + * Valid values: {@link Connection#SUBSTATE_NONE}, + * {@link Connection#SUBSTATE_AUDIO_CONNECTED_SUSPENDED}, + * {@link Connection#SUBSTATE_VIDEO_CONNECTED_SUSPENDED}, + * {@link Connection#SUBSTATE_AVP_RETRY}, + * {@link Connection#SUBSTATE_MEDIA_PAUSED}. + * + * @param callSubstate The new call substate. + * @hide + */ + public final int getCallSubstate() { + return mCallSubstate; + } + + /** * @return The audio state of the connection, describing how its audio is currently * being routed by the system. This is {@code null} if this Connection * does not directly know about its audio state. @@ -960,6 +1053,25 @@ public abstract class Connection implements IConferenceable { } /** + * Set the call substate for the connection. + * Valid values: {@link Connection#SUBSTATE_NONE}, + * {@link Connection#SUBSTATE_AUDIO_CONNECTED_SUSPENDED}, + * {@link Connection#SUBSTATE_VIDEO_CONNECTED_SUSPENDED}, + * {@link Connection#SUBSTATE_AVP_RETRY}, + * {@link Connection#SUBSTATE_MEDIA_PAUSED}. + * + * @param callSubstate The new call substate. + * @hide + */ + public final void setCallSubstate(int callSubstate) { + Log.d(this, "setCallSubstate %d", callSubstate); + mCallSubstate = callSubstate; + for (Listener l : mListeners) { + l.onCallSubstateChanged(this, mCallSubstate); + } + } + + /** * Sets state to active (e.g., an ongoing connection where two or more parties can actively * communicate). */ |