Add missing methods to Conference object

Add setAudioState, onPlayDtmf and onStopDtmf to the conference object.
This fixes DTMF tones for conference calls.

Bug: 17512380
Change-Id: Ice9403d3d750131f077a3ea129b7f67430c68348
This commit is contained in:
Yorke Lee
2014-09-15 19:18:13 -07:00
parent bd9d664743
commit a0d3ca9746
3 changed files with 60 additions and 3 deletions

View File

@@ -45,6 +45,7 @@ public abstract class Conference {
Collections.unmodifiableList(mChildConnections);
private PhoneAccountHandle mPhoneAccount;
private AudioState mAudioState;
private int mState = Connection.STATE_NEW;
private int mDisconnectCause = DisconnectCause.NOT_VALID;
private int mCapabilities;
@@ -95,6 +96,15 @@ public abstract class Conference {
return mCapabilities;
}
/**
* @return The audio state of the conference, describing how its audio is currently
* being routed by the system. This is {@code null} if this Conference
* does not directly know about its audio state.
*/
public final AudioState getAudioState() {
return mAudioState;
}
/**
* Invoked when the Conference and all it's {@link Connection}s should be disconnected.
*/
@@ -129,6 +139,25 @@ public abstract class Conference {
*/
public void onSwap() {}
/**
* Notifies this conference of a request to play a DTMF tone.
*
* @param c A DTMF character.
*/
public void onPlayDtmfTone(char c) {}
/**
* Notifies this conference of a request to stop any currently playing DTMF tones.
*/
public void onStopDtmfTone() {}
/**
* Notifies this conference that the {@link #getAudioState()} property has a new value.
*
* @param state The new call audio state.
*/
public void onAudioStateChanged(AudioState state) {}
/**
* Sets state to be on hold.
*/
@@ -255,6 +284,18 @@ public abstract class Conference {
return this;
}
/**
* Inform this Conference that the state of its audio output has been changed externally.
*
* @param state The new audio state.
* @hide
*/
final void setAudioState(AudioState state) {
Log.d(this, "setAudioState %s", state);
mAudioState = state;
onAudioStateChanged(state);
}
private void setState(int newState) {
if (newState != Connection.STATE_ACTIVE &&
newState != Connection.STATE_HOLDING &&