blob: 6212a77feba8aec54b85c227fbbfe618224df199 [file] [log] [blame]
Sailesh Nepal60437932014-04-05 16:44:55 -07001/*
2 * Copyright 2014, The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Tyler Gunnef9f6f92014-09-12 22:16:17 -070017package android.telecom;
Sailesh Nepal60437932014-04-05 16:44:55 -070018
19import android.net.Uri;
Nancy Chen10798dc2014-08-08 14:00:25 -070020import android.os.Bundle;
Sailesh Nepal60437932014-04-05 16:44:55 -070021import android.os.Parcel;
22import android.os.Parcelable;
Andrew Lee5dc30752014-06-27 17:02:19 -070023import android.os.RemoteException;
Sailesh Nepal60437932014-04-05 16:44:55 -070024
Santos Cordon980acb92014-05-31 10:31:19 -070025import java.util.ArrayList;
Santos Cordon7c7bc7f2014-07-28 18:15:48 -070026import java.util.Collections;
Santos Cordon980acb92014-05-31 10:31:19 -070027import java.util.List;
Sailesh Nepal60437932014-04-05 16:44:55 -070028
Tyler Gunnef9f6f92014-09-12 22:16:17 -070029import com.android.internal.telecom.IVideoProvider;
Ihab Awadb19a0bc2014-08-07 19:46:01 -070030
Sailesh Nepal60437932014-04-05 16:44:55 -070031/**
Tyler Gunnef9f6f92014-09-12 22:16:17 -070032 * Information about a call that is used between InCallService and Telecom.
Santos Cordon88b771d2014-07-19 13:10:40 -070033 * @hide
Sailesh Nepal60437932014-04-05 16:44:55 -070034 */
Santos Cordon88b771d2014-07-19 13:10:40 -070035public final class ParcelableCall implements Parcelable {
Sailesh Nepal60437932014-04-05 16:44:55 -070036 private final String mId;
Ihab Awadb19a0bc2014-08-07 19:46:01 -070037 private final int mState;
Andrew Lee7f3d41f2014-09-11 17:33:16 -070038 private final DisconnectCause mDisconnectCause;
Ihab Awadc0677542014-06-10 13:29:47 -070039 private final List<String> mCannedSmsResponses;
Sailesh Nepal60437932014-04-05 16:44:55 -070040 private final int mCapabilities;
Andrew Lee223ad142014-08-27 16:33:08 -070041 private final int mProperties;
Christine Hallstrom2830ce92016-11-30 16:06:42 -080042 private final int mSupportedAudioRoutes;
Sailesh Nepal60437932014-04-05 16:44:55 -070043 private final long mConnectTimeMillis;
44 private final Uri mHandle;
Sailesh Nepal61203862014-07-11 14:50:13 -070045 private final int mHandlePresentation;
46 private final String mCallerDisplayName;
47 private final int mCallerDisplayNamePresentation;
Sailesh Nepal60437932014-04-05 16:44:55 -070048 private final GatewayInfo mGatewayInfo;
Evan Charlton8c8a0622014-07-20 12:31:00 -070049 private final PhoneAccountHandle mAccountHandle;
Tyler Gunn75958422015-04-15 14:23:42 -070050 private final boolean mIsVideoCallProviderChanged;
Ihab Awadb19a0bc2014-08-07 19:46:01 -070051 private final IVideoProvider mVideoCallProvider;
Tyler Gunn584ba6c2015-12-08 10:53:41 -080052 private VideoCallImpl mVideoCall;
Hall Liu95d55872017-01-25 17:12:49 -080053 private final boolean mIsRttCallChanged;
54 private final ParcelableRttCall mRttCall;
Santos Cordon980acb92014-05-31 10:31:19 -070055 private final String mParentCallId;
56 private final List<String> mChildCallIds;
Sailesh Nepale7ef59a2014-07-08 21:48:22 -070057 private final StatusHints mStatusHints;
Andrew Lee85f5d422014-07-11 17:22:03 -070058 private final int mVideoState;
Santos Cordon7c7bc7f2014-07-28 18:15:48 -070059 private final List<String> mConferenceableCallIds;
Santos Cordon6b7f9552015-05-27 17:21:45 -070060 private final Bundle mIntentExtras;
Nancy Chen10798dc2014-08-08 14:00:25 -070061 private final Bundle mExtras;
Tyler Gunnc0bf6de2017-03-17 11:27:09 -070062 private final long mCreationTimeMillis;
Santos Cordon980acb92014-05-31 10:31:19 -070063
Santos Cordon88b771d2014-07-19 13:10:40 -070064 public ParcelableCall(
Sailesh Nepal60437932014-04-05 16:44:55 -070065 String id,
Ihab Awadb19a0bc2014-08-07 19:46:01 -070066 int state,
Andrew Lee7f3d41f2014-09-11 17:33:16 -070067 DisconnectCause disconnectCause,
Ihab Awadc0677542014-06-10 13:29:47 -070068 List<String> cannedSmsResponses,
Sailesh Nepal60437932014-04-05 16:44:55 -070069 int capabilities,
Andrew Lee223ad142014-08-27 16:33:08 -070070 int properties,
Christine Hallstrom2830ce92016-11-30 16:06:42 -080071 int supportedAudioRoutes,
Sailesh Nepal60437932014-04-05 16:44:55 -070072 long connectTimeMillis,
73 Uri handle,
Sailesh Nepal61203862014-07-11 14:50:13 -070074 int handlePresentation,
75 String callerDisplayName,
76 int callerDisplayNamePresentation,
Sailesh Nepal60437932014-04-05 16:44:55 -070077 GatewayInfo gatewayInfo,
Evan Charlton8c8a0622014-07-20 12:31:00 -070078 PhoneAccountHandle accountHandle,
Tyler Gunn75958422015-04-15 14:23:42 -070079 boolean isVideoCallProviderChanged,
Ihab Awadb19a0bc2014-08-07 19:46:01 -070080 IVideoProvider videoCallProvider,
Hall Liu95d55872017-01-25 17:12:49 -080081 boolean isRttCallChanged,
82 ParcelableRttCall rttCall,
Santos Cordon980acb92014-05-31 10:31:19 -070083 String parentCallId,
Tyler Gunn8d83fa92014-07-01 11:31:21 -070084 List<String> childCallIds,
Andrew Lee85f5d422014-07-11 17:22:03 -070085 StatusHints statusHints,
Santos Cordon7c7bc7f2014-07-28 18:15:48 -070086 int videoState,
Nancy Chen10798dc2014-08-08 14:00:25 -070087 List<String> conferenceableCallIds,
Santos Cordon6b7f9552015-05-27 17:21:45 -070088 Bundle intentExtras,
Tyler Gunnc0bf6de2017-03-17 11:27:09 -070089 Bundle extras,
90 long creationTimeMillis) {
Sailesh Nepal60437932014-04-05 16:44:55 -070091 mId = id;
92 mState = state;
Andrew Lee7f3d41f2014-09-11 17:33:16 -070093 mDisconnectCause = disconnectCause;
Ihab Awadc0677542014-06-10 13:29:47 -070094 mCannedSmsResponses = cannedSmsResponses;
Sailesh Nepal60437932014-04-05 16:44:55 -070095 mCapabilities = capabilities;
Andrew Lee223ad142014-08-27 16:33:08 -070096 mProperties = properties;
Christine Hallstrom2830ce92016-11-30 16:06:42 -080097 mSupportedAudioRoutes = supportedAudioRoutes;
Sailesh Nepal60437932014-04-05 16:44:55 -070098 mConnectTimeMillis = connectTimeMillis;
99 mHandle = handle;
Sailesh Nepal61203862014-07-11 14:50:13 -0700100 mHandlePresentation = handlePresentation;
101 mCallerDisplayName = callerDisplayName;
102 mCallerDisplayNamePresentation = callerDisplayNamePresentation;
Sailesh Nepal60437932014-04-05 16:44:55 -0700103 mGatewayInfo = gatewayInfo;
Evan Charlton8c8a0622014-07-20 12:31:00 -0700104 mAccountHandle = accountHandle;
Tyler Gunn75958422015-04-15 14:23:42 -0700105 mIsVideoCallProviderChanged = isVideoCallProviderChanged;
Andrew Lee50aca232014-07-22 16:41:54 -0700106 mVideoCallProvider = videoCallProvider;
Hall Liu95d55872017-01-25 17:12:49 -0800107 mIsRttCallChanged = isRttCallChanged;
108 mRttCall = rttCall;
Santos Cordon980acb92014-05-31 10:31:19 -0700109 mParentCallId = parentCallId;
110 mChildCallIds = childCallIds;
Sailesh Nepale7ef59a2014-07-08 21:48:22 -0700111 mStatusHints = statusHints;
Andrew Lee85f5d422014-07-11 17:22:03 -0700112 mVideoState = videoState;
Santos Cordon7c7bc7f2014-07-28 18:15:48 -0700113 mConferenceableCallIds = Collections.unmodifiableList(conferenceableCallIds);
Santos Cordon6b7f9552015-05-27 17:21:45 -0700114 mIntentExtras = intentExtras;
Nancy Chen10798dc2014-08-08 14:00:25 -0700115 mExtras = extras;
Tyler Gunnc0bf6de2017-03-17 11:27:09 -0700116 mCreationTimeMillis = creationTimeMillis;
Sailesh Nepal60437932014-04-05 16:44:55 -0700117 }
118
119 /** The unique ID of the call. */
120 public String getId() {
121 return mId;
122 }
123
124 /** The current state of the call. */
Ihab Awadb19a0bc2014-08-07 19:46:01 -0700125 public int getState() {
Sailesh Nepal60437932014-04-05 16:44:55 -0700126 return mState;
127 }
128
129 /**
Andrew Lee7f3d41f2014-09-11 17:33:16 -0700130 * Reason for disconnection, as described by {@link android.telecomm.DisconnectCause}. Valid
131 * when call state is {@link CallState#DISCONNECTED}.
Sailesh Nepal60437932014-04-05 16:44:55 -0700132 */
Andrew Lee7f3d41f2014-09-11 17:33:16 -0700133 public DisconnectCause getDisconnectCause() {
134 return mDisconnectCause;
Sailesh Nepal60437932014-04-05 16:44:55 -0700135 }
136
Ihab Awadc0677542014-06-10 13:29:47 -0700137 /**
138 * The set of possible text message responses when this call is incoming.
139 */
140 public List<String> getCannedSmsResponses() {
141 return mCannedSmsResponses;
142 }
143
Sailesh Nepal60437932014-04-05 16:44:55 -0700144 // Bit mask of actions a call supports, values are defined in {@link CallCapabilities}.
145 public int getCapabilities() {
146 return mCapabilities;
147 }
148
Andrew Lee223ad142014-08-27 16:33:08 -0700149 /** Bitmask of properties of the call. */
150 public int getProperties() { return mProperties; }
151
Christine Hallstrom2830ce92016-11-30 16:06:42 -0800152 /** Bitmask of supported routes of the call */
153 public int getSupportedAudioRoutes() {
154 return mSupportedAudioRoutes;
155 }
156
Sailesh Nepal60437932014-04-05 16:44:55 -0700157 /** The time that the call switched to the active state. */
158 public long getConnectTimeMillis() {
159 return mConnectTimeMillis;
160 }
161
162 /** The endpoint to which the call is connected. */
163 public Uri getHandle() {
164 return mHandle;
165 }
166
Nancy Chen9d568c02014-09-08 14:17:59 -0700167 /**
Tyler Gunnef9f6f92014-09-12 22:16:17 -0700168 * The presentation requirements for the handle. See {@link TelecomManager} for valid values.
Nancy Chen9d568c02014-09-08 14:17:59 -0700169 */
Sailesh Nepal61203862014-07-11 14:50:13 -0700170 public int getHandlePresentation() {
171 return mHandlePresentation;
172 }
173
174 /** The endpoint to which the call is connected. */
175 public String getCallerDisplayName() {
176 return mCallerDisplayName;
177 }
178
Nancy Chen9d568c02014-09-08 14:17:59 -0700179 /**
180 * The presentation requirements for the caller display name.
Tyler Gunnef9f6f92014-09-12 22:16:17 -0700181 * See {@link TelecomManager} for valid values.
Nancy Chen9d568c02014-09-08 14:17:59 -0700182 */
Sailesh Nepal61203862014-07-11 14:50:13 -0700183 public int getCallerDisplayNamePresentation() {
184 return mCallerDisplayNamePresentation;
185 }
186
Sailesh Nepal60437932014-04-05 16:44:55 -0700187 /** Gateway information for the call. */
188 public GatewayInfo getGatewayInfo() {
189 return mGatewayInfo;
190 }
191
Evan Charlton6eb262c2014-07-19 18:18:19 -0700192 /** PhoneAccountHandle information for the call. */
Evan Charlton8c8a0622014-07-20 12:31:00 -0700193 public PhoneAccountHandle getAccountHandle() {
194 return mAccountHandle;
Nancy Chen5ffbfcc2014-06-25 14:22:55 -0700195 }
196
Sailesh Nepal60437932014-04-05 16:44:55 -0700197 /**
Andrew Lee50aca232014-07-22 16:41:54 -0700198 * Returns an object for remotely communicating through the video call provider's binder.
Tyler Gunn159f35c2017-03-02 09:28:37 -0800199 *
200 * @param callingPackageName the package name of the calling InCallService.
201 * @param targetSdkVersion the target SDK version of the calling InCallService.
Andrew Lee50aca232014-07-22 16:41:54 -0700202 * @return The video call.
Andrew Lee5dc30752014-06-27 17:02:19 -0700203 */
Tyler Gunn159f35c2017-03-02 09:28:37 -0800204 public VideoCallImpl getVideoCallImpl(String callingPackageName, int targetSdkVersion) {
Andrew Lee50aca232014-07-22 16:41:54 -0700205 if (mVideoCall == null && mVideoCallProvider != null) {
Andrew Lee5dc30752014-06-27 17:02:19 -0700206 try {
Tyler Gunn159f35c2017-03-02 09:28:37 -0800207 mVideoCall = new VideoCallImpl(mVideoCallProvider, callingPackageName,
208 targetSdkVersion);
Andrew Lee5dc30752014-06-27 17:02:19 -0700209 } catch (RemoteException ignored) {
210 // Ignore RemoteException.
211 }
212 }
213
Andrew Lee50aca232014-07-22 16:41:54 -0700214 return mVideoCall;
Andrew Lee5dc30752014-06-27 17:02:19 -0700215 }
216
Hall Liu95d55872017-01-25 17:12:49 -0800217 public boolean getIsRttCallChanged() {
218 return mIsRttCallChanged;
219 }
220
221 /**
222 * RTT communication channel information
223 * @return The ParcelableRttCall
224 */
225 public ParcelableRttCall getParcelableRttCall() {
226 return mRttCall;
227 }
228
Andrew Lee5dc30752014-06-27 17:02:19 -0700229 /**
Santos Cordon980acb92014-05-31 10:31:19 -0700230 * The conference call to which this call is conferenced. Null if not conferenced.
Santos Cordon980acb92014-05-31 10:31:19 -0700231 */
232 public String getParentCallId() {
233 return mParentCallId;
234 }
235
236 /**
237 * The child call-IDs if this call is a conference call. Returns an empty list if this is not
238 * a conference call or if the conference call contains no children.
Santos Cordon980acb92014-05-31 10:31:19 -0700239 */
240 public List<String> getChildCallIds() {
241 return mChildCallIds;
242 }
243
Santos Cordon7c7bc7f2014-07-28 18:15:48 -0700244 public List<String> getConferenceableCallIds() {
245 return mConferenceableCallIds;
246 }
247
Tyler Gunn8d83fa92014-07-01 11:31:21 -0700248 /**
Sailesh Nepale7ef59a2014-07-08 21:48:22 -0700249 * The status label and icon.
250 *
251 * @return Status hints.
252 */
253 public StatusHints getStatusHints() {
254 return mStatusHints;
255 }
256
Andrew Lee85f5d422014-07-11 17:22:03 -0700257 /**
258 * The video state.
259 * @return The video state of the call.
260 */
261 public int getVideoState() {
262 return mVideoState;
263 }
264
Nancy Chen10798dc2014-08-08 14:00:25 -0700265 /**
Santos Cordon6b7f9552015-05-27 17:21:45 -0700266 * Any extras associated with this call.
Nancy Chen10798dc2014-08-08 14:00:25 -0700267 *
268 * @return a bundle of extras
269 */
270 public Bundle getExtras() {
271 return mExtras;
272 }
273
Rekha Kumar07366812015-03-24 16:42:31 -0700274 /**
Santos Cordon6b7f9552015-05-27 17:21:45 -0700275 * Extras passed in as part of the original call intent.
276 *
277 * @return The intent extras.
278 */
279 public Bundle getIntentExtras() {
280 return mIntentExtras;
281 }
282
283 /**
Tyler Gunn75958422015-04-15 14:23:42 -0700284 * Indicates to the receiver of the {@link ParcelableCall} whether a change has occurred in the
285 * {@link android.telecom.InCallService.VideoCall} associated with this call. Since
286 * {@link #getVideoCall()} creates a new {@link VideoCallImpl}, it is useful to know whether
287 * the provider has changed (which can influence whether it is accessed).
288 *
289 * @return {@code true} if the video call changed, {@code false} otherwise.
290 */
291 public boolean isVideoCallProviderChanged() {
292 return mIsVideoCallProviderChanged;
293 }
294
Tyler Gunnc0bf6de2017-03-17 11:27:09 -0700295 /**
296 * @return The time the call was created, in milliseconds since the epoch.
297 */
298 public long getCreationTimeMillis() {
299 return mCreationTimeMillis;
300 }
301
Santos Cordon88b771d2014-07-19 13:10:40 -0700302 /** Responsible for creating ParcelableCall objects for deserialized Parcels. */
303 public static final Parcelable.Creator<ParcelableCall> CREATOR =
304 new Parcelable.Creator<ParcelableCall> () {
Sailesh Nepal60437932014-04-05 16:44:55 -0700305 @Override
Santos Cordon88b771d2014-07-19 13:10:40 -0700306 public ParcelableCall createFromParcel(Parcel source) {
307 ClassLoader classLoader = ParcelableCall.class.getClassLoader();
Sailesh Nepal60437932014-04-05 16:44:55 -0700308 String id = source.readString();
Ihab Awadb19a0bc2014-08-07 19:46:01 -0700309 int state = source.readInt();
Andrew Lee7f3d41f2014-09-11 17:33:16 -0700310 DisconnectCause disconnectCause = source.readParcelable(classLoader);
Ihab Awadc0677542014-06-10 13:29:47 -0700311 List<String> cannedSmsResponses = new ArrayList<>();
312 source.readList(cannedSmsResponses, classLoader);
Sailesh Nepal60437932014-04-05 16:44:55 -0700313 int capabilities = source.readInt();
Andrew Lee223ad142014-08-27 16:33:08 -0700314 int properties = source.readInt();
Sailesh Nepal60437932014-04-05 16:44:55 -0700315 long connectTimeMillis = source.readLong();
Sailesh Nepal60437932014-04-05 16:44:55 -0700316 Uri handle = source.readParcelable(classLoader);
Sailesh Nepal61203862014-07-11 14:50:13 -0700317 int handlePresentation = source.readInt();
318 String callerDisplayName = source.readString();
319 int callerDisplayNamePresentation = source.readInt();
Sailesh Nepal60437932014-04-05 16:44:55 -0700320 GatewayInfo gatewayInfo = source.readParcelable(classLoader);
Evan Charlton8c8a0622014-07-20 12:31:00 -0700321 PhoneAccountHandle accountHandle = source.readParcelable(classLoader);
Tyler Gunn75958422015-04-15 14:23:42 -0700322 boolean isVideoCallProviderChanged = source.readByte() == 1;
Ihab Awadb19a0bc2014-08-07 19:46:01 -0700323 IVideoProvider videoCallProvider =
324 IVideoProvider.Stub.asInterface(source.readStrongBinder());
Santos Cordon980acb92014-05-31 10:31:19 -0700325 String parentCallId = source.readString();
326 List<String> childCallIds = new ArrayList<>();
327 source.readList(childCallIds, classLoader);
Sailesh Nepale7ef59a2014-07-08 21:48:22 -0700328 StatusHints statusHints = source.readParcelable(classLoader);
Andrew Lee85f5d422014-07-11 17:22:03 -0700329 int videoState = source.readInt();
Santos Cordon7c7bc7f2014-07-28 18:15:48 -0700330 List<String> conferenceableCallIds = new ArrayList<>();
331 source.readList(conferenceableCallIds, classLoader);
Santos Cordon6b7f9552015-05-27 17:21:45 -0700332 Bundle intentExtras = source.readBundle(classLoader);
333 Bundle extras = source.readBundle(classLoader);
Christine Hallstrom2830ce92016-11-30 16:06:42 -0800334 int supportedAudioRoutes = source.readInt();
Hall Liu95d55872017-01-25 17:12:49 -0800335 boolean isRttCallChanged = source.readByte() == 1;
336 ParcelableRttCall rttCall = source.readParcelable(classLoader);
Tyler Gunnc0bf6de2017-03-17 11:27:09 -0700337 long creationTimeMillis = source.readLong();
Andrew Lee7f3d41f2014-09-11 17:33:16 -0700338 return new ParcelableCall(
339 id,
340 state,
341 disconnectCause,
342 cannedSmsResponses,
343 capabilities,
344 properties,
Christine Hallstrom2830ce92016-11-30 16:06:42 -0800345 supportedAudioRoutes,
Andrew Lee7f3d41f2014-09-11 17:33:16 -0700346 connectTimeMillis,
347 handle,
348 handlePresentation,
349 callerDisplayName,
350 callerDisplayNamePresentation,
351 gatewayInfo,
352 accountHandle,
Tyler Gunn75958422015-04-15 14:23:42 -0700353 isVideoCallProviderChanged,
Andrew Lee7f3d41f2014-09-11 17:33:16 -0700354 videoCallProvider,
Hall Liu95d55872017-01-25 17:12:49 -0800355 isRttCallChanged,
356 rttCall,
Andrew Lee7f3d41f2014-09-11 17:33:16 -0700357 parentCallId,
358 childCallIds,
359 statusHints,
360 videoState,
361 conferenceableCallIds,
Santos Cordon6b7f9552015-05-27 17:21:45 -0700362 intentExtras,
Tyler Gunnc0bf6de2017-03-17 11:27:09 -0700363 extras,
364 creationTimeMillis);
Sailesh Nepal60437932014-04-05 16:44:55 -0700365 }
366
367 @Override
Santos Cordon88b771d2014-07-19 13:10:40 -0700368 public ParcelableCall[] newArray(int size) {
369 return new ParcelableCall[size];
Sailesh Nepal60437932014-04-05 16:44:55 -0700370 }
371 };
372
373 /** {@inheritDoc} */
374 @Override
375 public int describeContents() {
376 return 0;
377 }
378
Santos Cordon88b771d2014-07-19 13:10:40 -0700379 /** Writes ParcelableCall object into a Parcel. */
Sailesh Nepal60437932014-04-05 16:44:55 -0700380 @Override
381 public void writeToParcel(Parcel destination, int flags) {
382 destination.writeString(mId);
Ihab Awadb19a0bc2014-08-07 19:46:01 -0700383 destination.writeInt(mState);
Andrew Lee7f3d41f2014-09-11 17:33:16 -0700384 destination.writeParcelable(mDisconnectCause, 0);
Ihab Awadc0677542014-06-10 13:29:47 -0700385 destination.writeList(mCannedSmsResponses);
Sailesh Nepal60437932014-04-05 16:44:55 -0700386 destination.writeInt(mCapabilities);
Andrew Lee223ad142014-08-27 16:33:08 -0700387 destination.writeInt(mProperties);
Sailesh Nepal60437932014-04-05 16:44:55 -0700388 destination.writeLong(mConnectTimeMillis);
389 destination.writeParcelable(mHandle, 0);
Sailesh Nepal61203862014-07-11 14:50:13 -0700390 destination.writeInt(mHandlePresentation);
391 destination.writeString(mCallerDisplayName);
392 destination.writeInt(mCallerDisplayNamePresentation);
Sailesh Nepal60437932014-04-05 16:44:55 -0700393 destination.writeParcelable(mGatewayInfo, 0);
Evan Charlton8c8a0622014-07-20 12:31:00 -0700394 destination.writeParcelable(mAccountHandle, 0);
Tyler Gunn75958422015-04-15 14:23:42 -0700395 destination.writeByte((byte) (mIsVideoCallProviderChanged ? 1 : 0));
Tyler Gunn807de8a2014-06-30 14:22:57 -0700396 destination.writeStrongBinder(
Andrew Lee50aca232014-07-22 16:41:54 -0700397 mVideoCallProvider != null ? mVideoCallProvider.asBinder() : null);
Santos Cordon980acb92014-05-31 10:31:19 -0700398 destination.writeString(mParentCallId);
399 destination.writeList(mChildCallIds);
Sailesh Nepale7ef59a2014-07-08 21:48:22 -0700400 destination.writeParcelable(mStatusHints, 0);
Andrew Lee85f5d422014-07-11 17:22:03 -0700401 destination.writeInt(mVideoState);
Santos Cordon7c7bc7f2014-07-28 18:15:48 -0700402 destination.writeList(mConferenceableCallIds);
Santos Cordon6b7f9552015-05-27 17:21:45 -0700403 destination.writeBundle(mIntentExtras);
404 destination.writeBundle(mExtras);
Christine Hallstrom2830ce92016-11-30 16:06:42 -0800405 destination.writeInt(mSupportedAudioRoutes);
Hall Liu95d55872017-01-25 17:12:49 -0800406 destination.writeByte((byte) (mIsRttCallChanged ? 1 : 0));
407 destination.writeParcelable(mRttCall, 0);
Tyler Gunnc0bf6de2017-03-17 11:27:09 -0700408 destination.writeLong(mCreationTimeMillis);
Sailesh Nepal60437932014-04-05 16:44:55 -0700409 }
Santos Cordonb6939982014-06-04 20:20:58 -0700410
411 @Override
412 public String toString() {
413 return String.format("[%s, parent:%s, children:%s]", mId, mParentCallId, mChildCallIds);
414 }
Sailesh Nepal60437932014-04-05 16:44:55 -0700415}