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 Bundle mExtras;
|
||||||
private Set<String> mPreviousExtraKeys;
|
private Set<String> mPreviousExtraKeys;
|
||||||
private final Object mExtrasLock = new Object();
|
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() {
|
private final Connection.Listener mConnectionDeathListener = new Connection.Listener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -987,11 +991,66 @@ public abstract class Conference extends Conferenceable {
|
|||||||
*/
|
*/
|
||||||
public final void setAddress(Uri address, int presentation) {
|
public final void setAddress(Uri address, int presentation) {
|
||||||
Log.d(this, "setAddress %s", address);
|
Log.d(this, "setAddress %s", address);
|
||||||
|
mAddress = address;
|
||||||
|
mAddressPresentation = presentation;
|
||||||
for (Listener l : mListeners) {
|
for (Listener l : mListeners) {
|
||||||
l.onAddressChanged(this, address, presentation);
|
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
|
* 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
|
* {@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) {
|
public final void setCallerDisplayName(String callerDisplayName, int presentation) {
|
||||||
Log.d(this, "setCallerDisplayName %s", callerDisplayName);
|
Log.d(this, "setCallerDisplayName %s", callerDisplayName);
|
||||||
|
mCallerDisplayName = callerDisplayName;
|
||||||
|
mCallerDisplayNamePresentation = presentation;
|
||||||
for (Listener l : mListeners) {
|
for (Listener l : mListeners) {
|
||||||
l.onCallerDisplayNameChanged(this, callerDisplayName, presentation);
|
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;
|
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");
|
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("]");
|
builder.append("]");
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2056,7 +2056,11 @@ public abstract class ConnectionService extends Service {
|
|||||||
conference.getConnectTimeMillis(),
|
conference.getConnectTimeMillis(),
|
||||||
conference.getConnectionStartElapsedRealTime(),
|
conference.getConnectionStartElapsedRealTime(),
|
||||||
conference.getStatusHints(),
|
conference.getStatusHints(),
|
||||||
conference.getExtras());
|
conference.getExtras(),
|
||||||
|
conference.getAddress(),
|
||||||
|
conference.getAddressPresentation(),
|
||||||
|
conference.getCallerDisplayName(),
|
||||||
|
conference.getCallerDisplayNamePresentation());
|
||||||
|
|
||||||
mAdapter.addConferenceCall(id, parcelableConference);
|
mAdapter.addConferenceCall(id, parcelableConference);
|
||||||
mAdapter.setVideoProvider(id, conference.getVideoProvider());
|
mAdapter.setVideoProvider(id, conference.getVideoProvider());
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package android.telecom;
|
package android.telecom;
|
||||||
|
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
@@ -42,6 +43,10 @@ public final class ParcelableConference implements Parcelable {
|
|||||||
private StatusHints mStatusHints;
|
private StatusHints mStatusHints;
|
||||||
private Bundle mExtras;
|
private Bundle mExtras;
|
||||||
private long mConnectElapsedTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
|
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(
|
public ParcelableConference(
|
||||||
PhoneAccountHandle phoneAccount,
|
PhoneAccountHandle phoneAccount,
|
||||||
@@ -54,7 +59,11 @@ public final class ParcelableConference implements Parcelable {
|
|||||||
long connectTimeMillis,
|
long connectTimeMillis,
|
||||||
long connectElapsedTimeMillis,
|
long connectElapsedTimeMillis,
|
||||||
StatusHints statusHints,
|
StatusHints statusHints,
|
||||||
Bundle extras) {
|
Bundle extras,
|
||||||
|
Uri address,
|
||||||
|
int addressPresentation,
|
||||||
|
String callerDisplayName,
|
||||||
|
int callerDisplayNamePresentation) {
|
||||||
mPhoneAccount = phoneAccount;
|
mPhoneAccount = phoneAccount;
|
||||||
mState = state;
|
mState = state;
|
||||||
mConnectionCapabilities = connectionCapabilities;
|
mConnectionCapabilities = connectionCapabilities;
|
||||||
@@ -66,6 +75,10 @@ public final class ParcelableConference implements Parcelable {
|
|||||||
mStatusHints = statusHints;
|
mStatusHints = statusHints;
|
||||||
mExtras = extras;
|
mExtras = extras;
|
||||||
mConnectElapsedTimeMillis = connectElapsedTimeMillis;
|
mConnectElapsedTimeMillis = connectElapsedTimeMillis;
|
||||||
|
mAddress = address;
|
||||||
|
mAddressPresentation = addressPresentation;
|
||||||
|
mCallerDisplayName = callerDisplayName;
|
||||||
|
mCallerDisplayNamePresentation = callerDisplayNamePresentation;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -134,6 +147,14 @@ public final class ParcelableConference implements Parcelable {
|
|||||||
return mExtras;
|
return mExtras;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Uri getHandle() {
|
||||||
|
return mAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getHandlePresentation() {
|
||||||
|
return mAddressPresentation;
|
||||||
|
}
|
||||||
|
|
||||||
public static final @android.annotation.NonNull Parcelable.Creator<ParcelableConference> CREATOR =
|
public static final @android.annotation.NonNull Parcelable.Creator<ParcelableConference> CREATOR =
|
||||||
new Parcelable.Creator<ParcelableConference> () {
|
new Parcelable.Creator<ParcelableConference> () {
|
||||||
@Override
|
@Override
|
||||||
@@ -152,10 +173,15 @@ public final class ParcelableConference implements Parcelable {
|
|||||||
Bundle extras = source.readBundle(classLoader);
|
Bundle extras = source.readBundle(classLoader);
|
||||||
int properties = source.readInt();
|
int properties = source.readInt();
|
||||||
long connectElapsedTimeMillis = source.readLong();
|
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,
|
return new ParcelableConference(phoneAccount, state, capabilities, properties,
|
||||||
connectionIds, videoCallProvider, videoState, connectTimeMillis,
|
connectionIds, videoCallProvider, videoState, connectTimeMillis,
|
||||||
connectElapsedTimeMillis, statusHints, extras);
|
connectElapsedTimeMillis, statusHints, extras, address, addressPresentation,
|
||||||
|
callerDisplayName, callerDisplayNamePresentation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -185,5 +211,9 @@ public final class ParcelableConference implements Parcelable {
|
|||||||
destination.writeBundle(mExtras);
|
destination.writeBundle(mExtras);
|
||||||
destination.writeInt(mConnectionProperties);
|
destination.writeInt(mConnectionProperties);
|
||||||
destination.writeLong(mConnectElapsedTimeMillis);
|
destination.writeLong(mConnectElapsedTimeMillis);
|
||||||
|
destination.writeParcelable(mAddress, 0);
|
||||||
|
destination.writeInt(mAddressPresentation);
|
||||||
|
destination.writeString(mCallerDisplayName);
|
||||||
|
destination.writeInt(mCallerDisplayNamePresentation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user