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