## 3.12\. TV Input Framework The [Android Television Input Framework (TIF)]( http://source.android.com/devices/tv/index.html) simplifies the delivery of live content to Android Television devices. TIF provides a standard API to create input modules that control Android Television devices. If device implementations support TIF, they: * [C-1-1] MUST declare the platform feature `android.software.live_tv`. * [C-1-2] MUST preload a TV application (TV App) and meet all requirements described in [section 3.12.1](#3_12_tv-input-framework). ### 3.12.1\. TV App If device implementations support TIF: * [C-1-1] The TV App MUST provide facilities to install and use [TV Channels]( http://developer.android.com/reference/android/media/tv/TvContract.Channels.html) and meet the following requirements. The TV app that is required for Android device implementations declaring the `android.software.live_tv` feature flag, MUST meet the following requirements: * Device implementations SHOULD allow third-party TIF-based inputs ([third-party inputs]( https://source.android.com/devices/tv/index.html#third-party_input_example)) to be installed and managed. * Device implementations MAY provide visual separation between pre-installed [TIF-based inputs]( https://source.android.com/devices/tv/index.html#tv_inputs) (installed inputs) and third-party inputs. * Device implementations SHOULD NOT display the third-party inputs more than a single navigation action away from the TV App (i.e. expanding a list of third-party inputs from the TV App). The Android Open Source Project provides an implementation of the TV App that meets the above requirements. #### 3.12.1.1\. Electronic Program Guide If device implementations support TIF, they: * [C-1-1] MUST show an informational and interactive overlay, which MUST include an electronic program guide (EPG) generated from the values in the [TvContract.Programs]( https://developer.android.com/reference/android/media/tv/TvContract.Programs.html) fields. * [C-1-2] On channel change, device implementations MUST display EPG data for the currently playing program. * [SR] The EPG is STRONGLY RECOMMENDED to display installed inputs and third-party inputs with equal prominence. The EPG SHOULD NOT display the third-party inputs more than a single navigation action away from the installed inputs on the EPG. * The EPG SHOULD display information from all installed inputs and third-party inputs. * The EPG MAY provide visual separation between the installed inputs and third-party inputs. #### 3.12.1.2\. Navigation If device implementations support TIF, they: * [C-1-1] MUST allow navigation for the following functions via the D-pad, Back, and Home keys on the Android Television device’s input device(s) (i.e. remote control, remote control application, or game controller): * Changing TV channels * Opening EPG * Configuring and tuning to third-party TIF-based inputs (if those inputs are supported) * Opening Settings menu * SHOULD pass key events to HDMI inputs through CEC. #### 3.12.1.3\. TV input app linking If device implementations support TIF: * [C-1-1] Android Television device implementations MUST support [TV input app linking]( http://developer.android.com/reference/android/media/tv/TvContract.Channels.html#COLUMN_APP_LINK_INTENT_URI), which allows all inputs to provide activity links from the current activity to another activity (i.e. a link from live programming to related content). The TV App SHOULD show TV input app linking when it is provided. #### 3.12.1.4\. Time shifting If device implementations support TIF, they: * [SR] STRONGLY RECOMMENDED to support time shifting, which allows the user to pause and resume live content. * SHOULD provide the user a way to pause and resume the currently playing program, if time shifting for that program [is available]( https://developer.android.com/reference/android/media/tv/TvInputManager.html#TIME_SHIFT_STATUS_AVAILABLE). #### 3.12.1.5\. TV recording If device implementations support TIF, they: * [SR] STRONGLY RECOMMENDED to support TV recording. * SHOULD provide a user interface to play recorded programs. * If the TV input supports recording and the recording of a program is not [prohibited]( https://developer.android.com/reference/android/media/tv/TvContract.Programs.html#COLUMN_RECORDING_PROHIBITED), the EPG MAY provide a way to [record a program]( https://developer.android.com/reference/android/media/tv/TvInputInfo.html#canRecord%28%29).