ParcelableConference.java revision 07366813cdf3768dcd69a1f744023747564d654a
1823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon/* 2823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * Copyright 2014, The Android Open Source Project 3823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * 4823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * Licensed under the Apache License, Version 2.0 (the "License"); 5823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * you may not use this file except in compliance with the License. 6823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * You may obtain a copy of the License at 7823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * 8823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * http://www.apache.org/licenses/LICENSE-2.0 9823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * 10823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * Unless required by applicable law or agreed to in writing, software 11823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * distributed under the License is distributed on an "AS IS" BASIS, 12823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * See the License for the specific language governing permissions and 14823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * limitations under the License. 15823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon */ 16823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 17ef9f6f957d897ea0ed82114185b8fa3fefd4917bTyler Gunnpackage android.telecom; 18823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 19823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonimport android.os.Parcel; 20823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonimport android.os.Parcelable; 21823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 22823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonimport java.util.ArrayList; 23823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonimport java.util.List; 24823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 2507366813cdf3768dcd69a1f744023747564d654aRekha Kumarimport com.android.internal.telecom.IVideoProvider; 2607366813cdf3768dcd69a1f744023747564d654aRekha Kumar 27823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon/** 28823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * A parcelable representation of a conference connection. 29823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * @hide 30823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon */ 31823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonpublic final class ParcelableConference implements Parcelable { 32823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 33823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon private PhoneAccountHandle mPhoneAccount; 34823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon private int mState; 355c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad private int mConnectionCapabilities; 36823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon private List<String> mConnectionIds; 37cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn private long mConnectTimeMillis; 3807366813cdf3768dcd69a1f744023747564d654aRekha Kumar private final IVideoProvider mVideoProvider; 3907366813cdf3768dcd69a1f744023747564d654aRekha Kumar private final int mVideoState; 40823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 41823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public ParcelableConference( 42823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon PhoneAccountHandle phoneAccount, 43823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon int state, 445c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad int connectionCapabilities, 4507366813cdf3768dcd69a1f744023747564d654aRekha Kumar List<String> connectionIds, 4607366813cdf3768dcd69a1f744023747564d654aRekha Kumar IVideoProvider videoProvider, 4707366813cdf3768dcd69a1f744023747564d654aRekha Kumar int videoState) { 48823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon mPhoneAccount = phoneAccount; 49823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon mState = state; 505c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad mConnectionCapabilities = connectionCapabilities; 51823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon mConnectionIds = connectionIds; 52cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn mConnectTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED; 5307366813cdf3768dcd69a1f744023747564d654aRekha Kumar mVideoProvider = videoProvider; 5407366813cdf3768dcd69a1f744023747564d654aRekha Kumar mVideoState = videoState; 55cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn } 56cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn 57cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn public ParcelableConference( 58cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn PhoneAccountHandle phoneAccount, 59cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn int state, 60cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn int connectionCapabilities, 61cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn List<String> connectionIds, 6207366813cdf3768dcd69a1f744023747564d654aRekha Kumar IVideoProvider videoProvider, 6307366813cdf3768dcd69a1f744023747564d654aRekha Kumar int videoState, 64cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn long connectTimeMillis) { 6507366813cdf3768dcd69a1f744023747564d654aRekha Kumar this(phoneAccount, state, connectionCapabilities, connectionIds, videoProvider, videoState); 66cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn mConnectTimeMillis = connectTimeMillis; 67823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 68823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 69823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon @Override 70823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public String toString() { 71823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon return (new StringBuffer()) 72823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon .append("account: ") 73823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon .append(mPhoneAccount) 74823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon .append(", state: ") 75823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon .append(Connection.stateToString(mState)) 76823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon .append(", capabilities: ") 775c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad .append(Connection.capabilitiesToString(mConnectionCapabilities)) 78cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn .append(", connectTime: ") 79cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn .append(mConnectTimeMillis) 80823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon .append(", children: ") 81823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon .append(mConnectionIds) 8207366813cdf3768dcd69a1f744023747564d654aRekha Kumar .append(", VideoState: ") 8307366813cdf3768dcd69a1f744023747564d654aRekha Kumar .append(mVideoState) 8407366813cdf3768dcd69a1f744023747564d654aRekha Kumar .append(", VideoProvider: ") 8507366813cdf3768dcd69a1f744023747564d654aRekha Kumar .append(mVideoProvider) 86823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon .toString(); 87823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 88823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 89823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public PhoneAccountHandle getPhoneAccount() { 90823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon return mPhoneAccount; 91823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 92823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 93823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public int getState() { 94823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon return mState; 95823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 96823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 975c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad public int getConnectionCapabilities() { 985c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad return mConnectionCapabilities; 99823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 100823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 101823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public List<String> getConnectionIds() { 102823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon return mConnectionIds; 103823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 104823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 105cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn public long getConnectTimeMillis() { 106cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn return mConnectTimeMillis; 107cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn } 10807366813cdf3768dcd69a1f744023747564d654aRekha Kumar public IVideoProvider getVideoProvider() { 10907366813cdf3768dcd69a1f744023747564d654aRekha Kumar return mVideoProvider; 11007366813cdf3768dcd69a1f744023747564d654aRekha Kumar } 11107366813cdf3768dcd69a1f744023747564d654aRekha Kumar 11207366813cdf3768dcd69a1f744023747564d654aRekha Kumar public int getVideoState() { 11307366813cdf3768dcd69a1f744023747564d654aRekha Kumar return mVideoState; 11407366813cdf3768dcd69a1f744023747564d654aRekha Kumar } 115cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn 116823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public static final Parcelable.Creator<ParcelableConference> CREATOR = 117823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon new Parcelable.Creator<ParcelableConference> () { 118823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon @Override 119823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public ParcelableConference createFromParcel(Parcel source) { 120823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon ClassLoader classLoader = ParcelableConference.class.getClassLoader(); 121823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon PhoneAccountHandle phoneAccount = source.readParcelable(classLoader); 122823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon int state = source.readInt(); 123823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon int capabilities = source.readInt(); 124823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon List<String> connectionIds = new ArrayList<>(2); 125823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon source.readList(connectionIds, classLoader); 126cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn long connectTimeMillis = source.readLong(); 127823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 12807366813cdf3768dcd69a1f744023747564d654aRekha Kumar IVideoProvider videoCallProvider = 12907366813cdf3768dcd69a1f744023747564d654aRekha Kumar IVideoProvider.Stub.asInterface(source.readStrongBinder()); 13007366813cdf3768dcd69a1f744023747564d654aRekha Kumar int videoState = source.readInt(); 13107366813cdf3768dcd69a1f744023747564d654aRekha Kumar 132cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn return new ParcelableConference(phoneAccount, state, capabilities, connectionIds, 13307366813cdf3768dcd69a1f744023747564d654aRekha Kumar videoCallProvider, videoState); 134823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 135823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 136823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon @Override 137823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public ParcelableConference[] newArray(int size) { 138823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon return new ParcelableConference[size]; 139823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 140823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon }; 141823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 142823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon /** {@inheritDoc} */ 143823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon @Override 144823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public int describeContents() { 145823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon return 0; 146823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 147823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 148823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon /** Writes ParcelableConference object into a Parcel. */ 149823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon @Override 150823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public void writeToParcel(Parcel destination, int flags) { 151823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon destination.writeParcelable(mPhoneAccount, 0); 152823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon destination.writeInt(mState); 1535c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad destination.writeInt(mConnectionCapabilities); 154823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon destination.writeList(mConnectionIds); 155cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn destination.writeLong(mConnectTimeMillis); 15607366813cdf3768dcd69a1f744023747564d654aRekha Kumar destination.writeStrongBinder( 15707366813cdf3768dcd69a1f744023747564d654aRekha Kumar mVideoProvider != null ? mVideoProvider.asBinder() : null); 15807366813cdf3768dcd69a1f744023747564d654aRekha Kumar destination.writeInt(mVideoState); 159823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 160823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon} 161