• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1page.title=TV App Quality
2page.metaDescription=TV is a growing segment of Android devices that requires specific attention to app design and functionality in order to create a great experience.
3page.image=/distribute/images/gp-tv-quality.png
4@jd:body
5
6<div id="qv-wrapper"><div id="qv">
7<h2>Quality Criteria</h2>
8  <ol>
9    <li><a href="#ux">Design and Interaction</a></li>
10    <li><a href="#fn">Functionality</a></li>
11    <li><a href="#faq">Frequently Asked Questions</a></li>
12  </ol>
13
14  <h2>You Should Also Read</h2>
15  <ol>
16    <li><a href="{@docRoot}distribute/essentials/quality/core.html">
17      Core App Quality</a></li>
18    <li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">
19      Optimize Your App</a></li>
20  </ol>
21</div>
22</div>
23
24<div class="top-right-float" style="padding-right:0;margin-bottom:1em;">
25  <img src="{@docRoot}distribute/images/gp-tv-quality.png" style="width:480px;">
26</div>
27
28<p>
29  Users have a different set of expectations when watching TV, compared to using a phone or tablet.
30  A typical TV user sits about 10 feet away from the screen, so small details are less noticeable
31  and small text is hard to read. Since users sit away from a TV, they must use a remote
32  control device to navigate and make selections rather than touching elements on screen. These
33  differences significantly change the requirements for what makes a good TV user experience.
34</p>
35
36<p>
37  The first step toward creating a great experience for TV users is to review and follow the
38  <a href="{@docRoot}design/tv/index.html">Android TV design guidelines</a>, which provides
39  instructions on how to build the best user experience for TV apps. You should also review the
40  <a href="{@docRoot}training/tv/start/index.html">Building TV Apps</a> training, to understand the
41  basic implementation requirements for a TV app.
42</p>
43
44<p class="caution">
45  <strong>Important:</strong> To ensure a great user experience, apps for TV devices must meet some
46  specific requirements for usability. Only apps that meet the following quality criteria will
47  qualify as an Android TV app on Google Play.
48</p>
49
50<p class="note"><strong>Note:</strong> For information about how to publish your TV apps in Google Play,
51see <a href="{@docRoot}distribute/googleplay/tv.html">Distributing to Android TV</a>.</p>
52
53
54
55<div class="headerLine">
56  <h2 id="ux">
57  Visual Design and User Interaction
58  </h2>
59
60
61</div>
62
63<p>
64  These criteria ensure that your app follows critical design and interaction patterns
65  to ensure a consistent, intuitive, and enjoyable user experience on TV devices.
66</p>
67
68<table>
69
70<tr>
71  <th style="width:2px;">
72    Type
73  </th>
74  <th style="width:54px;">
75    Test
76  </th>
77  <th>
78    Description
79  </th>
80</tr>
81
82<tr>
83  <td rowspan="5" id="launcher">
84    Launcher
85  </td>
86
87  <td id="TV-LM">
88    TV-LM
89  </td>
90  <td>
91    <p style="margin-bottom:.5em;">
92      App displays a launcher icon in the Android TV Launcher after installation.
93      (<a href="{@docRoot}training/tv/start/start.html#tv-activity">Learn how</a>)
94    </p>
95  </td>
96</tr>
97
98<tr>
99  <td id="TV-LB">
100    TV-LB
101  </td>
102  <td>
103    <p style="margin-bottom:.5em;">
104      App displays a 320px x 180px full-size banner as its launcher icon in the Android TV Launcher.
105      (<a href="{@docRoot}design/tv/patterns.html#banner">Learn how</a>)
106    </p>
107  </td>
108</tr>
109
110<tr>
111  <td id="TV-BN">
112    TV-BN
113  </td>
114  <td>
115    <p style="margin-bottom:.5em;">
116      App launch banner contains the name of the app.
117      (<a href="{@docRoot}design/tv/patterns.html#banner">Learn how</a>)
118    </p>
119  </td>
120</tr>
121
122<tr>
123  <td id="TV-LG">
124    TV-LG
125  </td>
126  <td>
127    <p style="margin-bottom:.5em;">
128      If the app is a game, it appears in the Games row in the Android TV Launcher.<br>
129      (<a href="{@docRoot}training/tv/games/index.html#manifest">Learn how</a>)
130    </p>
131  </td>
132</tr>
133
134<tr>
135  <td id="TV-LS">
136    TV-LS
137  </td>
138  <td>
139    <p style="margin-bottom:.5em;">
140      App runs successfully when the user selects the application banner from the home screen.
141      (<a href="{@docRoot}training/tv/start/start.html#run">Learn how</a>)
142    </p>
143  </td>
144</tr>
145
146<tr>
147  <td rowspan="5" id="layout">
148    Layout
149  </td>
150
151  <td id="TV-LO">
152    TV-LO
153  </td>
154  <td>
155    <p style="margin-bottom:.5em;">
156      All app interfaces are presented in landscape orientation.
157      (<a href="{@docRoot}training/tv/start/layouts.html#structure">Learn how</a>)
158    </p>
159  </td>
160</tr>
161
162<tr>
163  <td id="TV-TC">
164    TV-TC
165  </td>
166  <td>
167    <p style="margin-bottom:.5em;">
168      App displays core text at 16sp or higher in size.
169      (<a href="{@docRoot}design/tv/style.html#typography">Learn how</a>)
170    </p>
171  </td>
172</tr>
173
174<tr>
175  <td id="TV-TA">
176    TV-TA
177  </td>
178  <td>
179    <p style="margin-bottom:.5em;">
180      App displays all text at 12sp or higher in size.
181      (<a href="{@docRoot}design/tv/style.html#typography">Learn how</a>)
182    </p>
183  </td>
184</tr>
185
186<tr>
187  <td id="TV-OV">
188    TV-OV
189  </td>
190  <td>
191    <p style="margin-bottom:.5em;">
192      App does not display any text or functionality that is partially cut off by the
193      edges of the screen.
194      (<a href="{@docRoot}training/tv/start/layouts.html#overscan">Learn how</a>)
195    </p>
196  </td>
197</tr>
198
199<tr>
200  <td id="TV-TR">
201    TV-TR
202  </td>
203  <td>
204    <p style="margin-bottom:.5em;">
205      App does not partially obscure other apps. App fills the entire screen and has a
206      non-transparent background.
207    </p>
208  </td>
209</tr>
210
211<tr>
212  <td rowspan="3" id="navigation">
213    Navigation
214  </td>
215
216  <td id="TV-DP">
217    TV-DP
218  </td>
219  <td>
220    <p style="margin-bottom:.5em;">
221      App functionality is navigable using 5-way D-pad controls, unless the app
222      requires a gamepad controller as specified in <a href="#TV-GP">TV-GP</a>.
223      (<a href="{@docRoot}training/tv/start/navigation.html#d-pad-navigation">Learn how</a>)
224    </p>
225  </td>
226</tr>
227
228<tr>
229  <td id="TV-DK">
230    TV-DK
231  </td>
232  <td>
233    <p style="margin-bottom:.5em;">
234      If the app requires a game controller, as specified in <a href="#TV-GP">TV-GP</a>, all
235      functionality is navigable using standard Android game controller keys.
236      (<a href="{@docRoot}training/game-controllers/controller-input.html#button">Learn how</a>)
237    </p>
238  </td>
239</tr>
240
241<tr>
242  <td id="TV-DM">
243    TV-DM
244  </td>
245  <td>
246    <p style="margin-bottom:.5em;">
247      App does not depend on a remote controller having a Menu button to access user interface
248      controls.
249      (<a href="{@docRoot}training/tv/start/navigation.html#d-pad-navigation">Learn how</a>)
250    </p>
251  </td>
252</tr>
253
254<tr>
255  <td rowspan="2" id="search">
256    Search
257  </td>
258
259  <td id="TV-SD">
260    TV-SD
261  </td>
262  <td>
263    <p style="margin-bottom:.5em;">
264      In-app search results are navigable using D-pad controls, unless the app
265      requires a gamepad controller, as specified in <a href="#TV-GP">TV-GP</a>.
266      (<a href="{@docRoot}training/tv/start/navigation.html#d-pad-navigation">Learn how</a>)
267    </p>
268  </td>
269</tr>
270
271<tr>
272  <td id="TV-SB">
273    TV-SB
274  </td>
275  <td>
276    <p style="margin-bottom:.5em;">
277      An in-app search query should show up in the search box, similar to the user interface provided
278      by {@link android.support.v17.leanback.app.SearchFragment}, and results should be relevant to
279      that query.
280      (<a href="{@docRoot}training/tv/discovery/in-app-search.html">Learn how</a>)
281    </p>
282  </td>
283</tr>
284
285</table>
286
287
288<h3 class="rel-resources clearfloat">Related resources</h3>
289
290<div class="resource-widget resource-flow-layout col-13" data-query=
291"collection:distribute/essentials/tvqualityguidelines/visualdesign"
292data-sortorder="-timestamp" data-cardsizes="9x3" data-maxresults="6">
293</div>
294
295
296
297<div class="headerLine">
298  <h2 id="fn">
299  Functionality
300  </h2>
301
302
303</div>
304
305<p>
306  These criteria ensure that your app is configured correctly and provides expected
307  functional behavior.
308</p>
309
310
311<table>
312<tr>
313  <th style="width:2px;">
314    Type
315  </th>
316  <th style="width:54px;">
317    Test
318  </th>
319  <th>
320    Description
321  </th>
322</tr>
323
324<tr>
325  <td rowspan="2" id="manifest">
326   Manifest
327  </td>
328
329  <td id="TV-ML">
330    TV-ML
331  </td>
332  <td>
333    <p style="margin-bottom:.5em;">
334      App manifest sets an intent type of {@link android.content.Intent#ACTION_MAIN} with category
335      {@link android.content.Intent#CATEGORY_LEANBACK_LAUNCHER}.
336      (<a href="{@docRoot}training/tv/start/start.html#tv-activity">Learn how</a>)
337    </p>
338  </td>
339</tr>
340
341</tr>
342  <td id="TV-MT">
343    TV-MT
344  </td>
345  <td>
346    <p style="margin-bottom:.5em;">
347      App manifest sets the hardware feature {@code android.hardware.touchscreen} to not required.
348      (<a href="{@docRoot}training/tv/start/hardware.html#declare-hardware-requirements">Learn
349      how</a>)
350    </p>
351  </td>
352</tr>
353
354<tr>
355  <td rowspan="2" id="game-controllers">
356    Game Controllers
357  </td>
358
359  <td id="TV-GP">
360    TV-GP
361  </td>
362  <td>
363    <p style="margin-bottom:.5em;">
364      If the app uses a game controller as it's primary input method, it declares the appropriate
365      requirement with the <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"
366      >{@code <uses-feature>}</a> manifest tag.
367      (<a href="{@docRoot}training/tv/games/index.html#gamepad">Learn how</a>)
368    </p>
369  </td>
370</tr>
371
372<tr>
373  <td id="TV-GC">
374    TV-GC
375  </td>
376  <td>
377    <p style="margin-bottom:.5em;">
378      If the app provides visual instructions for using game controllers, the instructions should
379      be free of branding and show a compatible button layout.
380      (<a href="{@docRoot}training/tv/games/index.html#ControllerHelp">Learn how</a>)
381    </p>
382  </td>
383</tr>
384
385<tr>
386  <td rowspan="4" id="advertising">
387    Advertising
388  </td>
389
390  <td id="TV-AP">
391    TV-AP
392  </td>
393  <td>
394    <p style="margin-bottom:.5em;">
395      App allows interaction with advertising using D-pad controls.
396      (<a href="{@docRoot}training/tv/start/navigation.html#d-pad-navigation">Learn how</a>)
397    </p>
398  </td>
399</tr>
400
401<tr>
402  <td id="TV-AD">
403    TV-AD
404  </td>
405  <td>
406    <p style="margin-bottom:.5em;">
407      For advertising that uses fullscreen, non-video ads, the app allows the user to
408      immediately dismiss the ad with D-pad controls.
409    </p>
410  </td>
411</tr>
412
413<tr>
414  <td id="TV-AU">
415    TV-AU
416  </td>
417  <td>
418    <p style="margin-bottom:.5em;">
419      For advertising that uses clickable, non-fullscreen, non-video ads, the app does not allow
420      ads to link to a web URL.
421    </p>
422  </td>
423</tr>
424
425<tr>
426  <td id="TV-AA">
427    TV-AA
428  </td>
429  <td>
430    <p style="margin-bottom:.5em;">
431      For advertising that uses clickable, non-fullscreen, non-video ads, the app does not allow
432      ads to link to another app that is not available on TV devices.
433    </p>
434  </td>
435</tr>
436
437<tr>
438  <td rowspan="1" id="web">
439    Web Content
440  </td>
441
442  <td id="TV-WB">
443    TV-WB
444  </td>
445  <td>
446    <p style="margin-bottom:.5em;">
447      For web content, the app uses {@link android.webkit.WebView} components and does not attempt
448      to launch a web browser app.
449    </p>
450  </td>
451</tr>
452
453<tr>
454  <td rowspan="3" id="media-playback">
455    Media Playback
456  </td>
457
458  <td id="TV-NP">
459    TV-NP
460  </td>
461  <td>
462    <p style="margin-bottom:.5em;">
463      If the app continues to play sound or video after the user has left, the
464      app provides a <em>Now Playing</em> card on the home screen recommendation
465      row so users can return to the app to control playback.
466      (<a href="{@docRoot}training/tv/playback/now-playing.html">Learn how</a>)
467    </p>
468  </td>
469</tr>
470
471<tr>
472  <td id="TV-PA">
473    TV-PA
474  </td>
475  <td>
476    <p style="margin-bottom:.5em;">
477      If the app provides a <em>Now Playing</em> card, selecting this card takes the user to
478      a screen that allows playback to be paused.
479      (<a href="{@docRoot}training/tv/playback/now-playing.html">Learn how</a>)
480    </p>
481  </td>
482</tr>
483
484<tr>
485  <td id="TV-PP">
486    TV-PP
487  </td>
488  <td>
489    <p style="margin-bottom:.5em;">
490      If the app plays video or music content, the app toggles between play and pause of media
491      playback when a play or pause key event is sent during playback.<br>
492      (<a href="{@docRoot}reference/android/view/KeyEvent.html#KEYCODE_MEDIA_PLAY_PAUSE">Learn
493      how</a>)
494    </p>
495  </td>
496</tr>
497
498
499</table>
500
501
502<h3 class="rel-resources clearfloat">Related resources</h3>
503
504<div class="resource-widget resource-flow-layout col-13" data-query=
505"collection:distribute/essentials/tvqualityguidelines/functionality"
506data-sortorder="-timestamp" data-cardsizes="9x3" data-maxresults="6">
507</div>
508
509
510<div class="headerLine">
511  <h2 id="faq">
512  Frequently Asked Questions
513  </h2>
514</div>
515
516<p style="margin-top:30px;">
517  <strong>After I submit my app, how will find out if my app does not meet all the requirements for
518  TV devices?</strong>
519</p>
520<p>
521  If your app does not meet the usability requirements described on this page, the Play Store team
522  will contact you through the email address specified in main <a href=
523  "https://play.google.com/apps/publish/">Google Play Developer Console</a> account associated with
524  the app.
525</p>
526<p class="caution">
527  <strong>Caution:</strong> Make sure your app includes the <a href=
528  "{@docRoot}preview/tv/start/index.html#tv-activity">required manifest entries</a> for TV devices,
529  otherwise your app will not be considered a TV app and will not be reviewed for TV usability
530  requirements.
531</p>
532
533
534<p style="margin-top:30px;">
535  <strong>My app targets more than just TV devices. If my app does not meet the TV device
536  requirements, will my new or updated app still appear on Google Play for phones and
537  tablets?</strong>
538</p>
539<p>
540  Yes. The requirements described above only restrict distribution to the Google Play Store on TV
541  devices. Distribution to other device types, such as phones, tablets and other devices, is not
542  affected.
543</p>
544
545
546<p style="margin-top:30px;">
547  <strong>If my app meets the publishing requirements, when will it be available in the Google
548    Play Store on TV devices?</strong>
549</p>
550
551<p>
552  Apps that meet the requirements for TV will appear in the Google Play Store on TV devices
553  <em>after</em> the official release of Android 5.0.
554</p>