ParcelableConnection.java revision 6107bab041fb7d851fbf865b7310d294aae970c8
1e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon/* 2e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * Copyright 2014, The Android Open Source Project 3e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * 4e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * Licensed under the Apache License, Version 2.0 (the "License"); 5e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * you may not use this file except in compliance with the License. 6e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * You may obtain a copy of the License at 7e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * 8e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * http://www.apache.org/licenses/LICENSE-2.0 9e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * 10e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * Unless required by applicable law or agreed to in writing, software 11e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * distributed under the License is distributed on an "AS IS" BASIS, 12e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * See the License for the specific language governing permissions and 14e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * limitations under the License. 15e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon */ 16e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 17e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordonpackage android.telecomm; 18e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 19e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordonimport android.net.Uri; 20e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordonimport android.os.Parcel; 21e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordonimport android.os.Parcelable; 22e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 23b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awadimport com.android.internal.telecomm.IVideoProvider; 24e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 25e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon/** 26e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * Information about a connection that is used between Telecomm and the ConnectionService. 27e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * This is used to send initial Connection information to Telecomm when the connection is 28e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * first created. 29e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * @hide 30e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon */ 31e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordonpublic final class ParcelableConnection implements Parcelable { 32e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon private PhoneAccountHandle mPhoneAccount; 33e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon private int mState; 34e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon private int mCapabilities; 35e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon private Uri mHandle; 36e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon private int mHandlePresentation; 37e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon private String mCallerDisplayName; 38e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon private int mCallerDisplayNamePresentation; 39b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad private IVideoProvider mVideoProvider; 40e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon private int mVideoState; 418b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal private boolean mRequestingRingback; 428b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal private boolean mAudioModeIsVoip; 438b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal private StatusHints mStatusHints; 446107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad private int mFailureCode; 456107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad private String mFailureMessage; 46e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 47e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon /** @hide */ 48e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public ParcelableConnection( 49e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon PhoneAccountHandle phoneAccount, 50e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon int state, 51e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon int capabilities, 52e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon Uri handle, 53e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon int handlePresentation, 54e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon String callerDisplayName, 55e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon int callerDisplayNamePresentation, 56b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad IVideoProvider videoProvider, 578b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal int videoState, 588b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal boolean requestingRingback, 598b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal boolean audioModeIsVoip, 606107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad StatusHints statusHints, 616107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad int failureCode, 626107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad String failureMessage) { 63e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon mPhoneAccount = phoneAccount; 64e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon mState = state; 65e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon mCapabilities = capabilities; 66e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon mHandle = handle; 67e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon mHandlePresentation = handlePresentation; 68e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon mCallerDisplayName = callerDisplayName; 69e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon mCallerDisplayNamePresentation = callerDisplayNamePresentation; 70b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad mVideoProvider = videoProvider; 71e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon mVideoState = videoState; 728b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal mRequestingRingback = requestingRingback; 738b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal mAudioModeIsVoip = audioModeIsVoip; 748b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal mStatusHints = statusHints; 756107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad mFailureCode = failureCode; 766107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad mFailureMessage = failureMessage; 77e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 78e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 79e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public PhoneAccountHandle getPhoneAccount() { 80e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return mPhoneAccount; 81e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 82e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 83e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public int getState() { 84e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return mState; 85e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 86e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 87e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon // Bit mask of actions a call supports, values are defined in {@link CallCapabilities}. 88e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public int getCapabilities() { 89e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return mCapabilities; 90e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 91e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 92e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public Uri getHandle() { 93e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return mHandle; 94e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 95e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 96e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public int getHandlePresentation() { 97e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return mHandlePresentation; 98e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 99e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 100e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public String getCallerDisplayName() { 101e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return mCallerDisplayName; 102e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 103e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 104e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public int getCallerDisplayNamePresentation() { 105e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return mCallerDisplayNamePresentation; 106e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 107e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 108b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad public IVideoProvider getVideoProvider() { 109b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad return mVideoProvider; 110e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 111e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 112e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public int getVideoState() { 113e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return mVideoState; 114e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 115e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 1168b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal public boolean isRequestingRingback() { 1178b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal return mRequestingRingback; 1188b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal } 1198b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal 1208b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal public boolean getAudioModeIsVoip() { 1218b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal return mAudioModeIsVoip; 1228b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal } 1238b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal 1248b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal public final StatusHints getStatusHints() { 1258b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal return mStatusHints; 1268b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal } 1278b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal 1286107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad public final int getFailureCode() { 1296107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad return mFailureCode; 1306107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad } 1316107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad 1326107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad public final String getFailureMessage() { 1336107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad return mFailureMessage; 1346107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad } 1356107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad 1367c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon @Override 1377c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon public String toString() { 1387c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon return new StringBuilder() 1397c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon .append("ParcelableConnection [act:") 1407c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon .append(mPhoneAccount) 1417c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon .append(", state:") 1427c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon .append(mState) 1437c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon .append(", capabilities:") 144b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad .append(PhoneCapabilities.toString(mCapabilities)) 1457c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon .toString(); 1467c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon } 1477c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon 148e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public static final Parcelable.Creator<ParcelableConnection> CREATOR = 149e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon new Parcelable.Creator<ParcelableConnection> () { 150e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon @Override 151e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public ParcelableConnection createFromParcel(Parcel source) { 152e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon ClassLoader classLoader = ParcelableConnection.class.getClassLoader(); 153e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 154e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon PhoneAccountHandle phoneAccount = source.readParcelable(classLoader); 155e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon int state = source.readInt(); 156e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon int capabilities = source.readInt(); 157e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon Uri handle = source.readParcelable(classLoader); 158e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon int handlePresentation = source.readInt(); 159e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon String callerDisplayName = source.readString(); 160e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon int callerDisplayNamePresentation = source.readInt(); 161b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad IVideoProvider videoCallProvider = 162b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad IVideoProvider.Stub.asInterface(source.readStrongBinder()); 163e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon int videoState = source.readInt(); 1648b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal boolean requestingRingback = source.readByte() == 1; 1658b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal boolean audioModeIsVoip = source.readByte() == 1; 1668b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal StatusHints statusHints = source.readParcelable(classLoader); 1676107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad int disconnectCauseCode = source.readInt(); 1686107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad String disconnectCauseMessage = source.readString(); 169e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 170e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return new ParcelableConnection( 171e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon phoneAccount, 172e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon state, 173e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon capabilities, 174e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon handle, 175e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon handlePresentation, 176e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon callerDisplayName, 177e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon callerDisplayNamePresentation, 17850aca23bd7f51a3cf32a1f7e32238cc1e26ca1a0Andrew Lee videoCallProvider, 1798b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal videoState, 1808b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal requestingRingback, 1818b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal audioModeIsVoip, 1826107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad statusHints, 1836107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad disconnectCauseCode, 1846107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad disconnectCauseMessage); 185e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 186e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 187e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon @Override 188e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public ParcelableConnection[] newArray(int size) { 189e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return new ParcelableConnection[size]; 190e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 191e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon }; 192e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 193e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon /** {@inheritDoc} */ 194e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon @Override 195e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public int describeContents() { 196e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return 0; 197e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 198e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 199e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon /** Writes ParcelableConnection object into a Parcel. */ 200e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon @Override 201e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public void writeToParcel(Parcel destination, int flags) { 202e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon destination.writeParcelable(mPhoneAccount, 0); 203e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon destination.writeInt(mState); 204e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon destination.writeInt(mCapabilities); 205e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon destination.writeParcelable(mHandle, 0); 206e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon destination.writeInt(mHandlePresentation); 207e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon destination.writeString(mCallerDisplayName); 208e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon destination.writeInt(mCallerDisplayNamePresentation); 209e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon destination.writeStrongBinder( 210b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad mVideoProvider != null ? mVideoProvider.asBinder() : null); 211e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon destination.writeInt(mVideoState); 2128b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal destination.writeByte((byte) (mRequestingRingback ? 1 : 0)); 2138b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal destination.writeByte((byte) (mAudioModeIsVoip ? 1 : 0)); 2148b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal destination.writeParcelable(mStatusHints, 0); 2156107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad destination.writeInt(mFailureCode); 2166107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad destination.writeString(mFailureMessage); 217e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 218e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon} 219