1## 3.12\. TV Input Framework
2
3The [Android Television Input Framework (TIF)](
4http://source.android.com/devices/tv/index.html) simplifies the delivery of live
5content to Android Television devices. TIF provides a standard API to create
6input modules that control Android Television devices.
7
8If device implementations support TIF, they:
9
10*    [C-1-1] MUST declare the platform feature `android.software.live_tv`.
11*    [C-1-2] MUST preload a TV application (TV App) and meet all requirements
12     described in [section 3.12.1](#3_12_tv-input-framework).
13
14### 3.12.1\. TV App
15
16If device implementations support TIF:
17
18*    [C-1-1] The TV App MUST provide facilities to install and use [TV Channels](
19http://developer.android.com/reference/android/media/tv/TvContract.Channels.html)
20and meet the following requirements.
21
22The TV app that is required for Android device implementations declaring the
23`android.software.live_tv` feature flag, MUST meet the following requirements:
24
25*   Device implementations SHOULD allow third-party TIF-based inputs
26    ([third-party inputs](
27    https://source.android.com/devices/tv/index.html#third-party_input_example))
28    to be installed and managed.
29*   Device implementations MAY provide visual separation between pre-installed
30    [TIF-based inputs](
31    https://source.android.com/devices/tv/index.html#tv_inputs)
32    (installed inputs) and third-party inputs.
33*   Device implementations SHOULD NOT display the third-party inputs more than a
34    single navigation action away from the TV App (i.e. expanding a list of
35    third-party inputs from the TV App).
36
37The Android Open Source Project provides an implementation of the TV App that
38meets the above requirements.
39
40#### 3.12.1.1\. Electronic Program Guide
41
42If device implementations support TIF, they:
43
44*    [C-1-1] MUST show an informational and
45interactive overlay, which MUST include an electronic program guide (EPG)
46generated from the values in the [TvContract.Programs](
47https://developer.android.com/reference/android/media/tv/TvContract.Programs.html)
48fields.
49*   [C-1-2] On channel change, device implementations MUST display EPG data for
50    the currently playing program.
51*   [SR] The EPG is STRONGLY RECOMMENDED to display installed inputs and
52    third-party inputs with equal prominence. The EPG SHOULD NOT display the
53    third-party inputs more than a single navigation action away from the
54    installed inputs on the EPG.
55*   The EPG SHOULD display information from all installed inputs and third-party
56    inputs.
57*   The EPG MAY provide visual separation between the installed inputs and
58    third-party inputs.
59
60#### 3.12.1.2\. Navigation
61
62If device implementations support TIF, they:
63
64*    [C-1-1] MUST allow navigation for the following functions via
65the D-pad, Back, and Home keys on the Android Television device’s input
66device(s) (i.e. remote control, remote control application, or game controller):
67
68    *   Changing TV channels
69    *   Opening EPG
70    *   Configuring and tuning to third-party TIF-based inputs (if those inputs are supported)
71    *   Opening Settings menu
72
73*    SHOULD pass key events to HDMI inputs through CEC.
74
75#### 3.12.1.3\. TV input app linking
76
77If device implementations support TIF:
78
79*    [C-1-1] Android Television device implementations MUST support
80[TV input app linking](
81http://developer.android.com/reference/android/media/tv/TvContract.Channels.html#COLUMN_APP_LINK_INTENT_URI),
82which allows all inputs to provide activity links from the current activity to
83another activity (i.e. a link from live programming to related content). The TV
84App SHOULD show TV input app linking when it is provided.
85
86#### 3.12.1.4\. Time shifting
87
88If device implementations support TIF, they:
89
90*    [SR] STRONGLY RECOMMENDED to support time shifting, which allows the user
91to pause and resume live content.
92*    SHOULD provide the user a way to pause and resume the currently playing
93program, if time shifting for that program [is available](
94https://developer.android.com/reference/android/media/tv/TvInputManager.html#TIME_SHIFT_STATUS_AVAILABLE).
95
96#### 3.12.1.5\. TV recording
97
98If device implementations support TIF, they:
99
100*    [SR] STRONGLY RECOMMENDED to support TV recording.
101*    SHOULD provide a user interface to play recorded
102programs.
103*    If the TV input supports recording and the recording of a program is not
104[prohibited](
105https://developer.android.com/reference/android/media/tv/TvContract.Programs.html#COLUMN_RECORDING_PROHIBITED),
106the EPG MAY provide a way to [record a program](
107https://developer.android.com/reference/android/media/tv/TvInputInfo.html#canRecord%28%29).
108