Merge "Rename AudioState to CallAudioState" into mnc-dev

This commit is contained in:
Yorke Lee
2015-05-14 01:21:06 +00:00
committed by Android (Google) Code Review
15 changed files with 479 additions and 81 deletions

View File

@@ -29940,23 +29940,6 @@ package android.system {
package android.telecom {
public final class AudioState implements android.os.Parcelable {
ctor public AudioState(boolean, int, int);
ctor public AudioState(android.telecom.AudioState);
method public static java.lang.String audioRouteToString(int);
method public int describeContents();
method public int getRoute();
method public int getSupportedRouteMask();
method public boolean isMuted();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telecom.AudioState> CREATOR;
field public static final int ROUTE_BLUETOOTH = 2; // 0x2
field public static final int ROUTE_EARPIECE = 1; // 0x1
field public static final int ROUTE_SPEAKER = 8; // 0x8
field public static final int ROUTE_WIRED_HEADSET = 4; // 0x4
field public static final int ROUTE_WIRED_OR_EARPIECE = 5; // 0x5
}
public final class Call {
method public void answer(int);
method public void conference(android.telecom.Call);
@@ -30050,11 +30033,27 @@ package android.telecom {
field public static final int PROPERTY_WIFI = 8; // 0x8
}
public final class CallAudioState implements android.os.Parcelable {
ctor public CallAudioState(boolean, int, int);
method public static java.lang.String audioRouteToString(int);
method public int describeContents();
method public int getRoute();
method public int getSupportedRouteMask();
method public boolean isMuted();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telecom.CallAudioState> CREATOR;
field public static final int ROUTE_BLUETOOTH = 2; // 0x2
field public static final int ROUTE_EARPIECE = 1; // 0x1
field public static final int ROUTE_SPEAKER = 8; // 0x8
field public static final int ROUTE_WIRED_HEADSET = 4; // 0x4
field public static final int ROUTE_WIRED_OR_EARPIECE = 5; // 0x5
}
public abstract class Conference implements android.telecom.Conferenceable {
ctor public Conference(android.telecom.PhoneAccountHandle);
method public final boolean addConnection(android.telecom.Connection);
method public final void destroy();
method public final android.telecom.AudioState getAudioState();
method public final android.telecom.CallAudioState getCallAudioState();
method public final java.util.List<android.telecom.Connection> getConferenceableConnections();
method public final int getConnectionCapabilities();
method public final long getConnectionTime();
@@ -30065,7 +30064,7 @@ package android.telecom {
method public final android.telecom.StatusHints getStatusHints();
method public android.telecom.Connection.VideoProvider getVideoProvider();
method public int getVideoState();
method public void onAudioStateChanged(android.telecom.AudioState);
method public void onCallAudioStateChanged(android.telecom.CallAudioState);
method public void onConnectionAdded(android.telecom.Connection);
method public void onDisconnect();
method public void onHold();
@@ -30101,7 +30100,7 @@ package android.telecom {
method public final android.net.Uri getAddress();
method public final int getAddressPresentation();
method public final boolean getAudioModeIsVoip();
method public final android.telecom.AudioState getAudioState();
method public final android.telecom.CallAudioState getCallAudioState();
method public final java.lang.String getCallerDisplayName();
method public final int getCallerDisplayNamePresentation();
method public final android.telecom.Conference getConference();
@@ -30115,7 +30114,7 @@ package android.telecom {
method public void onAbort();
method public void onAnswer(int);
method public void onAnswer();
method public void onAudioStateChanged(android.telecom.AudioState);
method public void onCallAudioStateChanged(android.telecom.CallAudioState);
method public void onDisconnect();
method public void onHold();
method public void onPlayDtmfTone(char);
@@ -30273,12 +30272,12 @@ package android.telecom {
public abstract class InCallService extends android.app.Service {
ctor public InCallService();
method public final boolean canAddCall();
method public final android.telecom.AudioState getAudioState();
method public final android.telecom.CallAudioState getCallAudioState();
method public final java.util.List<android.telecom.Call> getCalls();
method public void onAudioStateChanged(android.telecom.AudioState);
method public android.os.IBinder onBind(android.content.Intent);
method public void onBringToForeground(boolean);
method public void onCallAdded(android.telecom.Call);
method public void onCallAudioStateChanged(android.telecom.CallAudioState);
method public void onCallRemoved(android.telecom.Call);
method public void onCanAddCallChanged(boolean);
method public final void setAudioRoute(int);
@@ -30390,7 +30389,7 @@ package android.telecom {
method public final void registerCallback(android.telecom.RemoteConference.Callback);
method public final void registerCallback(android.telecom.RemoteConference.Callback, android.os.Handler);
method public void separate(android.telecom.RemoteConnection);
method public void setAudioState(android.telecom.AudioState);
method public void setCallAudioState(android.telecom.CallAudioState);
method public void stopDtmfTone();
method public void swap();
method public void unhold();
@@ -30430,7 +30429,7 @@ package android.telecom {
method public void registerCallback(android.telecom.RemoteConnection.Callback);
method public void registerCallback(android.telecom.RemoteConnection.Callback, android.os.Handler);
method public void reject();
method public void setAudioState(android.telecom.AudioState);
method public void setCallAudioState(android.telecom.CallAudioState);
method public void stopDtmfTone();
method public void unhold();
method public void unregisterCallback(android.telecom.RemoteConnection.Callback);

View File

@@ -32066,9 +32066,10 @@ package android.system {
package android.telecom {
public final class AudioState implements android.os.Parcelable {
public deprecated class AudioState implements android.os.Parcelable {
ctor public AudioState(boolean, int, int);
ctor public AudioState(android.telecom.AudioState);
ctor public AudioState(android.telecom.CallAudioState);
method public static java.lang.String audioRouteToString(int);
method public int describeContents();
method public int getRoute();
@@ -32183,11 +32184,28 @@ package android.telecom {
ctor public Call.Listener();
}
public final class CallAudioState implements android.os.Parcelable {
ctor public CallAudioState(boolean, int, int);
method public static java.lang.String audioRouteToString(int);
method public int describeContents();
method public int getRoute();
method public int getSupportedRouteMask();
method public boolean isMuted();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telecom.CallAudioState> CREATOR;
field public static final int ROUTE_BLUETOOTH = 2; // 0x2
field public static final int ROUTE_EARPIECE = 1; // 0x1
field public static final int ROUTE_SPEAKER = 8; // 0x8
field public static final int ROUTE_WIRED_HEADSET = 4; // 0x4
field public static final int ROUTE_WIRED_OR_EARPIECE = 5; // 0x5
}
public abstract class Conference implements android.telecom.Conferenceable {
ctor public Conference(android.telecom.PhoneAccountHandle);
method public final boolean addConnection(android.telecom.Connection);
method public final void destroy();
method public final android.telecom.AudioState getAudioState();
method public final deprecated android.telecom.AudioState getAudioState();
method public final android.telecom.CallAudioState getCallAudioState();
method public final java.util.List<android.telecom.Connection> getConferenceableConnections();
method public final deprecated long getConnectTimeMillis();
method public final int getConnectionCapabilities();
@@ -32200,7 +32218,8 @@ package android.telecom {
method public final android.telecom.StatusHints getStatusHints();
method public android.telecom.Connection.VideoProvider getVideoProvider();
method public int getVideoState();
method public void onAudioStateChanged(android.telecom.AudioState);
method public deprecated void onAudioStateChanged(android.telecom.AudioState);
method public void onCallAudioStateChanged(android.telecom.CallAudioState);
method public void onConnectionAdded(android.telecom.Connection);
method public void onDisconnect();
method public void onHold();
@@ -32237,7 +32256,8 @@ package android.telecom {
method public final android.net.Uri getAddress();
method public final int getAddressPresentation();
method public final boolean getAudioModeIsVoip();
method public final android.telecom.AudioState getAudioState();
method public final deprecated android.telecom.AudioState getAudioState();
method public final android.telecom.CallAudioState getCallAudioState();
method public final java.lang.String getCallerDisplayName();
method public final int getCallerDisplayNamePresentation();
method public final android.telecom.Conference getConference();
@@ -32251,7 +32271,8 @@ package android.telecom {
method public void onAbort();
method public void onAnswer(int);
method public void onAnswer();
method public void onAudioStateChanged(android.telecom.AudioState);
method public deprecated void onAudioStateChanged(android.telecom.AudioState);
method public void onCallAudioStateChanged(android.telecom.CallAudioState);
method public void onDisconnect();
method public void onHold();
method public void onPlayDtmfTone(char);
@@ -32409,13 +32430,13 @@ package android.telecom {
public abstract class InCallService extends android.app.Service {
ctor public InCallService();
method public final boolean canAddCall();
method public final android.telecom.AudioState getAudioState();
method public final android.telecom.CallAudioState getCallAudioState();
method public final java.util.List<android.telecom.Call> getCalls();
method public deprecated android.telecom.Phone getPhone();
method public void onAudioStateChanged(android.telecom.AudioState);
method public android.os.IBinder onBind(android.content.Intent);
method public void onBringToForeground(boolean);
method public void onCallAdded(android.telecom.Call);
method public void onCallAudioStateChanged(android.telecom.CallAudioState);
method public void onCallRemoved(android.telecom.Call);
method public void onCanAddCallChanged(boolean);
method public deprecated void onPhoneCreated(android.telecom.Phone);
@@ -32456,7 +32477,8 @@ package android.telecom {
public final deprecated class Phone {
method public final void addListener(android.telecom.Phone.Listener);
method public final boolean canAddCall();
method public final android.telecom.AudioState getAudioState();
method public final deprecated android.telecom.AudioState getAudioState();
method public final android.telecom.CallAudioState getCallAudioState();
method public final java.util.List<android.telecom.Call> getCalls();
method public final void removeListener(android.telecom.Phone.Listener);
method public final void setAudioRoute(int);
@@ -32465,9 +32487,10 @@ package android.telecom {
public static abstract class Phone.Listener {
ctor public Phone.Listener();
method public void onAudioStateChanged(android.telecom.Phone, android.telecom.AudioState);
method public deprecated void onAudioStateChanged(android.telecom.Phone, android.telecom.AudioState);
method public void onBringToForeground(android.telecom.Phone, boolean);
method public void onCallAdded(android.telecom.Phone, android.telecom.Call);
method public void onCallAudioStateChanged(android.telecom.Phone, android.telecom.CallAudioState);
method public void onCallRemoved(android.telecom.Phone, android.telecom.Call);
method public void onCanAddCallChanged(android.telecom.Phone, boolean);
}
@@ -32549,7 +32572,8 @@ package android.telecom {
method public final void registerCallback(android.telecom.RemoteConference.Callback);
method public final void registerCallback(android.telecom.RemoteConference.Callback, android.os.Handler);
method public void separate(android.telecom.RemoteConnection);
method public void setAudioState(android.telecom.AudioState);
method public deprecated void setAudioState(android.telecom.AudioState);
method public void setCallAudioState(android.telecom.CallAudioState);
method public void stopDtmfTone();
method public void swap();
method public void unhold();
@@ -32589,7 +32613,8 @@ package android.telecom {
method public void registerCallback(android.telecom.RemoteConnection.Callback);
method public void registerCallback(android.telecom.RemoteConnection.Callback, android.os.Handler);
method public void reject();
method public void setAudioState(android.telecom.AudioState);
method public deprecated void setAudioState(android.telecom.AudioState);
method public void setCallAudioState(android.telecom.CallAudioState);
method public void stopDtmfTone();
method public void unhold();
method public void unregisterCallback(android.telecom.RemoteConnection.Callback);

View File

@@ -16,6 +16,7 @@
package android.telecom;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
@@ -24,8 +25,12 @@ import java.util.Locale;
/**
* Encapsulates the telecom audio state, including the current audio routing, supported audio
* routing and mute.
* @deprecated - use {@link CallAudioState} instead.
* @hide
*/
public final class AudioState implements Parcelable {
@Deprecated
@SystemApi
public class AudioState implements Parcelable {
/** Direct the audio stream through the device's earpiece. */
public static final int ROUTE_EARPIECE = 0x00000001;
@@ -64,6 +69,12 @@ public final class AudioState implements Parcelable {
supportedRouteMask = state.getSupportedRouteMask();
}
public AudioState(CallAudioState state) {
isMuted = state.isMuted();
route = state.getRoute();
supportedRouteMask = state.getSupportedRouteMask();
}
@Override
public boolean equals(Object obj) {
if (obj == null) {

View File

@@ -0,0 +1,22 @@
/*
* Copyright 2014, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.telecom;
/**
* {@hide}
*/
parcelable CallAudioState;

View File

@@ -0,0 +1,209 @@
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.telecom;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.Locale;
/**
* Encapsulates the telecom audio state, including the current audio routing, supported audio
* routing and mute.
*/
public final class CallAudioState implements Parcelable {
/** Direct the audio stream through the device's earpiece. */
public static final int ROUTE_EARPIECE = 0x00000001;
/** Direct the audio stream through Bluetooth. */
public static final int ROUTE_BLUETOOTH = 0x00000002;
/** Direct the audio stream through a wired headset. */
public static final int ROUTE_WIRED_HEADSET = 0x00000004;
/** Direct the audio stream through the device's speakerphone. */
public static final int ROUTE_SPEAKER = 0x00000008;
/**
* Direct the audio stream through the device's earpiece or wired headset if one is
* connected.
*/
public static final int ROUTE_WIRED_OR_EARPIECE = ROUTE_EARPIECE | ROUTE_WIRED_HEADSET;
/** Bit mask of all possible audio routes. */
private static final int ROUTE_ALL = ROUTE_EARPIECE | ROUTE_BLUETOOTH | ROUTE_WIRED_HEADSET |
ROUTE_SPEAKER;
private final boolean isMuted;
private final int route;
private final int supportedRouteMask;
/**
* Constructor for a {@link CallAudioState} object.
*
* @param muted {@code true} if the call is muted, {@code false} otherwise.
* @param route The current audio route being used.
* Allowed values:
* {@link #ROUTE_EARPIECE}
* {@link #ROUTE_BLUETOOTH}
* {@link #ROUTE_WIRED_HEADSET}
* {@link #ROUTE_SPEAKER}
* @param supportedRouteMask Bit mask of all routes supported by this call. This should be a
* bitwise combination of the following values:
* {@link #ROUTE_EARPIECE}
* {@link #ROUTE_BLUETOOTH}
* {@link #ROUTE_WIRED_HEADSET}
* {@link #ROUTE_SPEAKER}
*/
public CallAudioState(boolean muted, int route, int supportedRouteMask) {
this.isMuted = muted;
this.route = route;
this.supportedRouteMask = supportedRouteMask;
}
/** @hide */
public CallAudioState(CallAudioState state) {
isMuted = state.isMuted();
route = state.getRoute();
supportedRouteMask = state.getSupportedRouteMask();
}
/** @hide */
@SuppressWarnings("deprecation")
public CallAudioState(AudioState state) {
isMuted = state.isMuted();
route = state.getRoute();
supportedRouteMask = state.getSupportedRouteMask();
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (!(obj instanceof CallAudioState)) {
return false;
}
CallAudioState state = (CallAudioState) obj;
return isMuted() == state.isMuted() && getRoute() == state.getRoute() &&
getSupportedRouteMask() == state.getSupportedRouteMask();
}
@Override
public String toString() {
return String.format(Locale.US,
"[AudioState isMuted: %b, route: %s, supportedRouteMask: %s]",
isMuted,
audioRouteToString(route),
audioRouteToString(supportedRouteMask));
}
/**
* @return {@code true} if the call is muted, {@code false} otherwise.
*/
public boolean isMuted() {
return isMuted;
}
/**
* @return The current audio route being used.
*/
public int getRoute() {
return route;
}
/**
* @return Bit mask of all routes supported by this call.
*/
public int getSupportedRouteMask() {
return supportedRouteMask;
}
/**
* Converts the provided audio route into a human readable string representation.
*
* @param route to convert into a string.
*
* @return String representation of the provided audio route.
*/
public static String audioRouteToString(int route) {
if (route == 0 || (route & ~ROUTE_ALL) != 0x0) {
return "UNKNOWN";
}
StringBuffer buffer = new StringBuffer();
if ((route & ROUTE_EARPIECE) == ROUTE_EARPIECE) {
listAppend(buffer, "EARPIECE");
}
if ((route & ROUTE_BLUETOOTH) == ROUTE_BLUETOOTH) {
listAppend(buffer, "BLUETOOTH");
}
if ((route & ROUTE_WIRED_HEADSET) == ROUTE_WIRED_HEADSET) {
listAppend(buffer, "WIRED_HEADSET");
}
if ((route & ROUTE_SPEAKER) == ROUTE_SPEAKER) {
listAppend(buffer, "SPEAKER");
}
return buffer.toString();
}
/**
* Responsible for creating AudioState objects for deserialized Parcels.
*/
public static final Parcelable.Creator<CallAudioState> CREATOR =
new Parcelable.Creator<CallAudioState> () {
@Override
public CallAudioState createFromParcel(Parcel source) {
boolean isMuted = source.readByte() == 0 ? false : true;
int route = source.readInt();
int supportedRouteMask = source.readInt();
return new CallAudioState(isMuted, route, supportedRouteMask);
}
@Override
public CallAudioState[] newArray(int size) {
return new CallAudioState[size];
}
};
/**
* {@inheritDoc}
*/
@Override
public int describeContents() {
return 0;
}
/**
* Writes AudioState object into a serializeable Parcel.
*/
@Override
public void writeToParcel(Parcel destination, int flags) {
destination.writeByte((byte) (isMuted ? 1 : 0));
destination.writeInt(route);
destination.writeInt(supportedRouteMask);
}
private static void listAppend(StringBuffer buffer, String str) {
if (buffer.length() > 0) {
buffer.append(", ");
}
buffer.append(str);
}
}

View File

@@ -63,7 +63,7 @@ public abstract class Conference implements Conferenceable {
Collections.unmodifiableList(mConferenceableConnections);
private PhoneAccountHandle mPhoneAccount;
private AudioState mAudioState;
private CallAudioState mCallAudioState;
private int mState = Connection.STATE_NEW;
private DisconnectCause mDisconnectCause;
private int mConnectionCapabilities;
@@ -173,9 +173,22 @@ public abstract class Conference implements Conferenceable {
* @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.
* @deprecated Use {@link #getCallAudioState()} instead.
* @hide
*/
@Deprecated
@SystemApi
public final AudioState getAudioState() {
return mAudioState;
return new AudioState(mCallAudioState);
}
/**
* @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 CallAudioState getCallAudioState() {
return mCallAudioState;
}
/**
@@ -249,9 +262,20 @@ public abstract class Conference implements Conferenceable {
* Notifies this conference that the {@link #getAudioState()} property has a new value.
*
* @param state The new call audio state.
* @deprecated Use {@link #onCallAudioStateChanged(CallAudioState)} instead.
* @hide
*/
@SystemApi
@Deprecated
public void onAudioStateChanged(AudioState state) {}
/**
* Notifies this conference that the {@link #getCallAudioState()} property has a new value.
*
* @param state The new call audio state.
*/
public void onCallAudioStateChanged(CallAudioState state) {}
/**
* Notifies this conference that a connection has been added to it.
*
@@ -515,10 +539,11 @@ public abstract class Conference implements Conferenceable {
* @param state The new audio state.
* @hide
*/
final void setAudioState(AudioState state) {
Log.d(this, "setAudioState %s", state);
mAudioState = state;
onAudioStateChanged(state);
final void setCallAudioState(CallAudioState state) {
Log.d(this, "setCallAudioState %s", state);
mCallAudioState = state;
onAudioStateChanged(getAudioState());
onCallAudioStateChanged(state);
}
private void setState(int newState) {

View File

@@ -20,6 +20,7 @@ import com.android.internal.os.SomeArgs;
import com.android.internal.telecom.IVideoCallback;
import com.android.internal.telecom.IVideoProvider;
import android.annotation.SystemApi;
import android.net.Uri;
import android.os.Handler;
import android.os.IBinder;
@@ -817,7 +818,7 @@ public abstract class Connection implements Conferenceable {
Collections.unmodifiableList(mConferenceables);
private int mState = STATE_NEW;
private AudioState mAudioState;
private CallAudioState mCallAudioState;
private Uri mAddress;
private int mAddressPresentation;
private String mCallerDisplayName;
@@ -892,9 +893,22 @@ public abstract class Connection implements Conferenceable {
* @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.
* @deprecated Use {@link #getCallAudioState()} instead.
* @hide
*/
@SystemApi
@Deprecated
public final AudioState getAudioState() {
return mAudioState;
return new AudioState(mCallAudioState);
}
/**
* @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.
*/
public final CallAudioState getCallAudioState() {
return mCallAudioState;
}
/**
@@ -968,11 +982,12 @@ public abstract class Connection implements Conferenceable {
* @param state The new audio state.
* @hide
*/
final void setAudioState(AudioState state) {
final void setCallAudioState(CallAudioState state) {
checkImmutable();
Log.d(this, "setAudioState %s", state);
mAudioState = state;
onAudioStateChanged(state);
mCallAudioState = state;
onAudioStateChanged(getAudioState());
onCallAudioStateChanged(state);
}
/**
@@ -1359,9 +1374,20 @@ public abstract class Connection implements Conferenceable {
* Notifies this Connection that the {@link #getAudioState()} property has a new value.
*
* @param state The new connection audio state.
* @deprecated Use {@link #onCallAudioStateChanged(CallAudioState)} instead.
* @hide
*/
@SystemApi
@Deprecated
public void onAudioStateChanged(AudioState state) {}
/**
* Notifies this Connection that the {@link #getCallAudioState()} property has a new value.
*
* @param state The new connection audio state.
*/
public void onCallAudioStateChanged(CallAudioState state) {}
/**
* Notifies this Connection of an internal state change. This method is called after the
* state is changed.

View File

@@ -90,7 +90,7 @@ public abstract class ConnectionService extends Service {
private static final int MSG_DISCONNECT = 6;
private static final int MSG_HOLD = 7;
private static final int MSG_UNHOLD = 8;
private static final int MSG_ON_AUDIO_STATE_CHANGED = 9;
private static final int MSG_ON_CALL_AUDIO_STATE_CHANGED = 9;
private static final int MSG_PLAY_DTMF_TONE = 10;
private static final int MSG_STOP_DTMF_TONE = 11;
private static final int MSG_CONFERENCE = 12;
@@ -180,11 +180,11 @@ public abstract class ConnectionService extends Service {
}
@Override
public void onAudioStateChanged(String callId, AudioState audioState) {
public void onCallAudioStateChanged(String callId, CallAudioState callAudioState) {
SomeArgs args = SomeArgs.obtain();
args.arg1 = callId;
args.arg2 = audioState;
mHandler.obtainMessage(MSG_ON_AUDIO_STATE_CHANGED, args).sendToTarget();
args.arg2 = callAudioState;
mHandler.obtainMessage(MSG_ON_CALL_AUDIO_STATE_CHANGED, args).sendToTarget();
}
@Override
@@ -304,12 +304,12 @@ public abstract class ConnectionService extends Service {
case MSG_UNHOLD:
unhold((String) msg.obj);
break;
case MSG_ON_AUDIO_STATE_CHANGED: {
case MSG_ON_CALL_AUDIO_STATE_CHANGED: {
SomeArgs args = (SomeArgs) msg.obj;
try {
String callId = (String) args.arg1;
AudioState audioState = (AudioState) args.arg2;
onAudioStateChanged(callId, audioState);
CallAudioState audioState = (CallAudioState) args.arg2;
onCallAudioStateChanged(callId, new CallAudioState(audioState));
} finally {
args.recycle();
}
@@ -688,12 +688,14 @@ public abstract class ConnectionService extends Service {
}
}
private void onAudioStateChanged(String callId, AudioState audioState) {
Log.d(this, "onAudioStateChanged %s %s", callId, audioState);
private void onCallAudioStateChanged(String callId, CallAudioState callAudioState) {
Log.d(this, "onAudioStateChanged %s %s", callId, callAudioState);
if (mConnectionById.containsKey(callId)) {
findConnectionForAction(callId, "onAudioStateChanged").setAudioState(audioState);
findConnectionForAction(callId, "onCallAudioStateChanged").setCallAudioState(
callAudioState);
} else {
findConferenceForAction(callId, "onAudioStateChanged").setAudioState(audioState);
findConferenceForAction(callId, "onCallAudioStateChanged").setCallAudioState(
callAudioState);
}
}

View File

@@ -119,7 +119,7 @@ public final class InCallAdapter {
}
/**
* Sets the audio route (speaker, bluetooth, etc...). See {@link AudioState}.
* Sets the audio route (speaker, bluetooth, etc...). See {@link CallAudioState}.
*
* @param route The audio route to use.
*/

View File

@@ -52,7 +52,7 @@ public abstract class InCallService extends Service {
private static final int MSG_ADD_CALL = 2;
private static final int MSG_UPDATE_CALL = 3;
private static final int MSG_SET_POST_DIAL_WAIT = 4;
private static final int MSG_ON_AUDIO_STATE_CHANGED = 5;
private static final int MSG_ON_CALL_AUDIO_STATE_CHANGED = 5;
private static final int MSG_BRING_TO_FOREGROUND = 6;
private static final int MSG_ON_CAN_ADD_CALL_CHANGED = 7;
@@ -87,8 +87,8 @@ public abstract class InCallService extends Service {
}
break;
}
case MSG_ON_AUDIO_STATE_CHANGED:
mPhone.internalAudioStateChanged((AudioState) msg.obj);
case MSG_ON_CALL_AUDIO_STATE_CHANGED:
mPhone.internalCallAudioStateChanged((CallAudioState) msg.obj);
break;
case MSG_BRING_TO_FOREGROUND:
mPhone.internalBringToForeground(msg.arg1 == 1);
@@ -133,8 +133,8 @@ public abstract class InCallService extends Service {
}
@Override
public void onAudioStateChanged(AudioState audioState) {
mHandler.obtainMessage(MSG_ON_AUDIO_STATE_CHANGED, audioState).sendToTarget();
public void onCallAudioStateChanged(CallAudioState callAudioState) {
mHandler.obtainMessage(MSG_ON_CALL_AUDIO_STATE_CHANGED, callAudioState).sendToTarget();
}
@Override
@@ -156,6 +156,10 @@ public abstract class InCallService extends Service {
InCallService.this.onAudioStateChanged(audioState);
}
public void onCallAudioStateChanged(Phone phone, CallAudioState callAudioState) {
InCallService.this.onCallAudioStateChanged(callAudioState);
};
/** ${inheritDoc} */
@Override
public void onBringToForeground(Phone phone, boolean showDialpad) {
@@ -248,14 +252,27 @@ public abstract class InCallService extends Service {
*
* @return An object encapsulating the audio state. Returns null if the service is not
* fully initialized.
* @deprecated Use {@link #getCallAudioState()} instead.
* @hide
*/
@Deprecated
public final AudioState getAudioState() {
return mPhone == null ? null : mPhone.getAudioState();
}
/**
* Obtains the current phone call audio state.
*
* @return An object encapsulating the audio state. Returns null if the service is not
* fully initialized.
*/
public final CallAudioState getCallAudioState() {
return mPhone == null ? null : mPhone.getCallAudioState();
}
/**
* Sets the microphone mute state. When this request is honored, there will be change to
* the {@link #getAudioState()}.
* the {@link #getCallAudioState()}.
*
* @param state {@code true} if the microphone should be muted; {@code false} otherwise.
*/
@@ -267,7 +284,7 @@ public abstract class InCallService extends Service {
/**
* Sets the audio route (speaker, bluetooth, etc...). When this request is honored, there will
* be change to the {@link #getAudioState()}.
* be change to the {@link #getCallAudioState()}.
*
* @param route The audio route to use.
*/
@@ -311,10 +328,21 @@ public abstract class InCallService extends Service {
* Called when the audio state changes.
*
* @param audioState The new {@link AudioState}.
* @deprecated Use {@link #onCallAudioStateChanged(CallAudioState) instead}.
* @hide
*/
@Deprecated
public void onAudioStateChanged(AudioState audioState) {
}
/**
* Called when the audio state changes.
*
* @param audioState The new {@link CallAudioState}.
*/
public void onCallAudioStateChanged(CallAudioState audioState) {
}
/**
* Called to bring the in-call screen to the foreground. The in-call experience should
* respond immediately by coming to the foreground to inform the user of the state of

View File

@@ -41,9 +41,20 @@ public final class Phone {
*
* @param phone The {@code Phone} calling this method.
* @param audioState The new {@link AudioState}.
*
* @deprecated Use {@link #onCallAudioStateChanged(Phone, CallAudioState)} instead.
*/
@Deprecated
public void onAudioStateChanged(Phone phone, AudioState audioState) { }
/**
* Called when the audio state changes.
*
* @param phone The {@code Phone} calling this method.
* @param callAudioState The new {@link CallAudioState}.
*/
public void onCallAudioStateChanged(Phone phone, CallAudioState callAudioState) { }
/**
* Called to bring the in-call screen to the foreground. The in-call experience should
* respond immediately by coming to the foreground to inform the user of the state of
@@ -100,7 +111,7 @@ public final class Phone {
private final InCallAdapter mInCallAdapter;
private AudioState mAudioState;
private CallAudioState mCallAudioState;
private final List<Listener> mListeners = new CopyOnWriteArrayList<>();
@@ -145,10 +156,10 @@ public final class Phone {
}
}
final void internalAudioStateChanged(AudioState audioState) {
if (!Objects.equals(mAudioState, audioState)) {
mAudioState = audioState;
fireAudioStateChanged(audioState);
final void internalCallAudioStateChanged(CallAudioState callAudioState) {
if (!Objects.equals(mCallAudioState, callAudioState)) {
mCallAudioState = callAudioState;
fireCallAudioStateChanged(callAudioState);
}
}
@@ -271,9 +282,20 @@ public final class Phone {
* Obtains the current phone call audio state of the {@code Phone}.
*
* @return An object encapsulating the audio state.
* @deprecated Use {@link #getCallAudioState()} instead.
*/
@Deprecated
public final AudioState getAudioState() {
return mAudioState;
return new AudioState(mCallAudioState);
}
/**
* Obtains the current phone call audio state of the {@code Phone}.
*
* @return An object encapsulating the audio state.
*/
public final CallAudioState getCallAudioState() {
return mCallAudioState;
}
private void fireCallAdded(Call call) {
@@ -288,9 +310,10 @@ public final class Phone {
}
}
private void fireAudioStateChanged(AudioState audioState) {
private void fireCallAudioStateChanged(CallAudioState audioState) {
for (Listener listener : mListeners) {
listener.onAudioStateChanged(this, audioState);
listener.onCallAudioStateChanged(this, audioState);
listener.onAudioStateChanged(this, new AudioState(audioState));
}
}

View File

@@ -18,6 +18,7 @@ package android.telecom;
import com.android.internal.telecom.IConnectionService;
import android.annotation.SystemApi;
import android.os.Handler;
import android.os.RemoteException;
@@ -355,14 +356,27 @@ public final class RemoteConference {
* can include audio routing (Bluetooth, Speaker, etc) and muting state.
*
* @see android.telecom.AudioState
* @deprecated Use {@link #setCallAudioState(CallAudioState)} instead.
* @hide
*/
@SystemApi
@Deprecated
public void setAudioState(AudioState state) {
setCallAudioState(new CallAudioState(state));
}
/**
* Request to change the conference's audio routing to the specified state. The specified state
* can include audio routing (Bluetooth, Speaker, etc) and muting state.
*/
public void setCallAudioState(CallAudioState state) {
try {
mConnectionService.onAudioStateChanged(mId, state);
mConnectionService.onCallAudioStateChanged(mId, state);
} catch (RemoteException e) {
}
}
/**
* Returns a list of independent connections that can me merged with this conference.
*

View File

@@ -20,6 +20,7 @@ import com.android.internal.telecom.IConnectionService;
import com.android.internal.telecom.IVideoCallback;
import com.android.internal.telecom.IVideoProvider;
import android.annotation.SystemApi;
import android.net.Uri;
import android.os.Handler;
import android.os.IBinder;
@@ -776,11 +777,24 @@ public final class RemoteConnection {
* Set the audio state of this {@code RemoteConnection}.
*
* @param state The audio state of this {@code RemoteConnection}.
* @hide
* @deprecated Use {@link #setCallAudioState(CallAudioState) instead.
*/
@SystemApi
@Deprecated
public void setAudioState(AudioState state) {
setCallAudioState(new CallAudioState(state));
}
/**
* Set the audio state of this {@code RemoteConnection}.
*
* @param state The audio state of this {@code RemoteConnection}.
*/
public void setCallAudioState(CallAudioState state) {
try {
if (mConnected) {
mConnectionService.onAudioStateChanged(mConnectionId, state);
mConnectionService.onCallAudioStateChanged(mConnectionId, state);
}
} catch (RemoteException ignored) {
}

View File

@@ -17,7 +17,7 @@
package com.android.internal.telecom;
import android.os.Bundle;
import android.telecom.AudioState;
import android.telecom.CallAudioState;
import android.telecom.ConnectionRequest;
import android.telecom.PhoneAccountHandle;
@@ -56,7 +56,7 @@ oneway interface IConnectionService {
void unhold(String callId);
void onAudioStateChanged(String activeCallId, in AudioState audioState);
void onCallAudioStateChanged(String activeCallId, in CallAudioState callAudioState);
void playDtmfTone(String callId, char digit);

View File

@@ -17,7 +17,7 @@
package com.android.internal.telecom;
import android.app.PendingIntent;
import android.telecom.AudioState;
import android.telecom.CallAudioState;
import android.telecom.ParcelableCall;
import com.android.internal.telecom.IInCallAdapter;
@@ -40,7 +40,7 @@ oneway interface IInCallService {
void setPostDialWait(String callId, String remaining);
void onAudioStateChanged(in AudioState audioState);
void onCallAudioStateChanged(in CallAudioState callAudioState);
void bringToForeground(boolean showDialpad);