| /* |
| * Copyright 2014, The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package android.telecom; |
| |
| import android.annotation.Nullable; |
| import android.compat.annotation.UnsupportedAppUsage; |
| import android.net.Uri; |
| import android.os.Build; |
| import android.os.Bundle; |
| import android.os.Parcel; |
| import android.os.Parcelable; |
| import android.os.RemoteException; |
| import android.telecom.Call.Details.CallDirection; |
| |
| import com.android.internal.telecom.IVideoProvider; |
| |
| import java.util.ArrayList; |
| import java.util.Collections; |
| import java.util.List; |
| |
| /** |
| * Information about a call that is used between InCallService and Telecom. |
| * @hide |
| */ |
| public final class ParcelableCall implements Parcelable { |
| |
| public static class ParcelableCallBuilder { |
| private String mId; |
| private int mState; |
| private DisconnectCause mDisconnectCause; |
| private List<String> mCannedSmsResponses; |
| private int mCapabilities; |
| private int mProperties; |
| private int mSupportedAudioRoutes; |
| private long mConnectTimeMillis; |
| private Uri mHandle; |
| private int mHandlePresentation; |
| private String mCallerDisplayName; |
| private int mCallerDisplayNamePresentation; |
| private GatewayInfo mGatewayInfo; |
| private PhoneAccountHandle mAccountHandle; |
| private boolean mIsVideoCallProviderChanged; |
| private IVideoProvider mVideoCallProvider; |
| private boolean mIsRttCallChanged; |
| private ParcelableRttCall mRttCall; |
| private String mParentCallId; |
| private List<String> mChildCallIds; |
| private StatusHints mStatusHints; |
| private int mVideoState; |
| private List<String> mConferenceableCallIds; |
| private Bundle mIntentExtras; |
| private Bundle mExtras; |
| private long mCreationTimeMillis; |
| private int mCallDirection; |
| private int mCallerNumberVerificationStatus; |
| private String mContactDisplayName; |
| private String mActiveChildCallId; |
| private Uri mContactPhotoUri; |
| |
| public ParcelableCallBuilder setId(String id) { |
| mId = id; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setState(int state) { |
| mState = state; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setDisconnectCause(DisconnectCause disconnectCause) { |
| mDisconnectCause = disconnectCause; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setCannedSmsResponses(List<String> cannedSmsResponses) { |
| mCannedSmsResponses = cannedSmsResponses; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setCapabilities(int capabilities) { |
| mCapabilities = capabilities; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setProperties(int properties) { |
| mProperties = properties; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setSupportedAudioRoutes(int supportedAudioRoutes) { |
| mSupportedAudioRoutes = supportedAudioRoutes; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setConnectTimeMillis(long connectTimeMillis) { |
| mConnectTimeMillis = connectTimeMillis; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setHandle(Uri handle) { |
| mHandle = handle; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setHandlePresentation(int handlePresentation) { |
| mHandlePresentation = handlePresentation; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setCallerDisplayName(String callerDisplayName) { |
| mCallerDisplayName = callerDisplayName; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setCallerDisplayNamePresentation( |
| int callerDisplayNamePresentation) { |
| mCallerDisplayNamePresentation = callerDisplayNamePresentation; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setGatewayInfo(GatewayInfo gatewayInfo) { |
| mGatewayInfo = gatewayInfo; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setAccountHandle(PhoneAccountHandle accountHandle) { |
| mAccountHandle = accountHandle; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setIsVideoCallProviderChanged( |
| boolean isVideoCallProviderChanged) { |
| mIsVideoCallProviderChanged = isVideoCallProviderChanged; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setVideoCallProvider(IVideoProvider videoCallProvider) { |
| mVideoCallProvider = videoCallProvider; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setIsRttCallChanged(boolean isRttCallChanged) { |
| mIsRttCallChanged = isRttCallChanged; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setRttCall(ParcelableRttCall rttCall) { |
| mRttCall = rttCall; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setParentCallId(String parentCallId) { |
| mParentCallId = parentCallId; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setChildCallIds(List<String> childCallIds) { |
| mChildCallIds = childCallIds; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setStatusHints(StatusHints statusHints) { |
| mStatusHints = statusHints; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setVideoState(int videoState) { |
| mVideoState = videoState; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setConferenceableCallIds( |
| List<String> conferenceableCallIds) { |
| mConferenceableCallIds = conferenceableCallIds; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setIntentExtras(Bundle intentExtras) { |
| mIntentExtras = intentExtras; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setExtras(Bundle extras) { |
| mExtras = extras; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setCreationTimeMillis(long creationTimeMillis) { |
| mCreationTimeMillis = creationTimeMillis; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setCallDirection(int callDirection) { |
| mCallDirection = callDirection; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setCallerNumberVerificationStatus( |
| int callerNumberVerificationStatus) { |
| mCallerNumberVerificationStatus = callerNumberVerificationStatus; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setContactDisplayName(String contactDisplayName) { |
| mContactDisplayName = contactDisplayName; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setActiveChildCallId(String activeChildCallId) { |
| mActiveChildCallId = activeChildCallId; |
| return this; |
| } |
| |
| public ParcelableCallBuilder setContactPhotoUri(Uri contactPhotoUri) { |
| mContactPhotoUri = contactPhotoUri; |
| return this; |
| } |
| |
| public ParcelableCall createParcelableCall() { |
| return new ParcelableCall( |
| mId, |
| mState, |
| mDisconnectCause, |
| mCannedSmsResponses, |
| mCapabilities, |
| mProperties, |
| mSupportedAudioRoutes, |
| mConnectTimeMillis, |
| mHandle, |
| mHandlePresentation, |
| mCallerDisplayName, |
| mCallerDisplayNamePresentation, |
| mGatewayInfo, |
| mAccountHandle, |
| mIsVideoCallProviderChanged, |
| mVideoCallProvider, |
| mIsRttCallChanged, |
| mRttCall, |
| mParentCallId, |
| mChildCallIds, |
| mStatusHints, |
| mVideoState, |
| mConferenceableCallIds, |
| mIntentExtras, |
| mExtras, |
| mCreationTimeMillis, |
| mCallDirection, |
| mCallerNumberVerificationStatus, |
| mContactDisplayName, |
| mActiveChildCallId, |
| mContactPhotoUri); |
| } |
| |
| public static ParcelableCallBuilder fromParcelableCall(ParcelableCall parcelableCall) { |
| ParcelableCallBuilder newBuilder = new ParcelableCallBuilder(); |
| newBuilder.mId = parcelableCall.mId; |
| newBuilder.mState = parcelableCall.mState; |
| newBuilder.mDisconnectCause = parcelableCall.mDisconnectCause; |
| newBuilder.mCannedSmsResponses = parcelableCall.mCannedSmsResponses; |
| newBuilder.mCapabilities = parcelableCall.mCapabilities; |
| newBuilder.mProperties = parcelableCall.mProperties; |
| newBuilder.mSupportedAudioRoutes = parcelableCall.mSupportedAudioRoutes; |
| newBuilder.mConnectTimeMillis = parcelableCall.mConnectTimeMillis; |
| newBuilder.mHandle = parcelableCall.mHandle; |
| newBuilder.mHandlePresentation = parcelableCall.mHandlePresentation; |
| newBuilder.mCallerDisplayName = parcelableCall.mCallerDisplayName; |
| newBuilder.mCallerDisplayNamePresentation = |
| parcelableCall.mCallerDisplayNamePresentation; |
| newBuilder.mGatewayInfo = parcelableCall.mGatewayInfo; |
| newBuilder.mAccountHandle = parcelableCall.mAccountHandle; |
| newBuilder.mIsVideoCallProviderChanged = parcelableCall.mIsVideoCallProviderChanged; |
| newBuilder.mVideoCallProvider = parcelableCall.mVideoCallProvider; |
| newBuilder.mIsRttCallChanged = parcelableCall.mIsRttCallChanged; |
| newBuilder.mRttCall = parcelableCall.mRttCall; |
| newBuilder.mParentCallId = parcelableCall.mParentCallId; |
| newBuilder.mChildCallIds = parcelableCall.mChildCallIds; |
| newBuilder.mStatusHints = parcelableCall.mStatusHints; |
| newBuilder.mVideoState = parcelableCall.mVideoState; |
| newBuilder.mConferenceableCallIds = parcelableCall.mConferenceableCallIds; |
| newBuilder.mIntentExtras = parcelableCall.mIntentExtras; |
| newBuilder.mExtras = parcelableCall.mExtras; |
| newBuilder.mCreationTimeMillis = parcelableCall.mCreationTimeMillis; |
| newBuilder.mCallDirection = parcelableCall.mCallDirection; |
| newBuilder.mCallerNumberVerificationStatus = |
| parcelableCall.mCallerNumberVerificationStatus; |
| newBuilder.mContactDisplayName = parcelableCall.mContactDisplayName; |
| newBuilder.mActiveChildCallId = parcelableCall.mActiveChildCallId; |
| newBuilder.mContactPhotoUri = parcelableCall.mContactPhotoUri; |
| return newBuilder; |
| } |
| } |
| |
| private final String mId; |
| private final int mState; |
| private final DisconnectCause mDisconnectCause; |
| private final List<String> mCannedSmsResponses; |
| private final int mCapabilities; |
| private final int mProperties; |
| private final int mSupportedAudioRoutes; |
| private final long mConnectTimeMillis; |
| private final Uri mHandle; |
| private final int mHandlePresentation; |
| private final String mCallerDisplayName; |
| private final int mCallerDisplayNamePresentation; |
| private final GatewayInfo mGatewayInfo; |
| private final PhoneAccountHandle mAccountHandle; |
| private final boolean mIsVideoCallProviderChanged; |
| private final IVideoProvider mVideoCallProvider; |
| private VideoCallImpl mVideoCall; |
| private final boolean mIsRttCallChanged; |
| private final ParcelableRttCall mRttCall; |
| private final String mParentCallId; |
| private final List<String> mChildCallIds; |
| private final StatusHints mStatusHints; |
| private final int mVideoState; |
| private final List<String> mConferenceableCallIds; |
| private final Bundle mIntentExtras; |
| private final Bundle mExtras; |
| private final long mCreationTimeMillis; |
| private final int mCallDirection; |
| private final int mCallerNumberVerificationStatus; |
| private final String mContactDisplayName; |
| private final String mActiveChildCallId; // Only valid for CDMA conferences |
| private final Uri mContactPhotoUri; |
| |
| public ParcelableCall( |
| String id, |
| int state, |
| DisconnectCause disconnectCause, |
| List<String> cannedSmsResponses, |
| int capabilities, |
| int properties, |
| int supportedAudioRoutes, |
| long connectTimeMillis, |
| Uri handle, |
| int handlePresentation, |
| String callerDisplayName, |
| int callerDisplayNamePresentation, |
| GatewayInfo gatewayInfo, |
| PhoneAccountHandle accountHandle, |
| boolean isVideoCallProviderChanged, |
| IVideoProvider videoCallProvider, |
| boolean isRttCallChanged, |
| ParcelableRttCall rttCall, |
| String parentCallId, |
| List<String> childCallIds, |
| StatusHints statusHints, |
| int videoState, |
| List<String> conferenceableCallIds, |
| Bundle intentExtras, |
| Bundle extras, |
| long creationTimeMillis, |
| int callDirection, |
| int callerNumberVerificationStatus, |
| String contactDisplayName, |
| String activeChildCallId, |
| Uri contactPhotoUri |
| ) { |
| mId = id; |
| mState = state; |
| mDisconnectCause = disconnectCause; |
| mCannedSmsResponses = cannedSmsResponses; |
| mCapabilities = capabilities; |
| mProperties = properties; |
| mSupportedAudioRoutes = supportedAudioRoutes; |
| mConnectTimeMillis = connectTimeMillis; |
| mHandle = handle; |
| mHandlePresentation = handlePresentation; |
| mCallerDisplayName = callerDisplayName; |
| mCallerDisplayNamePresentation = callerDisplayNamePresentation; |
| mGatewayInfo = gatewayInfo; |
| mAccountHandle = accountHandle; |
| mIsVideoCallProviderChanged = isVideoCallProviderChanged; |
| mVideoCallProvider = videoCallProvider; |
| mIsRttCallChanged = isRttCallChanged; |
| mRttCall = rttCall; |
| mParentCallId = parentCallId; |
| mChildCallIds = childCallIds; |
| mStatusHints = statusHints; |
| mVideoState = videoState; |
| mConferenceableCallIds = Collections.unmodifiableList(conferenceableCallIds); |
| mIntentExtras = intentExtras; |
| mExtras = extras; |
| mCreationTimeMillis = creationTimeMillis; |
| mCallDirection = callDirection; |
| mCallerNumberVerificationStatus = callerNumberVerificationStatus; |
| mContactDisplayName = contactDisplayName; |
| mActiveChildCallId = activeChildCallId; |
| mContactPhotoUri = contactPhotoUri; |
| } |
| |
| /** The unique ID of the call. */ |
| @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) |
| public String getId() { |
| return mId; |
| } |
| |
| /** The current state of the call. */ |
| public @Call.CallState int getState() { |
| return mState; |
| } |
| |
| /** |
| * Reason for disconnection, as described by {@link android.telecomm.DisconnectCause}. Valid |
| * when call state is {@link CallState#DISCONNECTED}. |
| */ |
| @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) |
| public DisconnectCause getDisconnectCause() { |
| return mDisconnectCause; |
| } |
| |
| /** |
| * The set of possible text message responses when this call is incoming. |
| */ |
| public List<String> getCannedSmsResponses() { |
| return mCannedSmsResponses; |
| } |
| |
| // Bit mask of actions a call supports, values are defined in {@link CallCapabilities}. |
| public int getCapabilities() { |
| return mCapabilities; |
| } |
| |
| /** Bitmask of properties of the call. */ |
| public int getProperties() { return mProperties; } |
| |
| /** Bitmask of supported routes of the call */ |
| public int getSupportedAudioRoutes() { |
| return mSupportedAudioRoutes; |
| } |
| |
| /** The time that the call switched to the active state. */ |
| @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) |
| public long getConnectTimeMillis() { |
| return mConnectTimeMillis; |
| } |
| |
| /** The endpoint to which the call is connected. */ |
| @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) |
| public Uri getHandle() { |
| return mHandle; |
| } |
| |
| /** |
| * The presentation requirements for the handle. See {@link TelecomManager} for valid values. |
| */ |
| public int getHandlePresentation() { |
| return mHandlePresentation; |
| } |
| |
| /** The endpoint to which the call is connected. */ |
| public String getCallerDisplayName() { |
| return mCallerDisplayName; |
| } |
| |
| /** |
| * The presentation requirements for the caller display name. |
| * See {@link TelecomManager} for valid values. |
| */ |
| public int getCallerDisplayNamePresentation() { |
| return mCallerDisplayNamePresentation; |
| } |
| |
| /** Gateway information for the call. */ |
| public GatewayInfo getGatewayInfo() { |
| return mGatewayInfo; |
| } |
| |
| /** PhoneAccountHandle information for the call. */ |
| public PhoneAccountHandle getAccountHandle() { |
| return mAccountHandle; |
| } |
| |
| /** |
| * Returns an object for remotely communicating through the video call provider's binder. |
| * |
| * @param callingPackageName the package name of the calling InCallService. |
| * @param targetSdkVersion the target SDK version of the calling InCallService. |
| * @return The video call. |
| */ |
| public VideoCallImpl getVideoCallImpl(String callingPackageName, int targetSdkVersion) { |
| if (mVideoCall == null && mVideoCallProvider != null) { |
| try { |
| mVideoCall = new VideoCallImpl(mVideoCallProvider, callingPackageName, |
| targetSdkVersion); |
| } catch (RemoteException ignored) { |
| // Ignore RemoteException. |
| } |
| } |
| |
| return mVideoCall; |
| } |
| |
| public IVideoProvider getVideoProvider() { |
| return mVideoCallProvider; |
| } |
| |
| public boolean getIsRttCallChanged() { |
| return mIsRttCallChanged; |
| } |
| |
| /** |
| * RTT communication channel information |
| * @return The ParcelableRttCall |
| */ |
| public ParcelableRttCall getParcelableRttCall() { |
| return mRttCall; |
| } |
| |
| /** |
| * The conference call to which this call is conferenced. Null if not conferenced. |
| */ |
| public String getParentCallId() { |
| return mParentCallId; |
| } |
| |
| /** |
| * The child call-IDs if this call is a conference call. Returns an empty list if this is not |
| * a conference call or if the conference call contains no children. |
| */ |
| public List<String> getChildCallIds() { |
| return mChildCallIds; |
| } |
| |
| public List<String> getConferenceableCallIds() { |
| return mConferenceableCallIds; |
| } |
| |
| /** |
| * The status label and icon. |
| * |
| * @return Status hints. |
| */ |
| public StatusHints getStatusHints() { |
| return mStatusHints; |
| } |
| |
| /** |
| * The video state. |
| * @return The video state of the call. |
| */ |
| public int getVideoState() { |
| return mVideoState; |
| } |
| |
| /** |
| * Any extras associated with this call. |
| * |
| * @return a bundle of extras |
| */ |
| public Bundle getExtras() { |
| return mExtras; |
| } |
| |
| /** |
| * Extras passed in as part of the original call intent. |
| * |
| * @return The intent extras. |
| */ |
| public Bundle getIntentExtras() { |
| return mIntentExtras; |
| } |
| |
| /** |
| * Indicates to the receiver of the {@link ParcelableCall} whether a change has occurred in the |
| * {@link android.telecom.InCallService.VideoCall} associated with this call. Since |
| * {@link #getVideoCall()} creates a new {@link VideoCallImpl}, it is useful to know whether |
| * the provider has changed (which can influence whether it is accessed). |
| * |
| * @return {@code true} if the video call changed, {@code false} otherwise. |
| */ |
| public boolean isVideoCallProviderChanged() { |
| return mIsVideoCallProviderChanged; |
| } |
| |
| /** |
| * @return The time the call was created, in milliseconds since the epoch. |
| */ |
| public long getCreationTimeMillis() { |
| return mCreationTimeMillis; |
| } |
| |
| /** |
| * Indicates whether the call is an incoming or outgoing call. |
| */ |
| public @CallDirection int getCallDirection() { |
| return mCallDirection; |
| } |
| |
| /** |
| * Gets the verification status for the phone number of an incoming call as identified in |
| * ATIS-1000082. |
| * @return the verification status. |
| */ |
| public @Connection.VerificationStatus int getCallerNumberVerificationStatus() { |
| return mCallerNumberVerificationStatus; |
| } |
| |
| /** |
| * @return the name of the remote party as derived from a contacts DB lookup. |
| */ |
| public @Nullable String getContactDisplayName() { |
| return mContactDisplayName; |
| } |
| |
| /** |
| * @return the caller photo URI. |
| */ |
| public @Nullable Uri getContactPhotoUri() { |
| return mContactPhotoUri; |
| } |
| |
| |
| /** |
| * @return On a CDMA conference with two participants, returns the ID of the child call that's |
| * currently active. |
| */ |
| public @Nullable String getActiveChildCallId() { |
| return mActiveChildCallId; |
| } |
| |
| /** Responsible for creating ParcelableCall objects for deserialized Parcels. */ |
| @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) |
| public static final @android.annotation.NonNull Parcelable.Creator<ParcelableCall> CREATOR = |
| new Parcelable.Creator<ParcelableCall> () { |
| @Override |
| public ParcelableCall createFromParcel(Parcel source) { |
| ClassLoader classLoader = ParcelableCall.class.getClassLoader(); |
| String id = source.readString(); |
| int state = source.readInt(); |
| DisconnectCause disconnectCause = source.readParcelable(classLoader, android.telecom.DisconnectCause.class); |
| List<String> cannedSmsResponses = new ArrayList<>(); |
| source.readList(cannedSmsResponses, classLoader, java.lang.String.class); |
| int capabilities = source.readInt(); |
| int properties = source.readInt(); |
| long connectTimeMillis = source.readLong(); |
| Uri handle = Uri.CREATOR.createFromParcel(source); |
| int handlePresentation = source.readInt(); |
| String callerDisplayName = source.readString(); |
| int callerDisplayNamePresentation = source.readInt(); |
| GatewayInfo gatewayInfo = source.readParcelable(classLoader, android.telecom.GatewayInfo.class); |
| PhoneAccountHandle accountHandle = source.readParcelable(classLoader, android.telecom.PhoneAccountHandle.class); |
| boolean isVideoCallProviderChanged = source.readByte() == 1; |
| IVideoProvider videoCallProvider = |
| IVideoProvider.Stub.asInterface(source.readStrongBinder()); |
| String parentCallId = source.readString(); |
| List<String> childCallIds = new ArrayList<>(); |
| source.readList(childCallIds, classLoader, java.lang.String.class); |
| StatusHints statusHints = source.readParcelable(classLoader, android.telecom.StatusHints.class); |
| int videoState = source.readInt(); |
| List<String> conferenceableCallIds = new ArrayList<>(); |
| source.readList(conferenceableCallIds, classLoader, java.lang.String.class); |
| Bundle intentExtras = source.readBundle(classLoader); |
| Bundle extras = source.readBundle(classLoader); |
| int supportedAudioRoutes = source.readInt(); |
| boolean isRttCallChanged = source.readByte() == 1; |
| ParcelableRttCall rttCall = source.readParcelable(classLoader, android.telecom.ParcelableRttCall.class); |
| long creationTimeMillis = source.readLong(); |
| int callDirection = source.readInt(); |
| int callerNumberVerificationStatus = source.readInt(); |
| String contactDisplayName = source.readString(); |
| String activeChildCallId = source.readString(); |
| Uri contactPhotoUri = source.readParcelable(classLoader, Uri.class); |
| return new ParcelableCallBuilder() |
| .setId(id) |
| .setState(state) |
| .setDisconnectCause(disconnectCause) |
| .setCannedSmsResponses(cannedSmsResponses) |
| .setCapabilities(capabilities) |
| .setProperties(properties) |
| .setSupportedAudioRoutes(supportedAudioRoutes) |
| .setConnectTimeMillis(connectTimeMillis) |
| .setHandle(handle) |
| .setHandlePresentation(handlePresentation) |
| .setCallerDisplayName(callerDisplayName) |
| .setCallerDisplayNamePresentation(callerDisplayNamePresentation) |
| .setGatewayInfo(gatewayInfo) |
| .setAccountHandle(accountHandle) |
| .setIsVideoCallProviderChanged(isVideoCallProviderChanged) |
| .setVideoCallProvider(videoCallProvider) |
| .setIsRttCallChanged(isRttCallChanged) |
| .setRttCall(rttCall) |
| .setParentCallId(parentCallId) |
| .setChildCallIds(childCallIds) |
| .setStatusHints(statusHints) |
| .setVideoState(videoState) |
| .setConferenceableCallIds(conferenceableCallIds) |
| .setIntentExtras(intentExtras) |
| .setExtras(extras) |
| .setCreationTimeMillis(creationTimeMillis) |
| .setCallDirection(callDirection) |
| .setCallerNumberVerificationStatus(callerNumberVerificationStatus) |
| .setContactDisplayName(contactDisplayName) |
| .setActiveChildCallId(activeChildCallId) |
| .setContactPhotoUri(contactPhotoUri) |
| .createParcelableCall(); |
| } |
| |
| @Override |
| public ParcelableCall[] newArray(int size) { |
| return new ParcelableCall[size]; |
| } |
| }; |
| |
| /** {@inheritDoc} */ |
| @Override |
| public int describeContents() { |
| return 0; |
| } |
| |
| /** Writes ParcelableCall object into a Parcel. */ |
| @Override |
| public void writeToParcel(Parcel destination, int flags) { |
| destination.writeString(mId); |
| destination.writeInt(mState); |
| destination.writeParcelable(mDisconnectCause, 0); |
| destination.writeList(mCannedSmsResponses); |
| destination.writeInt(mCapabilities); |
| destination.writeInt(mProperties); |
| destination.writeLong(mConnectTimeMillis); |
| Uri.writeToParcel(destination, mHandle); |
| destination.writeInt(mHandlePresentation); |
| destination.writeString(mCallerDisplayName); |
| destination.writeInt(mCallerDisplayNamePresentation); |
| destination.writeParcelable(mGatewayInfo, 0); |
| destination.writeParcelable(mAccountHandle, 0); |
| destination.writeByte((byte) (mIsVideoCallProviderChanged ? 1 : 0)); |
| destination.writeStrongBinder( |
| mVideoCallProvider != null ? mVideoCallProvider.asBinder() : null); |
| destination.writeString(mParentCallId); |
| destination.writeList(mChildCallIds); |
| destination.writeParcelable(mStatusHints, 0); |
| destination.writeInt(mVideoState); |
| destination.writeList(mConferenceableCallIds); |
| destination.writeBundle(mIntentExtras); |
| destination.writeBundle(mExtras); |
| destination.writeInt(mSupportedAudioRoutes); |
| destination.writeByte((byte) (mIsRttCallChanged ? 1 : 0)); |
| destination.writeParcelable(mRttCall, 0); |
| destination.writeLong(mCreationTimeMillis); |
| destination.writeInt(mCallDirection); |
| destination.writeInt(mCallerNumberVerificationStatus); |
| destination.writeString(mContactDisplayName); |
| destination.writeString(mActiveChildCallId); |
| destination.writeParcelable(mContactPhotoUri, 0); |
| } |
| |
| @Override |
| public String toString() { |
| return String.format("[%s, parent:%s, children:%s]", mId, mParentCallId, mChildCallIds); |
| } |
| } |