Move Call state into Call.Details
The Telecom Call object is primarily a control object which allows control of a call and receipt of events related to a call. The actual properties and data pertaining to a call all exists in Call.Details... except for the call state (RINGING,ACTIVE, HOLD, etc). This CL moves the call state to the Call.Details class to remove this one dangling property of the base Call class. Test: Run Telecom CTS test suite. Bug: 163085177 Change-Id: I59413d3e14d03b48263a5cb351fe4e9a553b578e
This commit is contained in:
@@ -137,6 +137,27 @@ public final class Call {
|
||||
*/
|
||||
public static final int STATE_SIMULATED_RINGING = 13;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
@IntDef(prefix = { "STATE_" },
|
||||
value = {
|
||||
STATE_NEW,
|
||||
STATE_DIALING,
|
||||
STATE_RINGING,
|
||||
STATE_HOLDING,
|
||||
STATE_ACTIVE,
|
||||
STATE_DISCONNECTED,
|
||||
STATE_SELECT_PHONE_ACCOUNT,
|
||||
STATE_CONNECTING,
|
||||
STATE_DISCONNECTING,
|
||||
STATE_PULLING_CALL,
|
||||
STATE_AUDIO_PROCESSING,
|
||||
STATE_SIMULATED_RINGING
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface CallState {};
|
||||
|
||||
/**
|
||||
* The key to retrieve the optional {@code PhoneAccount}s Telecom can bundle with its Call
|
||||
* extras. Used to pass the phone accounts to display on the front end to the user in order to
|
||||
@@ -674,6 +695,7 @@ public final class Call {
|
||||
// Next PROPERTY value: 0x00004000
|
||||
//******************************************************************************************
|
||||
|
||||
private final @CallState int mState;
|
||||
private final String mTelecomCallId;
|
||||
private final Uri mHandle;
|
||||
private final int mHandlePresentation;
|
||||
@@ -868,6 +890,13 @@ public final class Call {
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the state of the {@link Call} represented by this {@link Call.Details}.
|
||||
*/
|
||||
public final @CallState int getState() {
|
||||
return mState;
|
||||
}
|
||||
|
||||
/** {@hide} */
|
||||
@TestApi
|
||||
public String getTelecomCallId() {
|
||||
@@ -1069,6 +1098,7 @@ public final class Call {
|
||||
if (o instanceof Details) {
|
||||
Details d = (Details) o;
|
||||
return
|
||||
Objects.equals(mState, d.mState) &&
|
||||
Objects.equals(mHandle, d.mHandle) &&
|
||||
Objects.equals(mHandlePresentation, d.mHandlePresentation) &&
|
||||
Objects.equals(mCallerDisplayName, d.mCallerDisplayName) &&
|
||||
@@ -1095,7 +1125,8 @@ public final class Call {
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(mHandle,
|
||||
return Objects.hash(mState,
|
||||
mHandle,
|
||||
mHandlePresentation,
|
||||
mCallerDisplayName,
|
||||
mCallerDisplayNamePresentation,
|
||||
@@ -1117,6 +1148,7 @@ public final class Call {
|
||||
|
||||
/** {@hide} */
|
||||
public Details(
|
||||
@CallState int state,
|
||||
String telecomCallId,
|
||||
Uri handle,
|
||||
int handlePresentation,
|
||||
@@ -1136,6 +1168,7 @@ public final class Call {
|
||||
String contactDisplayName,
|
||||
int callDirection,
|
||||
int callerNumberVerificationStatus) {
|
||||
mState = state;
|
||||
mTelecomCallId = telecomCallId;
|
||||
mHandle = handle;
|
||||
mHandlePresentation = handlePresentation;
|
||||
@@ -1160,6 +1193,7 @@ public final class Call {
|
||||
/** {@hide} */
|
||||
public static Details createFromParcelableCall(ParcelableCall parcelableCall) {
|
||||
return new Details(
|
||||
parcelableCall.getState(),
|
||||
parcelableCall.getId(),
|
||||
parcelableCall.getHandle(),
|
||||
parcelableCall.getHandlePresentation(),
|
||||
@@ -1186,6 +1220,8 @@ public final class Call {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("[id: ");
|
||||
sb.append(mTelecomCallId);
|
||||
sb.append(", state: ");
|
||||
sb.append(Call.stateToString(mState));
|
||||
sb.append(", pa: ");
|
||||
sb.append(mAccountHandle);
|
||||
sb.append(", hdl: ");
|
||||
@@ -1302,7 +1338,7 @@ public final class Call {
|
||||
* @param call The {@code Call} invoking this method.
|
||||
* @param state The new state of the {@code Call}.
|
||||
*/
|
||||
public void onStateChanged(Call call, int state) {}
|
||||
public void onStateChanged(Call call, @CallState int state) {}
|
||||
|
||||
/**
|
||||
* Invoked when the parent of this {@code Call} has changed. See {@link #getParent()}.
|
||||
@@ -2171,9 +2207,11 @@ public final class Call {
|
||||
/**
|
||||
* Obtains the state of this {@code Call}.
|
||||
*
|
||||
* @return A state value, chosen from the {@code STATE_*} constants.
|
||||
* @return The call state.
|
||||
* @deprecated The call state is available via {@link Call.Details#getState()}.
|
||||
*/
|
||||
public int getState() {
|
||||
@Deprecated
|
||||
public @CallState int getState() {
|
||||
return mState;
|
||||
}
|
||||
|
||||
@@ -2551,6 +2589,30 @@ public final class Call {
|
||||
final void internalSetDisconnected() {
|
||||
if (mState != Call.STATE_DISCONNECTED) {
|
||||
mState = Call.STATE_DISCONNECTED;
|
||||
if (mDetails != null) {
|
||||
mDetails = new Details(mState,
|
||||
mDetails.getTelecomCallId(),
|
||||
mDetails.getHandle(),
|
||||
mDetails.getHandlePresentation(),
|
||||
mDetails.getCallerDisplayName(),
|
||||
mDetails.getCallerDisplayNamePresentation(),
|
||||
mDetails.getAccountHandle(),
|
||||
mDetails.getCallCapabilities(),
|
||||
mDetails.getCallProperties(),
|
||||
mDetails.getDisconnectCause(),
|
||||
mDetails.getConnectTimeMillis(),
|
||||
mDetails.getGatewayInfo(),
|
||||
mDetails.getVideoState(),
|
||||
mDetails.getStatusHints(),
|
||||
mDetails.getExtras(),
|
||||
mDetails.getIntentExtras(),
|
||||
mDetails.getCreationTimeMillis(),
|
||||
mDetails.getContactDisplayName(),
|
||||
mDetails.getCallDirection(),
|
||||
mDetails.getCallerNumberVerificationStatus()
|
||||
);
|
||||
fireDetailsChanged(mDetails);
|
||||
}
|
||||
fireStateChanged(mState);
|
||||
fireCallDestroyed();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user