Add Connection.setCallCapabilities

This will be used to enable things like hold and
conferencing.

Change-Id: I90238eeefbcbfaa044881d80833b62e4474821d6
This commit is contained in:
Sailesh Nepal
2014-07-09 21:03:20 -07:00
parent 770a6cafad
commit 1a7061ba95
7 changed files with 42 additions and 26 deletions

View File

@@ -27626,13 +27626,13 @@ package android.telecomm {
ctor protected Connection();
method public final boolean getAudioModeIsVoip();
method public final android.telecomm.CallAudioState getCallAudioState();
method public final int getCallCapabilities();
method public final java.util.List<android.telecomm.Connection> getChildConnections();
method public final int getFeatures();
method public final android.net.Uri getHandle();
method public final android.telecomm.Connection getParentConnection();
method public final int getState();
method public final android.telecomm.StatusHints getStatusHints();
method public final boolean isConferenceCapable();
method public final boolean isConferenceConnection();
method public final boolean isRequestingRingback();
method protected void onAbort();
@@ -27651,13 +27651,13 @@ package android.telecomm {
method protected void onUnhold();
method public final void setActive();
method public final void setAudioModeIsVoip(boolean);
method public final void setCallCapabilities(int);
method public final void setCallVideoProvider(android.telecomm.CallVideoProvider);
method public final void setDestroyed();
method public final void setDialing();
method public final void setDisconnected(int, java.lang.String);
method public final void setFeatures(int);
method public final void setHandle(android.net.Uri);
method public final void setIsConferenceCapable(boolean);
method public final void setOnHold();
method public final void setParentConnection(android.telecomm.Connection);
method public final void setPostDialWait(java.lang.String);
@@ -27814,6 +27814,7 @@ package android.telecomm {
method public void answer();
method public void disconnect();
method public boolean getAudioModeIsVoip();
method public int getCallCapabilities();
method public int getDisconnectCause();
method public java.lang.String getDisconnectMessage();
method public int getFeatures();
@@ -27830,6 +27831,7 @@ package android.telecomm {
}
public static abstract interface RemoteConnection.Listener {
method public abstract void onCallCapabilitiesChanged(android.telecomm.RemoteConnection, int);
method public abstract void onDestroyed(android.telecomm.RemoteConnection);
method public abstract void onDisconnected(android.telecomm.RemoteConnection, int, java.lang.String);
method public abstract void onFeaturesChanged(android.telecomm.RemoteConnection, int);

View File

@@ -41,7 +41,7 @@ public abstract class Connection {
void onPostDialWait(Connection c, String remaining);
void onRequestingRingback(Connection c, boolean ringback);
void onDestroyed(Connection c);
void onConferenceCapableChanged(Connection c, boolean isConferenceCapable);
void onCallCapabilitiesChanged(Connection c, int callCapabilities);
void onParentConnectionChanged(Connection c, Connection parent);
void onSetCallVideoProvider(Connection c, CallVideoProvider callVideoProvider);
void onSetAudioModeIsVoip(Connection c, boolean isVoip);
@@ -76,7 +76,7 @@ public abstract class Connection {
public void onRequestingRingback(Connection c, boolean ringback) {}
@Override
public void onConferenceCapableChanged(Connection c, boolean isConferenceCapable) {}
public void onCallCapabilitiesChanged(Connection c, int callCapabilities) {}
@Override
public void onParentConnectionChanged(Connection c, Connection parent) {}
@@ -110,7 +110,7 @@ public abstract class Connection {
private CallAudioState mCallAudioState;
private Uri mHandle;
private boolean mRequestingRingback = false;
private boolean mIsConferenceCapable = false;
private int mCallCapabilities;
private Connection mParentConnection;
private boolean mAudioModeIsVoip;
private StatusHints mStatusHints;
@@ -279,10 +279,10 @@ public abstract class Connection {
}
/**
* Returns whether this connection is capable of being conferenced.
* Returns the connection's {@link CallCapabilities}
*/
public final boolean isConferenceCapable() {
return mIsConferenceCapable;
public final int getCallCapabilities() {
return mCallCapabilities;
}
/**
@@ -394,13 +394,15 @@ public abstract class Connection {
}
/**
* TODO(santoscordon): Needs documentation.
* Sets the connection's {@link CallCapabilities}.
*
* @param callCapabilities The new call capabilities.
*/
public final void setIsConferenceCapable(boolean isConferenceCapable) {
if (mIsConferenceCapable != isConferenceCapable) {
mIsConferenceCapable = isConferenceCapable;
public final void setCallCapabilities(int callCapabilities) {
if (mCallCapabilities != callCapabilities) {
mCallCapabilities = callCapabilities;
for (Listener l : mListeners) {
l.onConferenceCapableChanged(this, mIsConferenceCapable);
l.onCallCapabilitiesChanged(this, mCallCapabilities);
}
}
}

View File

@@ -346,9 +346,9 @@ public abstract class ConnectionService extends Service {
}
@Override
public void onConferenceCapableChanged(Connection c, boolean isConferenceCapable) {
public void onCallCapabilitiesChanged(Connection c, int callCapabilities) {
String id = mIdByConnection.get(c);
mAdapter.setCanConference(id, isConferenceCapable);
mAdapter.setCallCapabilities(id, callCapabilities);
}
/** ${inheritDoc} */

View File

@@ -221,16 +221,10 @@ final class ConnectionServiceAdapter implements DeathRecipient {
}
}
/**
* Indicates that the specified call can conference with any of the specified list of calls.
*
* @param callId The unique ID of the call.
* @param canConference Specified whether or not the call can be conferenced.
*/
void setCanConference(String callId, boolean canConference) {
void setCallCapabilities(String callId, int capabilities) {
for (IConnectionServiceAdapter adapter : mAdapters) {
try {
adapter.setCanConference(callId, canConference);
adapter.setCallCapabilities(callId, capabilities);
} catch (RemoteException ignored) {
}
}

View File

@@ -35,6 +35,7 @@ public final class RemoteConnection {
void onStateChanged(RemoteConnection connection, int state);
void onDisconnected(RemoteConnection connection, int cause, String message);
void onRequestingRingback(RemoteConnection connection, boolean ringback);
void onCallCapabilitiesChanged(RemoteConnection connection, int callCapabilities);
void onPostDialWait(RemoteConnection connection, String remainingDigits);
void onFeaturesChanged(RemoteConnection connection, int features);
void onSetAudioModeIsVoip(RemoteConnection connection, boolean isVoip);
@@ -51,6 +52,7 @@ public final class RemoteConnection {
private String mDisconnectMessage;
private boolean mRequestingRingback;
private boolean mConnected;
private int mCallCapabilities;
private int mFeatures;
private boolean mAudioModeIsVoip;
private StatusHints mStatusHints;
@@ -85,6 +87,10 @@ public final class RemoteConnection {
return mDisconnectMessage;
}
public int getCallCapabilities() {
return mCallCapabilities;
}
public int getFeatures() {
return mFeatures;
}
@@ -226,6 +232,16 @@ public final class RemoteConnection {
}
}
/**
* @hide
*/
void setCallCapabilities(int callCapabilities) {
mCallCapabilities = callCapabilities;
for (Listener l : mListeners) {
l.onCallCapabilitiesChanged(this, callCapabilities);
}
}
/**
* @hide
*/

View File

@@ -144,8 +144,10 @@ final class RemoteConnectionService implements DeathRecipient {
/** ${inheritDoc} */
@Override
public void setCanConference(String connectionId, boolean canConference) {
// not supported for remote connections.
public void setCallCapabilities(String connectionId, int callCapabilities) {
if (isCurrentConnection(connectionId)) {
mConnection.setCallCapabilities(callCapabilities);
}
}
/** ${inheritDoc} */

View File

@@ -50,7 +50,7 @@ oneway interface IConnectionServiceAdapter {
void setRequestingRingback(String callId, boolean ringing);
void setCanConference(String callId, boolean canConference);
void setCallCapabilities(String callId, int callCapabilities);
void setIsConferenced(String callId, String conferenceCallId);