Home | History | Annotate | Download | only in quality
      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 &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 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>