Merge "Add a new call direction parameter to conferences for multiparty" into rvc-dev

This commit is contained in:
Brad Ebinger
2020-04-10 17:14:01 +00:00
committed by Android (Google) Code Review
3 changed files with 175 additions and 82 deletions

View File

@@ -1092,16 +1092,16 @@ public abstract class Conference extends Conferenceable {
* This is applicable in two cases:
* <ol>
* <li>When {@link #setConferenceState(boolean)} is used to mark a conference as
* temporarily "not a conference"; we need to present the correct address in the in-call
* UI.</li>
* temporarily "not a conference"; we need to present the correct address presentation in
* the in-call UI.</li>
* <li>When the conference is not hosted on the current device, we need to know the address
* information for the purpose of showing the original address to the user, as well as for
* logging to the call log.</li>
* presentation information for the purpose of showing the original address to the user, as
* well as for logging to the call log.</li>
* </ol>
* @return The address of the conference, or {@code null} if not applicable.
* @return The address presentation of the conference.
* @hide
*/
public final int getAddressPresentation() {
public final @TelecomManager.Presentation int getAddressPresentation() {
return mAddressPresentation;
}

View File

@@ -1865,25 +1865,23 @@ public abstract class ConnectionService extends Service {
mConferenceById.put(callId, conference);
mIdByConference.put(conference, callId);
conference.addListener(mConferenceListener);
ParcelableConference parcelableConference = new ParcelableConference(
request.getAccountHandle(),
conference.getState(),
conference.getConnectionCapabilities(),
conference.getConnectionProperties(),
Collections.<String>emptyList(), //connectionIds
conference.getVideoProvider() == null ?
null : conference.getVideoProvider().getInterface(),
conference.getVideoState(),
conference.getConnectTimeMillis(),
conference.getConnectionStartElapsedRealtimeMillis(),
conference.getStatusHints(),
conference.getExtras(),
conference.getAddress(),
conference.getAddressPresentation(),
conference.getCallerDisplayName(),
conference.getCallerDisplayNamePresentation(),
conference.getDisconnectCause(),
conference.isRingbackRequested());
ParcelableConference parcelableConference = new ParcelableConference.Builder(
request.getAccountHandle(), conference.getState())
.setConnectionCapabilities(conference.getConnectionCapabilities())
.setConnectionProperties(conference.getConnectionProperties())
.setVideoAttributes(conference.getVideoProvider() == null
? null : conference.getVideoProvider().getInterface(),
conference.getVideoState())
.setConnectTimeMillis(conference.getConnectTimeMillis(),
conference.getConnectionStartElapsedRealtimeMillis())
.setStatusHints(conference.getStatusHints())
.setExtras(conference.getExtras())
.setAddress(conference.getAddress(), conference.getAddressPresentation())
.setCallerDisplayName(conference.getCallerDisplayName(),
conference.getCallerDisplayNamePresentation())
.setDisconnectCause(conference.getDisconnectCause())
.setRingbackRequested(conference.isRingbackRequested())
.build();
if (conference.getState() != Connection.STATE_DISCONNECTED) {
conference.setTelecomCallId(callId);
mAdapter.setVideoProvider(callId, conference.getVideoProvider());
@@ -2484,23 +2482,25 @@ public abstract class ConnectionService extends Service {
}
}
conference.setTelecomCallId(id);
ParcelableConference parcelableConference = new ParcelableConference(
conference.getPhoneAccountHandle(),
conference.getState(),
conference.getConnectionCapabilities(),
conference.getConnectionProperties(),
connectionIds,
conference.getVideoProvider() == null ?
null : conference.getVideoProvider().getInterface(),
conference.getVideoState(),
conference.getConnectTimeMillis(),
conference.getConnectionStartElapsedRealtimeMillis(),
conference.getStatusHints(),
conference.getExtras(),
conference.getAddress(),
conference.getAddressPresentation(),
conference.getCallerDisplayName(),
conference.getCallerDisplayNamePresentation());
ParcelableConference parcelableConference = new ParcelableConference.Builder(
conference.getPhoneAccountHandle(), conference.getState())
.setConnectionCapabilities(conference.getConnectionCapabilities())
.setConnectionProperties(conference.getConnectionProperties())
.setConnectionIds(connectionIds)
.setVideoAttributes(conference.getVideoProvider() == null
? null : conference.getVideoProvider().getInterface(),
conference.getVideoState())
.setConnectTimeMillis(conference.getConnectTimeMillis(),
conference.getConnectionStartElapsedRealtimeMillis())
.setStatusHints(conference.getStatusHints())
.setExtras(conference.getExtras())
.setAddress(conference.getAddress(), conference.getAddressPresentation())
.setCallerDisplayName(conference.getCallerDisplayName(),
conference.getCallerDisplayNamePresentation())
.setDisconnectCause(conference.getDisconnectCause())
.setRingbackRequested(conference.isRingbackRequested())
.setCallDirection(conference.getCallDirection())
.build();
mAdapter.addConferenceCall(id, parcelableConference);
mAdapter.setVideoProvider(id, conference.getVideoProvider());

View File

@@ -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);
}
}