Add Connection.setAudioModeIsVoip

This API will be used by Telecomm to set the call's audio mode.

Change-Id: I29028e614c598d1f2501c4dfdcdbfc929b09f925
This commit is contained in:
Sailesh Nepal
2014-07-07 22:49:44 -07:00
parent 6dc7e4e46c
commit 33aaae4a07
7 changed files with 73 additions and 0 deletions

View File

@@ -27626,6 +27626,7 @@ package android.telecomm {
public abstract class Connection {
ctor protected Connection();
method public final boolean getAudioModeIsVoip();
method public final android.telecomm.CallAudioState getCallAudioState();
method public final java.util.List<android.telecomm.Connection> getChildConnections();
method public final int getFeatures();
@@ -27650,6 +27651,7 @@ package android.telecomm {
method protected void onStopDtmfTone();
method protected void onUnhold();
method public final void setActive();
method public final void setAudioModeIsVoip(boolean);
method public final void setCallVideoProvider(android.telecomm.CallVideoProvider);
method public final void setDestroyed();
method public final void setDialing();
@@ -27810,6 +27812,7 @@ package android.telecomm {
method public void addListener(android.telecomm.RemoteConnection.Listener);
method public void answer();
method public void disconnect();
method public boolean getAudioModeIsVoip();
method public int getDisconnectCause();
method public java.lang.String getDisconnectMessage();
method public int getFeatures();
@@ -27830,6 +27833,7 @@ package android.telecomm {
method public abstract void onFeaturesChanged(android.telecomm.RemoteConnection, int);
method public abstract void onPostDialWait(android.telecomm.RemoteConnection, java.lang.String);
method public abstract void onRequestingRingback(android.telecomm.RemoteConnection, boolean);
method public abstract void onSetAudioModeIsVoip(android.telecomm.RemoteConnection, boolean);
method public abstract void onStateChanged(android.telecomm.RemoteConnection, int);
}

View File

@@ -44,6 +44,7 @@ public abstract class Connection {
void onConferenceCapableChanged(Connection c, boolean isConferenceCapable);
void onParentConnectionChanged(Connection c, Connection parent);
void onSetCallVideoProvider(Connection c, CallVideoProvider callVideoProvider);
void onSetAudioModeIsVoip(Connection c, boolean isVoip);
}
/** @hide */
@@ -81,6 +82,9 @@ public abstract class Connection {
@Override
public void onSetCallVideoProvider(Connection c, CallVideoProvider callVideoProvider) {}
@Override
public void onSetAudioModeIsVoip(Connection c, boolean isVoip) {}
}
public final class State {
@@ -104,6 +108,7 @@ public abstract class Connection {
private boolean mRequestingRingback = false;
private boolean mIsConferenceCapable = false;
private Connection mParentConnection;
private boolean mAudioModeIsVoip;
/**
* Create a new Connection.
@@ -164,6 +169,13 @@ public abstract class Connection {
return !mChildConnections.isEmpty();
}
/**
* @return True if the connection's audio mode is VOIP.
*/
public final boolean getAudioModeIsVoip() {
return mAudioModeIsVoip;
}
/**
* Assign a listener to be notified of state changes.
*
@@ -407,6 +419,18 @@ public abstract class Connection {
}
}
/**
* Requests that the framework use VOIP audio mode for this connection.
*
* @param isVoip True if the audio mode is VOIP.
*/
public final void setAudioModeIsVoip(boolean isVoip) {
mAudioModeIsVoip = isVoip;
for (Listener l : mListeners) {
l.onSetAudioModeIsVoip(this, isVoip);
}
}
/**
* Notifies this Connection and listeners that the {@link #getCallAudioState()} property
* has a new value.

View File

@@ -364,6 +364,12 @@ public abstract class ConnectionService extends Service {
String id = mIdByConnection.get(c);
mAdapter.setCallVideoProvider(id, callVideoProvider);
}
@Override
public void onSetAudioModeIsVoip(Connection c, boolean isVoip) {
String id = mIdByConnection.get(c);
mAdapter.setAudioModeIsVoip(id, isVoip);
}
};
/** {@inheritDoc} */

View File

@@ -320,6 +320,21 @@ final class ConnectionServiceAdapter implements DeathRecipient {
}
}
/**
* Requests that the framework use VOIP audio mode for this connection.
*
* @param callId The unique ID of the call to set with the given call video provider.
* @param isVoip True if the audio mode is VOIP.
*/
void setAudioModeIsVoip(String callId, boolean isVoip) {
for (IConnectionServiceAdapter adapter : mAdapters) {
try {
adapter.setAudioModeIsVoip(callId, isVoip);
} catch (RemoteException e) {
}
}
}
/**
* Set the features associated with the given call.
* Features are defined in {@link android.telecomm.CallFeatures} and are passed in as a

View File

@@ -37,6 +37,7 @@ public final class RemoteConnection {
void onRequestingRingback(RemoteConnection connection, boolean ringback);
void onPostDialWait(RemoteConnection connection, String remainingDigits);
void onFeaturesChanged(RemoteConnection connection, int features);
void onSetAudioModeIsVoip(RemoteConnection connection, boolean isVoip);
void onDestroyed(RemoteConnection connection);
}
@@ -50,6 +51,7 @@ public final class RemoteConnection {
private boolean mRequestingRingback;
private boolean mConnected;
private int mFeatures;
private boolean mAudioModeIsVoip;
/**
* @hide
@@ -85,6 +87,10 @@ public final class RemoteConnection {
return mFeatures;
}
public boolean getAudioModeIsVoip() {
return mAudioModeIsVoip;
}
public void abort() {
try {
if (mConnected) {
@@ -252,4 +258,12 @@ public final class RemoteConnection {
l.onFeaturesChanged(this, features);
}
}
/** @hide */
void setAudioModeIsVoip(boolean isVoip) {
mAudioModeIsVoip = isVoip;
for (Listener l : mListeners) {
l.onSetAudioModeIsVoip(this, isVoip);
}
}
}

View File

@@ -193,6 +193,14 @@ final class RemoteConnectionService implements DeathRecipient {
mConnection.setFeatures(features);
}
}
/** ${inheritDoc} */
@Override
public final void setAudioModeIsVoip(String connectionId, boolean isVoip) {
if (isCurrentConnection(connectionId)) {
mConnection.setAudioModeIsVoip(isVoip);
}
}
};
RemoteConnectionService(ComponentName componentName, IConnectionService connectionService)

View File

@@ -64,4 +64,6 @@ oneway interface IConnectionServiceAdapter {
void setCallVideoProvider(String callId, ICallVideoProvider callVideoProvider);
void setFeatures(String callId, int features);
void setAudioModeIsVoip(String callId, boolean isVoip);
}