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>