/* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.tv.analytics; import com.android.tv.TimeShiftManager; import com.android.tv.data.Channel; /** * Interface for sending user activity for analysis. */ public interface Tracker { /** * Send the number of channels that doesn't change often. * *

Because the number of channels does not change often, this method should not be called * more than once a day. * * @param browsableChannelCount the number of browsable channels. * @param totalChannelCount the number of all channels. */ void sendChannelCount(int browsableChannelCount, int totalChannelCount); /** * Send data that doesn't change often. * *

Because configuration info does not change often, this method should not be called more * than once a day. * * @param info the configuration info. */ void sendConfigurationInfo(ConfigurationInfo info); /** * Sends tracking information for starting the MainActivity. */ void sendMainStart(); /** * Sends tracking for stopping MainActivity. * * @param durationMs The time main activity was "started" in milliseconds. */ void sendMainStop( long durationMs); /** * Sets the screen name and sends a ScreenView hit. */ void sendScreenView(String screenName); /** * Sends tracking information for starting to view a channel. * * @param channel the current channel * @param tunedByRecommendation True, if the channel was tuned by the recommendation. */ void sendChannelViewStart(Channel channel, boolean tunedByRecommendation); /** * Sends tracking information for tuning to a channel. * * @param channel The channel that was being tuned. * @param durationMs The time the channel took to tune in milliseconds. */ void sendChannelTuneTime(Channel channel, long durationMs); /** * Sends tracking information for stopping viewing a channel. * * @param channel The channel that was being watched. * @param durationMs The time the channel was watched in milliseconds. */ void sendChannelViewStop(Channel channel, long durationMs); /** * Sends tracking information for pressing channel up. */ void sendChannelUp(); /** * Sends tracking information for pressing channel down. */ void sendChannelDown(); /** * Sends tracking information for showing the main menu. */ void sendShowMenu(); /** * Sends tracking for hiding the main menu. * * @param durationMs The duration the menu was shown in milliseconds. */ void sendHideMenu(long durationMs); /** * Sends tracking for clicking a menu item. * *

WARNING callers must ensure no PII is included in the label. * * @param label The label of the item clicked. */ void sendMenuClicked(String label); /** * Sends tracking for clicking a menu item. * *

NOTE: the tracker will use the english version of the label. * * @param labelResId The resource Id of the label for the menu item. */ void sendMenuClicked(int labelResId); /** * Sends tracking information for showing the Electronic Program Guide (EPG). */ void sendShowEpg(); /** * Sends tracking information for clicking an Electronic Program Guide (EPG) item. */ void sendEpgItemClicked(); /** * Sends tracking for hiding the Electronic Program Guide (EPG). * * @param durationMs The duration the EPG was shown in milliseconds. */ void sendHideEpg(long durationMs); /** * Sends tracking information for showing the channel switch view. */ void sendShowChannelSwitch(); /** * Sends tracking for hiding the channel switch view. * * @param durationMs The duration the channel switch view was shown in milliseconds. */ void sendHideChannelSwitch(long durationMs); /** * Sends tracking for each channel number or delimiter pressed. */ void sendChannelNumberInput(); /** * Sends tracking for navigating during channel number input. * *

This is sent once per channel input viewing. */ void sendChannelInputNavigated(); /** * Sends tracking for channel clicked. */ void sendChannelNumberItemClicked(); /** * Sends tracking for channel chosen (tuned) because the channel switch view timed out. */ void sendChannelNumberItemChosenByTimeout(); /** * Sends tracking for the reason video is unavailable on a channel. */ void sendChannelVideoUnavailable(Channel channel, int reason); /** * Sends HDMI AC3 passthrough capabilities. * * @param isSupported {@code true} if the feature is supported; otherwise {@code false}. */ void sendAc3PassthroughCapabilities(boolean isSupported); /** * Sends tracking for input a connection failure. *

WARNING callers must ensure no PII is included in the inputId. * * @param inputId the input the failure happened on */ void sendInputConnectionFailure(String inputId); /** * Sends tracking for input disconnected. *

WARNING callers must ensure no PII is included in the inputId. * * @param inputId the input the failure happened on */ void sendInputDisconnected(String inputId); /** * Sends tracking information for showing the input selection view. */ void sendShowInputSelection(); /** * Sends tracking for hiding the input selection view. * * @param durationMs The duration the input selection view was shown in milliseconds. */ void sendHideInputSelection(long durationMs); /** * Sends tracking for input selected by the selection view. * *

WARNING callers must ensure no PII is included in the label. * * @param inputLabel the label of the TV input selected */ void sendInputSelected(String inputLabel); /** * Sends tracking information for showing a side panel. * * @param trackerLabel the label of the side panel. */ void sendShowSidePanel(HasTrackerLabel trackerLabel); /** * Sends tracking for hiding a side panel. * * @param trackerLabel The label of the side panel * @param durationMs The duration the side panel was shown in milliseconds. */ void sendHideSidePanel(HasTrackerLabel trackerLabel, long durationMs); /** * Sends time shift action (pause, ff, etc). * * @param actionId The {@link com.android.tv.TimeShiftManager.TimeShiftActionId} */ void sendTimeShiftAction(@TimeShiftManager.TimeShiftActionId int actionId); }