19089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger/*
29089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger * Copyright (C) 2016 The Android Open Source Project
39089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger *
49089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger * Licensed under the Apache License, Version 2.0 (the "License");
59089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger * you may not use this file except in compliance with the License.
69089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger * You may obtain a copy of the License at
79089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger *
89089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger *      http://www.apache.org/licenses/LICENSE-2.0
99089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger *
109089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger * Unless required by applicable law or agreed to in writing, software
119089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger * distributed under the License is distributed on an "AS IS" BASIS,
129089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger * See the License for the specific language governing permissions and
149089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger * limitations under the License
159089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger */
169089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger
179089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebingerpackage com.android.server.telecom;
189089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger
19a3eccfee788c3ac3c831a443b085b141b39bb63dBrad Ebingerimport android.content.Context;
209089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebingerimport android.telecom.Logging.EventManager;
219089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebingerimport android.telecom.Logging.EventManager.TimedEventPair;
229089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger
239089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger/**
249089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger * Temporary location of new Logging class
259089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger */
269089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger
279089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebingerpublic class LogUtils {
289089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger
299089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger    private static final String TAG = "Telecom";
30c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger    private static final String LOGUTILS_TAG = "LogUtils";
319089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger
32a3eccfee788c3ac3c831a443b085b141b39bb63dBrad Ebinger    public static final boolean SYSTRACE_DEBUG = false; /* STOP SHIP if true */
33a3eccfee788c3ac3c831a443b085b141b39bb63dBrad Ebinger
349089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger    public static final class Sessions {
359089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String ICA_ANSWER_CALL = "ICA.aC";
369089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String ICA_REJECT_CALL = "ICA.rC";
379089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String ICA_DISCONNECT_CALL = "ICA.dC";
389089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String ICA_HOLD_CALL = "ICA.hC";
399089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String ICA_UNHOLD_CALL = "ICA.uC";
409089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String ICA_MUTE = "ICA.m";
419089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String ICA_SET_AUDIO_ROUTE = "ICA.sAR";
429089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String ICA_CONFERENCE = "ICA.c";
439089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String CSW_HANDLE_CREATE_CONNECTION_COMPLETE = "CSW.hCCC";
449089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String CSW_SET_ACTIVE = "CSW.sA";
459089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String CSW_SET_RINGING = "CSW.sR";
469089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String CSW_SET_DIALING = "CSW.sD";
479089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String CSW_SET_PULLING = "CSW.sP";
489089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String CSW_SET_DISCONNECTED = "CSW.sDc";
499089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String CSW_SET_ON_HOLD = "CSW.sOH";
509089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String CSW_REMOVE_CALL = "CSW.rC";
519089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String CSW_SET_IS_CONFERENCED = "CSW.sIC";
529089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String CSW_ADD_CONFERENCE_CALL = "CSW.aCC";
539089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger    }
549089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger
559089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger    public final static class Events {
569089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String CREATED = "CREATED";
57754dc5de096b43b83154866e70676c6b84226824Tyler Gunn        public static final String USER_CONFIRMATION = "USER_CONFIRMATION";
58754dc5de096b43b83154866e70676c6b84226824Tyler Gunn        public static final String USER_CONFIRMED = "USER_CONFIRMED";
59754dc5de096b43b83154866e70676c6b84226824Tyler Gunn        public static final String USER_CANCELLED = "USER_CANCELLED";
609089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String DESTROYED = "DESTROYED";
619089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SET_CONNECTING = "SET_CONNECTING";
629089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SET_DIALING = "SET_DIALING";
639089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SET_PULLING = "SET_PULLING";
649089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SET_ACTIVE = "SET_ACTIVE";
659089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SET_HOLD = "SET_HOLD";
669089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SET_RINGING = "SET_RINGING";
679089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SET_DISCONNECTED = "SET_DISCONNECTED";
689089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SET_DISCONNECTING = "SET_DISCONNECTING";
699089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SET_SELECT_PHONE_ACCOUNT = "SET_SELECT_PHONE_ACCOUNT";
709089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String REQUEST_HOLD = "REQUEST_HOLD";
719089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String REQUEST_UNHOLD = "REQUEST_UNHOLD";
729089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String REQUEST_DISCONNECT = "REQUEST_DISCONNECT";
739089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String REQUEST_ACCEPT = "REQUEST_ACCEPT";
749089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String REQUEST_REJECT = "REQUEST_REJECT";
759089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String START_DTMF = "START_DTMF";
769089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String STOP_DTMF = "STOP_DTMF";
779089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String START_RINGER = "START_RINGER";
789089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String STOP_RINGER = "STOP_RINGER";
7972f0522569319d362f2fe05f46f4e32ab121b8b3Tyler Gunn        public static final String START_VIBRATOR = "START_VIBRATOR";
8072f0522569319d362f2fe05f46f4e32ab121b8b3Tyler Gunn        public static final String STOP_VIBRATOR = "STOP_VIBRATOR";
8172f0522569319d362f2fe05f46f4e32ab121b8b3Tyler Gunn        public static final String SKIP_VIBRATION = "SKIP_VIBRATION";
829089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SKIP_RINGING = "SKIP_RINGING";
839089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String START_CALL_WAITING_TONE = "START_CALL_WAITING_TONE";
849089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String STOP_CALL_WAITING_TONE = "STOP_CALL_WAITING_TONE";
859089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String START_CONNECTION = "START_CONNECTION";
86a90ba73e6ca2e7e3ef88e41477bf595e03f9359fTyler Gunn        public static final String CREATE_CONNECTION_FAILED = "CREATE_CONNECTION_FAILED";
879089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String BIND_CS = "BIND_CS";
889089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String CS_BOUND = "CS_BOUND";
899089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String CONFERENCE_WITH = "CONF_WITH";
909089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SPLIT_FROM_CONFERENCE = "CONF_SPLIT";
919089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SWAP = "SWAP";
929089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String ADD_CHILD = "ADD_CHILD";
939089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String REMOVE_CHILD = "REMOVE_CHILD";
949089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SET_PARENT = "SET_PARENT";
959089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String MUTE = "MUTE";
969089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String UNMUTE = "UNMUTE";
979089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String AUDIO_ROUTE = "AUDIO_ROUTE";
989089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String AUDIO_ROUTE_EARPIECE = "AUDIO_ROUTE_EARPIECE";
999089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String AUDIO_ROUTE_HEADSET = "AUDIO_ROUTE_HEADSET";
1009089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String AUDIO_ROUTE_BT = "AUDIO_ROUTE_BT";
1019089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String AUDIO_ROUTE_SPEAKER = "AUDIO_ROUTE_SPEAKER";
1029089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String ERROR_LOG = "ERROR";
1039089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String USER_LOG_MARK = "USER_LOG_MARK";
1049089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SILENCE = "SILENCE";
1059089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String BIND_SCREENING = "BIND_SCREENING";
1069089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SCREENING_BOUND = "SCREENING_BOUND";
1079089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SCREENING_SENT = "SCREENING_SENT";
1089089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SCREENING_COMPLETED = "SCREENING_COMPLETED";
1099089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String BLOCK_CHECK_INITIATED = "BLOCK_CHECK_INITIATED";
1109089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String BLOCK_CHECK_FINISHED = "BLOCK_CHECK_FINISHED";
1119089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String DIRECT_TO_VM_INITIATED = "DIRECT_TO_VM_INITIATED";
1129089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String DIRECT_TO_VM_FINISHED = "DIRECT_TO_VM_FINISHED";
1139089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String FILTERING_INITIATED = "FILTERING_INITIATED";
1149089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String FILTERING_COMPLETED = "FILTERING_COMPLETED";
1159089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String FILTERING_TIMED_OUT = "FILTERING_TIMED_OUT";
1169089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String REMOTELY_HELD = "REMOTELY_HELD";
1179089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String REMOTELY_UNHELD = "REMOTELY_UNHELD";
1189089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String REQUEST_PULL = "PULL";
1199089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String INFO = "INFO";
1209089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String VIDEO_STATE_CHANGED = "VIDEO_STATE_CHANGED";
1219089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String RECEIVE_VIDEO_REQUEST = "RECEIVE_VIDEO_REQUEST";
1229089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String RECEIVE_VIDEO_RESPONSE = "RECEIVE_VIDEO_RESPONSE";
1239089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SEND_VIDEO_REQUEST = "SEND_VIDEO_REQUEST";
1249089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String SEND_VIDEO_RESPONSE = "SEND_VIDEO_RESPONSE";
1259089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String IS_EXTERNAL = "IS_EXTERNAL";
1269089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String PROPERTY_CHANGE = "PROPERTY_CHANGE";
1279089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String CAPABILITY_CHANGE = "CAPABILITY_CHANGE";
1289089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static final String CONNECTION_EVENT = "CONNECTION_EVENT";
1299089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger
1309089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        public static class Timings {
1319089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger            public static final String ACCEPT_TIMING = "accept";
1329089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger            public static final String REJECT_TIMING = "reject";
1339089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger            public static final String DISCONNECT_TIMING = "disconnect";
1349089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger            public static final String HOLD_TIMING = "hold";
1359089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger            public static final String UNHOLD_TIMING = "unhold";
1369089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger            public static final String OUTGOING_TIME_TO_DIALING_TIMING = "outgoing_time_to_dialing";
1379089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger            public static final String BIND_CS_TIMING = "bind_cs";
1389089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger            public static final String SCREENING_COMPLETED_TIMING = "screening_completed";
1399089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger            public static final String DIRECT_TO_VM_FINISHED_TIMING = "direct_to_vm_finished";
1409089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger            public static final String BLOCK_CHECK_FINISHED_TIMING = "block_check_finished";
1419089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger            public static final String FILTERING_COMPLETED_TIMING = "filtering_completed";
1429089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger            public static final String FILTERING_TIMED_OUT_TIMING = "filtering_timed_out";
1439089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger
1449089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger            private static final TimedEventPair[] sTimedEvents = {
1459089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                    new TimedEventPair(REQUEST_ACCEPT, SET_ACTIVE, ACCEPT_TIMING),
1469089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                    new TimedEventPair(REQUEST_REJECT, SET_DISCONNECTED, REJECT_TIMING),
1479089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                    new TimedEventPair(REQUEST_DISCONNECT, SET_DISCONNECTED, DISCONNECT_TIMING),
1489089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                    new TimedEventPair(REQUEST_HOLD, SET_HOLD, HOLD_TIMING),
1499089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                    new TimedEventPair(REQUEST_UNHOLD, SET_ACTIVE, UNHOLD_TIMING),
1509089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                    new TimedEventPair(START_CONNECTION, SET_DIALING,
1519089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                            OUTGOING_TIME_TO_DIALING_TIMING),
1529089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                    new TimedEventPair(BIND_CS, CS_BOUND, BIND_CS_TIMING),
1539089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                    new TimedEventPair(SCREENING_SENT, SCREENING_COMPLETED,
1549089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                            SCREENING_COMPLETED_TIMING),
1559089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                    new TimedEventPair(DIRECT_TO_VM_INITIATED, DIRECT_TO_VM_FINISHED,
1569089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                            DIRECT_TO_VM_FINISHED_TIMING),
1579089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                    new TimedEventPair(BLOCK_CHECK_INITIATED, BLOCK_CHECK_FINISHED,
1589089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                            BLOCK_CHECK_FINISHED_TIMING),
1599089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                    new TimedEventPair(FILTERING_INITIATED, FILTERING_COMPLETED,
1609089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                            FILTERING_COMPLETED_TIMING),
1619089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                    new TimedEventPair(FILTERING_INITIATED, FILTERING_TIMED_OUT,
1629089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger                            FILTERING_TIMED_OUT_TIMING, 6000L),
1639089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger            };
1649089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        }
1659089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger    }
1669089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger
167c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger    private static void eventRecordAdded(EventManager.EventRecord eventRecord) {
168c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger        // Only Calls will be added as event records in this case
169c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger        EventManager.Loggable recordEntry = eventRecord.getRecordEntry();
170c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger        if (recordEntry instanceof Call) {
171c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger            Call callRecordEntry = (Call) recordEntry;
172c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger            android.telecom.Log.i(LOGUTILS_TAG, "EventRecord added as Call: " + callRecordEntry);
173c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger            Analytics.CallInfo callInfo = callRecordEntry.getAnalytics();
174c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger            if(callInfo != null) {
175c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger                callInfo.setCallEvents(eventRecord);
176c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger            } else {
177c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger                android.telecom.Log.w(LOGUTILS_TAG, "Could not get Analytics CallInfo.");
178c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger            }
179c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger        } else {
180c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger            android.telecom.Log.w(LOGUTILS_TAG, "Non-Call EventRecord Added.");
181c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger        }
182c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger    }
183c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger
184a3eccfee788c3ac3c831a443b085b141b39bb63dBrad Ebinger    public static void initLogging(Context context) {
1859089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        android.telecom.Log.setTag(TAG);
186a3eccfee788c3ac3c831a443b085b141b39bb63dBrad Ebinger        android.telecom.Log.setSessionContext(context);
187a3eccfee788c3ac3c831a443b085b141b39bb63dBrad Ebinger        android.telecom.Log.initMd5Sum();
1889089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        for (EventManager.TimedEventPair p : Events.Timings.sTimedEvents) {
1899089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger            android.telecom.Log.addRequestResponsePair(p);
1909089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger        }
191c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger        android.telecom.Log.registerEventListener(LogUtils::eventRecordAdded);
192c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger        // Store analytics about recently completed Sessions.
193c37ddf1546a8270c8293bbd520b3fc225cd72181Brad Ebinger        android.telecom.Log.registerSessionListener(Analytics::addSessionTiming);
1949089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger    }
1959089238976b618a5d0eddeb58f48ff93f05749d7Brad Ebinger}
196