1057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu/* 2057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu * Copyright (C) 2016 The Android Open Source Project 3057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu * 4057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu * Licensed under the Apache License, Version 2.0 (the "License"); 5057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu * you may not use this file except in compliance with the License. 6057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu * You may obtain a copy of the License at 7057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu * 8057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu * http://www.apache.org/licenses/LICENSE-2.0 9057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu * 10057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu * Unless required by applicable law or agreed to in writing, software 11057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu * distributed under the License is distributed on an "AS IS" BASIS, 12057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu * See the License for the specific language governing permissions and 14057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu * limitations under the License 15057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu */ 16057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 17057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liupackage android.telecom; 18057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 19057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liuimport android.annotation.SystemApi; 20057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liuimport android.os.Parcel; 21057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liuimport android.os.Parcelable; 22057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 23057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liuimport java.util.ArrayList; 24057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liuimport java.util.List; 25057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 26057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu/** 27057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu * @hide 28057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu */ 29057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu@SystemApi 30057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liupublic final class TelecomAnalytics implements Parcelable { 31057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final Parcelable.Creator<TelecomAnalytics> CREATOR = 32057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu new Parcelable.Creator<TelecomAnalytics> () { 33057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 34057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 35057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public TelecomAnalytics createFromParcel(Parcel in) { 36057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return new TelecomAnalytics(in); 37057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 38057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 39057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 40057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public TelecomAnalytics[] newArray(int size) { 41057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return new TelecomAnalytics[size]; 42057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 43057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu }; 44057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 45057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final class SessionTiming extends TimedEvent<Integer> implements Parcelable { 46057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final Parcelable.Creator<SessionTiming> CREATOR = 47057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu new Parcelable.Creator<SessionTiming> () { 48057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 49057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 50057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public SessionTiming createFromParcel(Parcel in) { 51057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return new SessionTiming(in); 52057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 53057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 54057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 55057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public SessionTiming[] newArray(int size) { 56057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return new SessionTiming[size]; 57057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 58057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu }; 59057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 60057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int ICA_ANSWER_CALL = 1; 61057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int ICA_REJECT_CALL = 2; 62057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int ICA_DISCONNECT_CALL = 3; 63057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int ICA_HOLD_CALL = 4; 64057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int ICA_UNHOLD_CALL = 5; 65057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int ICA_MUTE = 6; 66057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int ICA_SET_AUDIO_ROUTE = 7; 67057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int ICA_CONFERENCE = 8; 68057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 69057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int CSW_HANDLE_CREATE_CONNECTION_COMPLETE = 100; 70057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int CSW_SET_ACTIVE = 101; 71057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int CSW_SET_RINGING = 102; 72057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int CSW_SET_DIALING = 103; 73057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int CSW_SET_DISCONNECTED = 104; 74057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int CSW_SET_ON_HOLD = 105; 75057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int CSW_REMOVE_CALL = 106; 76057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int CSW_SET_IS_CONFERENCED = 107; 77057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public static final int CSW_ADD_CONFERENCE_CALL = 108; 78057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 79057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu private int mId; 80057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu private long mTime; 81057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 82057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public SessionTiming(int id, long time) { 83057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu this.mId = id; 84057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu this.mTime = time; 85057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 86057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 87057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu private SessionTiming(Parcel in) { 88057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu mId = in.readInt(); 89057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu mTime = in.readLong(); 90057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 91057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 92057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 93057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public Integer getKey() { 94057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return mId; 95057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 96057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 97057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 98057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public long getTime() { 99057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return mTime; 100057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 101057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 102057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 103057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public int describeContents() { 104057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return 0; 105057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 106057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 107057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 108057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public void writeToParcel(Parcel out, int flags) { 109057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu out.writeInt(mId); 110057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu out.writeLong(mTime); 111057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 112057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 113057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 114057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu private List<SessionTiming> mSessionTimings; 115057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu private List<ParcelableCallAnalytics> mCallAnalytics; 116057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 117057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public TelecomAnalytics(List<SessionTiming> sessionTimings, 118057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu List<ParcelableCallAnalytics> callAnalytics) { 119057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu this.mSessionTimings = sessionTimings; 120057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu this.mCallAnalytics = callAnalytics; 121057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 122057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 123057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu private TelecomAnalytics(Parcel in) { 124057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu mSessionTimings = new ArrayList<>(); 125057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu in.readTypedList(mSessionTimings, SessionTiming.CREATOR); 126057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu mCallAnalytics = new ArrayList<>(); 127057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu in.readTypedList(mCallAnalytics, ParcelableCallAnalytics.CREATOR); 128057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 129057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 130057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public List<SessionTiming> getSessionTimings() { 131057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return mSessionTimings; 132057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 133057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 134057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public List<ParcelableCallAnalytics> getCallAnalytics() { 135057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return mCallAnalytics; 136057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 137057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 138057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 139057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public int describeContents() { 140057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu return 0; 141057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 142057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu 143057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu @Override 144057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu public void writeToParcel(Parcel out, int flags) { 145057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu out.writeTypedList(mSessionTimings); 146057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu out.writeTypedList(mCallAnalytics); 147057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu } 148057def534c2a18e2e1b70e1e5e04ce09e9ac3b79Hall Liu} 149