Merge "Enhancements to conference for non-conference host scenarios." into qt-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
d28f0c8c78
@@ -95,6 +95,10 @@ public abstract class Conference extends Conferenceable {
|
||||
private Bundle mExtras;
|
||||
private Set<String> mPreviousExtraKeys;
|
||||
private final Object mExtrasLock = new Object();
|
||||
private Uri mAddress;
|
||||
private int mAddressPresentation;
|
||||
private String mCallerDisplayName;
|
||||
private int mCallerDisplayNamePresentation;
|
||||
|
||||
private final Connection.Listener mConnectionDeathListener = new Connection.Listener() {
|
||||
@Override
|
||||
@@ -987,11 +991,66 @@ public abstract class Conference extends Conferenceable {
|
||||
*/
|
||||
public final void setAddress(Uri address, int presentation) {
|
||||
Log.d(this, "setAddress %s", address);
|
||||
mAddress = address;
|
||||
mAddressPresentation = presentation;
|
||||
for (Listener l : mListeners) {
|
||||
l.onAddressChanged(this, address, presentation);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the "address" associated with the conference. 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>
|
||||
* <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>
|
||||
* </ol>
|
||||
* @return The address of the conference, or {@code null} if not applicable.
|
||||
* @hide
|
||||
*/
|
||||
public final Uri getAddress() {
|
||||
return mAddress;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the address presentation associated with the conference.
|
||||
* <p>
|
||||
* 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>
|
||||
* <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>
|
||||
* </ol>
|
||||
* @return The address of the conference, or {@code null} if not applicable.
|
||||
* @hide
|
||||
*/
|
||||
public final int getAddressPresentation() {
|
||||
return mAddressPresentation;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The caller display name (CNAP).
|
||||
* @hide
|
||||
*/
|
||||
public final String getCallerDisplayName() {
|
||||
return mCallerDisplayName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The presentation requirements for the handle.
|
||||
* See {@link TelecomManager} for valid values.
|
||||
* @hide
|
||||
*/
|
||||
public final int getCallerDisplayNamePresentation() {
|
||||
return mCallerDisplayNamePresentation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the caller display name (CNAP) of this {@link Conference}. Used when
|
||||
* {@link #setConferenceState(boolean)} is called to mark a conference temporarily as NOT a
|
||||
@@ -1004,6 +1063,8 @@ public abstract class Conference extends Conferenceable {
|
||||
*/
|
||||
public final void setCallerDisplayName(String callerDisplayName, int presentation) {
|
||||
Log.d(this, "setCallerDisplayName %s", callerDisplayName);
|
||||
mCallerDisplayName = callerDisplayName;
|
||||
mCallerDisplayNamePresentation = presentation;
|
||||
for (Listener l : mListeners) {
|
||||
l.onCallerDisplayNameChanged(this, callerDisplayName, presentation);
|
||||
}
|
||||
|
||||
@@ -424,8 +424,16 @@ public abstract class Connection extends Conferenceable {
|
||||
*/
|
||||
public static final int PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL = 1 << 10;
|
||||
|
||||
/**
|
||||
* Set by the framework to indicate that a Conference or Connection is hosted by a device other
|
||||
* than the current one. Used in scenarios where the conference originator is the remote device
|
||||
* and the current device is a participant of that conference.
|
||||
* @hide
|
||||
*/
|
||||
public static final int PROPERTY_REMOTELY_HOSTED = 1 << 11;
|
||||
|
||||
//**********************************************************************************************
|
||||
// Next PROPERTY value: 1<<10
|
||||
// Next PROPERTY value: 1<<12
|
||||
//**********************************************************************************************
|
||||
|
||||
/**
|
||||
@@ -850,6 +858,10 @@ public abstract class Connection extends Conferenceable {
|
||||
builder.append(isLong ? " PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL" : " ecall");
|
||||
}
|
||||
|
||||
if (can(properties, PROPERTY_REMOTELY_HOSTED)) {
|
||||
builder.append(isLong ? " PROPERTY_REMOTELY_HOSTED" : " remote_hst");
|
||||
}
|
||||
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
@@ -2056,7 +2056,11 @@ public abstract class ConnectionService extends Service {
|
||||
conference.getConnectTimeMillis(),
|
||||
conference.getConnectionStartElapsedRealTime(),
|
||||
conference.getStatusHints(),
|
||||
conference.getExtras());
|
||||
conference.getExtras(),
|
||||
conference.getAddress(),
|
||||
conference.getAddressPresentation(),
|
||||
conference.getCallerDisplayName(),
|
||||
conference.getCallerDisplayNamePresentation());
|
||||
|
||||
mAdapter.addConferenceCall(id, parcelableConference);
|
||||
mAdapter.setVideoProvider(id, conference.getVideoProvider());
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package android.telecom;
|
||||
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
@@ -42,6 +43,10 @@ public final class ParcelableConference implements Parcelable {
|
||||
private StatusHints mStatusHints;
|
||||
private Bundle mExtras;
|
||||
private long mConnectElapsedTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
|
||||
private final Uri mAddress;
|
||||
private final int mAddressPresentation;
|
||||
private final String mCallerDisplayName;
|
||||
private final int mCallerDisplayNamePresentation;
|
||||
|
||||
public ParcelableConference(
|
||||
PhoneAccountHandle phoneAccount,
|
||||
@@ -54,7 +59,11 @@ public final class ParcelableConference implements Parcelable {
|
||||
long connectTimeMillis,
|
||||
long connectElapsedTimeMillis,
|
||||
StatusHints statusHints,
|
||||
Bundle extras) {
|
||||
Bundle extras,
|
||||
Uri address,
|
||||
int addressPresentation,
|
||||
String callerDisplayName,
|
||||
int callerDisplayNamePresentation) {
|
||||
mPhoneAccount = phoneAccount;
|
||||
mState = state;
|
||||
mConnectionCapabilities = connectionCapabilities;
|
||||
@@ -66,6 +75,10 @@ public final class ParcelableConference implements Parcelable {
|
||||
mStatusHints = statusHints;
|
||||
mExtras = extras;
|
||||
mConnectElapsedTimeMillis = connectElapsedTimeMillis;
|
||||
mAddress = address;
|
||||
mAddressPresentation = addressPresentation;
|
||||
mCallerDisplayName = callerDisplayName;
|
||||
mCallerDisplayNamePresentation = callerDisplayNamePresentation;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -134,6 +147,14 @@ public final class ParcelableConference implements Parcelable {
|
||||
return mExtras;
|
||||
}
|
||||
|
||||
public Uri getHandle() {
|
||||
return mAddress;
|
||||
}
|
||||
|
||||
public int getHandlePresentation() {
|
||||
return mAddressPresentation;
|
||||
}
|
||||
|
||||
public static final @android.annotation.NonNull Parcelable.Creator<ParcelableConference> CREATOR =
|
||||
new Parcelable.Creator<ParcelableConference> () {
|
||||
@Override
|
||||
@@ -152,10 +173,15 @@ public final class ParcelableConference implements Parcelable {
|
||||
Bundle extras = source.readBundle(classLoader);
|
||||
int properties = source.readInt();
|
||||
long connectElapsedTimeMillis = source.readLong();
|
||||
Uri address = source.readParcelable(classLoader);
|
||||
int addressPresentation = source.readInt();
|
||||
String callerDisplayName = source.readString();
|
||||
int callerDisplayNamePresentation = source.readInt();
|
||||
|
||||
return new ParcelableConference(phoneAccount, state, capabilities, properties,
|
||||
connectionIds, videoCallProvider, videoState, connectTimeMillis,
|
||||
connectElapsedTimeMillis, statusHints, extras);
|
||||
connectElapsedTimeMillis, statusHints, extras, address, addressPresentation,
|
||||
callerDisplayName, callerDisplayNamePresentation);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -185,5 +211,9 @@ public final class ParcelableConference implements Parcelable {
|
||||
destination.writeBundle(mExtras);
|
||||
destination.writeInt(mConnectionProperties);
|
||||
destination.writeLong(mConnectElapsedTimeMillis);
|
||||
destination.writeParcelable(mAddress, 0);
|
||||
destination.writeInt(mAddressPresentation);
|
||||
destination.writeString(mCallerDisplayName);
|
||||
destination.writeInt(mCallerDisplayNamePresentation);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user