Enhancements to conference for non-conference host scenarios.
When a device A creates a conference call containing device B and C, both B and C can receive IMS signaling to indicate that they are in a conference call. This occurs on most domestic carriers; the Telephony framework uses the "multiparty" indicator on the IMS call to switch the call to a conference call. We made some changes to how conference calls are logged in Q which improves the accuracy of the call durations. We used to log calls as they're merged into a conference. In the case of a participant in a remotely hosted conference call, we'd log the call as soon as they are remotely added to the conference. This is unfortunate as the call durations are grossly under-reported. The conference call logging changes now assume we'll log the conference event package children in the conference instead of the participants which merge into the conference itself. On domestic carriers, since the call on B (or C) becomes a conference, we would then no longer log the call. This is FURTHER complicated because on some carriers, B and C will ALSO receive a conference event package from the network showing all the participants in the conference. So if B hangs up on the conference, they will have entries in their call log for A and C, which is really strange because a call to C was never originated on their device. In Telecom we need to ensure we do not log remotely hosted conference participants, and we need to ensure that we DO log a remotely hosted conference as if its just a single party call. To accomplish this we need: 1. the address and name display information associated with the call from A-B / A-C prior to the call turning into a remotely hosted conference. We need this to log to the call log 2. the remotely hosted conference and participants need to be marked in a manner that Telecom can identify them. Test: Manual test. Test: Add unit test to cover this logging scenario. Bug: 132325382 Change-Id: I65e713f68d1695a48d96dacbf7faa4476cd8d815
This commit is contained in:
@@ -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