am ab6e9048: am 2490ec83: Merge "docs: Add more information for getting started with TV app" into lmp-docs
* commit 'ab6e9048ebe2ac6cd4897378b56017267d6ee16e': docs: Add more information for getting started with TV app
This commit is contained in:
@@ -85,27 +85,27 @@ if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION)
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Touchscreen</td>
|
||||
<td>android.hardware.touchscreen</td>
|
||||
<td>{@code android.hardware.touchscreen}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Telephony</td>
|
||||
<td>android.hardware.telephony</td>
|
||||
<td>{@code android.hardware.telephony}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Camera</td>
|
||||
<td>android.hardware.camera</td>
|
||||
<td>{@code android.hardware.camera}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Near Field Communications (NFC)</td>
|
||||
<td>android.hardware.nfc</td>
|
||||
<td>{@code android.hardware.nfc}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>GPS</td>
|
||||
<td>android.hardware.location.gps</td>
|
||||
<td>{@code android.hardware.location.gps}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Microphone</td>
|
||||
<td>android.hardware.microphone</td>
|
||||
<td>{@code android.hardware.microphone}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -142,20 +142,17 @@ if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION)
|
||||
android:required="false"/>
|
||||
</pre>
|
||||
|
||||
<p class="caution">
|
||||
<strong>Caution:</strong> Declaring an unavailable hardware feature as required by setting its
|
||||
value to {@code true} in your app manifest prevents your app from being installed on TV
|
||||
devices or appearing in the Android TV home screen launcher.
|
||||
<p>
|
||||
All apps intended for use on TV devices must declare that the touch screen feature is not required
|
||||
as described in <a href="{@docRoot}training/tv/start/start.html#no-touchscreen">Get Started with
|
||||
TV Apps</a>. If your app normally uses one or more of the features listed above, change the
|
||||
{@code android:required} attribute setting to {@code false} for those features in your manifest.
|
||||
</p>
|
||||
|
||||
<p class="caution">
|
||||
<strong>Caution:</strong> Some <a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">{@code uses-permission}</a> manifest declarations <em>imply hardware use</em>, which can also
|
||||
prevent your app from being installed and used on TV devices. For example, requesting the
|
||||
{@link android.Manifest.permission#RECORD_AUDIO} permission in your app implies the
|
||||
{@code android.hardware.microphone} hardware feature requirement. In which case, you must declare
|
||||
the microphone feature as not required ({@code android:required="false"}) in your app manifest.
|
||||
For a list of permission requests that imply a hardware feature requirement, see <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions-features">
|
||||
{@code uses-feature}</a> guide.
|
||||
<strong>Caution:</strong> Declaring a hardware feature as required by setting its
|
||||
value to {@code true} prevents your app from being installed on TV
|
||||
devices or appearing in the Android TV home screen launcher.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -172,6 +169,52 @@ if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION)
|
||||
</p>
|
||||
|
||||
|
||||
<h3 id="hardware-permissions">Declaring permissions that imply hardware features</h3>
|
||||
|
||||
<p>
|
||||
Some <a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">{@code uses-permission}</a>
|
||||
manifest declarations <em>imply hardware features</em>. This behavior means that requesting some
|
||||
permissions in your app manifest can exclude your app from from being installed and used on TV
|
||||
devices. The following commonly requested permissions create an implicit hardware feature
|
||||
requirement:
|
||||
</p>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>Permission</th>
|
||||
<th>Implied hardware feature</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{@link android.Manifest.permission#RECORD_AUDIO}</td>
|
||||
<td>{@code android.hardware.microphone}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{@link android.Manifest.permission#CAMERA}</td>
|
||||
<td>{@code android.hardware.camera} <em>and</em> <br>
|
||||
{@code android.hardware.camera.autofocus}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{@link android.Manifest.permission#ACCESS_COARSE_LOCATION}</td>
|
||||
<td>{@code android.hardware.location} <em>and</em> <br>
|
||||
{@code android.hardware.location.network}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{@link android.Manifest.permission#ACCESS_FINE_LOCATION}</td>
|
||||
<td>{@code android.hardware.location} <em>and</em> <br>
|
||||
{@code android.hardware.location.gps}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
For a complete list of permission requests that imply a hardware feature requirement, see
|
||||
<a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions-features">{@code
|
||||
uses-feature}</a> guide. If your app requests one of the features listed above, include a
|
||||
<a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code uses-feature}</a>
|
||||
declaration in your manifest for the implied hardware feature that indicates it is not
|
||||
required ({@code android:required="false"}).
|
||||
</p>
|
||||
|
||||
|
||||
<h3 id="check-features">Checking for hardware features</h2>
|
||||
|
||||
<p>
|
||||
|
||||
@@ -11,6 +11,7 @@ startpage=true
|
||||
<h2>This lesson teaches you how to</h2>
|
||||
<ol>
|
||||
<li><a href="#dev-project">Setup a TV Project</a></li>
|
||||
<li><a href="#tv-libraries">Add TV Support Libraries</a></li>
|
||||
<li><a href="#build-it">Build TV Apps</a></li>
|
||||
<li><a href="#run">Run TV Apps</a></li>
|
||||
</ol>
|
||||
@@ -86,17 +87,10 @@ startpage=true
|
||||
|
||||
<p>An application intended to run on TV devices must declare a launcher activity for TV
|
||||
in its manifest using a {@link android.content.Intent#CATEGORY_LEANBACK_LAUNCHER} intent filter.
|
||||
This filter identifies your app as being enabled for TV, allowing it to be considered a TV app
|
||||
in Google Play. Declaring this intent also identifies which activity
|
||||
This filter identifies your app as being enabled for TV, and is required for your app to be
|
||||
considered a TV app in Google Play. Declaring this intent also identifies which activity
|
||||
in your app to launch when a user selects its icon on the TV home screen.</p>
|
||||
|
||||
<p class="caution">
|
||||
<strong>Caution:</strong> If you do not include the {@link android.content.Intent#CATEGORY_LEANBACK_LAUNCHER} intent filter in
|
||||
your app, it is not visible to users running the Google Play store on TV devices. Also, if your
|
||||
app does not have this filter when you load it onto a TV device using developer tools, the app
|
||||
does not appear in the TV user interface.
|
||||
</p>
|
||||
|
||||
<p>The following code snippet shows how to include this intent filter in your manifest:</p>
|
||||
|
||||
<pre>
|
||||
@@ -132,6 +126,14 @@ startpage=true
|
||||
launch on a TV device.
|
||||
</p>
|
||||
|
||||
<p class="caution">
|
||||
<strong>Caution:</strong> If you do not include the
|
||||
{@link android.content.Intent#CATEGORY_LEANBACK_LAUNCHER} intent filter in
|
||||
your app, it is not visible to users running the Google Play store on TV devices. Also, if your
|
||||
app does not have this filter when you load it onto a TV device using developer tools, the app
|
||||
does not appear in the TV user interface.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
If you are modifying an existing app for use on TV, your app should not use the same
|
||||
activity layout for TV that it does for phones and tablets. The user interface of your TV app (or
|
||||
@@ -142,6 +144,31 @@ startpage=true
|
||||
"{@docRoot}training/tv/start/layouts.html">Building TV Layouts</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<h3 id="no-touchscreen">Declare touchscreen not required</h3>
|
||||
|
||||
<p>
|
||||
Applications that are intended to run on TV devices do not rely on touch screens for input. In
|
||||
order to make this clear, the manifest of your TV app must declare that a the {@code
|
||||
android.hardware.touchscreen} feature is not required. This setting identifies your app as being
|
||||
able to work on a TV device, and is required for your app to be considered a TV app in Google
|
||||
Play. The following code example shows how to include this manifest declaration:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
<manifest>
|
||||
<strong><uses-feature android:name="android.hardware.touchscreen"
|
||||
android:required="false" /></strong>
|
||||
...
|
||||
</manifest>
|
||||
</pre>
|
||||
|
||||
<p class="caution">
|
||||
<strong>Caution:</strong> You must declare that a touch screen is not required in your app
|
||||
manifest, as shown this example code, or your app cannot appear in the Google Play store on TV
|
||||
devices.
|
||||
</p>
|
||||
|
||||
<h3 id="banner">Provide a home screen banner</h3>
|
||||
|
||||
<p>
|
||||
@@ -152,9 +179,10 @@ startpage=true
|
||||
|
||||
<pre>
|
||||
<application
|
||||
. . .
|
||||
...
|
||||
android:banner="@drawable/banner" >
|
||||
. . .
|
||||
|
||||
...
|
||||
</application>
|
||||
</pre>
|
||||
|
||||
@@ -171,7 +199,7 @@ startpage=true
|
||||
design guide.
|
||||
</p>
|
||||
|
||||
<h3 id="tv-libraries">Add TV support libraries</h3>
|
||||
<h2 id="tv-libraries">Add TV Support Libraries</h3>
|
||||
|
||||
<p>
|
||||
The Android SDK includes support libraries that are intended for use with TV apps. These
|
||||
|
||||
Reference in New Issue
Block a user