10464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu/* 20464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu * Copyright (C) 2016 The Android Open Source Project 30464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu * 40464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu * Licensed under the Apache License, Version 2.0 (the "License"); 50464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu * you may not use this file except in compliance with the License. 60464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu * You may obtain a copy of the License at 70464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu * 80464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu * http://www.apache.org/licenses/LICENSE-2.0 90464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu * 100464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu * Unless required by applicable law or agreed to in writing, software 110464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu * distributed under the License is distributed on an "AS IS" BASIS, 120464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu * See the License for the specific language governing permissions and 140464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu * limitations under the License 150464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu */ 160464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 170464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liupackage android.telecom; 180464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 190464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liuimport android.annotation.SystemApi; 200464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liuimport android.os.Parcel; 210464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liuimport android.os.Parcelable; 220464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 23057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liuimport java.util.ArrayList; 24bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liuimport java.util.LinkedList; 25057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liuimport java.util.List; 26057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 270464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu/** 280464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu * @hide 290464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu */ 300464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu@SystemApi 310464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liupublic class ParcelableCallAnalytics implements Parcelable { 324f73fc7c5b2eecab78457e7dadce039fc4bd9829Jeff Sharkey /** {@hide} */ 33bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public static final class VideoEvent implements Parcelable { 34bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public static final int SEND_LOCAL_SESSION_MODIFY_REQUEST = 0; 35bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public static final int SEND_LOCAL_SESSION_MODIFY_RESPONSE = 1; 36bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public static final int RECEIVE_REMOTE_SESSION_MODIFY_REQUEST = 2; 37bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public static final int RECEIVE_REMOTE_SESSION_MODIFY_RESPONSE = 3; 38bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu 39bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public static final Parcelable.Creator<VideoEvent> CREATOR = 40bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu new Parcelable.Creator<VideoEvent> () { 41bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu 42bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu @Override 43bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public VideoEvent createFromParcel(Parcel in) { 44bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu return new VideoEvent(in); 45bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu } 46bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu 47bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu @Override 48bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public VideoEvent[] newArray(int size) { 49bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu return new VideoEvent[size]; 50bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu } 51bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu }; 52bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu 53bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu private int mEventName; 54bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu private long mTimeSinceLastEvent; 55bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu private int mVideoState; 56bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu 57bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public VideoEvent(int eventName, long timeSinceLastEvent, int videoState) { 58bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu mEventName = eventName; 59bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu mTimeSinceLastEvent = timeSinceLastEvent; 60bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu mVideoState = videoState; 61bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu } 62bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu 63bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu VideoEvent(Parcel in) { 64bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu mEventName = in.readInt(); 65bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu mTimeSinceLastEvent = in.readLong(); 66bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu mVideoState = in.readInt(); 67bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu } 68bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu 69bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public int getEventName() { 70bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu return mEventName; 71bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu } 72bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu 73bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public long getTimeSinceLastEvent() { 74bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu return mTimeSinceLastEvent; 75bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu } 76bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu 77bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public int getVideoState() { 78bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu return mVideoState; 79bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu } 80bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu 81bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu @Override 82bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public int describeContents() { 83bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu return 0; 84bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu } 85bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu 86bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu @Override 87bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public void writeToParcel(Parcel out, int flags) { 88bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu out.writeInt(mEventName); 89bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu out.writeLong(mTimeSinceLastEvent); 90bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu out.writeInt(mVideoState); 91bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu } 92bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu } 93bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu 94057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final class AnalyticsEvent implements Parcelable { 95057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int SET_SELECT_PHONE_ACCOUNT = 0; 96057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int SET_ACTIVE = 1; 97057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int SET_DISCONNECTED = 2; 98057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int START_CONNECTION = 3; 99057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int SET_DIALING = 4; 100057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int BIND_CS = 5; 101057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int CS_BOUND = 6; 102057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int REQUEST_ACCEPT = 7; 103057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int REQUEST_REJECT = 8; 104057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 105057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int SCREENING_SENT = 100; 106057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int SCREENING_COMPLETED = 101; 107057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int DIRECT_TO_VM_INITIATED = 102; 108057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int DIRECT_TO_VM_FINISHED = 103; 109057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int BLOCK_CHECK_INITIATED = 104; 110057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int BLOCK_CHECK_FINISHED = 105; 111057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int FILTERING_INITIATED = 106; 112057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int FILTERING_COMPLETED = 107; 113057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int FILTERING_TIMED_OUT = 108; 114057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 115057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int SKIP_RINGING = 200; 116057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int SILENCE = 201; 117057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int MUTE = 202; 118057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int UNMUTE = 203; 119057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int AUDIO_ROUTE_BT = 204; 120057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int AUDIO_ROUTE_EARPIECE = 205; 121057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int AUDIO_ROUTE_HEADSET = 206; 122057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int AUDIO_ROUTE_SPEAKER = 207; 123057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 124057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int CONFERENCE_WITH = 300; 125057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int SPLIT_CONFERENCE = 301; 126057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int SET_PARENT = 302; 127057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 128057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int REQUEST_HOLD = 400; 129057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int REQUEST_UNHOLD = 401; 130057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int REMOTELY_HELD = 402; 131057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int REMOTELY_UNHELD = 403; 132057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int SET_HOLD = 404; 133057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int SWAP = 405; 134057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 135057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int REQUEST_PULL = 500; 136057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 137057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 138057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final Parcelable.Creator<AnalyticsEvent> CREATOR = 139057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu new Parcelable.Creator<AnalyticsEvent> () { 140057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 141057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 142057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public AnalyticsEvent createFromParcel(Parcel in) { 143057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return new AnalyticsEvent(in); 144057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 145057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 146057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 147057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public AnalyticsEvent[] newArray(int size) { 148057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return new AnalyticsEvent[size]; 149057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 150057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu }; 151057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 152057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu private int mEventName; 153057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu private long mTimeSinceLastEvent; 154057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 155057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public AnalyticsEvent(int eventName, long timestamp) { 156057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu mEventName = eventName; 157057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu mTimeSinceLastEvent = timestamp; 158057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 159057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 160057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu AnalyticsEvent(Parcel in) { 161057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu mEventName = in.readInt(); 162057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu mTimeSinceLastEvent = in.readLong(); 163057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 164057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 165057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public int getEventName() { 166057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return mEventName; 167057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 168057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 169057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public long getTimeSinceLastEvent() { 170057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return mTimeSinceLastEvent; 171057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 172057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 173057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 174057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public int describeContents() { 175057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return 0; 176057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 177057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 178057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 179057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public void writeToParcel(Parcel out, int flags) { 180057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu out.writeInt(mEventName); 181057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu out.writeLong(mTimeSinceLastEvent); 182057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 183057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 184057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 185057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final class EventTiming implements Parcelable { 186057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int ACCEPT_TIMING = 0; 187057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int REJECT_TIMING = 1; 188057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int DISCONNECT_TIMING = 2; 189057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int HOLD_TIMING = 3; 190057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int UNHOLD_TIMING = 4; 191057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int OUTGOING_TIME_TO_DIALING_TIMING = 5; 192057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int BIND_CS_TIMING = 6; 193057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int SCREENING_COMPLETED_TIMING = 7; 194057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int DIRECT_TO_VM_FINISHED_TIMING = 8; 195057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int BLOCK_CHECK_FINISHED_TIMING = 9; 196057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int FILTERING_COMPLETED_TIMING = 10; 197057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int FILTERING_TIMED_OUT_TIMING = 11; 198057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 199057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int INVALID = 999999; 200057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 201057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final Parcelable.Creator<EventTiming> CREATOR = 202057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu new Parcelable.Creator<EventTiming> () { 203057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 204057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 205057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public EventTiming createFromParcel(Parcel in) { 206057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return new EventTiming(in); 207057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 208057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 209057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 210057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public EventTiming[] newArray(int size) { 211057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return new EventTiming[size]; 212057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 213057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu }; 214057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 215057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu private int mName; 216057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu private long mTime; 217057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 218057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public EventTiming(int name, long time) { 219057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu this.mName = name; 220057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu this.mTime = time; 221057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 222057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 223057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu private EventTiming(Parcel in) { 224057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu mName = in.readInt(); 225057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu mTime = in.readLong(); 226057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 227057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 228057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public int getName() { 229057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return mName; 230057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 231057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 232057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public long getTime() { 233057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return mTime; 234057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 235057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 236057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 237057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public int describeContents() { 238057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return 0; 239057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 240057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 241057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 242057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public void writeToParcel(Parcel out, int flags) { 243057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu out.writeInt(mName); 244057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu out.writeLong(mTime); 245057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 246057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 247057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 2480464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public static final int CALLTYPE_UNKNOWN = 0; 2490464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public static final int CALLTYPE_INCOMING = 1; 2500464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public static final int CALLTYPE_OUTGOING = 2; 2510464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 2520464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu // Constants for call technology 2530464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public static final int CDMA_PHONE = 0x1; 2540464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public static final int GSM_PHONE = 0x2; 2550464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public static final int IMS_PHONE = 0x4; 2560464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public static final int SIP_PHONE = 0x8; 2570464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public static final int THIRD_PARTY_PHONE = 0x10; 2580464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 2590464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public static final long MILLIS_IN_5_MINUTES = 1000 * 60 * 5; 2600464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public static final long MILLIS_IN_1_SECOND = 1000; 2610464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 2620464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public static final int STILL_CONNECTED = -1; 2630464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 2640464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public static final Parcelable.Creator<ParcelableCallAnalytics> CREATOR = 2650464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu new Parcelable.Creator<ParcelableCallAnalytics> () { 2660464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 2670464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu @Override 2680464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public ParcelableCallAnalytics createFromParcel(Parcel in) { 2690464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu return new ParcelableCallAnalytics(in); 2700464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 2710464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 2720464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu @Override 2730464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public ParcelableCallAnalytics[] newArray(int size) { 2740464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu return new ParcelableCallAnalytics[size]; 2750464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 2760464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu }; 2770464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 2780464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu // The start time of the call in milliseconds since Jan. 1, 1970, rounded to the nearest 2790464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu // 5 minute increment. 2800464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu private final long startTimeMillis; 2810464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 2820464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu // The duration of the call, in milliseconds. 2830464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu private final long callDurationMillis; 2840464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 2850464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu // ONE OF calltype_unknown, calltype_incoming, or calltype_outgoing 2860464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu private final int callType; 2870464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 2880464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu // true if the call came in while another call was in progress or if the user dialed this call 2890464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu // while in the middle of another call. 2900464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu private final boolean isAdditionalCall; 2910464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 2920464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu // true if the call was interrupted by an incoming or outgoing call. 2930464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu private final boolean isInterrupted; 2940464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 2950464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu // bitmask denoting which technologies a call used. 2960464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu private final int callTechnologies; 2970464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 2980464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu // Any of the DisconnectCause codes, or STILL_CONNECTED. 2990464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu private final int callTerminationCode; 3000464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 3010464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu // Whether the call is an emergency call 3020464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu private final boolean isEmergencyCall; 3030464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 3040464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu // The package name of the connection service that this call used. 3050464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu private final String connectionService; 3060464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 3070464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu // Whether the call object was created from an existing connection. 3080464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu private final boolean isCreatedFromExistingConnection; 3090464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 310057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu // A list of events that are associated with this call 311057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu private final List<AnalyticsEvent> analyticsEvents; 312057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 313057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu // A map from event-pair names to their durations. 314057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu private final List<EventTiming> eventTimings; 315057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 316bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu // Whether the call has ever been a video call. 317bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu private boolean isVideoCall = false; 318bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu 319bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu // A list of video events that have occurred. 320bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu private List<VideoEvent> videoEvents; 321bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu 3220464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public ParcelableCallAnalytics(long startTimeMillis, long callDurationMillis, int callType, 3230464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu boolean isAdditionalCall, boolean isInterrupted, int callTechnologies, 3240464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu int callTerminationCode, boolean isEmergencyCall, String connectionService, 325057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu boolean isCreatedFromExistingConnection, List<AnalyticsEvent> analyticsEvents, 326057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu List<EventTiming> eventTimings) { 3270464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu this.startTimeMillis = startTimeMillis; 3280464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu this.callDurationMillis = callDurationMillis; 3290464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu this.callType = callType; 3300464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu this.isAdditionalCall = isAdditionalCall; 3310464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu this.isInterrupted = isInterrupted; 3320464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu this.callTechnologies = callTechnologies; 3330464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu this.callTerminationCode = callTerminationCode; 3340464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu this.isEmergencyCall = isEmergencyCall; 3350464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu this.connectionService = connectionService; 3360464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu this.isCreatedFromExistingConnection = isCreatedFromExistingConnection; 337057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu this.analyticsEvents = analyticsEvents; 338057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu this.eventTimings = eventTimings; 3390464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 3400464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 3410464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public ParcelableCallAnalytics(Parcel in) { 3420464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu startTimeMillis = in.readLong(); 3430464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu callDurationMillis = in.readLong(); 3440464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu callType = in.readInt(); 3450464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu isAdditionalCall = readByteAsBoolean(in); 3460464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu isInterrupted = readByteAsBoolean(in); 3470464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu callTechnologies = in.readInt(); 3480464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu callTerminationCode = in.readInt(); 3490464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu isEmergencyCall = readByteAsBoolean(in); 3500464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu connectionService = in.readString(); 3510464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu isCreatedFromExistingConnection = readByteAsBoolean(in); 352057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu analyticsEvents = new ArrayList<>(); 353057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu in.readTypedList(analyticsEvents, AnalyticsEvent.CREATOR); 354057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu eventTimings = new ArrayList<>(); 355057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu in.readTypedList(eventTimings, EventTiming.CREATOR); 356bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu isVideoCall = readByteAsBoolean(in); 357bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu videoEvents = new LinkedList<>(); 358bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu in.readTypedList(videoEvents, VideoEvent.CREATOR); 3590464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 3600464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 3610464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public void writeToParcel(Parcel out, int flags) { 3620464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu out.writeLong(startTimeMillis); 3630464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu out.writeLong(callDurationMillis); 3640464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu out.writeInt(callType); 3650464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu writeBooleanAsByte(out, isAdditionalCall); 3660464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu writeBooleanAsByte(out, isInterrupted); 3670464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu out.writeInt(callTechnologies); 3680464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu out.writeInt(callTerminationCode); 3690464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu writeBooleanAsByte(out, isEmergencyCall); 3700464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu out.writeString(connectionService); 3710464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu writeBooleanAsByte(out, isCreatedFromExistingConnection); 372057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu out.writeTypedList(analyticsEvents); 373057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu out.writeTypedList(eventTimings); 374bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu writeBooleanAsByte(out, isVideoCall); 375bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu out.writeTypedList(videoEvents); 376bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu } 3774f73fc7c5b2eecab78457e7dadce039fc4bd9829Jeff Sharkey 3784f73fc7c5b2eecab78457e7dadce039fc4bd9829Jeff Sharkey /** {@hide} */ 379bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public void setIsVideoCall(boolean isVideoCall) { 380bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu this.isVideoCall = isVideoCall; 381bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu } 382bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu 3834f73fc7c5b2eecab78457e7dadce039fc4bd9829Jeff Sharkey /** {@hide} */ 384bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public void setVideoEvents(List<VideoEvent> videoEvents) { 385bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu this.videoEvents = videoEvents; 3860464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 3870464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 3880464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public long getStartTimeMillis() { 3890464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu return startTimeMillis; 3900464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 3910464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 3920464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public long getCallDurationMillis() { 3930464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu return callDurationMillis; 3940464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 3950464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 3960464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public int getCallType() { 3970464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu return callType; 3980464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 3990464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 4000464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public boolean isAdditionalCall() { 4010464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu return isAdditionalCall; 4020464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 4030464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 4040464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public boolean isInterrupted() { 4050464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu return isInterrupted; 4060464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 4070464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 4080464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public int getCallTechnologies() { 4090464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu return callTechnologies; 4100464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 4110464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 4120464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public int getCallTerminationCode() { 4130464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu return callTerminationCode; 4140464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 4150464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 4160464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public boolean isEmergencyCall() { 4170464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu return isEmergencyCall; 4180464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 4190464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 4200464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public String getConnectionService() { 4210464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu return connectionService; 4220464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 4230464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 4240464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public boolean isCreatedFromExistingConnection() { 4250464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu return isCreatedFromExistingConnection; 4260464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 4270464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 428057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public List<AnalyticsEvent> analyticsEvents() { 429057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return analyticsEvents; 430057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 431057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 432057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public List<EventTiming> getEventTimings() { 433057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return eventTimings; 434057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 435057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 4364f73fc7c5b2eecab78457e7dadce039fc4bd9829Jeff Sharkey /** {@hide} */ 437bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public boolean isVideoCall() { 438bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu return isVideoCall; 439bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu } 440bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu 4414f73fc7c5b2eecab78457e7dadce039fc4bd9829Jeff Sharkey /** {@hide} */ 442bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu public List<VideoEvent> getVideoEvents() { 443bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu return videoEvents; 444bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu } 445bd72c9f62aa175ae9912140fd2c6c22cf1d04bc5Hall Liu 4460464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu @Override 4470464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu public int describeContents() { 4480464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu return 0; 4490464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 4500464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 4510464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu private static void writeBooleanAsByte(Parcel out, boolean b) { 4520464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu out.writeByte((byte) (b ? 1 : 0)); 4530464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 4540464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu 4550464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu private static boolean readByteAsBoolean(Parcel in) { 4560464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu return (in.readByte() == 1); 4570464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu } 4580464b9ba16ea49f7bff55d7d85231c6dd832b58eHall Liu} 459