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>