am 5f13e2f0: am f8d6891c: am 4deed3ec: Merge "docs: Android TV App Quality Requirements v2" into lmp-dev

* commit '5f13e2f0fb56976351d0decb314a9cac85e8d1ba':
  docs: Android TV App Quality Requirements v2
This commit is contained in:
Joe Fernandez
2014-10-17 19:00:12 +00:00
committed by Android Git Automerger
7 changed files with 538 additions and 210 deletions

View File

@@ -29,7 +29,7 @@ page.title=UI Patterns for TV
The visual specifications for these icons are shown below.</p>
<h3>Banners</h3>
<h3 id="banner">Banners</h3>
<p>App Banners represent your app on the home screen of TV devices and serve and as a way for
users to launch your app. Here are specific requirements for a banner image:

View File

@@ -70,7 +70,7 @@ page.title=Style for TV
exaggerated contrast, causing them to be indistinguishable.</p>
<h2>Typography</h2>
<h2 id="typography">Typography</h2>
<p>The text and controls in a TV application's UI should be easily visible and navigable from a
distance. The minimum recommended font size for TV is 12sp. The default text size setting should

View File

@@ -10,6 +10,12 @@
</a>
</div>
</li>
<li class="nav-section">
<div class="nav-section empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/essentials/quality/tv.html">
<span class="en">TV App Quality</span>
</a>
</div>
</li>
<li class="nav-section">
<div class="nav-section empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/essentials/optimizing-your-app.html">
<span class="en">Optimize Your App</span>

View File

