ParcelableConnection.java revision 7f3d41fd124dd7c4a8b72c1d48df08a8ee7209ec
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 17ef9f6f957d897ea0ed82114185b8fa3fefd4917bTyler Gunnpackage android.telecom; 18e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 19e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordonimport android.net.Uri; 20e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordonimport android.os.Parcel; 21e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordonimport android.os.Parcelable; 22e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 23ef9f6f957d897ea0ed82114185b8fa3fefd4917bTyler Gunnimport com.android.internal.telecom.IVideoProvider; 24e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 25b8e85c74e5910a461078704048d67f82b216508cIhab Awadimport java.util.ArrayList; 26b8e85c74e5910a461078704048d67f82b216508cIhab Awadimport java.util.List; 27b8e85c74e5910a461078704048d67f82b216508cIhab Awad 28e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon/** 29ef9f6f957d897ea0ed82114185b8fa3fefd4917bTyler Gunn * Information about a connection that is used between Telecom and the ConnectionService. 30ef9f6f957d897ea0ed82114185b8fa3fefd4917bTyler Gunn * This is used to send initial Connection information to Telecom when the connection is 31e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * first created. 32e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * @hide 33e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon */ 34e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordonpublic final class ParcelableConnection implements Parcelable { 35b8e85c74e5910a461078704048d67f82b216508cIhab Awad private final PhoneAccountHandle mPhoneAccount; 36b8e85c74e5910a461078704048d67f82b216508cIhab Awad private final int mState; 37b8e85c74e5910a461078704048d67f82b216508cIhab Awad private final int mCapabilities; 38100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee private final Uri mAddress; 39100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee private final int mAddressPresentation; 40b8e85c74e5910a461078704048d67f82b216508cIhab Awad private final String mCallerDisplayName; 41b8e85c74e5910a461078704048d67f82b216508cIhab Awad private final int mCallerDisplayNamePresentation; 42b8e85c74e5910a461078704048d67f82b216508cIhab Awad private final IVideoProvider mVideoProvider; 43b8e85c74e5910a461078704048d67f82b216508cIhab Awad private final int mVideoState; 44100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee private final boolean mRingbackRequested; 45100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee private final boolean mIsVoipAudioMode; 46b8e85c74e5910a461078704048d67f82b216508cIhab Awad private final StatusHints mStatusHints; 477f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee private final DisconnectCause mDisconnectCause; 48b8e85c74e5910a461078704048d67f82b216508cIhab Awad private final List<String> mConferenceableConnectionIds; 49e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 50e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon /** @hide */ 51e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public ParcelableConnection( 52e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon PhoneAccountHandle phoneAccount, 53e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon int state, 54e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon int capabilities, 55100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee Uri address, 56100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee int addressPresentation, 57e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon String callerDisplayName, 58e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon int callerDisplayNamePresentation, 59b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad IVideoProvider videoProvider, 608b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal int videoState, 61100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee boolean ringbackRequested, 62100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee boolean isVoipAudioMode, 636107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad StatusHints statusHints, 647f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee DisconnectCause disconnectCause, 65b8e85c74e5910a461078704048d67f82b216508cIhab Awad List<String> conferenceableConnectionIds) { 66e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon mPhoneAccount = phoneAccount; 67e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon mState = state; 68e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon mCapabilities = capabilities; 69100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee mAddress = address; 70100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee mAddressPresentation = addressPresentation; 71e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon mCallerDisplayName = callerDisplayName; 72e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon mCallerDisplayNamePresentation = callerDisplayNamePresentation; 73b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad mVideoProvider = videoProvider; 74e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon mVideoState = videoState; 75100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee mRingbackRequested = ringbackRequested; 76100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee mIsVoipAudioMode = isVoipAudioMode; 778b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal mStatusHints = statusHints; 78cf7020b7e84c1f5190db7167d70cb0675cd3332fSailesh Nepal mDisconnectCause = disconnectCause; 79b8e85c74e5910a461078704048d67f82b216508cIhab Awad this.mConferenceableConnectionIds = conferenceableConnectionIds; 80e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 81e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 82e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public PhoneAccountHandle getPhoneAccount() { 83e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return mPhoneAccount; 84e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 85e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 86e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public int getState() { 87e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return mState; 88e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 89e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 90e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon // Bit mask of actions a call supports, values are defined in {@link CallCapabilities}. 91e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public int getCapabilities() { 92e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return mCapabilities; 93e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 94e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 95e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public Uri getHandle() { 96100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee return mAddress; 97e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 98e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 99e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public int getHandlePresentation() { 100100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee return mAddressPresentation; 101e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 102e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 103e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public String getCallerDisplayName() { 104e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return mCallerDisplayName; 105e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 106e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 107e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public int getCallerDisplayNamePresentation() { 108e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return mCallerDisplayNamePresentation; 109e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 110e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 111b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad public IVideoProvider getVideoProvider() { 112b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad return mVideoProvider; 113e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 114e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 115e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public int getVideoState() { 116e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return mVideoState; 117e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 118e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 119100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee public boolean isRingbackRequested() { 120100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee return mRingbackRequested; 1218b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal } 1228b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal 123100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee public boolean getIsVoipAudioMode() { 124100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee return mIsVoipAudioMode; 1258b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal } 1268b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal 1278b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal public final StatusHints getStatusHints() { 1288b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal return mStatusHints; 1298b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal } 1308b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal 1317f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public final DisconnectCause getDisconnectCause() { 132cf7020b7e84c1f5190db7167d70cb0675cd3332fSailesh Nepal return mDisconnectCause; 1336107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad } 1346107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad 135b8e85c74e5910a461078704048d67f82b216508cIhab Awad public final List<String> getConferenceableConnectionIds() { 136b8e85c74e5910a461078704048d67f82b216508cIhab Awad return mConferenceableConnectionIds; 137b8e85c74e5910a461078704048d67f82b216508cIhab Awad } 138b8e85c74e5910a461078704048d67f82b216508cIhab Awad 1397c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon @Override 1407c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon public String toString() { 1417c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon return new StringBuilder() 1427c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon .append("ParcelableConnection [act:") 1437c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon .append(mPhoneAccount) 1447c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon .append(", state:") 1457c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon .append(mState) 1467c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon .append(", capabilities:") 147b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad .append(PhoneCapabilities.toString(mCapabilities)) 1487c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon .toString(); 1497c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon } 1507c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon 151e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public static final Parcelable.Creator<ParcelableConnection> CREATOR = 152e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon new Parcelable.Creator<ParcelableConnection> () { 153e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon @Override 154e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public ParcelableConnection createFromParcel(Parcel source) { 155e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon ClassLoader classLoader = ParcelableConnection.class.getClassLoader(); 156e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 157e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon PhoneAccountHandle phoneAccount = source.readParcelable(classLoader); 158e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon int state = source.readInt(); 159e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon int capabilities = source.readInt(); 160100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee Uri address = source.readParcelable(classLoader); 161100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee int addressPresentation = source.readInt(); 162e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon String callerDisplayName = source.readString(); 163e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon int callerDisplayNamePresentation = source.readInt(); 164b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad IVideoProvider videoCallProvider = 165b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad IVideoProvider.Stub.asInterface(source.readStrongBinder()); 166e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon int videoState = source.readInt(); 167100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee boolean ringbackRequested = source.readByte() == 1; 1688b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal boolean audioModeIsVoip = source.readByte() == 1; 1698b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal StatusHints statusHints = source.readParcelable(classLoader); 1707f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee DisconnectCause disconnectCause = source.readParcelable(classLoader); 171b8e85c74e5910a461078704048d67f82b216508cIhab Awad List<String> conferenceableConnectionIds = new ArrayList<>(); 172b8e85c74e5910a461078704048d67f82b216508cIhab Awad source.readStringList(conferenceableConnectionIds); 173e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 174e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return new ParcelableConnection( 175e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon phoneAccount, 176e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon state, 177e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon capabilities, 178100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee address, 179100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee addressPresentation, 180e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon callerDisplayName, 181e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon callerDisplayNamePresentation, 18250aca23bd7f51a3cf32a1f7e32238cc1e26ca1a0Andrew Lee videoCallProvider, 1838b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal videoState, 184100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee ringbackRequested, 1858b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal audioModeIsVoip, 1866107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad statusHints, 1877f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee disconnectCause, 188b8e85c74e5910a461078704048d67f82b216508cIhab Awad conferenceableConnectionIds); 189e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 190e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 191e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon @Override 192e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public ParcelableConnection[] newArray(int size) { 193e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return new ParcelableConnection[size]; 194e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 195e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon }; 196e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 197e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon /** {@inheritDoc} */ 198e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon @Override 199e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public int describeContents() { 200e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon return 0; 201e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 202e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon 203e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon /** Writes ParcelableConnection object into a Parcel. */ 204e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon @Override 205e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon public void writeToParcel(Parcel destination, int flags) { 206e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon destination.writeParcelable(mPhoneAccount, 0); 207e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon destination.writeInt(mState); 208e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon destination.writeInt(mCapabilities); 209100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee destination.writeParcelable(mAddress, 0); 210100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee destination.writeInt(mAddressPresentation); 211e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon destination.writeString(mCallerDisplayName); 212e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon destination.writeInt(mCallerDisplayNamePresentation); 213e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon destination.writeStrongBinder( 214b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad mVideoProvider != null ? mVideoProvider.asBinder() : null); 215e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon destination.writeInt(mVideoState); 216100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee destination.writeByte((byte) (mRingbackRequested ? 1 : 0)); 217100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee destination.writeByte((byte) (mIsVoipAudioMode ? 1 : 0)); 2188b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal destination.writeParcelable(mStatusHints, 0); 2197f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee destination.writeParcelable(mDisconnectCause, 0); 220b8e85c74e5910a461078704048d67f82b216508cIhab Awad destination.writeStringList(mConferenceableConnectionIds); 221e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon } 222e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon} 223