blob: 5af28a60143f8ee046e332cb08c3082bf5ad4c18 [file] [log] [blame]
page.title=Get Started with TV Apps
page.tags="leanback","recyclerview","launcher"
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>In this document</h2>
<ol>
<li><a href="#prerequisites">Prerequisites</a></li>
<li><a href="#dev-project">Setup a TV Project</a>
<ul>
<li><a href="#tv-activity">Create a TV Activity</a></li>
<li><a href="#tv-libraries">Add TV Support Libraries</a></li>
</ul>
</li>
<li><a href="#build-it">Build TV Apps</a></li>
<li><a href="#run">Run TV Apps</a></li>
</ol>
</div>
</div>
<p>This guide describes how to prepare your development environment and projects for building
TV apps, including updating your existing app to run on TV devices.</p>
<h2 id="prerequisites">Prerequisites</h2>
<p>Before you begin setting up to build apps for TV, you must:</p>
<ul>
<li><strong><a href="{@docRoot}preview/setup-sdk.html">
Set up the Preview SDK</a></strong>
<br>
The preview SDK provides the developer tools needed to build and test apps for TV.
</li>
<li><strong><a href="{@docRoot}preview/setup-sdk.html#project">
Create a Preview SDK Project</a></strong>
<br>
In order to access new APIs for TV devices, you must create a project that targets the preview
release level or modify an existing project to target the preview release.
</li>
</ul>
<h2 id="dev-project">Set up a TV Project</h2>
<p>TV apps use the same structure as those for phones and tablets. This means you can modify
your existing apps to also run on TV devices or create new apps based on what you already know
about building apps for Android. This section discusses how to modify an existing app, or create a
new one, to run on TV devices.</p>
<p>These are the main steps to creating an app that runs on TV devices. Only the first
is required:</p>
<ul>
<li><strong>Activity for TV</strong> - (Required) In your application manifest, you must
declare an activity that is intended to run on TV devices.</li>
<li><strong>TV Support Libraries</strong> - (Optional) There are several Support Libraries
available for TV devices that provide widgets for building user interfaces.</li>
</ul>
<h3 id="tv-activity">Create a TV Activity</h3>
<p>An application intended to run on TV devices must declare a launcher activity for TV
in its manifest using a {@code android.intent.category.LEANBACK_LAUNCHER} intent filter.
This filter identifies your app as being built for TV, enabling it to be displayed in the
Google Play store app running on TV devices. Declaring this intent also identifies which activity
in your app should be launched when a user selects its icon on the TV home screen.</p>
<p class="caution">
<strong>Caution:</strong> If you do not include the {@code 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>
&lt;application&gt;
...
&lt;activity
android:name=&quot;com.example.android.MainActivity&quot;
android:label=&quot;@string/app_name&quot; &gt;
&lt;intent-filter&gt;
&lt;action android:name=&quot;android.intent.action.MAIN&quot; /&gt;
&lt;category android:name=&quot;android.intent.category.LAUNCHER&quot; /&gt;
&lt;/intent-filter&gt;
&lt;/activity&gt;
&lt;activity
android:name=&quot;com.example.android.<strong>TvActivity</strong>&quot;
android:label=&quot;&#64;string/app_name&quot;
android:theme=&quot;&#64;style/Theme.Leanback&quot;&gt;
&lt;intent-filter&gt;
&lt;action android:name=&quot;android.intent.action.MAIN&quot; /&gt;
&lt;category android:name="<strong>android.intent.category.LEANBACK_LAUNCHER</strong>" /&gt;
&lt;/intent-filter&gt;
&lt;/activity&gt;
&lt;/application&gt;
</pre>
<p>The second activity manifest entry in the example above specifies that activity as
the main one when your app launches on an TV device.</p>
<p>If you have an existing app that you are modifying for TV use, 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
TV portion of your existing app) should provide a simpler interface that can be easily navigated
using a remote control from a couch. For guidelines on designing an app for TV, see the
<a href="{@docRoot}design/tv/index.html">TV Design</a> guide. For more instructions on
developing a user interface appropriate to TV, see the
<a href="{@docRoot}preview/tv/ui/index.html">TV User Interface</a> guide.
</p>
<h3 id="tv-libraries">Add TV Support Libraries</h3>
<p>The Preview SDK includes support libraries that are intended for use with TV apps. These
libraries provide APIs and user interface widgets for use on TV devices. The libraries are
located in the {@code &lt;sdk&gt;/extras/android/support/} directory where you installed the
Preview SDK. Here is a list of the libraries and their general purpose:</p>
<ul>
<li><strong>v17 leanback library</strong> - Provides user interface widgets for TV, including
{@code BrowseFragment}, {@code DetailsFragment}, and {@code SearchFragment}.
<ul>
<li>SDK location: {@code &lt;sdk&gt;/extras/android/support/v17/leanback}</li>
<li>Gradle dependency: {@code com.android.support:leanback-v17:20.0.+}</li>
<li>Contains resources: Yes</li>
</ul>
</li>
<li><strong>v7 recyclerview library</strong> - Provides classes for managing display of long
lists in a memory efficient manner. Several classes in the v17 leanback library depend on the
classes in this library.
<ul>
<li>SDK location: {@code &lt;sdk&gt;/extras/android/support/v7/recyclerview}</li>
<li>Gradle dependency: {@code com.android.support:recyclerview-v7:20.0.+}</li>
<li>Contains resources: No</li>
</ul>
</li>
</ul>
<p class="note">
<strong>Note:</strong> You are not required to use these support libraries for your TV app.
However, we strongly recommend using them, particularly for apps that provide a media catalog
browsing interface.
</p>
<p>If you decide to use the v17 leanback library for your app, you should note that it is
dependent on the
<a href="{@docRoot}tools/support-library/features.html#v4">v4 support library</a>. This means
that apps that use the leanback support library should include all of these support
libraries:</p>
<ul>
<li>v17 leanback support library</li>
<li>v7 recyclerview support library</li>
<li>v4 support library</li>
</ul>
<p>The v17 leanback library contain resources, which requires
you to take specific steps to include it in app projects. For instructions on
importing a support library with resources, see
<a href="http://developer.android.com/tools/support-library/setup.html#libs-with-res">
Support Library Setup</a>.
</p>
<h2 id="build-it">Build TV Apps</h2>
<p>After you have completed the steps described above, it's time to start building apps for
the big screen! Check out these additional topics to help you build your app for TV:
<ul>
<li><a href="{@docRoot}preview/tv/ui/index.html">User Interface</a> - The user interface of
TV devices is different from those of other Android devices. See this topic to find out how
to build TV user interfaces and to learn about the widgets provided to simplify that task.
</li>
<li><a href="{@docRoot}preview/tv/games/index.html">Games for TV</a> - TV devices are great
platforms for games. See this topic for information on building great game experiences for
TV.</li>
<li><a href="{@docRoot}preview/tv/start/hardware-features.html">Hardware features</a> - TV
devices do not contain hardware features normally found on other Android devices. See this
topic for information on unsupported hardware features and what to do about them.
</li>
</ul>
<h2 id="run">Run TV Apps</h2>
<p>Running your app is an important part of the development process. The AVD Manager in the
Android SDK provides the device definitions that allows you to create virtual TV devices for
running and testing your applications.</p>
<p>To create an virtual TV device:</p>
<ol>
<li>Start the AVD Manager. For more information, see the
<a href="{@docRoot}tools/help/avd-manager.html">AVD Manager</a> help.</li>
<li>In the AVD Manager dialog, click the <strong>Device Definitions</strong> tab.</li>
<li>Select one of the Android TV device definitions, such as
<strong>Large Android TV</strong>, and click <strong>Create AVD</strong>.</li>
<li>Select the emulator options and click <strong>OK</strong> to create the AVD.
<p class="note">
<strong>Note:</strong> For best performance of the TV emulator device, enable the <strong>Use
Host GPU</strong> option and CPU platform image that supports hardware acceleration. For
more information on hardware acceleration of the emulator, see
<a href="{@docRoot}tools/devices/emulator.html#acceleration">Using the Emulator</a>.
</p>
</li>
</ol>
<p>To test your application on the virtual TV device:</p>
<ol>
<li>Compile your TV application in your development environment.</li>
<li>Run the application from your development environment and choose the TV virtual device as
the target.</li>
</ol>
<p>For more information about using emulators see, <a href="{@docRoot}tools/devices/emulator.html">
Using the Emulator</a>. For more information about deploying apps to emulators from
Eclipse with ADT, see <a href="{@docRoot}http://developer.android.com/tools/building/building-eclipse.html">
Building and Running from Eclipse with ADT</a>.</p>