1 page.title=TV App Quality 2 page.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. 3 page.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, 51 see <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" 250 data-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 <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 after the user has left, the app provides a <em>Now 422 Playing</em> card on the home screen recommendation row so users can return to the app to 423 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" 464 data-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>