• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2015 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.tv.analytics;
18 
19 import com.android.tv.TimeShiftManager;
20 import com.android.tv.data.Channel;
21 
22 /**
23  * Interface for sending user activity for analysis.
24  */
25 public interface Tracker {
26 
27     /**
28      * Send the number of channels that doesn't change often.
29      *
30      * <p>Because the number of channels does not change often, this method should not be called
31      * more than once a day.
32      *
33      * @param browsableChannelCount the number of browsable channels.
34      * @param totalChannelCount the number of all channels.
35      */
sendChannelCount(int browsableChannelCount, int totalChannelCount)36     void sendChannelCount(int browsableChannelCount, int totalChannelCount);
37 
38     /**
39      * Send data that doesn't change often.
40      *
41      * <p>Because configuration info does not change often, this method should not be called more
42      * than once a day.
43      *
44      * @param info the configuration info.
45      */
sendConfigurationInfo(ConfigurationInfo info)46     void sendConfigurationInfo(ConfigurationInfo info);
47 
48     /**
49      * Sends tracking information for starting the MainActivity.
50      */
sendMainStart()51     void sendMainStart();
52 
53     /**
54      * Sends tracking for stopping MainActivity.
55      *
56      * @param durationMs The time main activity was "started" in milliseconds.
57      */
sendMainStop( long durationMs)58     void sendMainStop( long durationMs);
59 
60     /**
61      * Sets the screen name and sends a ScreenView hit.
62      */
sendScreenView(String screenName)63     void sendScreenView(String screenName);
64 
65     /**
66      * Sends tracking information for starting to view a channel.
67      *
68      * @param channel the current channel
69      * @param tunedByRecommendation True, if the channel was tuned by the recommendation.
70      */
sendChannelViewStart(Channel channel, boolean tunedByRecommendation)71     void sendChannelViewStart(Channel channel, boolean tunedByRecommendation);
72 
73     /**
74      * Sends tracking information for tuning to a channel.
75      *
76      * @param channel The channel that was being tuned.
77      * @param durationMs The time the channel took to tune in milliseconds.
78      */
sendChannelTuneTime(Channel channel, long durationMs)79     void sendChannelTuneTime(Channel channel, long durationMs);
80 
81     /**
82      * Sends tracking information for stopping viewing a channel.
83      *
84      * @param channel The channel that was being watched.
85      * @param durationMs The time the channel was watched in milliseconds.
86      */
sendChannelViewStop(Channel channel, long durationMs)87     void sendChannelViewStop(Channel channel, long durationMs);
88 
89     /**
90      * Sends tracking information for pressing channel up.
91      */
sendChannelUp()92     void sendChannelUp();
93 
94     /**
95      * Sends tracking information for pressing channel down.
96      */
sendChannelDown()97     void sendChannelDown();
98 
99     /**
100      * Sends tracking information for showing the main menu.
101      */
sendShowMenu()102     void sendShowMenu();
103 
104     /**
105      * Sends tracking for hiding the main menu.
106      *
107      * @param durationMs The duration the menu was shown in milliseconds.
108      */
sendHideMenu(long durationMs)109     void sendHideMenu(long durationMs);
110 
111     /**
112      * Sends tracking for clicking a menu item.
113      *
114      * <p><strong>WARNING</strong> callers must ensure no PII is included in the label.
115      *
116      * @param label The label of the item clicked.
117      */
sendMenuClicked(String label)118     void sendMenuClicked(String label);
119 
120     /**
121      * Sends tracking for clicking a menu item.
122      *
123      * <p>NOTE: the tracker will use the english version of the label.
124      *
125      * @param labelResId The resource Id of the label for the menu item.
126      */
sendMenuClicked(int labelResId)127     void sendMenuClicked(int labelResId);
128 
129     /**
130      * Sends tracking information for showing the Electronic Program Guide (EPG).
131      */
sendShowEpg()132     void sendShowEpg();
133 
134     /**
135      * Sends tracking information for clicking an Electronic Program Guide (EPG) item.
136      */
sendEpgItemClicked()137     void sendEpgItemClicked();
138 
139     /**
140      * Sends tracking for hiding the Electronic Program Guide (EPG).
141      *
142      * @param durationMs The duration the EPG was shown in milliseconds.
143      */
sendHideEpg(long durationMs)144     void sendHideEpg(long durationMs);
145 
146     /**
147      * Sends tracking information for showing the channel switch view.
148      */
sendShowChannelSwitch()149     void sendShowChannelSwitch();
150 
151     /**
152      * Sends tracking for hiding the channel switch view.
153      *
154      * @param durationMs The duration the channel switch view was shown in milliseconds.
155      */
sendHideChannelSwitch(long durationMs)156     void sendHideChannelSwitch(long durationMs);
157 
158     /**
159      * Sends tracking for each channel number or delimiter pressed.
160      */
sendChannelNumberInput()161     void sendChannelNumberInput();
162 
163     /**
164      * Sends tracking for navigating during channel number input.
165      *
166      * <p>This is sent once per channel input viewing.
167      */
sendChannelInputNavigated()168     void sendChannelInputNavigated();
169 
170     /**
171      * Sends tracking for channel clicked.
172      */
sendChannelNumberItemClicked()173     void sendChannelNumberItemClicked();
174 
175     /**
176      * Sends tracking for channel chosen (tuned) because the channel switch view timed out.
177      */
sendChannelNumberItemChosenByTimeout()178     void sendChannelNumberItemChosenByTimeout();
179 
180     /**
181      * Sends tracking for the reason video is unavailable on a channel.
182      */
sendChannelVideoUnavailable(Channel channel, int reason)183     void sendChannelVideoUnavailable(Channel channel, int reason);
184 
185     /**
186      * Sends HDMI AC3 passthrough capabilities.
187      *
188      * @param isSupported {@code true} if the feature is supported; otherwise {@code false}.
189      */
sendAc3PassthroughCapabilities(boolean isSupported)190     void sendAc3PassthroughCapabilities(boolean isSupported);
191 
192     /**
193      * Sends tracking for input a connection failure.
194      * <p><strong>WARNING</strong> callers must ensure no PII is included in the inputId.
195      *
196      * @param inputId the input the failure happened on
197      */
sendInputConnectionFailure(String inputId)198     void sendInputConnectionFailure(String inputId);
199 
200     /**
201      * Sends tracking for input disconnected.
202      * <p><strong>WARNING</strong> callers must ensure no PII is included in the inputId.
203      *
204      * @param inputId the input the failure happened on
205      */
sendInputDisconnected(String inputId)206     void sendInputDisconnected(String inputId);
207 
208     /**
209      * Sends tracking information for showing the input selection view.
210      */
sendShowInputSelection()211     void sendShowInputSelection();
212 
213     /**
214      * Sends tracking for hiding the input selection view.
215      *
216      * @param durationMs The duration the input selection view was shown in milliseconds.
217      */
sendHideInputSelection(long durationMs)218     void sendHideInputSelection(long durationMs);
219 
220     /**
221      * Sends tracking for input selected by the selection view.
222      *
223      * <p><strong>WARNING</strong> callers must ensure no PII is included in the label.
224      *
225      * @param inputLabel the label of the TV input selected
226      */
sendInputSelected(String inputLabel)227     void sendInputSelected(String inputLabel);
228 
229     /**
230      * Sends tracking information for showing a side panel.
231      *
232      * @param trackerLabel the label of the side panel.
233      */
sendShowSidePanel(HasTrackerLabel trackerLabel)234     void sendShowSidePanel(HasTrackerLabel trackerLabel);
235 
236     /**
237      * Sends tracking for hiding a side panel.
238      *
239      * @param trackerLabel The label of the side panel
240      * @param durationMs The duration the side panel was shown in milliseconds.
241      */
sendHideSidePanel(HasTrackerLabel trackerLabel, long durationMs)242     void sendHideSidePanel(HasTrackerLabel trackerLabel, long durationMs);
243 
244     /**
245      * Sends time shift action (pause, ff, etc).
246      *
247      * @param actionId The {@link com.android.tv.TimeShiftManager.TimeShiftActionId}
248      */
sendTimeShiftAction(@imeShiftManager.TimeShiftActionId int actionId)249     void sendTimeShiftAction(@TimeShiftManager.TimeShiftActionId int actionId);
250 }
251