Merge "DO NOT MERGE. Allow ConnectionService to ask Telecomm for ringback" into lmp-preview-dev
This commit is contained in:
@@ -156,5 +156,17 @@ public final class CallServiceAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Asks Telecomm to start or stop a ringback tone for a call.
|
||||
*
|
||||
* @param callId The unique ID of the call whose ringback is being changed.
|
||||
* @param ringback Whether Telecomm should start playing a ringback tone.
|
||||
*/
|
||||
public void setRequestingRingback(String callId, boolean ringback) {
|
||||
try {
|
||||
mAdapter.setRequestingRingback(callId, ringback);
|
||||
} catch (RemoteException e) {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ public abstract class Connection {
|
||||
void onHandleChanged(Connection c, Uri newHandle);
|
||||
void onSignalChanged(Connection c, Bundle details);
|
||||
void onDisconnected(Connection c, int cause, String message);
|
||||
void onRequestingRingback(Connection c, boolean ringback);
|
||||
void onDestroyed(Connection c);
|
||||
}
|
||||
|
||||
@@ -60,6 +61,10 @@ public abstract class Connection {
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public void onDestroyed(Connection c) {}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public void onRequestingRingback(Connection c, boolean ringback) {}
|
||||
}
|
||||
|
||||
public final class State {
|
||||
@@ -77,6 +82,7 @@ public abstract class Connection {
|
||||
private int mState = State.NEW;
|
||||
private CallAudioState mCallAudioState;
|
||||
private Uri mHandle;
|
||||
private boolean mRequestingRingback = false;
|
||||
|
||||
/**
|
||||
* Create a new Connection.
|
||||
@@ -267,6 +273,14 @@ public abstract class Connection {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Whether this connection is requesting that the system play a ringback tone
|
||||
* on its behalf.
|
||||
*/
|
||||
public boolean isRequestingRingback() {
|
||||
return mRequestingRingback;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the {@link #getHandle()} property and notifies listeners.
|
||||
*
|
||||
@@ -286,6 +300,7 @@ public abstract class Connection {
|
||||
* communicate).
|
||||
*/
|
||||
protected void setActive() {
|
||||
setRequestingRingback(false);
|
||||
setState(State.ACTIVE);
|
||||
}
|
||||
|
||||
@@ -328,6 +343,21 @@ public abstract class Connection {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests that the framework play a ringback tone. This is to be invoked by implementations
|
||||
* that do not play a ringback tone themselves in the call's audio stream.
|
||||
*
|
||||
* @param ringback Whether the ringback tone is to be played.
|
||||
*/
|
||||
protected void setRequestingRingback(boolean ringback) {
|
||||
if (mRequestingRingback != ringback) {
|
||||
mRequestingRingback = ringback;
|
||||
for (Listener l : mListeners) {
|
||||
l.onRequestingRingback(this, ringback);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Notifies this Connection and listeners that the {@link #getCallAudioState()} property
|
||||
* has a new value.
|
||||
@@ -336,7 +366,7 @@ public abstract class Connection {
|
||||
*/
|
||||
protected void onSetAudioState(CallAudioState state) {
|
||||
// TODO: Enforce super called
|
||||
this.mCallAudioState = state;
|
||||
mCallAudioState = state;
|
||||
for (Listener l : mListeners) {
|
||||
l.onAudioStateChanged(this, state);
|
||||
}
|
||||
@@ -355,6 +385,21 @@ public abstract class Connection {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Notifies this Connection of an internal state change. This method is called before the
|
||||
* state is actually changed. Overriding implementations must call
|
||||
* {@code super.onSetState(state)}.
|
||||
*
|
||||
* @param state The new state, a {@link Connection.State} member.
|
||||
*/
|
||||
protected void onSetState(int state) {
|
||||
// TODO: Enforce super called
|
||||
this.mState = state;
|
||||
for (Listener l : mListeners) {
|
||||
l.onStateChanged(this, state);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Notifies this Connection of a request to play a DTMF tone.
|
||||
*
|
||||
@@ -401,9 +446,6 @@ public abstract class Connection {
|
||||
|
||||
private void setState(int state) {
|
||||
Log.d(this, "setState: %s", stateToString(state));
|
||||
this.mState = state;
|
||||
for (Listener l : mListeners) {
|
||||
l.onStateChanged(this, state);
|
||||
}
|
||||
onSetState(state);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,6 +89,13 @@ public abstract class ConnectionService extends CallService {
|
||||
public void onDestroyed(Connection c) {
|
||||
removeConnection(c);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestingRingback(Connection c, boolean ringback) {
|
||||
String id = mIdByConnection.get(c);
|
||||
Log.d(this, "Adapter onRingback %b", ringback);
|
||||
getAdapter().setRequestingRingback(id, ringback);
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
|
||||
@@ -43,4 +43,6 @@ oneway interface ICallServiceAdapter {
|
||||
void setDisconnected(String callId, int disconnectCause, String disconnectMessage);
|
||||
|
||||
void setOnHold(String callId);
|
||||
|
||||
void setRequestingRingback(String callId, boolean ringing);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user