Add a new call direction parameter to conferences for multiparty
1) Refactor ParcelableConference - too many optional params 2) Add a new call direction parameter for external multiparty call scenarios, where a conference is assigned a direction. Bug: 153595501 Test: atest TelecomUnitTests TeleServiceTests Change-Id: Icb576a07b9a7a81e228babfea53474be83da7593
This commit is contained in:
@@ -22,6 +22,7 @@ import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import com.android.internal.telecom.IVideoProvider;
|
||||
@@ -32,25 +33,130 @@ import com.android.internal.telecom.IVideoProvider;
|
||||
*/
|
||||
public final class ParcelableConference implements Parcelable {
|
||||
|
||||
private PhoneAccountHandle mPhoneAccount;
|
||||
private int mState;
|
||||
private int mConnectionCapabilities;
|
||||
private int mConnectionProperties;
|
||||
private List<String> mConnectionIds;
|
||||
private long mConnectTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
|
||||
public static final class Builder {
|
||||
private final PhoneAccountHandle mPhoneAccount;
|
||||
private final int mState;
|
||||
private int mConnectionCapabilities;
|
||||
private int mConnectionProperties;
|
||||
private List<String> mConnectionIds = Collections.emptyList();
|
||||
private long mConnectTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
|
||||
private IVideoProvider mVideoProvider;
|
||||
private int mVideoState = VideoProfile.STATE_AUDIO_ONLY;
|
||||
private StatusHints mStatusHints;
|
||||
private Bundle mExtras;
|
||||
private long mConnectElapsedTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
|
||||
private Uri mAddress;
|
||||
private int mAddressPresentation = TelecomManager.PRESENTATION_UNKNOWN;
|
||||
private String mCallerDisplayName;
|
||||
private int mCallerDisplayNamePresentation = TelecomManager.PRESENTATION_UNKNOWN;;
|
||||
private DisconnectCause mDisconnectCause;
|
||||
private boolean mRingbackRequested;
|
||||
private int mCallDirection = Call.Details.DIRECTION_UNKNOWN;
|
||||
|
||||
public Builder(
|
||||
PhoneAccountHandle phoneAccount,
|
||||
int state) {
|
||||
mPhoneAccount = phoneAccount;
|
||||
mState = state;
|
||||
}
|
||||
|
||||
public Builder setDisconnectCause(DisconnectCause cause) {
|
||||
mDisconnectCause = cause;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setRingbackRequested(boolean requested) {
|
||||
mRingbackRequested = requested;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setCallerDisplayName(String callerDisplayName,
|
||||
@TelecomManager.Presentation int callerDisplayNamePresentation) {
|
||||
mCallerDisplayName = callerDisplayName;
|
||||
mCallerDisplayNamePresentation = callerDisplayNamePresentation;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setAddress(Uri address,
|
||||
@TelecomManager.Presentation int addressPresentation) {
|
||||
mAddress = address;
|
||||
mAddressPresentation = addressPresentation;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setExtras(Bundle extras) {
|
||||
mExtras = extras;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setStatusHints(StatusHints hints) {
|
||||
mStatusHints = hints;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setConnectTimeMillis(long connectTimeMillis, long connectElapsedTimeMillis) {
|
||||
mConnectTimeMillis = connectTimeMillis;
|
||||
mConnectElapsedTimeMillis = connectElapsedTimeMillis;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setVideoAttributes(IVideoProvider provider,
|
||||
@VideoProfile.VideoState int videoState) {
|
||||
mVideoProvider = provider;
|
||||
mVideoState = videoState;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setConnectionIds(List<String> connectionIds) {
|
||||
mConnectionIds = connectionIds;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setConnectionProperties(int properties) {
|
||||
mConnectionProperties = properties;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setConnectionCapabilities(int capabilities) {
|
||||
mConnectionCapabilities = capabilities;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setCallDirection(int callDirection) {
|
||||
mCallDirection = callDirection;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ParcelableConference build() {
|
||||
return new ParcelableConference(mPhoneAccount, mState, mConnectionCapabilities,
|
||||
mConnectionProperties, mConnectionIds, mVideoProvider, mVideoState,
|
||||
mConnectTimeMillis, mConnectElapsedTimeMillis, mStatusHints, mExtras, mAddress,
|
||||
mAddressPresentation, mCallerDisplayName, mCallerDisplayNamePresentation,
|
||||
mDisconnectCause, mRingbackRequested, mCallDirection);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private final PhoneAccountHandle mPhoneAccount;
|
||||
private final int mState;
|
||||
private final int mConnectionCapabilities;
|
||||
private final int mConnectionProperties;
|
||||
private final List<String> mConnectionIds;
|
||||
private final long mConnectTimeMillis;
|
||||
private final IVideoProvider mVideoProvider;
|
||||
private final int mVideoState;
|
||||
private StatusHints mStatusHints;
|
||||
private Bundle mExtras;
|
||||
private long mConnectElapsedTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
|
||||
private final StatusHints mStatusHints;
|
||||
private final Bundle mExtras;
|
||||
private final long mConnectElapsedTimeMillis;
|
||||
private final Uri mAddress;
|
||||
private final int mAddressPresentation;
|
||||
private final String mCallerDisplayName;
|
||||
private final int mCallerDisplayNamePresentation;
|
||||
private DisconnectCause mDisconnectCause;
|
||||
private boolean mRingbackRequested;
|
||||
private final DisconnectCause mDisconnectCause;
|
||||
private final boolean mRingbackRequested;
|
||||
private final int mCallDirection;
|
||||
|
||||
public ParcelableConference(
|
||||
private ParcelableConference(
|
||||
PhoneAccountHandle phoneAccount,
|
||||
int state,
|
||||
int connectionCapabilities,
|
||||
@@ -67,31 +173,8 @@ public final class ParcelableConference implements Parcelable {
|
||||
String callerDisplayName,
|
||||
int callerDisplayNamePresentation,
|
||||
DisconnectCause disconnectCause,
|
||||
boolean ringbackRequested) {
|
||||
this(phoneAccount, state, connectionCapabilities, connectionProperties, connectionIds,
|
||||
videoProvider, videoState, connectTimeMillis, connectElapsedTimeMillis,
|
||||
statusHints, extras, address, addressPresentation, callerDisplayName,
|
||||
callerDisplayNamePresentation);
|
||||
mDisconnectCause = disconnectCause;
|
||||
mRingbackRequested = ringbackRequested;
|
||||
}
|
||||
|
||||
public ParcelableConference(
|
||||
PhoneAccountHandle phoneAccount,
|
||||
int state,
|
||||
int connectionCapabilities,
|
||||
int connectionProperties,
|
||||
List<String> connectionIds,
|
||||
IVideoProvider videoProvider,
|
||||
int videoState,
|
||||
long connectTimeMillis,
|
||||
long connectElapsedTimeMillis,
|
||||
StatusHints statusHints,
|
||||
Bundle extras,
|
||||
Uri address,
|
||||
int addressPresentation,
|
||||
String callerDisplayName,
|
||||
int callerDisplayNamePresentation) {
|
||||
boolean ringbackRequested,
|
||||
int callDirection) {
|
||||
mPhoneAccount = phoneAccount;
|
||||
mState = state;
|
||||
mConnectionCapabilities = connectionCapabilities;
|
||||
@@ -107,8 +190,9 @@ public final class ParcelableConference implements Parcelable {
|
||||
mAddressPresentation = addressPresentation;
|
||||
mCallerDisplayName = callerDisplayName;
|
||||
mCallerDisplayNamePresentation = callerDisplayNamePresentation;
|
||||
mDisconnectCause = null;
|
||||
mRingbackRequested = false;
|
||||
mDisconnectCause = disconnectCause;
|
||||
mRingbackRequested = ringbackRequested;
|
||||
mCallDirection = callDirection;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -134,6 +218,8 @@ public final class ParcelableConference implements Parcelable {
|
||||
.append(mRingbackRequested)
|
||||
.append(", disconnectCause: ")
|
||||
.append(mDisconnectCause)
|
||||
.append(", callDirection: ")
|
||||
.append(mCallDirection)
|
||||
.toString();
|
||||
}
|
||||
|
||||
@@ -192,10 +278,15 @@ public final class ParcelableConference implements Parcelable {
|
||||
public boolean isRingbackRequested() {
|
||||
return mRingbackRequested;
|
||||
}
|
||||
|
||||
public int getHandlePresentation() {
|
||||
return mAddressPresentation;
|
||||
}
|
||||
|
||||
public int getCallDirection() {
|
||||
return mCallDirection;
|
||||
}
|
||||
|
||||
public static final @android.annotation.NonNull Parcelable.Creator<ParcelableConference> CREATOR =
|
||||
new Parcelable.Creator<ParcelableConference> () {
|
||||
@Override
|
||||
@@ -220,12 +311,13 @@ public final class ParcelableConference implements Parcelable {
|
||||
int callerDisplayNamePresentation = source.readInt();
|
||||
DisconnectCause disconnectCause = source.readParcelable(classLoader);
|
||||
boolean isRingbackRequested = source.readInt() == 1;
|
||||
int callDirection = source.readInt();
|
||||
|
||||
return new ParcelableConference(phoneAccount, state, capabilities, properties,
|
||||
connectionIds, videoCallProvider, videoState, connectTimeMillis,
|
||||
connectElapsedTimeMillis, statusHints, extras, address, addressPresentation,
|
||||
callerDisplayName, callerDisplayNamePresentation, disconnectCause,
|
||||
isRingbackRequested);
|
||||
isRingbackRequested, callDirection);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -261,5 +353,6 @@ public final class ParcelableConference implements Parcelable {
|
||||
destination.writeInt(mCallerDisplayNamePresentation);
|
||||
destination.writeParcelable(mDisconnectCause, 0);
|
||||
destination.writeInt(mRingbackRequested ? 1 : 0);
|
||||
destination.writeInt(mCallDirection);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user