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="4" 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 rowspan="5" id="layout">
136    Layout
137  </td>
138
139  <td id="TV-LO">
140    TV-LO
141  </td>
142  <td>
143    <p style="margin-bottom:.5em;">
144      All app interfaces are presented in landscape orientation.
145      (<a href="{@docRoot}training/tv/start/layouts.html#structure">Learn how</a>)
146    </p>
147  </td>
148</tr>
149
150<tr>
151  <td id="TV-TC">
152    TV-TC
153  </td>
154  <td>
155    <p style="margin-bottom:.5em;">
156      App displays core text at 16sp or higher in size.
157      (<a href="{@docRoot}design/tv/style.html#typography">Learn how</a>)
158    </p>
159  </td>
160</tr>
161
162<tr>
163  <td id="TV-TA">
164    TV-TA
165  </td>
166  <td>
167    <p style="margin-bottom:.5em;">
168      App displays all text at 12sp 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-OV">
176    TV-OV
177  </td>
178  <td>
179    <p style="margin-bottom:.5em;">
180      App does not display any text or functionality that is partially cut off by the
181      edges of the screen.
182      (<a href="{@docRoot}training/tv/start/layouts.html#overscan">Learn how</a>)
183    </p>
184  </td>
185</tr>
186
187<tr>
188  <td id="TV-TR">
189    TV-TR
190  </td>
191  <td>
192    <p style="margin-bottom:.5em;">
193      App does not partially obscure other apps. App fills the entire screen and has a
194      non-transparent background.
195    </p>
196  </td>
197</tr>
198
199<tr>
200  <td rowspan="3" id="navigation">
201    Navigation
202  </td>
203
204  <td id="TV-DP">
205    TV-DP
206  </td>
207  <td>
208    <p style="margin-bottom:.5em;">
209      App functionality is navigable using 5-way D-pad controls, unless the app
210      requires a gamepad controller as specified in <a href="#TV-GP">TV-GP</a>.
211      (<a href="{@docRoot}training/tv/start/navigation.html#d-pad-navigation">Learn how</a>)
212    </p>
213  </td>
214</tr>
215
216<tr>
217  <td id="TV-DK">
218    TV-DK
219  </td>
220  <td>
221    <p style="margin-bottom:.5em;">
222      If the app requires a game controller, as specified in <a href="#TV-GP">TV-GP</a>, all
223      functionality is navigable using standard Android game controller keys.
224      (<a href="{@docRoot}training/game-controllers/controller-input.html#button">Learn how</a>)
225    </p>
226  </td>
227</tr>
228
229<tr>
230  <td id="TV-DM">
231    TV-DM
232  </td>
233  <td>
234    <p style="margin-bottom:.5em;">
235      App does not depend on a remote controller having a Menu button to access user interface
236      controls.
237      (<a href="{@docRoot}training/tv/start/navigation.html#d-pad-navigation">Learn how</a>)
238    </p>
239  </td>
240</tr>
241
242
243</table>
244
245
246<h3 class="rel-resources clearfloat">Related resources</h3>
247
248<div class="resource-widget resource-flow-layout col-13" data-query=
249"collection:distribute/essentials/tvqualityguidelines/visualdesign"
250data-sortorder="-timestamp" data-cardsizes="9x3" data-maxresults="6">
251</div>
252
253
254
255<div class="headerLine">
256  <h2 id="fn">
257  Functionality
258  </h2>
259
260
261</div>
262
263<p>
264  These criteria ensure that your app is configured correctly and provides expected
265  functional behavior.
266</p>
267
268
269<table>
270<tr>
271  <th style="width:2px;">
272    Type
273  </th>
274  <th style="width:54px;">
275    Test
276  </th>
277  <th>
278    Description
279  </th>
280</tr>
281
282<tr>
283  <td rowspan="2" id="manifest">
284   Manifest
285  </td>
286
287  <td id="TV-ML">
288    TV-ML
289  </td>
290  <td>
291    <p style="margin-bottom:.5em;">
292      App manifest sets an intent type of {@link android.content.Intent#ACTION_MAIN} with category
293      {@link android.content.Intent#CATEGORY_LEANBACK_LAUNCHER}.
294      (<a href="{@docRoot}training/tv/start/start.html#tv-activity">Learn how</a>)
295    </p>
296  </td>
297</tr>
298
299</tr>
300  <td id="TV-MT">
301    TV-MT
302  </td>
303  <td>
304    <p style="margin-bottom:.5em;">
305      App manifest sets the hardware feature {@code android.hardware.touchscreen} to not required.
306      (<a href="{@docRoot}training/tv/start/hardware.html#declare-hardware-requirements">Learn
307      how</a>)
308    </p>
309  </td>
310</tr>
311
312<tr>
313  <td rowspan="2" id="game-controllers">
314    Game Controllers
315  </td>
316
317  <td id="TV-GP">
318    TV-GP
319  </td>
320  <td>
321    <p style="margin-bottom:.5em;">
322      If the app uses a game controller as it's primary input method, it declares the appropriate
323      requirement with the <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"
324      >{@code &lt;uses-feature>}</a> manifest tag.
325      (<a href="{@docRoot}training/tv/games/index.html#gamepad">Learn how</a>)
326    </p>
327  </td>
328</tr>
329
330<tr>
331  <td id="TV-GC">
332    TV-GC
333  </td>
334  <td>
335    <p style="margin-bottom:.5em;">
336      If the app provides visual instructions for using game controllers, the instructions should
337      be free of branding and show a compatible button layout.
338      (<a href="{@docRoot}training/tv/games/index.html#ControllerHelp">Learn how</a>)
339    </p>
340  </td>
341</tr>
342
343<tr>
344  <td rowspan="4" id="advertising">
345    Advertising
346  </td>
347
348  <td id="TV-AP">
349    TV-AP
350  </td>
351  <td>
352    <p style="margin-bottom:.5em;">
353      App allows interaction with advertising using D-pad controls.
354      (<a href="{@docRoot}training/tv/start/navigation.html#d-pad-navigation">Learn how</a>)
355    </p>
356  </td>
357</tr>
358
359<tr>
360  <td id="TV-AD">
361    TV-AD
362  </td>
363  <td>
364    <p style="margin-bottom:.5em;">
365      For advertising that uses fullscreen, non-video ads, the app allows the user to
366      immediately dismiss the ad with D-pad controls.
367    </p>
368  </td>
369</tr>
370
371<tr>
372  <td id="TV-AU">
373    TV-AU
374  </td>
375  <td>
376    <p style="margin-bottom:.5em;">
377      For advertising that uses clickable, non-fullscreen, non-video ads, the app does not allow
378      ads to link to a web URL.
379    </p>
380  </td>
381</tr>
382
383<tr>
384  <td id="TV-AA">
385    TV-AA
386  </td>
387  <td>
388    <p style="margin-bottom:.5em;">
389      For advertising that uses clickable, non-fullscreen, non-video ads, the app does not allow
390      ads to link to another app that is not available on TV devices.
391    </p>
392  </td>
393</tr>
394
395<tr>
396  <td rowspan="1" id="web">
397    Web Content
398  </td>
399
400  <td id="TV-WB">
401    TV-WB
402  </td>
403  <td>
404    <p style="margin-bottom:.5em;">
405      For web content, the app uses {@link android.webkit.WebView} components and does not attempt
406      to launch a web browser app.
407    </p>
408  </td>
409</tr>
410
411<tr>
412  <td rowspan="3" id="media-playback">
413    Media Playback
414  </td>
415
416  <td id="TV-NP">
417    TV-NP
418  </td>
419  <td>
420    <p style="margin-bottom:.5em;">
421      If the app continues to play sound or video after the user has left, the
422      app provides a <em>Now Playing</em> card on the home screen recommendation
423      row so users can return to the app to control playback.
424      (<a href="{@docRoot}training/tv/playback/now-playing.html">Learn how</a>)
425    </p>
426  </td>
427</tr>
428
429<tr>
430  <td id="TV-PA">
431    TV-PA
432  </td>
433  <td>
434    <p style="margin-bottom:.5em;">
435      If the app provides a <em>Now Playing</em> card, selecting this card takes the user to
436      a screen that allows playback to be paused.
437      (<a href="{@docRoot}training/tv/playback/now-playing.html">Learn how</a>)
438    </p>
439  </td>
440</tr>
441
442<tr>
443  <td id="TV-PP">
444    TV-PP
445  </td>
446  <td>
447    <p style="margin-bottom:.5em;">
448      If the app plays video or music content, the app toggles between play and pause of media
449      playback when a play or pause key event is sent during playback.<br>
450      (<a href="{@docRoot}reference/android/view/KeyEvent.html#KEYCODE_MEDIA_PLAY_PAUSE">Learn
451      how</a>)
452    </p>
453  </td>
454</tr>
455
456
457</table>
458
459
460<h3 class="rel-resources clearfloat">Related resources</h3>
461
462<div class="resource-widget resource-flow-layout col-13" data-query=
463"collection:distribute/essentials/tvqualityguidelines/functionality"
464data-sortorder="-timestamp" data-cardsizes="9x3" data-maxresults="6">
465</div>
466
467
468<div class="headerLine">
469  <h2 id="faq">
470  Frequently Asked Questions
471  </h2>
472</div>
473
474<p style="margin-top:30px;">
475  <strong>After I submit my app, how will find out if my app does not meet all the requirements for
476  TV devices?</strong>
477</p>
478<p>
479  If your app does not meet the usability requirements described on this page, the Play Store team
480  will contact you through the email address specified in main <a href=
481  "https://play.google.com/apps/publish/">Google Play Developer Console</a> account associated with
482  the app.
483</p>
484<p class="caution">
485  <strong>Caution:</strong> Make sure your app includes the <a href=
486  "{@docRoot}preview/tv/start/index.html#tv-activity">required manifest entries</a> for TV devices,
487  otherwise your app will not be considered a TV app and will not be reviewed for TV usability
488  requirements.
489</p>
490
491
492<p style="margin-top:30px;">
493  <strong>My app targets more than just TV devices. If my app does not meet the TV device
494  requirements, will my new or updated app still appear on Google Play for phones and
495  tablets?</strong>
496</p>
497<p>
498  Yes. The requirements described above only restrict distribution to the Google Play Store on TV
499  devices. Distribution to other device types, such as phones, tablets and other devices, is not
500  affected.
501</p>
502
503
504<p style="margin-top:30px;">
505  <strong>If my app meets the publishing requirements, when will it be available in the Google
506    Play Store on TV devices?</strong>
507</p>
508
509<p>
510  Apps that meet the requirements for TV will appear in the Google Play Store on TV devices
511  <em>after</em> the official release of Android 5.0.
512</p>