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