@@ -0,0 +1,513 @@
page.title=TV App Quality
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.
page.image=/distribute/images/gp-tv-quality.png
@jd:body
<div id="qv-wrapper"><div id="qv">
<h2>Quality Criteria</h2>
<ol>
<li><a href="#ux">Design and Interaction</a></li>
<li><a href="#fn">Functionality</a></li>
<li><a href="#faq">Frequently Asked Questions</a></li>
</ol>
<h2>You Should Also Read</h2>
<ol>
<li><a href="{@docRoot}distribute/essentials/quality/core.html">
Core App Quality</a></li>
<li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">
Optimize Your App</a></li>
</ol>
</div>
</div>
<div class="top-right-float" style="padding-right:0;margin-bottom:1em;">
<img src="{@docRoot}distribute/images/gp-tv-quality.png" style="width:480px;">
</div>
<p>
Users have a different set of expectations when watching TV, compared to using a phone or tablet.
A typical TV user sits about 10 feet away from the screen, so small details are less noticeable
and small text is hard to read. Since users sit away from a TV, they must use a remote
control device to navigate and make selections rather than touching elements on screen. These
differences significantly change the requirements for what makes a good TV user experience.
</p>
<p>
The first step toward creating a great experience for TV users is to review and follow the
<a href="{@docRoot}design/tv/index.html">Android TV design guidelines</a>, which provides
instructions on how to build the best user experience for TV apps. You should also review the
<a href="{@docRoot}training/tv/start/index.html">Building TV Apps</a> training, to understand the
basic implementation requirements for a TV app.
</p>
<p class="caution">
<strong>Important:</strong> To ensure a great user experience, apps for TV devices must meet some
specific requirements for usability. Only apps that meet the following quality criteria will
qualify as an Android TV app on Google Play.
</p>
<p class="note">
<strong>Note:</strong> You will be able to submit TV apps to Google Play with the public release
of Android 5.0 on November 3. Stay tuned for more information about how to submit your TV apps
through the Google Play Developer Console.
</p>
<div class="headerLine">
<h2 id="ux">
Visual Design and User Interaction
</h2>
</div>
<p>
These criteria ensure that your app follows critical design and interaction patterns
to ensure a consistent, intuitive, and enjoyable user experience on TV devices.
</p>
<table>
<tr>
<th style="width:2px;">
Type
</th>
<th style="width:54px;">
Test
</th>
<th>
Description
</th>
</tr>
<tr>
<td rowspan="4" id="launcher">
Launcher
</td>
<td id="TV-LM">
TV-LM
</td>
<td>
<p style="margin-bottom:.5em;">
App displays a launcher icon in the Android TV Launcher after installation.
(<a href="{@docRoot}training/tv/start/start.html#tv-activity">Learn how</a>)
</p>
</td>
</tr>
<tr>
<td id="TV-LB">
TV-LB
</td>
<td>
<p style="margin-bottom:.5em;">
App displays a 320px x 180px full-size banner as its launcher icon in the Android TV Launcher.
(<a href="{@docRoot}design/tv/patterns.html#banner">Learn how</a>)
</p>
</td>
</tr>
<tr>
<td id="TV-BN">
TV-BN
</td>
<td>
<p style="margin-bottom:.5em;">
App launch banner contains the name of the app.
(<a href="{@docRoot}design/tv/patterns.html#banner">Learn how</a>)
</p>
</td>
</tr>
<tr>
<td id="TV-LG">
TV-LG
</td>
<td>
<p style="margin-bottom:.5em;">
If the app is a game, it appears in the Games row in the Android TV Launcher.<br>
(<a href="{@docRoot}training/tv/games/index.html#manifest">Learn how</a>)
</p>
</td>
</tr>
<tr>
<td rowspan="5" id="layout">
Layout
</td>
<td id="TV-LO">
TV-LO
</td>
<td>
<p style="margin-bottom:.5em;">
All app interfaces are presented in landscape orientation.
(<a href="{@docRoot}training/tv/start/layouts.html#structure">Learn how</a>)
</p>
</td>
</tr>
<tr>
<td id="TV-TC">
TV-TC
</td>
<td>
<p style="margin-bottom:.5em;">
App displays core text at 16sp or higher in size.
(<a href="{@docRoot}design/tv/style.html#typography">Learn how</a>)
</p>
</td>
</tr>
<tr>
<td id="TV-TA">
TV-TA
</td>
<td>
<p style="margin-bottom:.5em;">
App displays all text at 12sp or higher in size.
(<a href="{@docRoot}design/tv/style.html#typography">Learn how</a>)
</p>
</td>
</tr>
<tr>
<td id="TV-OV">
TV-OV
</td>
<td>
<p style="margin-bottom:.5em;">
App does not display any text or functionality that is partially cut off by the
edges of the screen.
(<a href="{@docRoot}training/tv/start/layouts.html#overscan">Learn how</a>)
</p>
</td>
</tr>
<tr>
<td id="TV-TR">
TV-TR
</td>
<td>
<p style="margin-bottom:.5em;">
App does not partially obscure other apps. App fills the entire screen and has a
non-transparent background.
</p>
</td>
</tr>
<tr>
<td rowspan="3" id="navigation">
Navigation
</td>
<td id="TV-DP">
TV-DP
</td>
<td>
<p style="margin-bottom:.5em;">
App functionality is navigable using 5-way D-pad controls, unless the app
requires a gamepad controller as specified in <a href="#TV-GP">TV-GP</a>.
(<a href="{@docRoot}training/tv/start/navigation.html#d-pad-navigation">Learn how</a>)
</p>
</td>
</tr>
<tr>
<td id="TV-DK">
TV-DK
</td>
<td>
<p style="margin-bottom:.5em;">
If the app requires a game controller, as specified in <a href="#TV-GP">TV-GP</a>, all
functionality is navigable using standard Android game controller keys.
(<a href="{@docRoot}training/game-controllers/controller-input.html#button">Learn how</a>)
</p>
</td>
</tr>
<tr>
<td id="TV-DM">
TV-DM
</td>
<td>
<p style="margin-bottom:.5em;">
App does not depend on a remote controller having a menu button to access user interface
controls.
(<a href="{@docRoot}training/tv/start/navigation.html#d-pad-navigation">Learn how</a>)
</p>
</td>
</tr>
</table>
<h3 class="rel-resources clearfloat">Related resources</h3>
<div class="resource-widget resource-flow-layout col-13" data-query=
"collection:distribute/essentials/tvqualityguidelines/visualdesign"
data-sortorder="-timestamp" data-cardsizes="9x3" data-maxresults="6">
</div>
<div class="headerLine">
<h2 id="fn">
Functionality
</h2>
</div>
<p>
These criteria ensure that your app is configured correctly and provides expected
functional behavior.
</p>
<table>
<tr>
<th style="width:2px;">
Type
</th>
<th style="width:54px;">
Test
</th>
<th>
Description
</th>
</tr>
<tr>
<td rowspan="2" id="manifest">
Manifest
</td>
<td id="TV-ML">
TV-ML
</td>
<td>
<p style="margin-bottom:.5em;">
App manifest sets an intent type of {@code ACTION_MAIN} with category
{@code CATEGORY_LEANBACK_LAUNCHER}.
(<a href="{@docRoot}training/tv/start/start.html#tv-activity">Learn how</a>)
</p>
</td>
</tr>
</tr>
<td id="TV-MT">
TV-MT
</td>
<td>
<p style="margin-bottom:.5em;">
App manifest sets the hardware feature {@code android.hardware.touchscreen} to not required.
(<a href="{@docRoot}training/tv/start/hardware.html#declare-hardware-requirements">Learn
how</a>)
</p>
</td>
</tr>
<tr>
<td rowspan="2" id="game-controllers">
Game Controllers
</td>
<td id="TV-GP">
TV-GP
</td>
<td>
<p style="margin-bottom:.5em;">
If the app requires a game controller, the app manifest sets the {@code uses-feature} setting
{@code android.hardware.gamepad} to {@code required="true"}.
(<a href="{@docRoot}training/tv/games/index.html#gamepad">Learn how</a>)
</p>
</td>
</tr>
<tr>
<td id="TV-GC">
TV-GC
</td>
<td>
<p style="margin-bottom:.5em;">
If the app provides user instructions for use of game controllers, the instructions
do not include a controller with any branding.
(<a href="{@docRoot}training/tv/games/index.html#generic-controllers">Learn how</a>)
</p>
</td>
</tr>
<tr>
<td rowspan="4" id="advertising">
Advertising
</td>
<td id="TV-AP">
TV-AP
</td>
<td>
<p style="margin-bottom:.5em;">
App enables interaction with any advertising using D-pad controls.
(<a href="{@docRoot}training/tv/start/navigation.html#d-pad-navigation">Learn how</a>)
</p>
</td>
</tr>
<tr>
<td id="TV-AD">
TV-AD
</td>
<td>
<p style="margin-bottom:.5em;">
For advertising that uses full-screen, non-video ads, the app allows the user to
immediately dismiss the ad with D-pad controls.
</p>
</td>
</tr>
<tr>
<td id="TV-AU">
TV-AU
</td>
<td>
<p style="margin-bottom:.5em;">
For advertising that uses clickable, non-full screen, non-video ads, the app does not allow
ads to link to a web URL.
</p>
</td>
</tr>
<tr>
<td id="TV-AA">
TV-AA
</td>
<td>
<p style="margin-bottom:.5em;">
For advertising that uses clickable, non-full screen, non-video ads, the app does not allow
ads to link to another app that is not available on TV devices.
</p>
</td>
</tr>
<tr>
<td rowspan="1" id="web">
Web Content
</td>
<td id="TV-WB">
TV-WB
</td>
<td>
<p style="margin-bottom:.5em;">
For web content, the app uses {@link android.webkit.WebView} components and does not attempt
to launch a web browser app.
</p>
</td>
</tr>
<tr>
<td rowspan="3" id="media-playback">
Media Playback
</td>
<td id="TV-NP">
TV-NP
</td>
<td>
<p style="margin-bottom:.5em;">
If the app continues to play sound after the user has left, the app provides a <em>Now
Playing</em> card on the home screen recommendation row so users can return to the app to
control playback.
(<a href="{@docRoot}training/tv/playback/now-playing.html">Learn how</a>)
</p>
</td>
</tr>
<tr>
<td id="TV-PA">
TV-PA
</td>
<td>
<p style="margin-bottom:.5em;">
If the app provides a <em>Now Playing</em> card, selecting this card takes the user to
a screen that allows playback to be paused.
(<a href="{@docRoot}training/tv/playback/now-playing.html">Learn how</a>)
</p>
</td>
</tr>
<tr>
<td id="TV-PP">
TV-PP
</td>
<td>
<p style="margin-bottom:.5em;">
If the app plays video or music content, the app toggles between play and pause of media
playback when a play or pause key event is sent during playback.<br>
(<a href="{@docRoot}reference/android/view/KeyEvent.html#KEYCODE_MEDIA_PLAY_PAUSE">Learn
how</a>)
</p>
</td>
</tr>
</table>
<h3 class="rel-resources clearfloat">Related resources</h3>
<div class="resource-widget resource-flow-layout col-13" data-query=
"collection:distribute/essentials/tvqualityguidelines/functionality"
data-sortorder="-timestamp" data-cardsizes="9x3" data-maxresults="6">
</div>
<div class="headerLine">
<h2 id="faq">
Frequently Asked Questions
</h2>
</div>
<p style="margin-top:30px;">
<strong>After I submit my app, how will find out if my app does not meet all the requirements for
TV devices?</strong>
</p>
<p>
If your app does not meet the usability requirements described on this page, the Play Store team
will contact you through the email address specified in main <a href=
"https://play.google.com/apps/publish/">Google Play Developer Console</a> account associated with
the app.
</p>
<p class="caution">
<strong>Caution:</strong> Make sure your app includes the <a href=
"{@docRoot}preview/tv/start/index.html#tv-activity">required manifest entries</a> for TV devices,
otherwise your app will not be considered a TV app and will not be reviewed for TV usability
requirements.
</p>
<p style="margin-top:30px;">
<strong>My app targets more than just TV devices. If my app does not meet the TV device
requirements, will my new or updated app still appear on Google Play for phones and
tablets?</strong>
</p>
<p>
Yes. The requirements described above only restrict distribution to the Google Play Store on TV
devices. Distribution to other device types, such as phones, tablets and other devices, is not
affected.
</p>
<p style="margin-top:30px;">
<strong>If my app meets the publishing requirements, when will it be available in the Google
Play Store on TV devices?</strong>
</p>
<p>
Apps that meet the requirements for TV will appear in the Google Play Store on TV devices
<em>after</em> the official release of Android 5.0.
</p>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@@ -4,7 +4,7 @@ var RESOURCE_COLLECTIONS = {
"resources": [
"training/building-wearables.html",
"training/material/index.html",
"sdk/installing/studio.html"
"sdk/installing/studio.html"
]
},
"distribute/edu/videos/stories": {
@@ -66,9 +66,9 @@ var RESOURCE_COLLECTIONS = {
"resources": [
"distribute/essentials/quality/core.html",
"distribute/essentials/quality/tablets.html",
"distribute/essentials/quality/tv.html",
"https://developers.google.com/edu/guidelines",
"distribute/essentials/optimizing-your-app.html",
"distribute/essentials/best-practices/apps.html",
"distribute/essentials/best-practices/games.html"
]
},
@@ -318,6 +318,20 @@ var RESOURCE_COLLECTIONS = {
"training/basics/activity-lifecycle/recreating.html"
]
},
"distribute/essentials/tvqualityguidelines/visualdesign": {
"title": "",
"resources": [
"design/tv/index.html",
"training/tv/start/index.html"
]
},
"distribute/essentials/tvqualityguidelines/functionality": {
"title": "",
"resources": [
"training/tv/start/hardware.html",
"training/tv/games/index.html"
]
},
"distribute/essentials/core/performance": {
"title": "",
"resources": [
@@ -705,7 +719,7 @@ var RESOURCE_COLLECTIONS = {
"google/play/billing/index.html",
"https://support.google.com/googleplay/android-developer/answer/4407611"
]
},
},
"distribute/monetize/freemium": {
"title": "",
"resources": [

View File

@@ -1,205 +0,0 @@
page.title=Publishing TV Apps
page.tags="requirements","usability"
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>In this document</h2>
<ol>
<li><a href="#requirements">Publishing Requirements for TV Apps</a>
<ol>
<li><a href="#requirements-manifest">Manifest Requirements</a></li>
<li><a href="#requirements-usability">Usability Requirements</a></li>
</ol>
</li>
<li><a href="#faq">Frequently Asked Questions</a></li>
</ol>
</div>
</div>
<p>
Apps for TV devices can be published like other Android apps. You must prepare your app for
release and then you can publish it through <a href=
"{@docRoot}distribute/googleplay/index.html">Google Play</a>. In order for your app to be
accepted as a TV app in Google Play, it must meet some additional requirements, which are covered
in this document.
</p>
<p class="note">
<strong>Note:</strong> You will not be able to publish apps to TV devices through <a href=
"{@docRoot}distribute/googleplay/index.html">Google Play</a> until Android L SDK is released.
</p>
<h2 id="requirements">Publishing Requirements for TV Apps</h2>
<p>
Your app must provide specific manifest declarations and meet some minimum usability requirements
before it can qualify as TV app on Google Play. Make sure your app meets these requirements to
get your app ready for TV devices.
</p>
<p class="caution">
<strong>Caution:</strong> Your app must meet all of the requirements described in this section in
order to qualify as a TV app on Google Play. If your app does not meet the usability requirements
described below, the Google Play team will contact you through the email address specified in main
<a href="https://play.google.com/apps/publish/">Google Play Developer Console</a> account
associated with the app.
</p>
<h3 id="requirements-manifest">Manifest Requirements</h3>
<p>
Developers who want their apps to be considered for publishing on TV devices <em>must</em>
include a manifest entry that declares an activity which handles the {@code
android.intent.category.LEANBACK_LAUNCHER} intent filter. For more information about including
the required manifest entries, see <a href=
"{@docRoot}preview/tv/start/index.html#tv-activity">Get Started with TV Apps</a>.
</p>
<p class="caution">
<strong>Caution:</strong> If you do not include the <a href=
"{@docRoot}preview/tv/start/index.html#tv-activity">required manifest entries</a> for TV devices,
your app is not considered as a TV app. The app will not be reviewed for the TV app usability
requirements and will not be able to qualify as a TV app on Google Play.
</p>
<h3 id="requirements-usability">Usability Requirements</h3>
<p>
Users bring a different set of expectations when watching TV. Apps for Android TV devices have a
different interaction, look and feel from Android apps on the phone or tablet. How users interact
with TVs (with a remote control device) and how they view them (sitting about 10 feet away),
significantly changes the requirements for what makes a good user experience in an app.
</p>
<p>
The first step toward creating a great experience for users on TV is to review and follow the
<a href="{@docRoot}preview/tv/design/index.html">Design for TV</a> guidelines. These guidelines
provide general directions for designing a TV app as well as some specific implementation
instructions.
</p>
<p>
Apps for TV devices must meet some specific requirements for usability. Only apps that meet the
following usability criteria will qualify as an TV app on Google Play:
</p>
<ul>
<li>App functionality must be navigable using 5-way D-pad controls, unless the app requires a
game controller.
(<a href="{@docRoot}preview/tv/ui/navigation.html#d-pad-navigation">details</a>)
<ul>
<li>If the app requires a game controller, all functionality must be navigable using
standard Android game controller keys.
(<a href="{@docRoot}training/game-controllers/controller-input.html#button">details</a>)
</li>
</ul>
</li>
<li>Layouts used on TV devices must be designed for landscape orientation.
(<a href="{@docRoot}preview/tv/ui/layouts.html#structure">details</a>)</li>
<li>Core text used in TV layouts must be at least 16sp in size and all text must be at least
12sp.</li>
<li>Text and functionality should be placed inside an overscan margin of at least 27dp from the
top and bottom edges and 48dp from the left and right edges of the TV screen.
(<a href="{@docRoot}preview/tv/ui/layouts.html#overscan">details</a>)</li>
<li>Apps that uses full-screen, non-video ads, must ensure that the ads are immediately
dismissible by the user with D-pad controls.</li>
<li>Apps must not depend on having a web browser app on TV devices. Apps can use <a href=
"http://developer.android.com/reference/android/webkit/WebView.html">WebView components</a> to
show web content where needed.</li>
<li>Apps that uses clickable, non-full screen, non-video ads must ensure that the ads do not link
to a web URL. These ads must also not link to an app or game that is not available on TV devices
and, therefore, not available in the Google Play store for TV.</li>
<li>Apps must display correctly on the Android TV launcher by doing the following:
<ul>
<li>Include in the app manifest an intent filter of type {@code ACTION_MAIN} with an intent
category {@code CATEGORY_LEANBACK_LAUNCHER}.
(<a href="{@docRoot}preview/tv/start/index.html#tv-activity">details</a>)
</li>
<li>Provide a 320x180px banner image resource and declare it in the manifest.</li>
<li>If the app is a game, it must set the {@code isGame} property to {@code true} in the
manifest. (<a href="{@docRoot}preview/tv/games/index.html#manifest">details</a>)
</li>
</ul>
</li>
<li>App must not partially obscure other apps. Apps must fill the entire screen and have a
non-transparent background.
</li>
<li>Music and audio apps that continue to play sound after a user has left the app must provide
a <strong>Now Playing</strong> card on the home screen recommendation row so users can easily
control playback. Developers should use the {@code android.media.session.MediaSession} API
to enable this card and link playback to a specific activity.
</li>
<li>Media apps that play video or music content must toggle between play and pause of media
playback when a <a href="{@docRoot}reference/android/view/KeyEvent.html#KEYCODE_MEDIA_PLAY_PAUSE">
play or pause key event</a> is sent during playback.
</li>
<li>Games that use a gamepad in order to play must define gamepad use in the app manifest.
(<a href="{@docRoot}preview/tv/games/index.html#gamepad">details</a>)
</li>
<li>Games that provide in-game instructions for game controllers must show a generic controller
layout that does not include any branding. You can download generic controller artwork from
here: <a href="http://storage.googleapis.com/androiddevelopers/design/android_tv_gamepad_template-2014-10.zip">
android_tv_gamepad_template_2014-10.zip</a>.
</li>
</ul>
<h2 id="faq">Frequently Asked Questions</h2>
<p>
<strong>After I submit my app, how will find out if my app does not meet all the requirements for
TV devices?</strong>
</p>
<p>
If your app does not meet the usability requirements described on this page, the Play Store team
will contact you through the email address specified in main <a href=
"https://play.google.com/apps/publish/">Google Play Developer Console</a> account associated with
the app.
</p>
<p class="caution">
<strong>Caution:</strong> Make sure your app includes the <a href=
"{@docRoot}preview/tv/start/index.html#tv-activity">required manifest entries</a> for TV devices,
otherwise your app will not be considered a TV app and will not be reviewed for TV usability
requirements.
</p>
<p>
<strong>My app targets more than just TV devices. If my app does not meet the TV device
requirements, will my new or updated app still appear on Google Play for phones and
tablets?</strong>
</p>
<p>
Yes. The requirements described above only restrict distribution to the Google Play Store on TV
devices. Distribution to other device types, such as phones, tablets and other devices, is not
affected.
</p>
<p>
<strong>If my app meets the publishing requirements, when will it be available in the Google
Play Store on TV devices?</strong>
</p>
<p>
Apps that meet the requirements for TV will appear in the Google Play Store on TV devices
<em>after</em> the official release of Android L.
</p>