Merge "docs: Updated the screenshot for the Android Studio page." into klp-modular-dev
diff --git a/Android.mk b/Android.mk
index 494ba1b..8fdcea2 100644
--- a/Android.mk
+++ b/Android.mk
@@ -166,6 +166,7 @@
 	core/java/android/os/IUserManager.aidl \
 	core/java/android/os/IVibratorService.aidl \
 	core/java/android/service/notification/INotificationListener.aidl \
+	core/java/android/service/notification/IStatusBarNotificationHolder.aidl \
 	core/java/android/print/ILayoutResultCallback.aidl \
 	core/java/android/print/IPrinterDiscoveryObserver.aidl \
 	core/java/android/print/IPrintDocumentAdapter.aidl \
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 32284e8..d51c397 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -2488,16 +2488,16 @@
     /**
      * Helper class for generating large-format notifications that include a large image attachment.
      *
-     * This class is a "rebuilder": It consumes a Builder object and modifies its behavior, like so:
+     * Here's how you'd set the <code>BigPictureStyle</code> on a notification:
      * <pre class="prettyprint">
-     * Notification noti = new Notification.BigPictureStyle(
-     *      new Notification.Builder()
-     *         .setContentTitle(&quot;New photo from &quot; + sender.toString())
-     *         .setContentText(subject)
-     *         .setSmallIcon(R.drawable.new_post)
-     *         .setLargeIcon(aBitmap))
-     *      .bigPicture(aBigBitmap)
-     *      .build();
+     * Notification notif = new Notification.Builder(mContext)
+     *     .setContentTitle(&quot;New photo from &quot; + sender.toString())
+     *     .setContentText(subject)
+     *     .setSmallIcon(R.drawable.new_post)
+     *     .setLargeIcon(aBitmap)
+     *     .setStyle(new Notification.BigPictureStyle()
+     *         .bigPicture(aBigBitmap))
+     *     .build();
      * </pre>
      *
      * @see Notification#bigContentView
@@ -2584,16 +2584,16 @@
     /**
      * Helper class for generating large-format notifications that include a lot of text.
      *
-     * This class is a "rebuilder": It consumes a Builder object and modifies its behavior, like so:
+     * Here's how you'd set the <code>BigTextStyle</code> on a notification:
      * <pre class="prettyprint">
-     * Notification noti = new Notification.BigTextStyle(
-     *      new Notification.Builder()
-     *         .setContentTitle(&quot;New mail from &quot; + sender.toString())
-     *         .setContentText(subject)
-     *         .setSmallIcon(R.drawable.new_mail)
-     *         .setLargeIcon(aBitmap))
-     *      .bigText(aVeryLongString)
-     *      .build();
+     * Notification notif = new Notification.Builder(mContext)
+     *     .setContentTitle(&quot;New mail from &quot; + sender.toString())
+     *     .setContentText(subject)
+     *     .setSmallIcon(R.drawable.new_mail)
+     *     .setLargeIcon(aBitmap)
+     *     .setStyle(new Notification.BigTextStyle()
+     *         .bigText(aVeryLongString))
+     *     .build();
      * </pre>
      *
      * @see Notification#bigContentView
@@ -2678,19 +2678,19 @@
     /**
      * Helper class for generating large-format notifications that include a list of (up to 5) strings.
      *
-     * This class is a "rebuilder": It consumes a Builder object and modifies its behavior, like so:
+     * Here's how you'd set the <code>InboxStyle</code> on a notification:
      * <pre class="prettyprint">
-     * Notification noti = new Notification.InboxStyle(
-     *      new Notification.Builder()
-     *         .setContentTitle(&quot;5 New mails from &quot; + sender.toString())
-     *         .setContentText(subject)
-     *         .setSmallIcon(R.drawable.new_mail)
-     *         .setLargeIcon(aBitmap))
-     *      .addLine(str1)
-     *      .addLine(str2)
-     *      .setContentTitle("")
-     *      .setSummaryText(&quot;+3 more&quot;)
-     *      .build();
+     * Notification notif = new Notification.Builder(mContext)
+     *     .setContentTitle(&quot;5 New mails from &quot; + sender.toString())
+     *     .setContentText(subject)
+     *     .setSmallIcon(R.drawable.new_mail)
+     *     .setLargeIcon(aBitmap)
+     *     .setStyle(new Notification.InboxStyle()
+     *         .addLine(str1)
+     *         .addLine(str2)
+     *         .setContentTitle(&quot;&quot;)
+     *         .setSummaryText(&quot;+3 more&quot;))
+     *     .build();
      * </pre>
      *
      * @see Notification#bigContentView
@@ -3102,14 +3102,16 @@
          *         .build();</pre>
          *
          * <p>The activity to launch needs to allow embedding, must be exported, and
-         * should have an empty task affinity.
+         * should have an empty task affinity. It is also recommended to use the device
+         * default light theme.
          *
          * <p>Example AndroidManifest.xml entry:
          * <pre class="prettyprint">
          * &lt;activity android:name=&quot;com.example.MyDisplayActivity&quot;
          *     android:exported=&quot;true&quot;
          *     android:allowEmbedded=&quot;true&quot;
-         *     android:taskAffinity=&quot;&quot; /&gt;</pre>
+         *     android:taskAffinity=&quot;&quot;
+         *     android:theme=&quot;@android:style/Theme.DeviceDefault.Light&quot; /&gt;</pre>
          *
          * @param intent the {@link PendingIntent} for an activity
          * @return this object for method chaining
diff --git a/core/java/android/service/notification/INotificationListener.aidl b/core/java/android/service/notification/INotificationListener.aidl
index d4b29d8..57ab9b9 100644
--- a/core/java/android/service/notification/INotificationListener.aidl
+++ b/core/java/android/service/notification/INotificationListener.aidl
@@ -16,12 +16,13 @@
 
 package android.service.notification;
 
+import android.service.notification.IStatusBarNotificationHolder;
 import android.service.notification.StatusBarNotification;
 
 /** @hide */
 oneway interface INotificationListener
 {
     void onListenerConnected(in String[] notificationKeys);
-    void onNotificationPosted(in StatusBarNotification notification);
-    void onNotificationRemoved(in StatusBarNotification notification);
+    void onNotificationPosted(in IStatusBarNotificationHolder notificationHolder);
+    void onNotificationRemoved(in IStatusBarNotificationHolder notificationHolder);
 }
\ No newline at end of file
diff --git a/core/java/android/service/notification/IStatusBarNotificationHolder.aidl b/core/java/android/service/notification/IStatusBarNotificationHolder.aidl
new file mode 100644
index 0000000..fd6b59e
--- /dev/null
+++ b/core/java/android/service/notification/IStatusBarNotificationHolder.aidl
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.service.notification;
+
+import android.service.notification.StatusBarNotification;
+
+/** @hide */
+interface IStatusBarNotificationHolder {
+    StatusBarNotification get();
+}
diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java
index eb2de2c..98d36e0 100644
--- a/core/java/android/service/notification/NotificationListenerService.java
+++ b/core/java/android/service/notification/NotificationListenerService.java
@@ -22,6 +22,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.os.IBinder;
+import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.util.Log;
 
@@ -213,7 +214,14 @@
 
     private class INotificationListenerWrapper extends INotificationListener.Stub {
         @Override
-        public void onNotificationPosted(StatusBarNotification sbn) {
+        public void onNotificationPosted(IStatusBarNotificationHolder sbnHolder) {
+            StatusBarNotification sbn;
+            try {
+                sbn = sbnHolder.get();
+            } catch (RemoteException e) {
+                Log.w(TAG, "onNotificationPosted: Error receiving StatusBarNotification", e);
+                return;
+            }
             try {
                 NotificationListenerService.this.onNotificationPosted(sbn);
             } catch (Throwable t) {
@@ -221,7 +229,14 @@
             }
         }
         @Override
-        public void onNotificationRemoved(StatusBarNotification sbn) {
+        public void onNotificationRemoved(IStatusBarNotificationHolder sbnHolder) {
+            StatusBarNotification sbn;
+            try {
+                sbn = sbnHolder.get();
+            } catch (RemoteException e) {
+                Log.w(TAG, "onNotificationRemoved: Error receiving StatusBarNotification", e);
+                return;
+            }
             try {
                 NotificationListenerService.this.onNotificationRemoved(sbn);
             } catch (Throwable t) {
diff --git a/core/java/com/android/internal/widget/SwipeDismissLayout.java b/core/java/com/android/internal/widget/SwipeDismissLayout.java
index 002573e..97b1634 100644
--- a/core/java/com/android/internal/widget/SwipeDismissLayout.java
+++ b/core/java/com/android/internal/widget/SwipeDismissLayout.java
@@ -45,10 +45,9 @@
         /**
          * Called when the layout has been swiped and the position of the window should change.
          *
-         * @param progress A number in [-1, 1] representing how far to the left
-         * or right the window has been swiped. Negative values are swipes
-         * left, and positives are right.
-         * @param translate A number in [-w, w], where w is the width of the
+         * @param progress A number in [0, 1] representing how far to the
+         * right the window has been swiped
+         * @param translate A number in [0, w], where w is the width of the
          * layout. This is equivalent to progress * layout.getWidth().
          */
         void onSwipeProgressChanged(SwipeDismissLayout layout, float progress, float translate);
@@ -207,7 +206,7 @@
 
     private void setProgress(float deltaX) {
         mTranslationX = deltaX;
-        if (mProgressListener != null) {
+        if (mProgressListener != null && deltaX >= 0)  {
             mProgressListener.onSwipeProgressChanged(this, deltaX / getWidth(), deltaX);
         }
     }
diff --git a/docs/html/google/auth/api-client.jd b/docs/html/google/auth/api-client.jd
index 402a95f..5331d1e 100644
--- a/docs/html/google/auth/api-client.jd
+++ b/docs/html/google/auth/api-client.jd
@@ -1,4 +1,4 @@
-page.title=Accessing Google Play Services APIs
+page.title=Accessing Google APIs
 page.tags="oauth 2.0","GoogleAuthUtil"
 
 trainingnavtop=true
diff --git a/docs/html/google/google_toc.cs b/docs/html/google/google_toc.cs
index 6ff00c0..b4028bd 100644
--- a/docs/html/google/google_toc.cs
+++ b/docs/html/google/google_toc.cs
@@ -3,11 +3,11 @@
      ########            ATTENTION             ###############
      ########                                  ###############
      #########################################################
-     
+
      IF YOU MAKE CHANGES TO THIS FILE, YOU MUST GENERATE THE
      GMS REFERENCE DOCS, BECAUSE THEY ARE NOT INCLUDED IN THE
      DOCS BUILD RULE.
-     
+
      #########################################################
      #########################################################
 ?>
@@ -73,11 +73,11 @@
     </div>
     <ul>
       <li><a href="<?cs var:toroot?>google/play-services/setup.html">
-          <span class="en">Setup</span></a>
+          <span class="en">Setting Up Google Play Services</span></a>
       </li>
       <li class="nav-section">
         <div class="nav-section-header"><a href="<?cs var:toroot?>google/auth/api-client.html">
-          <span class="en">Accessing Google Play Services APIs</span></a>
+          <span class="en">Accessing Google APIs</span></a>
         </div>
         <ul>
           <li>
diff --git a/docs/html/google/play-services/games.jd b/docs/html/google/play-services/games.jd
index 94f6715..a73f688 100644
--- a/docs/html/google/play-services/games.jd
+++ b/docs/html/google/play-services/games.jd
@@ -1,4 +1,5 @@
 page.title=Google Play Game Services
+page.tags="games"
 header.hide=1
 
 @jd:body
diff --git a/docs/html/google/play-services/setup.jd b/docs/html/google/play-services/setup.jd
index 744e191..4332953 100644
--- a/docs/html/google/play-services/setup.jd
+++ b/docs/html/google/play-services/setup.jd
@@ -1,4 +1,4 @@
-page.title=Set Up Google Play Services SDK
+page.title=Setting Up Google Play Services
 @jd:body
 
 
@@ -8,8 +8,7 @@
 
 <h2>In this document</h2>
 <ol>
-  <li><a href="#Install">Install the Google Play Services SDK</a></li>
-  <li><a href="#Setup">Set Up a Project that Uses Google Play Services</a></li>
+  <li><a href="#Setup">Add Google Play Services to Your Project</a></li>
   <li><a href="#Proguard">Create a Proguard Exception</a></li>
   <li><a href="#ensure">Ensure Devices Have the Google Play services APK</a></li>
 </ol>
@@ -18,12 +17,17 @@
 </div>
 </div>
 
+<script>
+$(document).ready(function() {
+  setupIdeDocToggle();
+});
+</script>
 
-    
+
 <p>To develop an app using the <a href="{@docRoot}reference/gms-packages.html">Google
-Play services APIs</a>, you must download the Google Play services SDK
-from the <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>.
-The download includes the client library and code samples.</p>
+Play services APIs</a>, you need to set up your project with the Google Play services SDK.
+<p>If you haven't installed the Google Play services SDK yet, go get it now by following the guide
+to <a href="{@docRoot}sdk/installing/adding-packages.html">Adding SDK Packages</a>.</p>
 
 <p>To test your app when using the Google Play services SDK, you must use either:</p>
 <ul>
@@ -33,68 +37,25 @@
   that runs the Google APIs platform based on Android 4.2.2 or higher.</li>
 </ul>
 
-<p>Ideally, you should develop and test your app on a variety of devices, including
-both phones and tablets.</p>
 
 
-<h2 id="Install">Install the Google Play Services SDK</h2>
+<h2 id="Setup">Add Google Play Services to Your Project</h2>
 
-<p>To install the Google Play services SDK for development:</p>
+<p>
+<select class="ide">
+  <option value="eclipse">Using Eclipse with ADT</option>
+  <option value="studio">Using Android Studio</option>
+  <option value="other">Using something else</option>
+</select>
+</p>
+
+
+<div class="select-ide studio">
 
 <ol>
-  <li>Launch the SDK Manager in one of the following ways:
-   <ul>
-    <li>In Android Studio, click <strong>SDK Manager</strong>
-<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:19px" />
-in the toolbar.</li>
-    <li>In Eclipse (with <a href="{@docRoot}tools/help/adt.html">ADT</a>),
-    select <strong>Window</strong> &gt; <strong>Android SDK Manager</strong>.</li>
-    <li>On Windows, double-click the <code>SDK Manager.exe</code> file at the root of the Android
-  SDK directory.</li>
-    <li>On Mac or Linux, open a terminal and navigate to the <code>tools/</code> directory in the
-  Android SDK, then execute <code>android sdk</code>.</li>
-    </ul>
-  </li>
-  <li>Install the Google Play services SDK.
-    <p>Scroll to the bottom of the package list, expand <b>Extras</b>, select
-    <b>Google Play services</b>, and install it. If you're using Android Studio, also install
-    <b>Google Repository</b> (it provides the Maven repository used for Gradle builds).</p>
-      <p>The Google Play services SDK is saved in your Android SDK environment at
-      <code>&lt;android-sdk&gt;/extras/google/google_play_services/</code>.</p>
-
-<p class="note"><strong>Note:</strong> Google Play services 4.0.30 (released
-November 2013) and newer versions require Android 2.3 or higher. If your app supports Android 2.2,
-you can continue development with the Google Play services SDK, but must instead install
-<b>Google Play services for Froyo</b> from the SDK Manager.</p>
-
-  </li>
-  <li>Install a compatible version of the Google APIs platform.
-    <p>If you want to test your app on the emulator, expand the directory for <b>Android 4.2.2
-    (API 17)</b> or a higher version, select <b>Google APIs</b>, and install it. Then create a
-    new <a href="{@docRoot}tools/devices/index.html">AVD</a> with Google APIs as
-    the platform target.</p>
-  </li>
-  <li>Make a copy of the Google Play services library project.
-    <p class="note"><strong>Note:</strong> If you are using Android Studio, skip this step.</p>
-    <p>Copy the library project at
-  <code>&lt;android-sdk&gt;/extras/google/google_play_services/libproject/google-play-services_lib/</code>        
-  to the location where you maintain your Android app projects.
-  <p>If you are using Eclipse, import the library project into your workspace.
-  Click <b>File > Import</b>, select <b>Android > Existing
-  Android Code into Workspace</b>, and browse to the copy of the library project to import it.</p>
-  </li>
-</ol>
-
-
-
-<h2 id="Setup">Set Up a Project that Uses Google Play Services</h2>
-
-<p><b>Using Android Studio:</b></p>
-
-<ol>
-  <li>Open the <code>build.gradle</code> file inside your application module directory. 
-      <p class="note"><strong>Note:</strong> Android Studio projects contain a top-level 
-      <code>build.gradle</code> file and a <code>build.gradle</code> file for each module. 
+  <li>Open the <code>build.gradle</code> file inside your application module directory.
+      <p class="note"><strong>Note:</strong> Android Studio projects contain a top-level
+      <code>build.gradle</code> file and a <code>build.gradle</code> file for each module.
       Be sure to edit the file for your application module. See
       <a href="{@docRoot}sdk/installing/studio-build.html">Building Your Project with
       Gradle</a> for more information about Gradle.</p></li>
@@ -128,8 +89,11 @@
 <p>You can now begin developing features with the
 <a href="{@docRoot}reference/gms-packages.html">Google Play services APIs</a>.</p>
 
+</div><!-- end studio -->
 
-<p><b>Using Eclipse or another IDE:</b></p>
+
+
+<div class="select-ide eclipse other">
 
 <p>To make the Google Play services APIs available to your app, you must reference the library
 project you created in step 4 of the <a href="#Install">installation instructions</a>.</p>
@@ -156,6 +120,9 @@
 you can begin developing features with the
 <a href="{@docRoot}reference/gms-packages.html">Google Play services APIs</a>.</p>
 
+</div><!-- end eclipse and other -->
+
+
 
 
 <h2 id="Proguard">Create a Proguard Exception</h2>
@@ -236,5 +203,6 @@
 that takes the user to Google Play Store to install the update.</p>
 
 
-<p>To then begin a connection to Google Play services, read <a
-href="{@docRoot}google/auth/api-client.html">Accessing Google Play Services APIs</a>.</p>
+<p>To then begin a connection to Google Play services (required by most Google APIs such
+as Google Drive, Google+, and Games), read <a
+href="{@docRoot}google/auth/api-client.html">Accessing Google APIs</a>.</p>
diff --git a/docs/html/guide/topics/manifest/activity-element.jd b/docs/html/guide/topics/manifest/activity-element.jd
index bd1edc2..a8d7615 100644
--- a/docs/html/guide/topics/manifest/activity-element.jd
+++ b/docs/html/guide/topics/manifest/activity-element.jd
@@ -5,7 +5,8 @@
 
 <dl class="xml">
 <dt>syntax:</dt>
-<dd><pre class="stx">&lt;activity android:<a href="#reparent">allowTaskReparenting</a>=["true" | "false"]
+<dd><pre class="stx">&lt;activity android:<a href="#embedded">allowEmbedded</a>=["true" | "false"]
+          android:<a href="#reparent">allowTaskReparenting</a>=["true" | "false"]
           android:<a href="#always">alwaysRetainTaskState</a>=["true" | "false"]
           android:<a href="#clear">clearTaskOnLaunch</a>=["true" | "false"]
           android:<a href="#config">configChanges</a>=["mcc", "mnc", "locale",
@@ -62,6 +63,17 @@
 
 <dt>attributes:</dt>
 <dd><dl class="attr">
+<dt><a name="embedded"></a>{@code android:allowEmbedded}</dt>
+<dd>
+    Indicate that the activity can be launched as the embedded child of another
+    activity. Particularly in the case where the child lives in a container
+    such as a Display owned by another activity. For example, activities
+    that are used for Wear custom notifications must declare this so
+    Wear can display the activity in it's context stream, which resides
+    in another process.
+
+    <p>The default value of this attribute is <code>false</code>.
+</dd>
 <dt><a name="reparent"></a>{@code android:allowTaskReparenting}</dt>
 <dd>Whether or not the activity can move from the task that started it to
 the task it has an affinity for when that task is next brought to the
diff --git a/docs/html/index.jd b/docs/html/index.jd
index 606baf8..de2980b 100644
--- a/docs/html/index.jd
+++ b/docs/html/index.jd
@@ -1,6 +1,5 @@
 fullpage=true
 page.viewport_width=970
-no_footer_links=true
 excludeFromSuggestions=true
 page.metaDescription=The official site for Android developers. Provides the Android SDK and documentation for app developers and designers.
 page.customHeadTag=<meta name="google-site-verification" content="sa-bIAI6GKvct3f61-WpRguHq-aNjtF7xJjMTSi79as" />
diff --git a/docs/html/preview/api-overview.jd b/docs/html/preview/api-overview.jd
index 40618a3..8ec2470 100644
--- a/docs/html/preview/api-overview.jd
+++ b/docs/html/preview/api-overview.jd
@@ -15,17 +15,19 @@
 <ol id="toc44" class="hide-nested">
   <li><a href="#Behaviors">Important Behavior Changes</a>
     <ol>
+      <li><a href="#ART">New Android Runtime (ART)</a></li>
       <li><a href="#BehaviorNotifications">If your app implements notifications...</a></li>
-      <li><a href="#BehaviorFullscreen">If your app uses fullScreenIntent...</a></li>
+      <li><a href="#BehaviorMediaControl">If your app uses RemoteControlClient...</a></li>
       <li><a href="#BehaviorGetRecentTasks">If your app uses ActivityManager.getRecentTasks()...</a></li>
     </ol>
   </li>
   <li><a href="#UI">User Interface</a>
     <ol>
       <li><a href="#MaterialDesign">Material design support</a></li>
+      <li><a href="#DoNotDisturb">Do Not Disturb mode</a></li>
       <li><a href="#LockscreenNotifications">Lockscreen notifications</a></li>
       <li><a href="#NotificationsMetadata">Notifications metadata</a></li>
-      <li><a href="#Recents">Concurrent documents and activities in Recents screen</a></li>
+      <li><a href="#Recents">Concurrent documents and activities in the Recents screen</a></li>
       <li><a href="#WebView">WebView updates</a></li>
     </ol>
   </li>
@@ -41,7 +43,7 @@
   </li>
   <li><a href="#Multimedia">Multimedia</a>
     <ol>
-      <li><a href="#Camera-v2">Camera V2</a></li>
+      <li><a href="#Camera-v2">Camera v2 API</a></li>
       <li><a href="#AudioPlayback">Audio playback</a></li>
       <li><a href="#MediaPlaybackControl">Media playback control</a></li>
     </ol>
@@ -55,23 +57,24 @@
     <ol>
       <li><a href="#Multinetwork">Dynamic network selection and seamless handoff</a></li>
       <li><a href="#BluetoothBroadcasting">Bluetooth broadcasting</a></li>
-      <li><a href="#NFCEnhancements">NFC enhancements for payments</a></li>
+      <li><a href="#NFCEnhancements">NFC enhancements</a></li>
     </ol>
   </li>
   <li><a href="#Power">Power Efficiency</a>
     <ol>
       <li><a href="#JobScheduler">Scheduling Jobs</a></li>
-      <li><a href="#PowerMeasurementTools">Developer tools and APIs for power measurement</a>
+      <li><a href="#PowerMeasurementTools">Developer tools for power measurement</a>
     </ol>
   </li>
   <li><a href="#Enterprise">Enterprise</a>
     <ol>
       <li><a href="#ManagedProvisioning">Managed provisioning</a></li>
+      <li><a href="#LockToAppMode">Lock-to-App mode</a></li>
     </ol>
   </li>
   <li><a href="#Printing">Printing Framework</a>
     <ol>
-      <li><a href="#PDFRender">PDF rendering</a></li>
+      <li><a href="#PDFRender">Render PDF as bitmap</a></li>
     </ol>
   </li>
   <li><a href="#TestingA11y">Testing &amp; Accessibility</a>
@@ -96,73 +99,148 @@
 </div>
 </div>
 
-<p>L is an upcoming release for the Android platform
-that offers new features for users and app developers. This document provides
-an introduction to the most notable new APIs.</p>
+<p>The L Developer Preview gives you an advance look at the upcoming release
+for the Android platform, which offers new features for users and app
+developers. This document provides an introduction to the most notable APIs.</p>
 
-<p>L is currently available as a <strong>developer preview</strong> intended
-for early adopters and testers. If you are interested in influencing the
-direction of the Android framework,
+<p>The L Developer Preview is intended for <strong>developer early
+adopters</strong> and <strong>testers</strong>. If you are interested in
+influencing the direction of the Android framework,
 <a href="{@docRoot}preview/setup-sdk.html">give the L Developer Preview a
 try</a> and send us your feedback!</p>
 
-<p class="caution"><strong>Caution:</strong>You should not publish apps
-using L Developer Preview to the Google Play store.</p>
+<p class="caution"><strong>Caution:</strong> Do not not publish apps
+that use the L Developer Preview to the Google Play store.</p>
+
+<p class="note"><strong>Note:</strong> This document often refers to classes and
+methods that do not yet have reference material available on <a
+href="{@docRoot}">developer.android.com</a>. These API elements are
+formatted in {@code code style} in this document (without hyperlinks). For the
+preliminary API documentation for these elements, download the <a
+href="{@docRoot}preview/l-developer-preview-reference.zip">preview
+reference</a>.</p>
 
 <h2 id="Behaviors">Important Behavior Changes</h2>
 
 <p>If you have previously published an app for Android, be aware that your app
-  might be affected by changes in L.</p>
+  might be affected by changes in the upcoming release.</p>
+
+<h3 id="ART">New Android Runtime (ART)</h3>
+
+<p>The 4.4 release introduced a new, experimental Android runtime, ART. Under
+4.4, ART was optional, and the default runtime remained Dalvik. With the L
+Developer Preview, ART is now the default runtime.</p>
+
+<p>For an overview of ART's new features, see
+<a href="https://source.android.com/devices/tech/dalvik/art.html">Introducing
+ART</a>. Some of the major new features are:</p>
+
+<ul>
+  <li>Ahead-of-Time (AOT) compilation</li>
+  <li>Improved garbage collection (GC)</li>
+  <li>Improved debugging support</li>
+</ul>
+
+<p>Most Android apps should just work without change under ART. However, some
+techniques that work on Dalvik do not work on ART. For information about the
+most important issues, see
+<a href="{@docRoot}guide/practices/verifying-apps-art.html">Verifying App
+Behavior on the Android Runtime (ART)</a>. Pay particular attention if:</p>
+
+<ul>
+  <li>Your app uses Java Native Interface (JNI) to run C/C++ code.</li>
+  <li>You use development tools that generate non-standard code (such as some
+      obfuscators).</li>
+  <li>You use techniques that are incompatible with compacting garbage
+      collection. (ART does not currently implement compacting GC, but
+      compacting GC is under development in the Android Open-Source
+      Project.)</li>
+</ul>
 
 <h3 id="BehaviorNotifications">If your app implements notifications...</h3>
 
-<p>Notifications will be drawn with dark text atop white (or very light)
+<p>Notifications are drawn with dark text atop white (or very light)
 backgrounds to match the new material design widgets. Make sure that all your
-notifications look right with the new color scheme. You should remove or update
-assets and text styles that involve color. The system will automatically invert
-action icons in notifications. Use
-{@code android.app.Notification.Builder.setColor()} to set an accent color
-in a circle behind your {@code Notification.icon} image.</p>
+notifications look right with the new color scheme:</p>
 
-<p>The system will ignore all non-alpha channels in action icons and the main
-notification icon, so you should assume that these icons will be alpha-only.
-</p>
+<div class="figure" style="width:220px">
+  <img src="images/hun-example.png"
+    srcset="images/hun-example@2x.png 2x"
+    alt="" width="220" height="372" id="figure1" />
+  <p class="img-caption">
+    <strong>Figure 1.</strong> Fullscreen activity showing a heads-up notification
+  </p>
+</div>
+
+<ul>
+
+  <li>Update or remove assets that involve color.</li>
+
+  <li>The system automatically inverts action icons in notifications. Use
+  {@code android.app.Notification.Builder.setColor()} to set an accent color
+  in a circle behind your {@link android.app.Notification#icon} image.</li>
+
+  <li>The system ignores all non-alpha channels in action icons and the main
+  notification icon. You should assume that these icons are alpha-only.</li>
+
+</ul>
 
 <p>If you are currently adding sounds and vibrations to your notifications by
 using the {@link android.media.Ringtone}, {@link android.media.MediaPlayer},
-or {@link android.os.Vibrator} classes, make sure to remove this code so that
-the system can present notifications correctly in Do not disturb mode. You
-should use the {@link android.app.Notification.Builder} methods instead to add
-sounds and vibration.
-</p>
+or {@link android.os.Vibrator} classes, remove this code so that
+the system can present notifications correctly in <a href="#DoNotDisturb">Do Not Disturb</a> mode. Instead, use the {@link android.app.Notification.Builder} methods instead to add sounds and vibration.</p>
+
+<p>Notifications now appear in a small floating window
+(also called a <em>heads-up notification</em>) when the device is active
+(that is, the device is unlocked and its screen is on). These notifications
+appear similar to the compact form of your notification, except that the
+heads-up notification also shows action buttons. Users can act on, or dismiss,
+a heads-up notification without leaving the current app.</p>
+
+<p>Examples of conditions that may trigger heads-up notifications include:</p>
+
+<ul>
+  <li>The user's activity is in fullscreen mode (the app uses
+{@link android.app.Notification#fullScreenIntent}), or</li>
+  <li>The notification has high priority and uses ringtones or
+    vibrations</li>
+</ul>
+
+<p>If your app implements notifications under those scenarios, make sure that
+heads-up notifications are presented correctly.</p>
 
 <h3 id="BehaviorMediaControl">If your app uses RemoteControlClient...</h3>
 
-<p>Lockscreens in L will not show transport controls for your
-{@link android.media.RemoteControlClient}. Instead, your app can provide
-media playback control from the lockscreen through a media notification. This
+<p>Lockscreens in the L Developer Preview do not show transport controls for
+your {@link android.media.RemoteControlClient}. Instead, your app can provide
+media playback control from the lockscreen through a notification. This
 gives your app more control over the presentation of media buttons, while
 providing a consistent experience for users across the lockscreen and
 unlocked device.</p>
 
-<p>You must call {@code Notification.Builder.setVisibility(Notification.VISIBILITY_PUBLIC)} to mark your media notification as safe to reveal, even when the lockscreen is secured
-with a PIN, pattern, or password.</p>
+<p>The L Developer Preview introduces a new {@code android.app.Notification.MediaStyle} template which is recommended for this purpose. {@code MediaStyle} converts notification actions that you added with {@link android.app.Notification.Builder#addAction(int, java.lang.CharSequence, android.app.PendingIntent) Notification.Builder.addAction()} into compact buttons embedded in your app's media playback notifications.</p>
 
-<h3 id="BehaviorFullscreen">If your app uses fullScreenIntent...</h3>
+<p>If you are using the new
+{@code android.media.session.MediaSession} class (see <a href="#MediaPlaybackControl">Media Playback Control</a> below), attach your session
+token with {@code Notification.MediaStyle.setMediaToken()} to inform the
+system that this notification controls an ongoing media session.</p>
 
-<p>Notifications now appear in a small floating window if all these conditions
-are met: the user’s activity is in fullscreen mode, the screen is on, and the
-device is unlocked. If your app implements fullscreen activities, make sure that
-these heads-up notifications are presented correctly.</p>
+<p>Call {@code
+Notification.Builder.setVisibility(Notification.VISIBILITY_PUBLIC)} to mark a
+notification as safe to show atop any lockscreen (secure or otherwise). For more information, see
+<a href="#LockscreenNotifications">Lockscreen Notifications</a>.</p>
 
 <h3 id="BehaviorGetRecentTasks">If your app uses ActivityManager.getRecentTasks()...</h3>
 
-<p>With the introduction of the new document tasks feature in L (see below),
-the {@code android.app.ActivityManager.getRecentTasks()} method is now
-deprecated to improve user privacy. For backwards
-compatibility, it will still return a small subset of its data including the
+<p>With the introduction of the new <em>concurrent documents and activities tasks</em> feature in the upcoming
+release (see <a href="#Recents">Concurrent documents and activities in Recents
+screen</a> below),
+the {@link android.app.ActivityManager#getRecentTasks
+ActivityManager.getRecentTasks()} method is now
+deprecated to improve user privacy. For backward
+compatibility, this method still returns a small subset of its data, including the
 calling application’s own tasks and possibly some other non-sensitive tasks
-such as home. If your app is using this method to retrieve its own tasks,
+(such as Home). If your app is using this method to retrieve its own tasks,
 use {@code android.app.ActivityManager.getAppTasks()} instead to retrieve that
 information.</p>
 
@@ -170,11 +248,14 @@
 
 <h3 id="MaterialDesign">Material design support</h3>
 
-<p>The L Developer Preview adds support for the material design style. You can create
-material design apps that are visually dynamic and have UI element transitions
-which feel natural and delightful to users. This support includes:</p>
+<p>The upcoming release adds support for Android's new <em>material</em> design
+style. You can create
+apps with material design that are visually dynamic and have UI element transitions
+that feel natural to users. This support includes:</p>
+
 <ul>
-  <li>The Material theme</li>
+
+  <li>The material theme</li>
   <li>View shadows</li>
   <li>The {@code RecyclerView} widget</li>
   <li>Drawable animation and styling effects</li>
@@ -182,8 +263,9 @@
   <li>Animators for view properties based on the state of a view</li>
   <li>Customizable UI widgets and app bars with color palettes that you control</li>
 </ul>
+
 <p>To learn more about adding material design functionality to your app, see
-<a href="{@docRoot}preview/material/index.html">Material design on Android</a>.</p>
+<a href="{@docRoot}preview/material/index.html">Material Design</a>.</p>
 
 <h3 id="LockscreenNotifications">Lockscreen notifications</h3>
 <p>Lockscreens in the L Developer Preview have the ability to present notifications.
@@ -194,29 +276,58 @@
 displayed over the secure lockscreen. To control the visibility level, call
 {@code android.app.Notification.Builder.setVisibility()} and specify one of these
 values:</p>
+
 <ul>
 <li>{@code VISIBILITY_PRIVATE}. Shows basic information, such as the
-notification’s icon, but hides the notification’s full content. If you want to
-provide a redacted public version of your notification for the system to display
-on a secure lockscreen, set the public notification object in the <code>publicVersion</code>
-field.</li>
-<li>{@code VISIBILITY_PUBLIC}. Shows the notification’s full content. This is
-  the system default if visibility is left unspecified.</li>
-<li>{@code VISIBILITY_SECRET}. Shows only the most minimal information,
-excluding even the notification’s icon.</li>
+notification’s icon, but hides the notification’s full content.</li>
+<li>{@code VISIBILITY_PUBLIC}. Shows the notification’s full content.</li>
+<li>{@code VISIBILITY_SECRET}. Shows nothing, excluding even the
+notification’s icon.</li>
 </ul>
 
+<p>When {@code VISIBILITY_PRIVATE} is set, you can also provide a redacted
+version of the notification content that hides personal details. For example,
+an SMS app might display a notification that shows "You have 3 new text messages." but hides the message content and senders. To provide this alternative notification, first create the replacement notification using {@link android.app.Notification.Builder}. When you create the private notification object, attach
+the replacement notification to it through the {@code Notification.Builder.setPublicVersion()} method.</p>
+
+<h3 id="DoNotDisturb">Do Not Disturb mode</h3>
+
+<p>The L Developer Preview introduces a new <em>Do Not Disturb</em> mode. When
+the user puts the device in <em>Do Not Disturb</em> mode, the device limits
+the frequency of the notifications it shows the user (when the user
+wants to avoid distractions). The user can
+customize the feature in a number of ways, such as:</p>
+
+<ul>
+  <li>Specifying important people, whose calls should go through even when
+    the device is in <em>Do Not Disturb</em> mode.</li>
+  <li>Setting custom categories to allow notifications when the device is in
+    <em>Do Not Disturb</em> mode. Examples of such categories include phone
+    calls and direct communications (like Hangouts and Skype calls).</li>
+  <li>Setting rules so <em>Do Not Disturb</em> automatically goes into effect in
+    certain conditions (like at particular times of day).</li>
+</ul>
+
+<p>You should add the appropriate metadata to your app notifications to help
+make sure <em>Do Not Disturb</em> mode handles them properly. For example, if
+your app is an alarm clock,
+you can tag the notification as an alarm so it will wake the user up even if the
+device is in <em>Do Not Disturb</em> mode. For more information, see <a
+href="#NotificationsMetadata">Notifications metadata</a>.</p>
+
 <h3 id="NotificationsMetadata">Notifications metadata</h3>
 <p>The L Developer Preview uses metadata associated with your app notifications
-to more intelligently sort your notifications. The metadata you set also
+to sort the notifications more intelligently. The metadata you set also
 controls how the system presents your app notifications when the user is in <em>Do
-not disturb</em> mode. When constructing your notification, you can call the
-following methods in {@code android.app.Notification.Builder}:</p>
+Not Disturb</em> mode. To set the metadata, call the following methods in
+{@code android.app.Notification.Builder} when you construct the
+notification:</p>
 
 <ul>
-<li>{@code setCategory()}. Allows the system to handle your app notifications
-in <em>Do not disturb mode</em> (for example, if your notification represents an
-incoming call, instant message, or alarm).</li>
+<li>{@code setCategory()}. Depending on the message category, this tells
+the system how to handle your app notifications when the device is
+in <em>Do Not Disturb</em> mode (for example, if your notification represents an
+incoming call, instant message, or alarm).
 <li>{@code setPriority()}. Notifications with the priority field set to
 {@code PRIORITY_MAX} or {@code PRIORITY_HIGH} will appear in a small floating
 window if the notification also has sound or vibration.</li>
@@ -231,30 +342,35 @@
 <p>In previous releases, the
 <a href="{@docRoot}design/get-started/ui-overview.html">Recents screen</a>
 could only display a single task for each app that the user interacted with
-most recently. The L Developer Preview allows your app to open additional tasks
-for concurrent activities or documents. This feature facilitates multitasking
+most recently. The L Developer Preview enables your app to open more tasks as
+needed for additional concurrent activities for documents.
+This feature facilitates multitasking
 by letting users quickly switch between individual activities and documents
-from the Recents screen. Examples of such concurrent tasks might include web
-pages in a browser app, documents in a productivity app, concurrent matches in
+from the Recents screen, with a consistent switching experience across all apps.
+Examples of such concurrent tasks might include open tabs in a web
+browser app, documents in a productivity app, concurrent matches in
 a game, or chats in a messaging app. Your app can manage its tasks
 through the {@code android.app.ActivityManager.AppTask} class.</p>
 
 <p>To insert a logical break so that the system treats your activity as a new
-document, use {@code android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT} when
+task, use {@code android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT} when
 launching the activity with {@link android.app.Activity#startActivity(android.content.Intent) startActivity()}. You can also get this behavior by declaring the
 <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a>
 attribute {@code documentLaunchMode="intoExisting"} or {@code ="always"} in your
 manifest.</p>
 
 <p>You can also mark that a task should be removed from the Recents screen
-when all its activities are closed by using {@code android.content.Intent.FLAG_ACTIVITY_AUTO_REMOVE_FROM_RECENTS} when starting the root activity for
+when all its activities are closed. To do this, use {@code
+android.content.Intent.FLAG_ACTIVITY_AUTO_REMOVE_FROM_RECENTS} when starting the
+root activity for
 the task. You can also set this behavior for an activity by declaring the
 <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a>
 attribute {@code autoRemoveFromRecents=“true”} in your manifest.</p>
 
 <p>To avoid cluttering the Recents screen, you can set the maximum number of
-tasks from your app that can appear in the Recents screen through the
-<a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a> attribute {@code android:maxRecent}. The current maximum that can be specified
+tasks from your app that can appear in that screen. To do this, set the
+<a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a>
+attribute {@code android:maxRecent}. The current maximum that can be specified
 is 100 tasks per user.</a></p>
 
 <h3 id="WebView">WebView updates</h3>
@@ -274,16 +390,20 @@
 <h3 id="IME">IME bug fixes and improvements</h3>
 
 <p>Beginning in the L Developer Preview, users can more easily switch between
-all input method editors (IME) <a href="{@docRoot}guide/topics/text/creating-input-method.html">supported by the platform</a>. Performing the designated
+all <a href="{@docRoot}guide/topics/text/creating-input-method.html">input
+method editors (IME)</a> supported by the platform. Performing the designated
 switching action (usually touching a Globe icon on the soft keyboard) will cycle
 among all such IMEs. This change takes place in
-{@code android.view.inputmethod.InputMethodManager.shouldOfferSwitchingToNextInputMethod()}.</p>
+{@link android.view.inputmethod.InputMethodManager#shouldOfferSwitchingToNextInputMethod
+InputMethodManager.shouldOfferSwitchingToNextInputMethod()}.</p>
 
-<p>In addition, the framework will now check whether the next IME includes a
-switching mechanism at all, thus supporting switching to the IME after it. An
+<p>In addition, the framework now checks whether the next IME includes a
+switching mechanism at all (and, thus, whether that IME supports switching to
+the IME after it). An
 IME with a switching mechanism will not cycle to an IME without one. This
 change takes place in
-{@code android.view.inputmethod.InputMethodManager.switchToNextInputMethod()}.
+{@link android.view.inputmethod.InputMethodManager#switchToNextInputMethod
+InputMethodManager.switchToNextInputMethod}.
 
 <p>To see an example of how to use the updated IME-switching APIs, refer to the
 updated soft-keyboard implementation sample in this release.</p>
@@ -314,17 +434,20 @@
 &lt;/manifest&gt;
 </pre>
 
-<p>For more information about using OpenGL ES, including how to check the device’s supported OpenGL ES version at runtime, see the <a href="{@docRoot}/guide/topics/graphics/opengl.html">OpenGL ES API guide</a>.</p>
+<p>For more information about using OpenGL ES, including how to check the device’s supported OpenGL ES version at runtime, see the <a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL ES API guide</a>.</p>
 
 <h2 id="Multimedia">Multimedia</h2>
 
-<h3 id="Camera=v2">Camera v2 API</h3>
+<h3 id="Camera-v2">Camera v2 API</h3>
 
 <p>The L Developer Preview introduces the new {@code android.hardware.camera2}
-API to facilitate fine grain photo capture and image processing. You can now programmatically access the camera devices available to the system with {@code CameraManager.getCameraIdList()} and connect to a specific device with {@code CameraManager.openCamera()}. To start capturing images, you
-need to create a {@code CameraCaptureSession} and specify the
-{@link android.view.Surface} objects to send the captured images. The {@code CameraCaptureSession} can be configured to take single shots or multiple images
-in a burst.</p>
+API to facilitate fine-grain photo capture and image processing. You can now
+programmatically access the camera devices available to the system with {@code
+CameraManager.getCameraIdList()} and connect to a specific device with {@code
+CameraManager.openCamera()}. To start capturing images, create a {@code
+CameraCaptureSession} and specify the {@link android.view.Surface} objects for
+the captured images. The {@code CameraCaptureSession} can be configured to take
+single shots or multiple images in a burst.</p>
 
 <p>To be notified when new images are captured, implement the
 {@code CameraCaptureSession.CaptureListener()} interface and set it in your
@@ -334,16 +457,17 @@
 {@code CaptureResult}.</p>
 
 <h3 id="AudioPlayback">Audio playback</h3>
-<p>This release includes the following changes for
-  {@code android.media.AudioTrack}:</p>
+<p>This release includes the following changes to
+  {@link android.media.AudioTrack}:</p>
 <ul>
   <li>Your app can now supply audio data in floating-point format
 ({@code android.media.AudioFormat.ENCODING_PCM_FLOAT}). This permits greater
 dynamic range, more consistent precision, and greater headroom. Floating-point arithmetic is especially useful during intermediate calculations. Playback
-end-points use integer format for audio data, and with lower bit-depth. In L
-Developer Preview, portions of the internal pipeline are not yet floating-point.
-  <li>Your app can now supply audio data as a {@code ByteBuffer}, in the same
-format as provided by {@code MediaCodec}.
+end-points use integer format for audio data, and with lower bit-depth. (In the
+L Developer Preview, portions of the internal pipeline are not yet
+floating-point.)
+  <li>Your app can now supply audio data as a {@link java.nio.ByteBuffer}, in the same
+format as provided by {@link android.media.MediaCodec}.
   <li>The {@code WRITE_NON_BLOCKING} option can simplify buffering and
     multithreading for some apps.
 </ul>
@@ -352,8 +476,8 @@
 <p>You can now build your own media controller app with the new
 {@code android.media.session.MediaController} class, which provides
 simplified transport controls APIs that replace those in
-{@code android.media.RemoteControlClient}. The {@code MediaController} class
-allows thread-safe control of playback from a non UI process, making it easier
+{@link android.media.RemoteControlClient}. The {@code MediaController} class
+allows thread-safe control of playback from a non-UI process, making it easier
 to control your media playback service from your app’s user interface.
 
 <p>You can also create multiple controllers to send playback commands,
@@ -362,65 +486,85 @@
 call {@code MediaSession.getSessionToken()} to request an access
 token in order for your app to interact with the session.</p>
 
-<p>Send transport commands such as "play", "stop", "skip", and
+<p>You can now send transport commands such as "play", "stop", "skip", and
 "set rating" by using {@code MediaController.TransportControls}. To handle
-in-bound media transport commands from controllers attached to the session, you
-should override the callback methods in
+in-bound media transport commands from controllers attached to the session,
+override the callback methods in
 {@code MediaSession.TransportControlsCallback}.</p>
 
 <p>You can also create rich notifications that allow playback control tied to a
-media session with the new {@code android.app.Notification.MediaStyle} class.</p>
+media session with the new {@code android.app.Notification.MediaStyle} class. By
+using the new notification and media APIs, you will ensure that the System UI
+knows about your playback and can extract and show album art.</p>
 
 <h2 id="Storage">Storage</h2>
 
 <h3 id="DirectorySelection">Directory selection</h3>
 
-<p>The L Developer Preview extends the <a href="{@docRoot}guide/topics/providers/document-provider.html">Storage Access Framework</a> to let users
-select an entire directory, rather than individual files, to give your app
-read/write access to media files. When a directory is selected, your app also
-has access to all its child directories and content.</p>
+<p>The L Developer Preview extends the <a href="{@docRoot}guide/topics/providers/document-provider.html">Storage Access Framework</a> to let users select an entire directory, rather than individual files, to
+give your app read/write access to media files. When a directory is selected,
+your app also has access to all its child directories and content.</p>
 
 <p>To get the absolute paths to directories on external storage devices where
-applications can store media files, call the
-{@code android.content.Context.getExternalMediaDirs()} method. No additional
+applications can store media files, call the new
+{@code android.content.Context.getExternalMediaDirs()} method. No
+additional
 permissions are needed by your app to read or write to the returned paths.
-External storage devices here are those considered by the system to be a
+In this context, "external storage devices" are those devices which the system
+considers to be a
 permanent part of the device, and includes emulated external storage and
 physical media slots such as SD cards in battery compartments.</p>
 
+<p>You can bring up a system UI to allow the user to pick a directory subtree.
+To do so, send  {@code android.intent.action.OPEN_DOCUMENT_TREE} in an
+{@link android.content.Intent}. If the call is successful, the system displays
+the {@link android.provider.DocumentsProvider} instances installed on the
+device for the user to select. When the user selects a directory from this UI,
+the system returns a URI representing the selected directory tree.</p>
+
 <p>If you want to access a document in an existing directory, call the
-{@code android.provider.DocumentsContract.buildDocumentViaUri()} method and pass
-in a Uri representing the path to the parent directory and the target document
-ID. The method returns a new {@link android.net.Uri} with which your app can
+{@code android.provider.DocumentsContract.buildDocumentViaUri()} method.
+Pass the method a URI representing the path to the parent directory, and the
+target document
+ID. The method returns a new {@link android.net.Uri} which your app can
 use to write media content with {@code DocumentsContract.createDocument()}.
 
 <h2 id="Wireless">Wireless &amp; Connectivity</h2>
 
 <h3 id="Multinetwork">Dynamic network selection and seamless handoff</h3>
-<p>The L Developer Preview provides new multi-networking APIs for your app to
+<p>The L Developer Preview provides new multi-networking APIs. These let your app
 dynamically scan for available networks with specific capabilities, and
 establish a connection to them. This is useful when your app requires a
 specialized network, such as an SUPL, MMS, or carrier-billing network, or if
 you want to send data using a particular type of transport protocol.</p>
 
-<p>To select and connect to a network dynamically from your app, first
-instantiate a {@code android.net.ConnectivityManager}. Next, create a
-{@code android.net.NetworkRequest} to specify the network features and transport
-type your app is interested in. To start scanning for suitable networks, call
-{@code ConnectivityManager.requestNetwork()} or
-{@code ConnectivityManager.registerNetworkCallback(), and pass in the
-{@code NetworkRequest} object and an implementation of
-{@code ConnectivityManager.NetworkCallbackListener}.</p>
+<p>To select and connect to a network dynamically from your app follow these
+steps:</p>
+
+<ol>
+ <li>Create a {@link android.net.ConnectivityManager}.</li>
+ <li>Create a
+  {@code android.net.NetworkRequest} to specify the network features and transport
+  type your app is interested in.</li>
+  <li>To scan for suitable networks, call
+  {@code ConnectivityManager.requestNetwork()} or
+  {@code ConnectivityManager.registerNetworkCallback()}, and pass in the
+  {@code NetworkRequest} object and an implementation of
+  {@code ConnectivityManager.NetworkCallbackListener}.</li>
+
+</ol>
 
 <p>When the system detects a suitable network, it connects to the network and
 invokes the {@code NetworkCallbackListener.onAvailable()} callback. You can use
 the {@code android.net.Network} object from the callback to get additional
-information about the network, or to establish a socket connection.</p>
+information about the network, or to direct traffic to use the selected
+network.</p>
 
 <h3 id="BluetoothBroadcasting">Bluetooth broadcasting</h3>
 <p>Android 4.3 introduced platform support for <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">Bluetooth Low Energy</a>
 (BLE) in the central role. In the L Developer Preview, an Android device can now
-act as a Bluetooth LE <em>peripheral device</em> and make its presence known to
+act as a Bluetooth LE <em>peripheral device</em>. Apps can use this capability
+to make their presence known to
 nearby devices. For instance, you can build apps that allow a device to
 function as a pedometer or health monitor and communicate its data with another
 BLE device.</p>
@@ -429,16 +573,19 @@
 You must add the {@code android.permission.BLUETOOTH_ADMIN} permission in your
 manifest in order for your app to use the new advertising and scanning features.</a>
 
-<p>To begin Bluetooth LE advertising so that other devices can discover the
-device running your app, call {@code android.bluetooth.le.BluetoothAdvertiser.startAdvisertising()} and pass in an implementation of the
-{@code android.bluetooth.le.AdvertiseCallback} class to report the success
-or failure of the advertising operation.</p>
+<p>To begin Bluetooth LE advertising so that other devices can discover
+your app, call {@code android.bluetooth.le.BluetoothAdvertiser.startAdvisertising()}
+and pass in an implementation of the
+{@code android.bluetooth.le.AdvertiseCallback} class. The callback object
+receives a report of the success or failure of the advertising operation.</p>
 
-<p>Conversely, if you want to scan for Bluetooth LE devices nearby, call
-{@code android.bluetooth.le.BluetoothLeScanner.startScan()} and pass in an
+<p> The L Developer Preview introduces the {@code
+android.bluetooth.le.ScanFilter} class so that your app can scan for only the
+specific types of devices it is interested in. To begin scanning for Bluetooth
+LE devices, call {@code android.bluetooth.le.BluetoothLeScanner.startScan()} and
+pass in a list of filters. In the method call, you must also provide an
 implementation of {@code android.bluetooth.le.ScanCallback} to report if a
-Bluetooth LE advertisement is found. Optionally, you can pass in filters to scan
-for a specific type of device.</p>
+Bluetooth LE advertisement is found. </p>
 
 <h3 id="NFCEnhancements">NFC enhancements</h3>
 <p>The L Developer Preview adds these enhancements to enable wider and more
@@ -446,13 +593,12 @@
 
 <ul>
 <li>Android Beam is now available in the share menu.
-<li>Support for the <a href="http://www.wi-fi.org/discover-wi-fi/wi-fi-direct">Wi-fi Direct standard</a>.
 <li>Your app can invoke the Android Beam on the user’s device to share data by
 calling {@code android.nfc.NfcAdapter.invokeBeam()}. This avoids the need for
 the user to manually tap the device against another NFC-capable device to
 complete the data transfer.
-<li>Use the new {@code android.nfc.NdefRecord.createTextRecord()} method if
-  you want to create an NDEF record containing UTF-8 text data.
+<li>You can use the new {@code android.nfc.NdefRecord.createTextRecord()} method
+to create an NDEF record containing UTF-8 text data.
 <li>If you are developing a payment app, you now have the ability to
 register an NFC application ID (AID) dynamically by calling
 {@code android.nfc.cardemulation.CardEmulation.registerAidsForService()}.
@@ -466,18 +612,32 @@
 <h3 id="JobScheduler">Scheduling jobs</h3>
 <p>The L Developer Preview provides a new {@code android.app.job.JobScheduler}
 API that lets you optimize battery life by defining jobs for the system to run
-asynchronously at a later time, such as when the device is charging. This is
-useful when you want to defer non user-facing units of work, have application
-code that accesses the network, or want to run a number of tasks as a batch on
-a regular schedule.</p>
+asynchronously at a later time or under specified conditions (such as when the
+device is charging). This is useful in such situations as:</p>
+<ul>
+  <li>The app has non-user-facing work that you can defer.</li>
+  <li>The app has work you'd prefer to do when the unit is plugged in.</li>
+  <li>The app has a task that requires network access (or requires a Wi-Fi
+    connection).</li>
+  <li>The app has a number of tasks that you want to run as a batch on a regular
+   schedule.</li>
 
-<p>A {@code android.app.job.JobInfo} object encapsulates such a unit of work,
-and provides an exact description of the criteria you are scheduling.</p>
+</ul>
+
+<p>A unit of work is encapsulated by a {@code android.app.job.JobInfo} object.
+This object provides an exact description of the criteria to be used for
+scheduling.</p>
 
 <p>Use the {@code android.app.job.JobInfo.Builder} to configure how the
 scheduled task should run. You can schedule the task to run under specific
-conditions such as only while the device is charging, when connected to an
-unmetered network, or when the system deems the device is idle.</p>
+conditions, such as:</p>
+
+<ul>
+  <li>The device is charging</li>
+  <li>The device is connected to an unmetered network</li>
+  <li>The system deems the device to be idle</li>
+  <li>Completion with a minimum delay or within a specific deadline.</li>
+</ul>
 
 <p>For example, you can add code like this to run your task on an
 unmetered network:</p>
@@ -492,7 +652,7 @@
 jobScheduler.schedule(uploadTask);
 </pre>
 
-<h3 id="PowerMeasurementTools">Developer tools and APIs for power measurement</h3>
+<h3 id="PowerMeasurementTools">Developer tools for power measurement</h3>
 <p>The L Developer Preview provides several new developer tools and APIs to help
 you better measure and understand your app's power usage.</p>
 
@@ -513,23 +673,33 @@
 </ul>
 
 <p>Use the {@code --help} option to learn about the various options for
-tailoring the output. For example, to run the tool to print battery usage
-statistics since the device was last charged for a given app package, run this
+tailoring the output. For example, to print battery usage
+statistics for a given app package since the device was last charged, run this
 command:
 <pre>
-$ adb shell dumpsys batterystats --charged <package-name>
+$ adb shell dumpsys batterystats --charged &lt;package-name&gt;
 </pre>
 </dd>
 
 <dt><strong>Battery Historian</strong></dt>
 <dd>
-<p>The Battery Historian tool ({@code historian.par}) analyzes L-based Android
-bug reports and creates an HTML visualization of power-related events. It can
-also visualize power consumption data from a power monitor, and will attempt to
-map power usage to the wakelocks seen. You can find the Battery Historian tool
+<p>The Battery Historian tool ({@code historian.par}) analyzes Android
+bug reports from the L Developer Preview and creates an HTML visualization of
+power-related events. It can
+also visualize power consumption data from a power monitor, and attempts to
+map power usage to the wake locks seen. You can find the Battery Historian tool
 in {@code &lt;sdk&gt;/tools}.</p>
 
-<p>For best results, you should first enable full wakelock reporting to allow
+<img src="images/battery_historian.png"
+     srcset="images/battery_historian@2x.png 2x"
+    alt="" width="440" height="240"
+    id="figure2" />
+<p class="img-caption">
+  <strong>Figure 2.</strong>HTML visualization generated by the Battery
+      Historian tool.
+</p>
+
+<p>For best results, you should first enable full wake lock reporting, to allow
 the Battery Historian tool to monitor uninterrupted over an extended period of
 time:</p>
 <pre>
@@ -548,93 +718,100 @@
 </pre>
 </dd>
 
-<dt><strong>On-device power management</strong></dt>
-<dd>
-<p>You can use the {@code android.os.BatteryManager} API to obtain power
-consumption information based on the battery fuel gauge included in Android
-phones and tablets. This is useful in cases when it is not convenient to
-connect external measurement equipment to the Android device.</p>
-<p>To retrieve the battery properties, call {@code BatteryManager.getIntProperty()}
-or {@code BatteryManager.getLongProperty()}. The properties available, the
-exact resolution of the values of each, and other characteristics such as
-update frequency depend on the particular device being tested.</p>
-
-<p>The following properties can be inspected on all Android devices:</p>
-
-<table>
-  <tr>
-     <th>Property</th>
-     <th>Description</th>
-  </tr>
-  <tr>
-     <td>{@code BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER}</td>
-     <td>Remaining battery capacity in microampere-hours.</td>
-  </tr>
-  <tr>
-     <td>{@code BatteryManager.BATTERY_PROPERTY_CURRENT_NOW}</td>
-     <td>Instantaneous battery current in microamperes.</td>
-  </tr>
-  <tr>
-     <td>{@code BatteryManager.BATTERY_PROPERTY_CURRENT_AVERAGE}</td>
-     <td>Average battery current in microamperes</td>
-  </tr>
-  <tr>
-     <td>{@code BatteryManager.BATTERY_PROPERTY_CAPACITY}</td>
-     <td>Remaining battery capacity as an integer percentage.</td>
-  </tr>
-  <tr>
-     <td>{@code BatteryManager.BATTERY_PROPERTY_ENERGY_COUNTER}</td>
-     <td>Remaining energy in nanowatt-hours.</td>
-  </tr>
-</table>
-<dd>
 </dl>
 
 <h2 id="Enterprise">Enterprise</h2>
 <h3 id="ManagedProvisioning">Managed provisioning</h3>
 
+<div class="figure" style="width:360px">
+  <img src="images/managed_apps_launcher.png"
+    srcset="images/managed_apps_launcher@2x.png 2x"
+    alt="" width="360" height="572" id="figure3" />
+  <p class="img-caption">
+    <strong>Figure 3.</strong> Launcher screen showing managed apps (marked with
+    a lock badge)
+  </p>
+</div>
+
 <p>The L Developer Preview provides new functionality for running apps within
 an enterprise environment:</p>
 <ul>
 <li><strong>Create managed user profiles</strong>. A device administrator can
-initiate a managed provisioning process to enroll a user device with an
-existing personal account into a co-present but separate managed profile that
-the administrator controls.
-<li><strong>Set device owner scope</strong>. Device administrators can also
-apply managed provisioning to configure a device that has no previous user
-accounts installed, so that they have full control over the device.
+initiate a managed provisioning process to add a co-present but separate managed
+profile to a device with an existing personal account. The administrator has
+control over the managed profile.</li>
+<li><strong>Set device owner</strong>. Device administrators can also initiate a
+managed provisioning process to automatically provision a
+currently-unprovisioned device such that they have full control over the
+device.</li>
 </ul>
 
-<p>To start the manged provisioning process, send
-{@code ACTION_PROVISION_MANAGED_PROFILE} in an {@link android.content.Intent}. A
-user may be associated with more than one managed profile. To get a list of the
-managed profiles associated with the user, call
-{@code android.os.UserManager.getUserProfiles()}.</p>
+<p>To start the managed provisioning process, send {@code
+ACTION_PROVISION_MANAGED_PROFILE} in an {@link android.content.Intent}. If the
+call is successful, the system triggers the {@code
+android.app.admin.DeviceAdminReceiver. onProfileProvisioningComplete()} callback.
+You can then call {@code app.admin.DevicePolicyManager. setProfileEnabled()} to
+set this profile to the enabled state.</p>
+
+<p>A user may be associated with more than one managed profile. To get a list of
+the managed profiles associated with the user, call
+{@code android.os.UserManager. getUserProfiles()}.</p>
 
 <p>Once a managed profile is created for a user, apps that are managed by the
 device administrator will appear alongside non-managed apps in the user’s
-Launcher, Recent apps screen, and notifications. A device policy management app
-can make the managed apps visually prominent by appending a “work” badge to the
-icon drawable with {@code android.os.UserManager.getBadgeDrawableForUser()}.</p>
+Launcher, Recent apps screen, and notifications.</p>
 
-<p>If you are developing a Launcher app, you can use the new {@code android.content.pm.LauncherApps} class to get a list of launchable activities for the current user
-and any associated managed profiles.</p>
+<p>If you are developing a Launcher app, you can use the new {@code
+android.content.pm.LauncherApps} class to get a list of launchable activities
+for the current user and any associated managed profiles. Your Launcher can make
+the managed apps visually prominent by appending a “work” badge to the icon
+drawable with {@code android.os.UserManager.getBadgeDrawableForUser()}.</p>
+
+<h3 id="LockToAppMode">Lock-to-App mode</h3>
+<p>The L Developer Preview introduces a new <em>Lock-to-App</em> mode that
+lets you temporarily restrict users from leaving your app or being interrupted
+by notifications. Once your app activates this mode, users will not be able to
+see notifications, access other apps, or return to the Home screen, until your
+app exits the mode.</p>
+
+<p>To prevent unauthorized usage, the device on which you want to activate
+this mode must have managed profiles or must be fully controlled by a device administrator (see <a href="#ManagedProvisioning">Managed Provisioning</a> for more information). Furthermore, the device or managed profile owner must
+authorize apps to use this mode by calling {@code android.app.admin.DevicePolicyManager.setLockTaskComponents()}.</p>
+
+<p>Before activating this mode in your app, verify that your activity is authorized by calling {@code DevicePolicyManager.isLockTaskPermitted()}.</p>
+
+<p>To activate <em>Lock-to-App</em> mode, call
+{@code android.app.Activity.startLockTask()} from your authorized activity.</p>
+
+<p>When <em>Lock-to-App</em> mode is active, the following behavior takes
+effect:</p>
+
+<ul>
+<li>The status bar is blank, and user notifications and status information is hidden.</li>
+<li>The Home and Recent Apps button is hidden.</li>
+<li>Other apps may not launch new activities.</li>
+<li>The current app may start new activities, as long as doing so does not
+create new tasks.</li>
+</ul>
+
+<p>The device will remain in this mode until an authorized activity calls
+{@code Activity.stopLockTask()}.
 
 <h2 id="Printing">Printing Framework</h2>
 
 <h3 id="PDFRender">Render PDF as bitmap</h3>
 <p>You can now render PDF document pages into bitmap images for printing by
 using the new {@code android.graphics.pdf.PdfRenderer} class. You must specify a
-{@code ParcelFileDescriptor} that is seekable (that is, the file can be randomly
+{@link android.os.ParcelFileDescriptor} that is seekable (that is, the content can be randomly
 accessed) on which the system writes the the printable content. Your app can
 obtain a page for rendering with {@code openPage()}, then call {@code render()}
 to turn the opened {@code PdfRenderer.Page} into a bitmap. You can also set
-additional parameters if you only wan to convert a portion of the document into
-a bitmap image (for example, to implement <a href="http://en.wikipedia.org/wiki/Tiled_rendering">tile rendering</a> in order to zoom in on the document).</p>
+additional parameters if you only want to convert a portion of the document into
+a bitmap image (for example, to implement <a href="http://en.wikipedia.org/wiki/Tiled_rendering">tiled rendering</a> in order to zoom in on the document).</p>
 
 <h2 id="TestingA11y">Testing &amp; Accessibility </h2>
 
-<h3 id="Testing A11yImprovements">Testing and accessibility improvements</h3>
+<h3 id="TestingA11yImprovements">Testing and accessibility improvements</h3>
 <p>The L Developer Preview adds the following support for testing and
 accessibility:</p>
 
@@ -644,44 +821,44 @@
 capture frame statistics for window animations and content. This lets you
 write instrumentation tests to evaluate if the app under test is rendering
 frames at a sufficient refresh frequency to provide a smooth user experience.
+
 <li>You can execute shell commands from your instrumentation test with the new
 {@code android.app.UiAutomation.executeShellCommand()}. The command execution
-is similar to running 'adb shell' from a host connected to the device. This
+is similar to running {@code adb shell} from a host connected to the device. This
 allows you to use shell based tools such as {@code dumpsys}, {@code am},
 {@code content}, and {@code pm}.
+
 <li>Accessibility services and test tools that use the accessibility APIs
-(such as <a href="{@docRoot}tools/help/uiautomator/index.html">UiAutomator</a>)
+(such as <a href="{@docRoot}tools/help/uiautomator/index.html">uiautomator</a>)
 can now retrieve detailed information about the properties of windows on the
 screen that sighted users can interact with. To retrieve a list of
-{@code android.view.accessibility.AccessibilityWindowInfo} representing the
+{@code android.view.accessibility.AccessibilityWindowInfo} objects
+representing the
 windows information, call the new
 {@code android.accessibilityservice.AccessibilityService.getWindows()} method.
 <li>You can use the new {@code android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction} to define standard or customized
-actions to perform on an {@code android.view.accessibility.AccessibilityNodeInfo}.
+actions to perform on an {@link android.view.accessibility.AccessibilityNodeInfo}.
 The new {@code AccessibilityAction} class replaces the actions-related APIs
 previously found in {@code AccessibilityNodeInfo}.
 </ul>
 
-<h2 id="manifest">Manifest Declarations</h2>
+<h2 id="Manifest">Manifest Declarations</h2>
 
 <h3 id="ManifestFeatures">Declarable required features</h3>
-<p>The following values are now supported in the <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code &lt;uses-feature&gt;}</a> element so you
+<p>The following values are now supported in the <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code &lt;uses-feature&gt;}</a> element, so you
 can ensure that your app is installed only on devices that provide the features
 your app needs.</p>
 
 <ul>
-<li>{@code FEATURE_LEANBACK}. Declares that your app must be installed only on devices that support the <a href="{@docRoot}tv}">Android TV</a> user interface. Example:
+<li>{@code FEATURE_LEANBACK}. Declares that your app must be installed only on
+devices that support the <a href="{@docRoot}training/tv/index.html}">Android TV</a>user interface. Example:
 <pre>
 &lt;uses-feature android:name="android.software.leanback"
               android:required="true" /&gt;
 </pre>
 
-<li>{@code FEATURE_MANAGEDPROFILES}. Declares that your app must only be installed on devices that support managed profiles for enterprise users. Example:
-<pre>
-&lt;uses-feature android:name="android.software.managedprofiles"
-              android:required="true" /&gt;
-</pre>
-<li>{@code FEATURE_WEBVIEW}. Declares that your app must only be installed on devices that fully implement the android.webkit.* APIs. Example:
+<li>{@code FEATURE_WEBVIEW}. Declares that your app must only be installed on
+devices that fully implement the {@code android.webkit.*} APIs. Example:
 <pre>
 &lt;uses-feature android:name="android.software.webview"
               android:required="true" /&gt;
diff --git a/docs/html/preview/images/battery_historian.png b/docs/html/preview/images/battery_historian.png
new file mode 100644
index 0000000..5b0db74
--- /dev/null
+++ b/docs/html/preview/images/battery_historian.png
Binary files differ
diff --git a/docs/html/preview/images/battery_historian@2x.png b/docs/html/preview/images/battery_historian@2x.png
new file mode 100644
index 0000000..dbb5d5e
--- /dev/null
+++ b/docs/html/preview/images/battery_historian@2x.png
Binary files differ
diff --git a/docs/html/preview/images/hun-example.png b/docs/html/preview/images/hun-example.png
new file mode 100644
index 0000000..9613a92
--- /dev/null
+++ b/docs/html/preview/images/hun-example.png
Binary files differ
diff --git a/docs/html/preview/images/hun-example@2x.png b/docs/html/preview/images/hun-example@2x.png
new file mode 100644
index 0000000..3cb8f5b
--- /dev/null
+++ b/docs/html/preview/images/hun-example@2x.png
Binary files differ
diff --git a/docs/html/preview/images/managed_apps_launcher.png b/docs/html/preview/images/managed_apps_launcher.png
new file mode 100644
index 0000000..983d904
--- /dev/null
+++ b/docs/html/preview/images/managed_apps_launcher.png
Binary files differ
diff --git a/docs/html/preview/images/managed_apps_launcher@2x.png b/docs/html/preview/images/managed_apps_launcher@2x.png
new file mode 100644
index 0000000..d298fd2
--- /dev/null
+++ b/docs/html/preview/images/managed_apps_launcher@2x.png
Binary files differ
diff --git a/docs/html/preview/index.jd b/docs/html/preview/index.jd
index 84a2d85..e44e9f3 100644
--- a/docs/html/preview/index.jd
+++ b/docs/html/preview/index.jd
@@ -3,7 +3,8 @@
 fullpage=true
 no_footer_links=true
 page.type=about
-
+page.metaDescription=Test and build your apps against the next version of Android to ensure they're ready when the platform officially launches.
+page.image={@docRoot}preview/images/hero.jpg
 @jd:body
 
 <style>
@@ -22,19 +23,6 @@
 }
 </style>
 
-<div id="video-container">
-  <div id="video-frame">
-    <div class="video-close">
-      <span id="icon-video-close">&nbsp;</span>
-    </div>
-    <script src="//ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
-    <div id="ytapiplayer">
-      <a href="http://www.youtube.com/watch?v=0xQ3y902DEQ"><img width=940
-      src="https://i1.ytimg.com/vi/0xQ3y902DEQ/maxresdefault.jpg"></a><!--You need Flash player 8+ and JavaScript enabled to view this video. -->
-    </div>
-  </div>
-</div>
-
 <div class="landing-body-content">
   <div class="landing-hero-container">
     <div class="landing-section preview-hero">
@@ -93,10 +81,10 @@
                 <p>A New UI Design</p>
                 <p class="landing-small">
                   Create a consistent experience across mobile and the web with
-                   <b>Material</b>, the new Google design standard.
+                   material design, the new Google-wide standard.
                 </p>
                 <p class="landing-small">
-                  <a href="/preview/quantum/index.html">Learn about</a>
+                  <a href="/preview/material/index.html">Learn about material</a>
                 </p>
               </div>
               <div class="col-4">
@@ -108,7 +96,7 @@
 
                 </p>
                 <p class="landing-small">
-                  <a href="/preview/api-overview.html#art">Learn more</a>
+                  <a href="/preview/api-overview.html#ART">Learn about ART</a>
                 </p>
               </div>
               <div class="col-4">
@@ -119,7 +107,7 @@
                    how they look, and automatic syncing to non-handheld devices.
                 </p>
                 <p class="landing-small">
-                  <a href="/preview/api-overview#graphics">Learn more</a>
+                  <a href="/preview/api-overview.html#UI">Learn more</a>
                 </p>
               </div>
               <div class="col-4">
@@ -130,7 +118,7 @@
                   to give you more control over resource usage.
                 </p>
                 <p class="landing-small">
-                  <a href="/preview/api-overview#multimedia.html">Learn more</a>
+                  <a href="/preview/api-overview.html#Power">Learn more</a>
                 </p>
               </div>
             </div>
@@ -174,13 +162,13 @@
                     <img class="landing-social-image" src="{@docRoot}preview/images/bugs.png" alt="">
                   </a>
                 <div class="landing-social-copy">
-                  <p>Submit Bugs</p>
+                  <p>Issue Tracker</p>
                   <p class="landing-small">
                   Let us know when you encounter problems, so we can fix them and make
                   the platform better for you and your users.
                     </p><p class="landing-small">
                       <a target="_blank" href="http://submit-bugs!">
-                      Submit Bugs</a>
+                      Report Issues</a>
                     </p>
                   <p></p>
                 </div>
@@ -190,13 +178,13 @@
                   <img class="landing-social-image" src="//www.google.com/images/icons/product/gplus-128.png" alt="">
                 </a>
                 <div class="landing-social-copy">
-                  <p>Discuss on Google+ </p>
+                  <p>Google+ </p>
                   <p class="landing-small">
                     Join the community of Android developers testing out the L Developer Preview and
                     share your thoughts and experiences.
                   </p><p class="landing-small">
                     <a target="_blank" href="http://plus.google.com">
-                    Socialize on Google+</a>
+                    Discuss on Google+</a>
                     </p>
                 </div>
               </div>
@@ -205,14 +193,14 @@
                   <img class="landing-social-image" src="{@docRoot}preview/images/updates.png" alt="">
                 </a>
                 <div class="landing-social-copy">
-                  <p>Get Updates</p>
+                  <p>Support and Updates</p>
                   <p class="landing-small">
                   Updates to the L Developer Preview are delivered
-                  in the Android SDK Manager. Check back here
+                  in the Android SDK Manager. Check back periodically
                   for news about the changes.
                   </p>
                   <p class="landing-small">
-                    <a target="_blank" href="{@docRoot}preview/release-notes.html">See Release Notes</a>
+                    <a target="_blank" href="{@docRoot}preview/support.html">Get Support</a>
                   </p>
                 </div>
               </div>
@@ -236,8 +224,6 @@
         License</a>.
       </div>
     </div>
-
-
   </div> <!-- end landing-body-content -->
 
   <script>
diff --git a/docs/html/preview/material/animations.jd b/docs/html/preview/material/animations.jd
index 8297c65..cee782a 100644
--- a/docs/html/preview/material/animations.jd
+++ b/docs/html/preview/material/animations.jd
@@ -2,9 +2,22 @@
 
 @jd:body
 
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document</h2>
+<ol>
+  <li><a href="#touch">Touch Feedback</a></li>
+  <li><a href="#reveal">Reveal Effect</a></li>
+  <li><a href="#transitions">Activity Transitions</a></li>
+  <li><a href="#curvedmotion">Curved Motion</a></li>
+  <li><a href="#viewstate">View State Changes</a></li>
+  <li><a href="#drawabletint">Drawable Tinting</a></li>
+</ol>
+</div>
+</div>
 
 <p>Animations in material design give users feedback on their actions and provide visual
-continuity as users interact with your app. The Material theme provides some default animations
+continuity as users interact with your app. The material theme provides some default animations
 for buttons and activity transitions, and the Android L Developer Preview provides additional
 APIs that let you customize these animations and create new ones:</p>
 
@@ -17,7 +30,7 @@
 </ul>
 
 
-<h2 style="margin-top:35px">Touch Feedback</h2>
+<h2 id="touch">Touch Feedback</h2>
 
 <p>In the Android L Developer Preview the default touch feedback animations for buttons use the new
 <code>RippleDrawable</code> class, which transitions between different states with a ripple
@@ -28,7 +41,7 @@
 using the <code>ripple</code> element.</p>
 
 
-<h2 style="margin-top:35px">Reveal Effect</h2>
+<h2 id="reveal">Reveal Effect</h2>
 
 <p>The <code>View.createRevealAnimator</code> method enables you to animate a clipping circle
 to reveal or hide a view.</p>
@@ -82,7 +95,7 @@
 </pre>
 
 
-<h2 style="margin-top:35px">Activity Transitions</h2>
+<h2 id="transitions">Activity Transitions</h2>
 
 <p>The Android L Developer Preview enables your app to customize the default animations for
 activity transitions. You can specify custom animations for enter and exit transitions and for
@@ -109,10 +122,10 @@
   <strong>Figure 1</strong> - A scene transition with one shared element.
 </p>
 
-<h3 style="margin-top:30px">Specify custom transitions</h3>
+<h3>Specify custom transitions</h3>
 
 <p>First, enable window content transitions with the <code>android:windowContentTransitions</code>
-attribute when you define a style that inherits from the Material theme:</p>
+attribute when you define a style that inherits from the material theme:</p>
 
 <pre>
 &lt;style name="BaseAppTheme" parent="android:Theme.Material">
@@ -174,14 +187,14 @@
   <li><code>Window.setSharedElementExitTransition</code></li>
 </ul>
 
-<h3 style="margin-top:30px">Start an activity using transitions</h3>
+<h3>Start an activity using transitions</h3>
 
 <p>If you enable transitions and set an exit transition for an activity, the transition is activated
 when you launch another activity with the <code>startActivity</code> method. If you have set an
 enter transition for the second activity, the transition is also activated when the activity
 starts.</p>
 
-<h3 style="margin-top:30px">Shared elements transitions</h3>
+<h3>Shared elements transitions</h3>
 
 <p>To make a screne transition animation between two activities that have a shared element:</p>
 
@@ -219,7 +232,7 @@
 <p>For shared dynamic views that you generate in your code, use the <code>View.setViewName</code>
 method to specify a common element name in both activities.</p>
 
-<h3 style="margin-top:30px">Multiple shared elements</h3>
+<h3>Multiple shared elements</h3>
 
 <p>To make a scene transition animation between two activities that have more than one shared
 element, define the shared elements in both layouts with the <code>android:viewName</code>
@@ -237,7 +250,7 @@
 </pre>
 
 
-<h2 style="margin-top:35px">Curved Motion</h2>
+<h2 id="curvedmotion">Curved Motion</h2>
 
 <p>Animations in material design rely on curves for time interpolation and spatial movement
 patterns. The Android L Developer Preview provides new APIs that enable you to define custom
@@ -280,7 +293,7 @@
 </pre>
 
 
-<h2 style="margin-top:35px">View State Changes</h2>
+<h2 id="viewstate">View State Changes</h2>
 
 <p>The new <code>StateListAnimator</code> class lets you define animators that run when the state
 of a view changes. The following example shows how to define an <code>StateListAnimator</code> as
@@ -343,7 +356,7 @@
 </pre>
 
 
-<h2 style="margin-top:35px">Drawable Tinting</h2>
+<h2 id="drawabletint">Drawable Tinting</h2>
 
 <p>The Android L Developer Preview enables you to define bitmaps as an alpha mask and to tint
 them using a color resource or a theme attribute that resolves to a color resource. You can
diff --git a/docs/html/preview/material/compatibility.jd b/docs/html/preview/material/compatibility.jd
index b5555ad..ce04e9e 100644
--- a/docs/html/preview/material/compatibility.jd
+++ b/docs/html/preview/material/compatibility.jd
@@ -2,22 +2,34 @@
 
 @jd:body
 
-<p>The new material design features (like the Material theme and custom animations) are only
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document</h2>
+<ol>
+  <li><a href="#materialtheme">Material Theme</a></li>
+  <li><a href="#layouts">Layouts</a></li>
+  <li><a href="#widgets">UI Widgets</a></li>
+  <li><a href="#animation">Animation APIs</a></li>
+</ol>
+</div>
+</div>
+
+<p>The new material design features (like the material theme and custom animations) are only
 available in the Android L Developer Preview. However, you can design your apps to make use of
 these features when running on devices with the Android L Developer Preview and still be
 compatible with previous releases of Android.</p>
 
 
-<h2 style="margin-top:35px">Material Theme</h2>
+<h2 id="materialtheme">Material Theme</h2>
 
-<p>The Material theme is only available in the Android L Developer Preview. To configure your
-app to use the Material theme on devices running the Android L Developer Preview and an older
+<p>The material theme is only available in the Android L Developer Preview. To configure your
+app to use the material theme on devices running the Android L Developer Preview and an older
 theme on devices running earlier versions of Android:</p>
 
 <ol>
 <li>Define a theme that inherits from an older theme (like Holo) in
 <code>res/values/styles.xml</code>.</li>
-<li>Define a theme with the same name that inherits from the Material theme in
+<li>Define a theme with the same name that inherits from the material theme in
 <code>res/values-v21/styles.xml</code>.</li>
 <li>Set this theme as your app's theme in the manifest file.</li>
 </ol>
@@ -26,7 +38,7 @@
 your app will not run on earlier versions of Android.</p>
 
 
-<h2 style="margin-top:35px">Layouts</h2>
+<h2 id="layouts">Layouts</h2>
 
 <p>If the layouts that you design according to the material design guidelines do not use any
 of the new XML attributes from the Android L Developer Preview, they will work on previous
@@ -38,13 +50,13 @@
 Alternative layouts have the same file name.</p>
 
 
-<h2 style="margin-top:35px">UI Widgets</h2>
+<h2 id="widgets">UI Widgets</h2>
 
 <p>The <code>RecyclerView</code> and <code>CardView</code> widgets are included in the Android L
 Developer Preview Support Library, so they are available in earlier versions of Android.</p>
 
 
-<h2 style="margin-top:35px">Animation APIs</h2>
+<h2 id="animation">Animation APIs</h2>
 
 <p>The new APIs for custom animations are only available in the Android L Developer Preview. To
 preserve compatibility with earlier verisons of Android, check the system version at runtime before
diff --git a/docs/html/preview/material/get-started.jd b/docs/html/preview/material/get-started.jd
index c527550..9c0e55d 100644
--- a/docs/html/preview/material/get-started.jd
+++ b/docs/html/preview/material/get-started.jd
@@ -2,135 +2,145 @@
 
 @jd:body
 
-<p>To create material design apps on Android:</p>
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document</h2>
+<ol>
+  <li><a href="#applytheme">Apply the Material Theme</a></li>
+  <li><a href="#layouts">Design Your Layouts</a></li>
+  <li><a href="#depth">Specify Depth in Your Views</a></li>
+  <li><a href="#widgets">Use the New UI Widgets</a></li>
+  <li><a href="#apis">Use the New APIs</a></li>
+</ol>
+</div>
+</div>
+
+<p>To create apps with material design:</p>
 
 <ol>
-  <li>Take a look at the <a href="">material design specification</a>.</li>
-  <li>Apply the Material <strong>theme</strong> to your app.</li>
-  <li>Define additional <strong>styles</strong> to customize the Material theme.</li>
-  <li>Create your <strong>layouts</strong> following material design guidelines.</li>
-  <li>Specify the <strong>depth</strong> of each component in your layouts to cast appropriate shadows.</li>
-  <li>Use the new <strong>widgets</strong> for complex views, such as lists and cards.</li>
-  <li>Use the new <strong>APIs</strong> to customize 3D views and animations in your app.</li>
+  <li style="margin-bottom:10px">
+    Take a look at the <a href="">material design specification</a>.</li>
+  <li style="margin-bottom:10px">
+    Apply the material <strong>theme</strong> to your app.</li>
+  <li style="margin-bottom:10px">
+    Define additional <strong>styles</strong> to customize the material theme.</li>
+  <li style="margin-bottom:10px">
+    Create your <strong>layouts</strong> following material design guidelines.</li>
+  <li style="margin-bottom:10px">
+    Specify the <strong>depth</strong> for views to cast appropriate shadows.</li>
+  <li style="margin-bottom:10px">
+    Use the new <strong>widgets</strong> for complex views, such as lists and cards.</li>
+  <li style="margin-bottom:10px">
+    Use the new <strong>APIs</strong> to customize the animations in your app.</li>
 </ol>
 
-<h3 style="margin-top:25px;">Update Your App for the Android L Developer Preview</h3>
+<h3>Update Your App for the Android L Developer Preview</h3>
 
 <p>To update an existing app for the Android L Developer Preview, design new layouts following
 material design guidelines and consider how you can improve the user experience for your app by
 incorporating depth, touch feedback and animations in your UI.</p>
 
-<h3 style="margin-top:25px;">Create New Apps for the Android L Developer Preview</h3>
+<h3>Create New Apps for the Android L Developer Preview</h3>
 
 <p>If you are creating a new app for the Android L Developer Preview, the material design
 guidelines provide you with a solid design framework for your app. Follow these guidelines and
 use the new functionality in the Android framework to design and develop your app.</p>
 
 
-<h2 style="margin-top:35px">Material Theme</h2>
+<h2 id="applytheme">Apply the Material Theme</h2>
 
-<div style="float:right;margin-left:25px">
-<img src="{@docRoot}preview/material/images/ThemeColors.png" style="width:250px"/>
-<p class="img-caption"><strong>Figure 1.</strong> Customizing the Material theme.</p>
-</div>
-
-<p>The new Material theme provides:</p>
-
-<ul>
-  <li>System widgets that let you set their color palette</li>
-  <li>Touch feedback animations for the system widgets</li>
-  <li>Activity transition animations</li>
-</ul>
-
-<p>The Android L Developer Preview lets you easily customize the look of the Material theme
-according to your brand identity with a color palette you control. You can tint the app bar and
-the status bar using theme attributes, as shown in Figure 1.</p>
-
-<p>The system widgets have a new design and touch feedback animations. Activity transitions help
-users navigate your app by providing visual continuity. You can customize the color palette,
-the touch feedback animations, and the activity transitions for your app.</p>
-
-<p>The Material theme is defined as:</p>
-
-<ul>
-  <li><code>@android:style/Theme.Material</code> (dark version)</li>
-  <li><code>@android:style/Theme.Material.Light</code> (light version)</li>
-  <li><code>@android:style/Theme.Material.Light.DarkActionBar</code></li>
-</ul>
-
-<p>For a list of material styles that you can use, see the API reference for
-<code>android.R.styles</code>.</p>
-
-<p class="note">
-<strong>Note:</strong> The Material theme is only available in the Android L Developer Preview.
-For more information, see <a href="{@docRoot}preview/material/compatibility.html">Compatibility</a>.
-</p>
-
-<h3 style="margin-top:25px;">Theme Inheritance</h3>
-
-<p>In the Android L Developer Preview, elements in XML layout definitions can specify the
-<code>android:theme</code> attribute, which references a theme resource. This attribute modifies
-the theme for the element and any elements inflated below it, which is useful to alter theme
-color palettes in a specific portion of an interface.</p>
-
-<h3 style="margin-top:25px;">Customize the Status Bar</h3>
-
-<p>The Material theme lets you easily customize the status bar, so you can specify a
-color which fits your brand and provides enough contrast to show the white status icons. To
-set a custom color for the status bar, use the <code>android:statusBarColor</code> attribute when
-you extend the Material theme.</p>
-
-<p>To handle the color of the status bar yourself (for example, by adding a gradient in the
-background), set the <code>android:statusBarColor</code> attribute to
-<code>&#64;android:color/transparent</code>. You can also use the
-<code>Window.setStatusBarColor</code> method for animations or fading.</p>
-
-
-<h2 style="margin-top:35px">Material Design</h2>
-
-<p>In addition to applying the Material theme, you also have to:</p>
-
-<ul>
-  <li>Customize the theme's base colors to fit your brand.</li>
-  <li>Design your layouts according to material design guidelines.</li>
-</ul>
-
-<p>The Android L Developer Preview provides new attributes to make it easy to customize the
-Material theme:</p>
+<p>To apply the material theme in your app, specify a style that inherits from
+<code>android:theme.Material</code>:</p>
 
 <pre>
+&lt;!-- res/values/styles.xml -->
 &lt;resources>
-  &lt;!-- inherit from the Material theme -->
-  &lt;style name="BaseAppTheme" parent="android:Theme.Material">
-    &lt;!-- Main theme colors -->
-    &lt;!--   your app's branding color (for the app bar) -->
-    &lt;item name="android:colorPrimary">@color/primary&lt;/item>
-    &lt;!--   darker variant of colorPrimary (for contextual app bars) -->
-    &lt;item name="android:colorPrimaryDark">@color/primary_dark&lt;/item>
-
-    &lt;!-- other theme colors -->
-    &lt;item name="android:colorBackground">@color/background&lt;/item>
-    &lt;item name="android:colorAccent">@color/accent&lt;/item>
-    &lt;item name="android:colorButtonNormal">@color/button_normal&lt;/item>
-    &lt;item name="android:colorControlHighlight">@color/button_chigh&lt;/item>
-    &lt;item name="android:windowBackground">@color/wbackground&lt;/item>
+  &lt!-- your app's theme inherits from the Material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt!-- theme customizations -->
   &lt;/style>
 &lt;/resources>
 </pre>
 
-<p>Ensure that you follow material design guidelines when choosing colors for your app.</p>
+<p>The material theme provides new system widgets that let you set their color palette and default
+animations for touch feedback and activity transitions. For more details, see
+<a href="{@docRoot}preview/material/theme.html">Material Theme</a>.</p>
 
-<p>Design your layouts according to the material design specification. In particular, pay
-attention to:</p>
+
+<h2 id="layouts">Design Your Layouts</h2>
+
+<p>In addition to applying and customizing the material theme, your layouts should conform to
+the material design guidelines. When you design your layouts, pay special attention to the
+following:</p>
 
 <ul>
-  <li>Baseline grids</li>
-  <li>Keylines</li>
-  <li>Spacing</li>
-  <li>Touch target size</li>
-  <li>Layout structure</li>
+<li>Baseline grids</li>
+<li>Keylines</li>
+<li>Spacing</li>
+<li>Touch target size</li>
+<li>Layout structure</li>
 </ul>
 
 <p>You still define layouts inside XML files using the standard tools from the Android framework.
-To specify the depth level of each view in your layout, use the <code>android:elevation</code>
-attribute.</p>
\ No newline at end of file
+For details on the material design guidelines, see the <a href="">material design
+specification</a>.</p>
+
+
+<h2 id="depth">Specify Depth in Your Views</h2>
+
+<p>In the Android L Developer Preview, views can cast shadows. The elevation value of a view
+determines the size of its shadow. To set the elevation of a view, use the
+<code>android:elevation</code> attribute in your layouts:</p>
+
+<pre>
+&lt;Button
+    android:id="@+id/my_button"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:text="@string/next"
+    <strong>android:elevation</strong>="10dp" />
+</pre>
+
+<p>For more details, see <a href="{@docRoot}preview/material/views-shadows.html">Views and
+Shadows</a>.</p>
+
+
+<h2 id="widgets">Use the New UI Widgets</h2>
+
+<p>The Android L Developer Preview includes two new UI widgets for complex views,
+<code>RecyclerView</code> and <code>CardView</code>. <code>RecyclerView</code> is a more advanced
+version of <code>ListView</code> that provides performance improvements and is easier to use.
+<code>CardView</code> lets you show pieces of information inside cards with a consistent look
+across apps. To include a <code>CardView</code> in your layout:</p>
+
+<pre>
+&lt;android.support.v7.widget.CardView
+    android:id="@+id/card_view"
+    android:layout_width="200dp"
+    android:layout_height="200dp"
+    card_view:cardCornerRadius="3dp">
+    ...
+&lt;/android.support.v7.widget.CardView>
+</pre>
+
+<p>For more information, see <a href="{@docRoot}preview/material/ui-widgets.html">UI Widgets</a>.</p>
+
+
+<h2 id="apis">Use the APIs to Customize Your Animations</h2>
+
+<p>The Android L Developer Preview includes new APIs to create custom animations in your app.
+For example, you can enable activity transitions and define an exit transition inside an
+activity:</p>
+
+<pre>
+// inside your activity
+getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+
+// set an exit transition
+getWindow().setExitTransition(new Explode());
+</pre>
+
+<p>When you start another activity from this activity, the exit transition is activated.</p>
+
+<p>To learn about all the features in the new APIs, see <a
+href="{@docRoot}preview/material/animations.html">Animations</a>.</p>
\ No newline at end of file
diff --git a/docs/html/preview/material/index.jd b/docs/html/preview/material/index.jd
index 468e4bd..b7abcb4 100644
--- a/docs/html/preview/material/index.jd
+++ b/docs/html/preview/material/index.jd
@@ -19,9 +19,9 @@
 </ul>
 
 
-<h3 style="margin-top:30px">Material Theme</h3>
+<h3>Material Theme</h3>
 
-<p>The Material theme provides a new style for your app, system widgets that let you set
+<p>The material theme provides a new style for your app, system widgets that let you set
 their color palette, and default animations for touch feedback and activity transitions.</p>
 
 <!-- two columns -->
@@ -42,7 +42,7 @@
 </div>
 
 
-<h3 style="margin-top:30px">New Widgets</h3>
+<h3>New Widgets</h3>
 
 <p>The Android L Developer Preview includes two new widgets for displaying complex views:</p>
 
@@ -50,8 +50,8 @@
 <div style="width:700px;margin-top:25px;margin-bottom:20px">
 <div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
   <img src="{@docRoot}preview/material/images/list_mail.png" style="width:250px;"/>
-  <p>The new <code>RecyclerView</code> widget is a container for large sets of views that can be
-  recycled and scrolled very efficiently.</p>
+  <p>The new <code>RecyclerView</code> widget is a more advanced version of <code>ListView</code>
+  provides performance improvements for dynamic views and is easier to use.</p>
 </div>
 <div style="float:left;width:250px;margin-right:0px;">
   <img src="{@docRoot}preview/material/images/card_travel.png" style="width:250px;"/>
@@ -62,21 +62,13 @@
 </div>
 
 
-<h3 style="margin-top:30px">3D Views and Shadows</h3>
+<h3>View Shadows</h3>
 
 <p>In addition to the X and Y components, views in the Android L Developer Preview have a Z
 component. This new component represents the elevation of a view, which determines the size of
 its shadow: views with higher Z values cast bigger shadows.</p>
 
-
-<h3 style="margin-top:30px">Animations</h3>
-
-<p>The Android L Developer Preview provides new APIs that let you create custom animations for
-touch feedback in UI controls, view state changes, and activity transitions.</p>
-
-<!-- two columns -->
-<div style="width:700px;margin-left:12px;margin-top:25px;margin-bottom:5px">
-<div style="float:left;width:340px;margin-left:0px;margin-right:0px;">
+<div style="width:290px;margin-left:35px;float:right">
   <div class="framed-nexus5-port-span-5">
   <video class="play-on-hover" autoplay>
     <source src="/preview/material/videos/ContactsAnim.mp4"/>
@@ -84,52 +76,41 @@
     <source src="/preview/material/videos/ContactsAnim.ogv"/>
   </video>
   </div>
-</div>
-<div style="float:left;width:340px;margin-right:0px;">
-  <div class="framed-nexus5-port-span-5">
-  <video class="play-on-hover" autoplay>
-    <source src="/preview/material/videos/Dial.mp4"/>
-    <source src="/preview/material/videos/Dial.webm"/>
-    <source src="/preview/material/videos/Dial.ogv"/>
-  </video>
+  <div style="font-size:10pt;margin-left:20px;margin-bottom:30px">
+    <em>Click on the device screen to replay the movie</em>
   </div>
 </div>
-<br style="clear:left"/>
-</div>
 
-<div style="text-align:center;font-size:10pt;margin-right:35px">
-<em>Click on the device screen to replay the movie</em>
-</div>
+<h3>Animations</h3>
 
-<!-- three columns -->
-<div style="width:700px;margin-top:25px;margin-bottom:0px">
-<div style="float:left;width:200px;margin-left:0px;margin-right:0px;">
-  <p>Respond to touch events in your views with <strong>touch feedback</strong> animations.</p>
-</div>
-<div style="float:left;margin-left:25px;width:200px;margin-right:0px;">
-  <p>Hide and show views with <strong>reveal effect</strong> animations.</p>
-</div>
-<div style="float:left;margin-left:25px;width:200px;margin-right:0px;">
-  <p>Switch between activities with custom <strong>activity transition</strong> animations.</p>
-</div>
-<br style="clear:left"/>
-</div>
-<!-- three columns -->
-<div style="width:700px;margin-top:0px;margin-bottom:20px">
-<div style="float:left;width:200px;margin-left:0px;margin-right:0px;">
-  <p>Create custom animation patterns with <strong>curved motion</strong>.</p>
-</div>
-<div style="float:left;margin-left:25px;width:200px;margin-right:0px;">
-  <p>Animate changes in one or more view properties with <strong>view state change</strong> animations.</p>
-</div>
-<div style="float:left;margin-left:25px;width:200px;margin-right:0px;">
-  <p>Show animations in <strong>state list drawables</strong> between view state changes.</p>
-</div>
-<br style="clear:left"/>
-</div>
+<p>The Android L Developer Preview provides new APIs that let you create custom animations for
+touch feedback in UI controls, view state changes, and activity transitions.</p>
+
+<p>The new animation APIs in the Android L Developer Preview let you:</p>
+
+<ul>
+<li style="margin-bottom:15px">
+Respond to touch events in your views with <strong>touch feedback</strong> animations.
+</li>
+<li style="margin-bottom:15px">
+Hide and show views with <strong>reveal effect</strong> animations.
+</li>
+<li style="margin-bottom:15px">
+Switch between activities with custom <strong>activity transition</strong> animations.
+</li>
+<li style="margin-bottom:15px">
+Create custom animation patterns with <strong>curved motion</strong>.
+</li>
+<li style="margin-bottom:15px">
+Animate changes in one or more view properties with <strong>view state change</strong> animations.
+</li>
+<li style="margin-bottom:15px">
+Show animations in <strong>state list drawables</strong> between view state changes.
+</li>
+</ul>
 
 
-<h3 style="margin-top:30px">New Capabilities for Drawables</h3>
+<h3>New Capabilities for Drawables</h3>
 
 <p>The Android L Developer Preview supports <strong>drawable tinting</strong>: you can define
 bitmaps as an alpha mask and tint them using a color resource. You can create these assets only
diff --git a/docs/html/preview/material/theme.jd b/docs/html/preview/material/theme.jd
new file mode 100644
index 0000000..b954960
--- /dev/null
+++ b/docs/html/preview/material/theme.jd
@@ -0,0 +1,100 @@
+page.title=Material Theme
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document</h2>
+<ol>
+  <li><a href="#colorpalette">Customize the Colot Palette</a></li>
+  <li><a href="#statusbar">Customize the Status Bar</a></li>
+  <li><a href="#inheritance">Theme Inheritance</a></li>
+</ol>
+</div>
+</div>
+
+<p>The new material theme provides:</p>
+
+<ul>
+  <li>System widgets that let you set their color palette</li>
+  <li>Touch feedback animations for the system widgets</li>
+  <li>Activity transition animations</li>
+</ul>
+
+<p>The Android L Developer Preview lets you easily customize the look of the material theme
+according to your brand identity with a color palette you control. You can tint the app bar and
+the status bar using theme attributes, as shown in Figure 1.</p>
+
+<div style="float:right;margin-left:25px;margin-top:-25px">
+<img src="{@docRoot}preview/material/images/ThemeColors.png" style="width:250px"/>
+<p class="img-caption"><strong>Figure 1.</strong> Customizing the material theme.</p>
+</div>
+
+<p>The system widgets have a new design and touch feedback animations. Activity transitions help
+users navigate your app by providing visual continuity. You can customize the color palette,
+the touch feedback animations, and the activity transitions for your app.</p>
+
+<p>The material theme is defined as:</p>
+
+<ul>
+  <li><code>@android:style/Theme.Material</code> (dark version)</li>
+  <li><code>@android:style/Theme.Material.Light</code> (light version)</li>
+  <li><code>@android:style/Theme.Material.Light.DarkActionBar</code></li>
+</ul>
+
+<p>For a list of material styles that you can use, see the API reference for
+<code>android.R.styles</code>.</p>
+
+<p class="note">
+<strong>Note:</strong> The material theme is only available in the Android L Developer Preview.
+For more information, see <a href="{@docRoot}preview/material/compatibility.html">Compatibility</a>.
+</p>
+
+
+<h2 id="colorpalette">Customize the Color Palette</h2>
+
+<p>To customize the theme's base colors to fit your brand, define your custom colors using
+theme attributes when you inherit from the material theme:</p>
+
+<pre>
+&lt;resources>
+  &lt;!-- inherit from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- Main theme colors -->
+    &lt;!--   your app's branding color (for the app bar) -->
+    &lt;item name="android:colorPrimary">@color/primary&lt;/item>
+    &lt;!--   darker variant of colorPrimary (for contextual app bars) -->
+    &lt;item name="android:colorPrimaryDark">@color/primary_dark&lt;/item>
+
+    &lt;!-- other theme colors -->
+    &lt;item name="android:colorButtonNormal">@color/button_normal&lt;/item>
+    &lt;item name="android:windowBackground">@color/wbackground&lt;/item>
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+
+<h2 id="statusbar">Customize the Status Bar</h2>
+
+<p>The material theme lets you easily customize the status bar, so you can specify a
+color which fits your brand and provides enough contrast to show the white status icons. To
+set a custom color for the status bar, use the <code>android:statusBarColor</code> attribute when
+you extend the material theme.</p>
+
+<p>To handle the color of the status bar yourself (for example, by adding a gradient in the
+background), set the <code>android:statusBarColor</code> attribute to
+<code>&#64;android:color/transparent</code>. You can also use the
+<code>Window.setStatusBarColor</code> method for animations or fading.</p>
+
+<p class="note"><strong>Note:</strong>
+The status bar should almost always have a clear delineation from the primary toolbar, except for
+full-bleed imagery cases and when you use a gradient as a protection.
+</p>
+
+
+<h2 id="inheritance">Theme Inheritance</h3>
+
+<p>In the Android L Developer Preview, elements in XML layout definitions can specify the
+<code>android:theme</code> attribute, which references a theme resource. This attribute modifies
+the theme for the element and any elements inflated below it, which is useful to alter theme
+color palettes in a specific portion of an interface.</p>
\ No newline at end of file
diff --git a/docs/html/preview/material/ui-widgets.jd b/docs/html/preview/material/ui-widgets.jd
index 5c12a1a..f18bff9 100644
--- a/docs/html/preview/material/ui-widgets.jd
+++ b/docs/html/preview/material/ui-widgets.jd
@@ -2,13 +2,22 @@
 
 @jd:body
 
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document</h2>
+<ol>
+  <li><a href="#recyclerview">RecyclerView</a></li>
+  <li><a href="#cardview">CardView</a></li>
+</ol>
+</div>
+</div>
 
 <p>The support library in the Android L Developer Preview contains two new widgets,
 <code>RecyclerView</code> and <code>CardView</code>. Use these widgets to show complex lists
 and cards in your app. These widgets have material design styles and animations by default.</p>
 
 
-<h2  style="margin-top:35px">RecyclerView</h2>
+<h2 id="recyclerview">RecyclerView</h2>
 
 <p><code>RecyclerView</code> is a more advanced version of <code>ListView</code>. This widget is
 a container for large sets of views that can be recycled and scrolled very efficiently. Use the
@@ -62,7 +71,7 @@
 
 <p>To create a custom layout, you extend the <code>RecyclerView.LayoutManager</code> class.</p>
 
-<h3 style="margin-top:30px">Examples</h3>
+<h3>Examples</h3>
 
 <p>To include a <code>RecyclerView</code> in your layout:</p>
 
@@ -155,7 +164,7 @@
 </pre>
 
 
-<h2 style="margin-top:35px">CardView</h2>
+<h2 id="cardview">CardView</h2>
 
 <p><code>CardView</code> extends the <code>FrameLayout</code> class and lets you show information
 inside a card with optional rounded corners:</p>
diff --git a/docs/html/preview/material/videos/Dial.mp4 b/docs/html/preview/material/videos/Dial.mp4
deleted file mode 100644
index cd5a6a2..0000000
--- a/docs/html/preview/material/videos/Dial.mp4
+++ /dev/null
Binary files differ
diff --git a/docs/html/preview/material/videos/Dial.ogv b/docs/html/preview/material/videos/Dial.ogv
deleted file mode 100644
index b7b29d0..0000000
--- a/docs/html/preview/material/videos/Dial.ogv
+++ /dev/null
Binary files differ
diff --git a/docs/html/preview/material/videos/Dial.webm b/docs/html/preview/material/videos/Dial.webm
deleted file mode 100644
index e30d2a5..0000000
--- a/docs/html/preview/material/videos/Dial.webm
+++ /dev/null
Binary files differ
diff --git a/docs/html/preview/material/views-shadows.jd b/docs/html/preview/material/views-shadows.jd
index 52fe83c..c5884d6 100644
--- a/docs/html/preview/material/views-shadows.jd
+++ b/docs/html/preview/material/views-shadows.jd
@@ -2,14 +2,24 @@
 
 @jd:body
 
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document</h2>
+<ol>
+  <li><a href="#elevation">View Elevation</a></li>
+  <li><a href="#shadows">Shadows and Outlines</a></li>
+  <li><a href="#clip">Clipping Views</a></li>
+</ol>
+</div>
+</div>
 
-<p>In material design apps, depth has meaning. You should assign higher elevation values to more
+<p>In apps with material design, depth has meaning. You should assign higher elevation values to more
 important UI elements in your app. The elevation value of a view determines the size of its
 shadow: views with higher Z values cast bigger shadows. Views only cast shadows on the Z=0 plane
 under an orthographic projection (the views do not scale for different values of Z).</p>
 
 
-<h2 style="margin-top:35px">View Elevation</h2>
+<h2 id="elevation">View Elevation</h2>
 
 <p>The Z value for a view has two components, elevation and translation. The elevation is the
 static component, and the translation is used for animations:</p>
@@ -29,7 +39,7 @@
 <code>px</code>).</p>
 
 
-<h2 style="margin-top:35px">Shadows and Outlines</h2>
+<h2 id="shadows">Shadows and Outlines</h2>
 
 <p>The bounds of a view's background drawable determine the default shape of its shadow. To define
 a custom shape for a shadow, such as an oval, use the <code>View.setOutline</code> method:</p>
@@ -55,7 +65,7 @@
 <p>To prevent a view from casting a shadow, set its outline to <code>null</code>.</p>
 
 
-<h2 style="margin-top:35px">Clipping Views</h2>
+<h2 id="clip">Clipping Views</h2>
 
 <p>The Android L Developer Preview lets you clip a view to its outline area using the
 <code>View.setClipToOutline</code> method. Only rectangle, circle, and round rectangle outlines
diff --git a/docs/html/preview/preview_toc.cs b/docs/html/preview/preview_toc.cs
index 8f6f8c1..5920ecc 100644
--- a/docs/html/preview/preview_toc.cs
+++ b/docs/html/preview/preview_toc.cs
@@ -19,6 +19,7 @@
       </a></div>
     <ul>
       <li><a href="<?cs var:toroot ?>preview/material/get-started.html">Get Started</a></li>
+      <li><a href="<?cs var:toroot ?>preview/material/theme.html">Material Theme</a></li>
       <li><a href="<?cs var:toroot ?>preview/material/ui-widgets.html">UI Widgets</a></li>
       <li><a href="<?cs var:toroot ?>preview/material/views-shadows.html">Views and Shadows</a></li>
       <li><a href="<?cs var:toroot ?>preview/material/animations.html">Animations</a></li>
@@ -75,7 +76,12 @@
   </li>
     <li class="nav-section">
     <div class="nav-section-header empty">
-      <a href="<?cs var:toroot ?>preview/feedback-support.html">Feedback and Support</a>
+      <a href="<?cs var:toroot ?>preview/support.html">Support</a>
       </div>
   </li>
-</ul>
\ No newline at end of file
+  <li class="nav-section">
+    <div class="nav-section-header empty">
+      <a href="<?cs var:toroot ?>preview/tos.html">Terms of Service</a>
+      </div>
+  </li>
+</ul>
diff --git a/docs/html/preview/samples.jd b/docs/html/preview/samples.jd
new file mode 100644
index 0000000..67404b6
--- /dev/null
+++ b/docs/html/preview/samples.jd
@@ -0,0 +1,16 @@
+page.title=Samples
+
+@jd:body
+
+<p>The code samples for the L Developer Preview are available in the Android SDK Manager under the
+L Preview section. Here is a summary of everything that is available:</p>
+
+<ul>
+  <li></li>
+  <li></li>
+  <li></li>
+  <li></li>
+  <li></li>
+  <li></li>
+  <li></li>
+ </ul>
diff --git a/docs/html/preview/setup-devices.jd b/docs/html/preview/setup-devices.jd
index 0654685..86e4845 100644
--- a/docs/html/preview/setup-devices.jd
+++ b/docs/html/preview/setup-devices.jd
@@ -26,12 +26,6 @@
 can cause your phone and installed services and applications to stop working.
 </p>
 
-<p><!-- Will this link change before we publish (to a clean version of the doc)?
-  Or will we scrub the doc's comments & revision history? -->
-<a href="https://docs.google.com/a/google.com/document/d/1OixnM1Q890ExOzDB3Z-FDD6Sb2kF4uZQiMxsYVII8F0/edit?usp=sharing">L
-Preview Terms of Service</a>
-</p>
-
 
 <ol>
   <li>Download and extract the Android Developer Preview package to a directory
diff --git a/docs/html/preview/support.jd b/docs/html/preview/support.jd
new file mode 100644
index 0000000..23ce6ff
--- /dev/null
+++ b/docs/html/preview/support.jd
@@ -0,0 +1,22 @@
+page.title=Support
+
+@jd:body
+
+<p>If you've encountered bugs or have feedback about the L Developer Preview, create
+an issue on our bug tracker</p>
+
+<p>Go to the Bug Tracker</p>
+
+<h2>Release Notes</h2>
+
+<p>June 25, 2014 - Initial Release of the L Developer Preview</p>
+
+<ul>
+  <li></li>
+  <li></li>
+  <li></li>
+  <li></li>
+  <li></li>
+  <li></li>
+  <li></li>
+ </ul>
diff --git a/docs/html/preview/tos.jd b/docs/html/preview/tos.jd
new file mode 100644
index 0000000..602439f
--- /dev/null
+++ b/docs/html/preview/tos.jd
@@ -0,0 +1,9 @@
+page.title=License Agreement
+
+@jd:body
+
+<p><!-- Will this link change before we publish (to a clean version of the doc)?
+  Or will we scrub the doc's comments & revision history? -->
+<a href="https://docs.google.com/a/google.com/document/d/1OixnM1Q890ExOzDB3Z-FDD6Sb2kF4uZQiMxsYVII8F0/edit?usp=sharing">L
+Preview Terms of Service</a>
+</p>
\ No newline at end of file
diff --git a/docs/html/preview/tv/adt-1/index.jd b/docs/html/preview/tv/adt-1/index.jd
deleted file mode 100644
index 062968e..0000000
--- a/docs/html/preview/tv/adt-1/index.jd
+++ /dev/null
@@ -1,319 +0,0 @@
-page.title=ADT-1 Developer Kit
-page.tags="emote","e-mote","adt"
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#faq">ADT-1 Frequently Asked Questions</a></li>
-    <li><a href="#regulatory">Regulatory Disclosures</a></li>
-    <li><a href="#safety">Important Safety Instructions</a></li>
-  </ol>
-</div>
-</div>
-
-<p class="note">
-  <strong>!FIX: FOR REVIEW ONLY:</strong> link to <a href="request.html">ADT-1 Request</a> page.
-</p>
-
-
-<p>The ADT-1 Developer Kit is streaming media player and game controller designed for running
-and testing app built for Android TV. The kit is provided to a limited number of developers
-who are interested in building new apps or extending their existing apps to run on the Android TV
-platform.</p>
-
-<p class="note">
-  <strong>Note:</strong> The ADT-1 kit <em>is not required</em> for building and testing apps
-  for Android TV. You can build apps for TV and test them using an emulator for TV devices. The
-  L-Preview SDK includes all the software needed to build TV apps and an emulator for running and
-  testing them. For more information, see the
-  <a href="{@docRoot}preview/tv/start/index.html">Get Started</a> guide for TV apps.
-</p>
-
-<h2 id="faq">ADT-1 Frequently Asked Questions</h2>
-
-<p>
-  <strong>How do I put the gamepad that came with my ADT-1 into pairing mode?</strong>
-</p>
-<p>Press and hold the Back and Home buttons together for about three seconds, until all four
-  blue LEDs flash together. When the LEDs are flashing, the gamepad is in pairing mode.</p>
-
-<p>
-  <strong>How do I use the gamepad with the on-screen keyboard?</strong>
-</p>
-<p>Use the D-pad or left joystick to move the cursor, and press A to select. Press X to delete a
-  character, and press Y to insert a space. Also, you can press the right joystick to toggle caps
-  lock, and press the left joystick to show additional symbols.</p>
-
-<p>
-  <strong>How do I perform a hard reset of ADT-1?</strong>
-</p>
-<p>Unplug the power cable from the back of ADT-1. Press and hold the small, round button on the
-  back of ADT-1 as you re-insert the power cable, and continue to hold the small round button. The
-  LED will begin flashing red for a few seconds, then change to multi-color cycle. When the LED
-  starts the multi-color cycle, release the small, round button, and ADT-1 will boot. Note: this is
-  a factory data reset, thus all downloaded apps, system and app data, and account settings will be
-  lost.</p>
-
-<p>
-  <strong>How do I do a soft reset?</strong>
-</p>
-<p>Go to Settings - Device - Factory data reset, and select ‘Reset device’. Note: this is a
-  factory data reset, thus all downloaded apps, system and app data, and account settings will be
-  lost.</p>
-
-<p>
-  <strong>How do I turn my device on?</strong>
-</p>
-<p>Plug in the included power cable into the back of ADT-1. There is no on/off switch.</p>
-
-<p>
-  <strong>How do I completely turn my device off? </strong>
-</p>
-<p>Unplug in the included power cable from the back of ADT-1. There is no on/off switch.
-  However, ADT-1 will begin sleeping (daydream) based on user settings in Display -&gt; Daydream.</p>
-
-<p>
-  <strong>How do I connect to the network?</strong>
-</p>
-<p>ADT-1 has both Wi-Fi and Ethernet for connecting to your network. To change your Wi-Fi
-  network, go to Settings -&gt; Wi-Fi. To use an Ethernet network connection, simply plug in an
-  Ethernet cable (that is connected to your network) into the port on the back of ADT-1.</p>
-
-<p>
-  <strong>How do I use the developer cable?</strong>
-</p>
-<p>The developer cable has three connectors: a small, male power connector that plugs into the
-  power port on the back of ADT-1, a standard male USB-A connector that connects your PC, and a
-  small, female power connector that the included power supply plugs into.</p>
-
-<p>
-  <strong>Is there an app for phone and tablet that I can use to control ADT-1?</strong>
-</p>
-<p>Yes, you can download the remote control app from Android phones and tablets here.</p>
-
-<p>
-  <strong>Can I connect a USB keyboard/mouse to ADT-1?</strong>
-</p>
-<p>Yes, you can connect a USB keyboard/mouse to the USB port on the back of ADT-1. Note: not all
-  manufacturers/models are guaranteed to work.</p>
-<hr />
-<p>
-  Press the small, round button on the back of ADT-1 to make it search for Bluetooth devices in
-  pairing mode. If multiple accessories are found, press the small, round button to select the
-  device you want to pair. Pairing will happen automatically after a few seconds. To pair Bluetooth
-  devices to ADT-1 from the UI, go to <strong>Settings &gt; Remote &amp; Accessories &gt;
-    Add accessory</strong>.
-</p>
-
-
-
-<h2 id="regulatory">Regulatory Disclosures</h2>
-
-
-<p>Model: W2</p>
-<p>FCC ID: A4R-W2</p>
-<p>IC: 10395A-W2</p>
-<p>U.S. Federal Communications Commission Notices</p>
-<p>To satisfy FCC and IC exposure requirements, a separation distance of at least 20 cm should
-  be maintained between the antenna of this device and persons during device operation. Operations
-  at closer than this distance are not recommended.</p>
-<p>The antenna used for this transmitter must not be co-located in conjunction with any other
-  antenna or transmitter.</p>
-<p>This equipment has been tested and found to comply with the limits for a Class B digital
-  device, pursuant to part 15 of the FCC Rules. These limits are designed to provide reasonable
-  protection against harmful interference in a residential installation. This equipment generates,
-  uses and can radiate radio frequency energy and, if not installed and used in accordance with the
-  instructions, may cause harmful interference to radio communications. However, there is no
-  guarantee that interference will not occur in a particular installation. If this equipment does
-  cause harmful interference to radio or television reception, which can be determined by turning
-  the equipment off and on, the user is encouraged to try to correct the interference by one or more
-  of the following measures:</p>
-<p>—Reorient or relocate the receiving antenna.</p>
-<p>—Increase the separation between the equipment and receiver.</p>
-<p>—Connect the equipment into an outlet on a circuit different from that to which the receiver
-  is connected.</p>
-<p>—Consult the dealer or an experienced radio/ TV technician for help.</p>
-<p>This device complies with part 15 of the FCC Rules. Operation is subject to the following two
-  conditions: (1) This device may not cause harmful interference, and (2) this device must accept
-  any interference received, including interference that may cause undesired operation.</p>
-<p>Changes or modifications not expressly approved by Google Inc. could void the user's
-  authority to operate the equipment.</p>
-<p>Industry Canada Notices</p>
-<p>This device complies with Industry Canada licence-exempt RSS standard(s). Operation is
-  subject to the following two conditions: (1) this device may not cause interference, and (2) this
-  device must accept any interference, including interference that may cause undesired operation of
-  the device.</p>
-<p>Under Industry Canada regulations, this radio transmitter may only operate using an antenna
-  of a type and maximum (or lesser) gain approved for the transmitter by Industry Canada. To reduce
-  potential radio interference to other users, the antenna type and its gain should be so chosen
-  that the equivalent isotropically radiated power (e.i.r.p.) is not more than that necessary for
-  successful communication.</p>
-<p>The radiated output power of the Wireless Device is below the Industry Canada (IC) radio
-  frequency exposure limits. The Wireless Device should be used in such a manner such that the
-  potential for human contact during normal operation is minimized.</p>
-
-<hr />
-
-<p>CAN ICES-3 (B)/NMB-3(B)</p>
-<p>
-  <u>Avis d’<em>Industrie Canada</em></u>
-</p>
-<p>
-  Le présent appareil est conforme aux <em>CNR</em> d'Industrie Canada applicables aux appareils
-  radio exempts de licence. L'exploitation est autorisée aux deux conditions suivantes : (1)
-  l'appareil ne doit pas produire de brouillage, et (2) l'appareil doit accepter tout brouillage
-  radioélectrique subi, même si le brouillage est susceptible d'en compromettre le fonctionnement.
-</p>
-<p>
-  En vertu de la règlementation d’<em>Industrie Canada</em>, cet émetteur radio peut
-    fonctionner avec une antenne d'un type et d'un gain maximal (ou inférieur) approuvé pour
-    l'émetteur par <em>Industrie Canada</em>. Dans le but de réduire les risques de brouillage
-  radioélectrique à l'intention des autres utilisateurs, il faut choisir le type d'antenne et son
-  gain de sorte que la puissance isotrope rayonnée équivalente (p.i.r.e.) ne dépasse pas l'intensité
-  nécessaire à l'établissement d'une communication satisfaisante.
-</p>
-<p>
-  La puissance rayonnée en sortie de l'appareil sans fil est inférieure aux limites fixées par
-  <em>Industrie Canada</em> en matière d'exposition aux radiofréquences. L'appareil sans fil
-  doit être utilisé de sorte que la possibilité d'un contact humain pendant le fonctionnement
-  normal soit limitée.
-</p>
-
-
-<h2 id="safety">Important Safety Instructions</h2>
-
-<p>
-  <strong>WARNING:</strong> Read all safety information below before using this device to avoid
-  injury.
-</p>
-<ul>
-  <li><p>Do not install near heat sources, such as heaters and other devices.</p></li>
-  <li><p>Use in a well-ventilated area and plug power adapter into an easily accessible
-      outlet. Only use this device with the provided power adapter.</p></li>
-  <li><p>The device has no on/off switch. To disconnect from power, you must unplug the
-      power adapter.</p></li>
-  <li><p>Only use indoors and do not expose to rain, liquid, moisture, excessive heat, or
-      naked flame.</p></li>
-  <li><p>Clean only with a dry cloth.</p></li>
-</ul>
-<p>
-  <strong>WARNING:</strong> Playing video games has been linked to injuries in some
-  users. Read all safety and health information below before using the gamepad to avoid possible
-  injury.
-</p>
-
-<p><u>Photosensitive Seizures</u></p>
-
-<p>
-  A very small percentage of people may experience a seizure when exposed to certain visual images,
-  including flashing lights or patterns that may appear in some video games, even people who have no
-  history of seizures or epilepsy. These seizures have a variety of symptoms, including
-  lightheadedness, altered vision, disorientation, loss of awareness, involuntary movements, loss of
-  consciousness, or convulsions. If you experience any of these symptoms, <u>stop gaming
-    immediately and consult your doctor</u>.
-</p>
-
-<p><u>Ergonomics</u></p>
-
-<p>Long periods of repetitive motion using incorrect body positioning may be associated with
-  physical discomfort and injuries to nerves, tendons, and muscles. If during or after gaming you
-  feel pain, numbness, weakness, swelling, burning, cramping, or stiffness,<u>stop gaming
-  and consult your doctor</u>.
-
-<p>
-  <strong>Healthy Gaming</strong>
-</p>
-
-<p>To reduce risk of seizures or injury, take the following precautions:</p>
-
-<ul>
-  <li><p>Sit as far away from the TV screen as possible.</p></li>
-  <li><p>Play in a well-lit room.</p></li>
-  <li><p>Do not play when you are drowsy or fatigued.</p></li>
-  <li><p>Take 10-15 minute breaks every hour if playing video games and avoid prolonged
-      gaming.</p></li>
-</ul>
-
-<p>
-  <strong>Do Not Attempt Repairs Yourself</strong>
-</p>
-
-<p>There are no user-serviceable parts inside. Do not attempt to open or disassemble.</p>
-
-<p>Failure to follow these safety instructions could result in fire, electric shock, damage to
-  the device or other property, or personal injury.</p>
-
-<hr />
-
-<p>
-  <strong>Importantes instructions concernant la sécurité</strong>
-</p>
-
-<p>
-  <strong>ATTENTION:</strong> Veuillez lire toutes les informations de sécurité énoncées ci-bas
-  avant d’utiliser l’appareil pour éviter des blessures.
-</p>
-
-<ul>
-  <li><p>Ne pas installer à proximité d’une source de chaleur telle une chaufferette ou un
-      autre appareil similaire.</p></li>
-  <li><p>Utiliser dans un endroit bien aéré et brancher l’adaptateur électrique dans une
-      prise de courant facilement accessible.</p></li>
-  <li><p>L’appareil ne possède aucun interrupteur marché/arrêt. Pour mettre l’appareil hors
-      tension, il faut débrancher l’appareil de la prise de courant.</p></li>
-  <li><p>Utiliser l’appareil uniquement à l’intérieur et ne pas l’exposer à la pluie, à des
-      substances liquides, à l’humidité, à la chaleur excessive ou à une flamme.</p></li>
-  <li><p>Nettoyer uniquement avec un linge sec.</p></li>
-</ul>
-
-<p>
-  <strong>ATTENTION:</strong> Le fait de jouer à des jeux vidéo a été relié à des blessures chez certains
-  utilisateurs. Afin d’éviter de possibles blessures, veuillez lire toutes les informations
-  concernant la sécurité et la santé énoncées ci-bas avant d’utiliser la tablette de jeu.
-</p>
-
-<p><u>Épilepsie photosensible</u></p>
-
-<p>L’exposition à certaines images visuelles, incluant les lumières ou motifs clignotants qui
-  peuvent apparaître dans certains jeux vidéo, peut provoquer chez un très faible pourcentage de
-  personnes une crise d’épilepsie, et ce, même si ces personnes n’ont aucun historique de crises ou
-  d’épilepsie. Ces crises comportent divers symptômes tels que des étourdissements, une vision
-  altérée, un sentiment de désorientation, la perte de conscience, des mouvements involontaires, la
-  perte de connaissance ou de conscience ou des convulsions. Si vous ressentez quelconque de ces
-  symptômes, <u>cessez de jouer immédiatement et consultez votre médecin</u>.</p>
-
-<p><u>Ergonomie</u></p>
-
-<p>Les longues périodes de mouvements répétitifs effectués dans une position corporelle
-  inadéquate peuvent mener à un inconfort physique et à des blessures aux nerfs, tendons et muscles.
-  Si durant ou après avoir joué à des jeux vidéo, vous ressentez de la douleur, de
-  l’engourdissement, une faiblesse, de l’inflammation, une sensation de brûlure, des crampes ou de
-  la rigidité, <u>cessez de jouer immédiatement et consultez votre médecin</u>.</p>
-
-<p>
-  <strong>Le jeu sécuritaire</strong>
-</p>
-
-<p>Afin de réduire les risques de crises d’épilepsie ou de blessures, veuillez prendre les
-  précautions suivantes :</p>
-
-<ul>
-  <li>Asseyez-vous aussi loin de l’écran de télévision que possible.</li>
-  <li>Jouez dans une pièce munie d’un éclairage adéquat.</li>
-  <li>Ne jouez pas lorsque vous êtes étourdi ou fatigué.</li>
-  <li>Prenez 10 à 15 minutes de pause après chaque heure de jeu et évitez les périodes de jeu
-  prolongées.</li>
-</ul>
-
-<p>
-  <strong>Ne pas tenter d’effectuer des réparations par vous-même</strong>
-</p>
-
-<p>L’Appareil ne contient aucune pièce pouvant être réparée par l’utilisateur. Ne pas tenter
-  d’ouvrir ou de désassembler l’Appareil.</p>
-
-<p>Le défaut de suivre ces instructions de sécurité pourrait provoquer un feu, un choc
-  électrique, un dommage à l’Appareil ou à d’autres objets ou des lésions corporelles.</p>
diff --git a/docs/html/preview/tv/adt-1/request.jd b/docs/html/preview/tv/adt-1/request.jd
deleted file mode 100644
index 69e3e4e..0000000
--- a/docs/html/preview/tv/adt-1/request.jd
+++ /dev/null
@@ -1,47 +0,0 @@
-page.title=Request ADT-1 Developer Kit
-
-@jd:body
-
-
-<p>The ADT-1 Developer Kit is streaming media player and game controller designed for running
-and testing app built for Android TV. The kit is offered to developers who are interested in
-building new apps or extending their existing apps to run on the Android TV platform before
-the commercial release of Android TV devices. Supplies of the ADT-1 kit are limited and
-requesting one not guarantee it will be delivered to you.</p>
-
-<p class="note">
-  <strong>Note:</strong> The ADT-1 kit <em>is not required</em> for building and testing apps
-  for Android TV. You can build apps for TV and test them using an emulator for TV devices. The
-  L-Preview SDK includes all the software needed to build TV apps and an emulator for running and
-  testing them. For more information, see the
-  <a href="{@docRoot}preview/tv/start/index.html">Get Started</a> guide for TV apps.
-  For more information about the ADT-1 kit, see the
-  <a href="{@docRoot}preview/tv/adt-1/index.html">ADT-1 Developer Kit</a> information page.
-</p>
-
-<div class="sdk-terms" style="width:678px" onfocus="this.blur()">
-<div class="sdk-terms-padding">
-Android ADT-1 Developer Kit Request Agreement.
-
-1. These are the terms.
-
-2. You must agree to the terms.
-
-3. Otherwise you have not agreed to the terms.
-
-4. And then we don't want to talk to you.
-</div>
-</div>
-
-
-<p class="caution">
-  <strong>Important:</strong> The email address your provide in this form is used to verify
-  you as an Android developer. Please provide a Google account email address that is associated
-  with the Google Play app you enter. We may also use your email address to provide you with
-  updates about the ADT-1 Developer Kit and Android TV.
-</p>
-
-<iframe src="https://docs.google.com/a/google.com/forms/d/1MLhC39rf3aAJw-KhZw9cyjT1dWuz_k3_iC5QXpC4Cbw/viewform?embedded=true"
-  width="100%" height="540" frameborder="0" marginheight="0" marginwidth="0"
-  id="signupform">Loading...</iframe>
-
diff --git a/docs/html/preview/tv/games/index.jd b/docs/html/preview/tv/games/index.jd
deleted file mode 100644
index b9de3a4..0000000
--- a/docs/html/preview/tv/games/index.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Games on TV
-page.tags="controller"
-
-@jd:body
-
-<p>This section complements the [larger best-practices guidance for designing for Android TV](TODO, use formal name of referenced doc, and add link). It assumes that you have read that guidance, and seeks to minimize repetition.</p>
-
-<h2>Overview</h2>
-<p>Because of factors including its large size, its control scheme, and its nature as a shared display, the television screen presents a number of considerations that may be new to mobile developers. This document breaks these considerations down into five sections:</p>
-<ul>
-<li>Display</li>
-<li>Control</li>
-<li>Manifest</li>
-<li>Google Play Game Services</li>
-<li>Web</li>
-</ul>
-<h2>Display</h2>
-<p>Large and centrally situated, the television screen imposes limitations, but also opens up new opportunities for immersive gameplay.</p>
-<h3>A shared display</h3>
-<p>A living-room TV poses design challenges for multiplayer games, in that all players can see everything. This issue is especially germane to games (such as card games or strategy games) that rely on each player’s possession of hidden information.</p>
-<p>Some mechanisms you can implement to address the problem of one player’s “eavesdropping” on another’s information are:</p>
-<ul>
-<li>A player might place a "blinder" on the screen to help conceal information. For example, in a turn-based game like a word or card game, one player at a time might view the display. When the player finishes a move, the game allows him or her to cover the screen with a “blinder” that blocks anyone from viewing secret information. When the next player begins a turn, the blinder opens to reveal his or her own information.</li>
-<li>A second screen, such as a handset or larger device, can enable a player to conceal information. For information on implementing second-screen support, see <a href="http://developer.android.com/reference/android/app/Presentation.html">Presentation</a> on the Android developer site.</li>
-</ul>
-<h3>No touch interface</h3>
-<p>A television does not have a touch interface. Your game design, therefore, need not take into account the possibility that a player’s controlling fingers might block the on-screen action. You can assume constant visibility of the entire viewing area.</p>
-<p>See the <a href=#control>Control</a> section in this document and in [Design for TV](TODO, use formal name of referenced doc, and add link) for more implications of the lack of touch interface.</p>
-<h3>Landscape display</h3>
-<p>In mobile-device terms, a TV is always “sideways.” You can’t turn it, and there is no portrait orientation. You should always be designing your TV games to be displayed in landscape mode.</p>
-<a id=control><h2>Control</h2>
-<p>Without a touch interface, it's even more important than usual to get your controls right, so that players find them intuitive and fun to use. The separation of controller from device also introduces some other issues to pay attention to, like keeping track of multiple players' controllers, and handling disconnects gracefully.</p>
-<h3>D-pad</h3>
-<p>Because of the lack of touch interface, you should be planning your control scheme based on a D-pad. Some key points to keep in mind include:</p>
-<p>The player needs to use the gamepad in all aspects of the game&ndash;not just controlling core gameplay, but also navigating menus and ads. For this reason, you should also ensure that your Android TV game does not refer to a touch interface: for example, an Android TV game cannot tell a player to "Tap to skip".</p>
-<p>You can avoid unhappy surprises (and resulting low ratings) by using your Play Store description to communicate to the player any expectations about controllers. If a game is better suited to a gamepad with a joystick than one with only a D-pad, you should make this clear. A player who uses an ill-suited controller for a game is likely to have a subpar experience&ndash;and penalize your game in the ratings.</p>
-<p>You can also help ensure a good player experience by ensuring that button mapping is intuitive and flexible. For example, you can adhere to accepted custom by using the A button to <code>Accept</code>, and the B button to <code>Cancel</code>. You can also offer flexibility in the form of remappability. For more information on button mapping, see <a href="http://developer.android.com/training/game-controllers/controller-input.html">Handling Controller Actions</a>.</p>
-<p>Your game can also contribute to a good match between controller and game by querying the controller about its capabilities. For example, you may intend for a player to steer an object by waving the controller in the air. If a player's controller lacks accelerometer and gyroscope hardware, however, waving will not work. But when your game queries the controller and discovers that motion detection is not supported, it can switch over to an alternative, available control scheme.</p>
-<p>For more information on querying controller capabilities, see <a href="http://developer.android.com/training/game-controllers/compatibility.html">Supporting Controllers Across Android Versions</a>.</p>
-<h3>Back-button behavior</h3>
-<p>The Back button should never act as a toggle. For example, do not use it to both open and close a menu. Its behavior should only be linear. For example: Game play &gt; Game pause screen &gt; Game main screen &gt; Android home screen.</p>
-<p>With this principle of "linear navigation" in mind, you <b>may</b> use the back button to leave an in-game menu (opened by a different button) and return to gameplay.</p>
-<h3>Handling multiple controllers</h3>
-<p>When multiple players are playing a game, each with his or her own controller, it is important to map each player-controller pair. For information on how to implement controller-number identification, see <a href="http://developer.android.com/reference/android/view/InputDevice.html#getControllerNumber(">Input Devices</a>) on the Android developer site.</p>
-<h3>Handling disconnects</h3>
-<p>When a controller is disconnected in the middle of gameplay, the game should pause, and a dialog should appear prompting the disconnected player to reconnect his or her controller.</p>
-<p>The dialog should also offer troubleshooting tips (e.g., "Check your Bluetooth connection").</p>
-<h2>Manifest</h2>
-<p>Games are displayed in a separate row from regular apps in the launcher. Android TV uses the <code>android:isGame</code> flag to differentiate games from non-game apps. You can assign it a value of either <code>true</code> or <code>false</code>. For example:</p>
-<pre class="fragment">&lt;application&gt;
- . . .
- &lt;meta-data android:name="isGame" android:value=["true" | "false"]/&gt;
-android:isGame=["true" | "false"] &gt;
- . . .
-&lt;/application&gt;
-</pre><h2>Google Play Game Services</h2>
-<p>If your game integrates Google Play Game Services, you should keep in mind a number of considerations pertaining to achievements, sign-on, saving games, and multiplayer play.</p>
-<h3>Achievements</h3>
-<p>Your game should include at least five (earnable) achievements. Only a user controlling gameplay from a supported input device should be able to earn achievements.</p>
-<h3>Sign-on</h3>
-<p>Your game should attempt to sign the user in on launch. If the player declines sign-in several times in a row, your game should stop asking.</p>
-<h3>Saving</h3>
-<p>We highly recommend using Play Services cloud save to store your game save. Your game should bind game saves to a specific Google account, so as to be uniquely identifiable even across devices: Whether the player is using a handset or a TV, the game should be able to pull the same game-save information from his or her account.</p>
-<p>You should also provide an option in your game's UI to prompt the player to destroy save data. You might put the option in the game's <code>Settings</code> screen.</p>
-<h3>Multiplayer experience</h3>
-<p>A game offering a multiplayer experience must allow at least two players to enter a room.</p>
-<h2>Web</h2>
-<p>Android TV games do not support a full web browser. You should therefore avoid using generic URLs in your game.</p>
-<p>Webviews will work for logins to services like Google+ and Facebook. </p>
-
diff --git a/docs/html/preview/tv/images/atv.png b/docs/html/preview/tv/images/atv.png
deleted file mode 100644
index cd96164..0000000
--- a/docs/html/preview/tv/images/atv.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/preview/tv/images/browsefragment.png b/docs/html/preview/tv/images/browsefragment.png
deleted file mode 100644
index 8998b13..0000000
--- a/docs/html/preview/tv/images/browsefragment.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/preview/tv/images/detailsfragment.png b/docs/html/preview/tv/images/detailsfragment.png
deleted file mode 100644
index 014ab23..0000000
--- a/docs/html/preview/tv/images/detailsfragment.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/preview/tv/images/home-recommendations.png b/docs/html/preview/tv/images/home-recommendations.png
deleted file mode 100644
index 2c18827..0000000
--- a/docs/html/preview/tv/images/home-recommendations.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/preview/tv/index.jd b/docs/html/preview/tv/index.jd
deleted file mode 100644
index da40985..0000000
--- a/docs/html/preview/tv/index.jd
+++ /dev/null
@@ -1,12 +0,0 @@
-page.title=Android on TV
-
-@jd:body
-
-<img src="{@docRoot}preview/tv/images/atv.png" align="middle"/>
-
-<p>Android offers a rich user experience that's optimized for apps running on large screen
-  devices, such as high-definition televisions. Apps on TV offer new opportunities to
-  delight your users from the comfort of their couch.</p>
-
-<a href="{@docRoot}preview/tv/start/index.html">Get Started &gt;</a>
-
diff --git a/docs/html/preview/tv/start/hardware-features.jd b/docs/html/preview/tv/start/hardware-features.jd
deleted file mode 100644
index f3b51bb..0000000
--- a/docs/html/preview/tv/start/hardware-features.jd
+++ /dev/null
@@ -1,174 +0,0 @@
-page.title=Hardware Features on TV
-page.tags="unsupported"
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#unsupported-features">Unsupported Hardware Features</a></li>
-    <li><a href="#workaround-features">Handling Unsupported Features</a></li>
-    <li><a href="#check-features">Checking Available Features</a>
-      <ol>
-        <li><a href="#no-touchscreen">Touch screen</a></li>
-        <li><a href="#no-camera">Camera</a></li>
-        <li><a href="#no-gps">GPS</a></li>
-      </ol>
-
-    </li>
-  </ol>
-</div>
-</div>
-
-<p>TVs do not have some of the hardware features found on other Android devices.
-Touch screens, cameras and GPS receivers are some of the most commonly used hardware features
-which are typically not available on a TV. When you build an app for TV, you must carefully
-consider if your app can handle not having these features and, if necessary, work around them.</p>
-
-<p>This guide discusses the hardware features not available on TV devices and shows you how to
-work around those limitations in your app.</p>
-
-
-<h2 id="unsupported-features">Unsupported Hardware Features</h2>
-
-<p>TVs have a different purpose from other devices, and so they do not have hardware
-features that other Android-powered devices often have. For this reason, the Android system
-does not support the following features for a TV device:
-
-<table>
-<tr>
-<th>Hardware</th>
-<th>Android feature descriptor</th>
-</tr>
-<tr>
-<td>Camera</td>
-<td>android.hardware.camera</td>
-</tr>
-<tr>
-<td>GPS</td>
-<td>android.hardware.location.gps</td>
-</tr>
-<tr>
-<td>Microphone</td>
-<td>android.hardware.microphone</td>
-</tr>
-<tr>
-<td>Near Field Communications (NFC)</td>
-<td>android.hardware.nfc</td>
-</tr>
-<tr>
-<td>Telephony</td>
-<td>android.hardware.telephony</td>
-</tr>
-<tr>
-<td>Touchscreen</td>
-<td>android.hardware.touchscreen</td>
-</tr>
-</table>
-</p>
-
-
-<h2 id="check-features">Checking Available Features</h2>
-
-<p>To check if a feature is available at runtime, call {@link
-  android.content.pm.PackageManager#hasSystemFeature(String)}. This method takes a single string
-  argument that specifies the feature you want to check. For example, to check for a touch screen,
-  use {@link android.content.pm.PackageManager#hasSystemFeature(String)} with the argument
-  {@link android.content.pm.PackageManager#FEATURE_TOUCHSCREEN}.</p>
-
-<p>The following code example demonstrates how to detect the availability of a hardware features
-  at runtime:</p>
-
-<pre>
-// Check if the telephony hardware feature is available.
-if (getPackageManager().hasSystemFeature("android.hardware.telephony")) {
-    Log.d("Mobile Test", "Running on phone");
-// Check if android.hardware.touchscreen feature is available.
-} else if (getPackageManager().hasSystemFeature("android.hardware.touchscreen")) {
-    Log.d("Tablet Test", "Running on devices that don't support telephony but "+
-            "do have a touch screen.");
-} else {
-    Log.d("TV Test", "Running on a TV!");
-}
-</pre>
-
-
-<h2 id="workaround-features">Handling Unsupported Features</h2>
-
-<p>Depending on the design and functionality of your app, you may be able to work around certain
-  hardware features being unavailable. This section discusses how to workaround specific hardware
-  features.</p>
-
-
-<h3 id="no-touchscreen">Touch screen</h3>
-
-<p>Android doesn't support touch screen interaction for TV devices, since most TVs don't have touch
-  screens, and using a touch screen is not consistent with a viewing environment where the user is
-  seated 10 feet away from the display.</p>
-
-<p>On TV devices, you should workaround this limitation by supporting navigation using a directional
-  pad (D-pad) on TV remote control. For more information on properly supporting navigation using
-  TV-friendly controls, see <a href="{@docRoot}preview/tv/ui/navigation.html">Navigation for
-  TV</a>.</p>
-
-<p>You can explicitly declare if your application requires (or does not require) a touch screen
-  by including the following entry in your manifest:</p>
-
-<pre>
-&lt;uses-feature android:name="android.hardware.touchscreen"
-        android:required="false"/&gt;
-</pre>
-
-
-<h3 id="no-camera">Camera</h3>
-
-<p>Although a TV typically does not have a camera, you can still provide a photography-related
-  application on a TV. For example, if you have an app that takes, views and edits photos, you can
-  disable its picture-taking functionality for TVs and still allow users to view and even edit
-  photos. If you decide that you want to enable your camera-related application to work on a
-  TV device without a camera, you can add an attribute to your app manifest declaring that
-  a camera is not required by your app:</p>
-
-<pre>
-&lt;uses-feature android:name="android.hardware.camera" android:required="false" /&gt;
-</pre>
-
-<p>If you enable your application to run without a camera, you should add code to your application
-that detects if the camera feature is available and make adjustments to the operation of your app.
-The following code example demonstrates how to detect the presence of a camera:</p>
-
-<pre>
-// Check if the camera hardware feature is available.
-if (getPackageManager().hasSystemFeature("android.hardware.camera")) {
-    Log.d("Camera test", "Camera available!");
-} else {
-    Log.d("Camera test", "No camera available. View and edit features only.");
-}
-</pre>
-
-
-<h3 id="no-gps">GPS</h3>
-
-<p>TVs are stationary, indoor devices, and do not have built-in global positioning system (GPS)
-  receivers. If your application uses location information, you can still allow users to search
-  for a location or use a static location provider such as a zip code configured during the
-  TV device setup.</p>
-
-<pre>
-LocationManager locationManager = (LocationManager) this.getSystemService(
-        Context.LOCATION_SERVICE);
-Location location = locationManager.getLastKnownLocation("static");
-Geocoder geocoder = new Geocoder(this);
-Address address = null;
-
-try {
-  address = geocoder.getFromLocation(location.getLatitude(),
-          location.getLongitude(), 1).get(0);
-  Log.d("Zip code", address.getPostalCode());
-
-} catch (IOException e) {
-  Log.e(TAG, "Geocoder error", e);
-}
-</pre>
-
diff --git a/docs/html/preview/tv/start/index.jd b/docs/html/preview/tv/start/index.jd
deleted file mode 100644
index 7f726bd..0000000
--- a/docs/html/preview/tv/start/index.jd
+++ /dev/null
@@ -1,193 +0,0 @@
-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>
-  </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">
-    Setup 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">Setup 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 app that runs on TV devices.</p>
-
-<p>There are the main steps to creating an app that runs on TV devices, only the first of these
-  is required:</p>
-
-<ul>
-  <li><strong>Activity for TV</strong> - (Required) Your application must have an activity that is
-    is declared to run on TV devices through an app manifest entry.</li>
-  <li><strong>TV Support Libraries</strong> - (Optional) There are several Support Libraries
-    available for TV devices that provide user interface widgets for building user interfaces
-    for use on TV.</li>
-</ul>
-
-
-<h3 id="tv-activity">Create a TV Activity</h3>
-
-<p>Applications that are intended to run on TV devices must declare a launcher activity for TV
-  in their manifest using a the {@code android.intent.category.LEANBACK_LAUNCHER} intent filter.
-  This filter identifies your app as being built for TV, enabling your app to be displayed in the
-  Google Play app running on TV devices. Declaring this intent also identifies which activity in
-  your app should be launched when a user selects your app icon on a TV.</p>
-
-<p class="caution">
-  <strong>Caution:</strong> If you do not include the LEANBACK_LAUNCHER intent filter in your app,
-  it will not be visible to users running the Google Play store on TV devices. If your load an app
-  without this intent filter 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;android:style/Theme.NoTitleBar&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 it should be used as
-  the main activity when your app launched 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 you do 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 that is 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 application, you should note that it is
-  dependent on the <a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7
-  appcompat library</a>, which is, in turn, 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>v7 appcompat support library</li>
-  <li>v4 support library</li>
-</ul>
-
-<p>Two of these libraries (v17 leanback and v7 appcompat) contain resources, which require
-  you to take specific steps to include them 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 the widgets provided to make it easier to build them.
-  </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>
diff --git a/docs/html/preview/tv/ui/browse.jd b/docs/html/preview/tv/ui/browse.jd
deleted file mode 100644
index 9d878b0..0000000
--- a/docs/html/preview/tv/ui/browse.jd
+++ /dev/null
@@ -1,217 +0,0 @@
-page.title=BrowseFragment
-parent.title=User Interfaces for TV
-parent.link=index.html
-
-trainingnavtop=true
-next.title=DetailsFragment
-next.link=details.html
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#layout">Media Browse Layout</a></li>
-    <li><a href="#lists">Displaying Media Lists</a></li>
-    <li><a href="#background">Updating the Background</a></li>
-  </ol>
-
-</div>
-</div>
-
-<p>The <a href="{@docRoot}preview/tv/start/index.html#tv-libraries">Leanback support library</a>
-  provides several APIs for displaying and browsing media catalogs
-  on the TV devices. This guide discusses how to use the classes provided by this library to
-  implement a user interface for browsing music or videos from your app's media catalog.</p>
-
-
-<h2 id="layout">Media Browse Layout</h2>
-
-<p>The BrowseFragment class in the Leanback support library allows you to create a primary
-  layout for browsing categories and rows of media items with a minimum of code. The following
-  example layout shows how to create a layout that contains a BrowseFragment:</p>
-
-<pre>
-&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-  android:layout_width=&quot;match_parent&quot;
-  android:layout_height=&quot;match_parent&quot;
-  android:orientation=&quot;vertical&quot;
-  &gt;
-
-  &lt;fragment
-      <strong>android:name="android.support.v17.leanback.app.BrowseFragment"</strong>
-      android:id=&quot;@+id/browse_fragment&quot;
-      android:layout_width=&quot;match_parent&quot;
-      android:layout_height=&quot;match_parent&quot;
-      /&gt;
-&lt;/LinearLayout&gt;
-</pre>
-
-<p>In order to work with this layout in an activity, retrieve the BrowseFragment element from
-  the layout. Use the BrowseFragment.Params class to set display parameters such as the icon, title
-  and whether category headers are enabled. The following code sample demonstrates how to set the
-  layout parameters for a BrowseFragment in a layout:</p>
-
-<pre>
-public class BrowseMediaActivity extends Activity {
-
-    public static final String TAG ="BrowseActivity";
-
-    protected BrowseFragment mBrowseFragment;
-
-    &#64;Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.browse_fragment);
-
-        final FragmentManager fragmentManager = getFragmentManager();
-        <strong>mBrowseFragment = (BrowseFragment) fragmentManager.findFragmentById(
-                R.id.browse_fragment);</strong>
-
-        // Set display parameters for the BrowseFragment
-        BrowseFragment.Params params = mBrowseFragment.getBrowseParams();
-        if (params == null) {
-            params = new BrowseFragment.Params();
-        }
-        params.setHeadersState(BrowseFragment.HEADERS_ENABLED);
-        params.setTitle(getString(R.string.app_name));
-        params.setBadgeImage(getResources().getDrawable(R.drawable.ic_launcher));
-        mBrowseFragment.setBrowseParams(params);
-
-    }
-}
-</pre>
-
-
-<h2 id="lists">Displaying Media Lists</h2>
-
-<p>The BrowseFragment allows you to define and display browseable media content categories and
-  media items from a media catalog using adapters and presenters. Adapters enable you to connect to
-  local or online data sources that contain your media catalog information. Presenter classes hold
-  data about media items and provide layout information for displaying an item on screen.</p>
-
-<p>The following example code shows an implementation of a presenter for displaying string
-  data:</p>
-
-<pre>
-public class StringPresenter extends Presenter {
-    private static final String TAG = "StringPresenter";
-
-    public ViewHolder onCreateViewHolder(ViewGroup parent) {
-        TextView textView = new TextView(parent.getContext());
-        textView.setFocusable(true);
-        textView.setFocusableInTouchMode(true);
-        textView.setBackground(
-                parent.getContext().getResources().getDrawable(R.drawable.text_bg));
-        return new ViewHolder(textView);
-    }
-
-    public void onBindViewHolder(ViewHolder viewHolder, Object item) {
-        ((TextView) viewHolder.view).setText(item.toString());
-    }
-
-    public void onUnbindViewHolder(ViewHolder viewHolder) {
-        Log.d(TAG, "onUnbindViewHolder");
-    }
-}
-</pre>
-
-<p>Once you have constructed a presenter class for your media items, you can build and attach an
-  adapter to the BrowseFragment to display those items on screen for browsing by the user. The
-  following example code demonstrates how to construct an adapter to display categories and items
-  in those categories using the StringPresenter class shown in the previous code example:</p>
-
-<pre>
-private ArrayObjectAdapter mRowsAdapter;
-private static final int NUM_ROWS = 4;
-
-&#64;Override
-protected void onCreate(Bundle savedInstanceState) {
-    ...
-
-    buildRowsAdapter();
-}
-
-private void buildRowsAdapter() {
-    mRowsAdapter = new ArrayObjectAdapter(new ListRowPresenter());
-
-    for (int i = 0; i &lt; NUM_ROWS; ++i) {
-        ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(
-                new StringPresenter());
-        listRowAdapter.add("Media Item 1");
-        listRowAdapter.add("Media Item 2");
-        listRowAdapter.add("Media Item 3");
-        HeaderItem header = new HeaderItem(i, "Category " + i, null);
-        mRowsAdapter.add(new ListRow(header, listRowAdapter));
-    }
-
-    mBrowseFragment.setAdapter(mRowsAdapter);
-}
-</pre>
-
-<p>This example shows a static implementation of the adapters. A typical media browsing
-  application uses data from an online database or web service. For an example of a browsing
-  application that uses data retrieved from the web, see the <a href="">!FIX</a> code sample.</p>
-
-<p>The following screenshot shows the output of this code on an Android TV device:</p>
-
-<img src="{@docRoot}preview/tv/images/browsefragment.png" alt="" height="XXX" id="figure1" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> Display layout example based on the
-  {@link android.support.v17.leanback.app.BrowseFragment} and {@code StringPresenter}
-  classes.
-</p>
-
-
-<h2 id="background">Updating the Background</h2>
-
-<p>In order to add visual interest to a media browsing app on TV, you can update the background
-  image as users browse through content. This technique can make interaction with your app feel more
-  cinematic and enjoyable for users.</p>
-
-<p>The Leanback support library provides a {@link
-  android.support.v17.leanback.app.BackgroundManager} class for changing the background of your TV
-  app activity. The following example shows how to create a simple method for updating the
-  background:</p>
-
-<pre>
-protected void updateBackground(Drawable drawable) {
-    BackgroundManager.getInstance(this).setDrawable(drawable);
-}
-</pre>
-
-<p>Many of the existing media browse apps automatically update the background as the user
-  navigates through media listings. In order to do this, you can set up a selection listener to
-  automatically update the background based on the user's current selection. The following example
-  shows you how to set up an {@link android.support.v17.leanback.widget.OnItemSelectedListener}
-  class to catch selection events and update the background:</p>
-
-<pre>
-protected void clearBackground() {
-    BackgroundManager.getInstance(this).setDrawable(mDefaultBackground);
-}
-
-protected OnItemSelectedListener getDefaultItemSelectedListener() {
-    return new OnItemSelectedListener() {
-        &#64;Override
-        public void onItemSelected(Object item, Row row) {
-            if (item instanceof Movie ) {
-                URI uri = ((Movie)item).getBackdropURI();
-                updateBackground(uri);
-            } else {
-                clearBackground();
-            }
-        }
-    };
-}
-</pre>
-
-<p class="note">
-  <strong>Note:</strong> The implementation above is a simple example shown for purposes of
-  illustration. When creating this function in your own app, you should consider running the
-  background update action in a separate thread for better performance. In addition, if you are
-  planning on updating the background in response to user's scrolling through items, consider adding
-  a time to delay a background image update until the user settles on item, to avoid excessive
-  background image updates.
-</p>
diff --git a/docs/html/preview/tv/ui/details.jd b/docs/html/preview/tv/ui/details.jd
deleted file mode 100644
index 7da3b5d..0000000
--- a/docs/html/preview/tv/ui/details.jd
+++ /dev/null
@@ -1,230 +0,0 @@
-page.title=DetailFragment
-parent.title=User Interfaces for TV
-parent.link=index.html
-
-trainingnavtop=true
-previous.title=BrowseFragment
-previous.link=browse.html
-next.title=Searching in TV Apps
-next.link=in-app-search.html
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#details-presenter">Build a Details Presenter</a></li>
-    <li><a href="#details-fragment">Extend the Details Fragment</a>
-      <li><a href="#activity">Creating a Details Activity</a></li>
-      <li><a href="#item-listener">Listener for Clicked Items</a></li>
-    </li>
-  </ol>
-</div>
-</div>
-
-<p>The media browsing interface classes provided by the
-  <a href="{@docRoot}preview/tv/start/index.html#tv-libraries">Leanback support library</a>
-  include classes for displaying additional information about a media item, such as a description
-  or reviews, and taking action on that item, such as purchasing it or playing its content. This
-  section discusses how to create a presenter class for media item details and extend the
-  {@code DetailsFragment} class to implement a details view for a media item when it
-  is selected by a user.
-</p>
-
-<p class="note">
-  <strong>Note:</strong> The implementation example shown here uses an additional activity to
-  contain the {@code DetailsFragment}. However, it is possible to avoid creating a second activity
-  by replacing the current {@code BrowseFragment} with a {@code DetailsFragment} within the <em>same</em>
-  activity using fragment transactions. For more information on using fragment transactions, see the
-  <a href="{@docRoot}training/basics/fragments/fragment-ui.html#Replace">Building a Dynamic
-    UI with Fragments</a> training.
-</p>
-
-
-<h2 id="details-presenter">Build a Details Presenter</h2>
-
-<p>In the media browsing framework provided for by the leanback support library, you use
-  presenter objects to control the display of data on screen, including media item details. The
-  framework provides the {@code AbstractDetailsDescriptionPresenter} class for this purpose, which
-  is a nearly complete implementation of the presenter for media item details. All you have to do is
-  implement the {@code onBindDescription()} method to bind the view fields to your data objects, as shown in
-  the following code sample:</p>
-
-<pre>
-public class DetailsDescriptionPresenter
-        extends AbstractDetailsDescriptionPresenter {
-
-    &#64;Override
-    protected void onBindDescription(ViewHolder viewHolder, Object itemData) {
-        MyMediaItemDetails details = (MyMediaItemDetails) itemData;
-        // In a production app, the itemData object contains the information
-        // needed to display details for the media item:
-        // viewHolder.getTitle().setText(details.getShortTitle());
-
-        // Here we provide static data for testing purposes:
-        viewHolder.getTitle().setText(itemData.toString());
-        viewHolder.getSubtitle().setText("2014   Drama   TV-14");
-        viewHolder.getBody().setText("Lorem ipsum dolor sit amet, consectetur "
-                + "adipisicing elit, sed do eiusmod tempor incididunt ut labore "
-                + " et dolore magna aliqua. Ut enim ad minim veniam, quis "
-                + "nostrud exercitation ullamco laboris nisi ut aliquip ex ea "
-                + "commodo consequat.");
-    }
-}
-</pre>
-
-
-<h2 id="details-fragment">Extend the Details Fragment</h2>
-
-<p>When you use the {@code DetailsFragment} class for displaying your media item details, you
-  extend that class to provide additional content such as a preview image and actions for the media
-  item. You can also provide additional content, such as a list of related media items.</p>
-
-<p>The following example code demonstrates how to use the presenter class you created in the
-  previous section, add a preview image and actions for the media item being viewed. This example
-  also shows the addition of a related media items row, which appears below the details listing.</p>
-
-<pre>
-public class MediaItemDetailsFragment extends DetailsFragment {
-    private static final String TAG = "MediaItemDetailsFragment";
-    private ArrayObjectAdapter mRowsAdapter;
-
-    &#64;Override
-    public void onCreate(Bundle savedInstanceState) {
-        Log.i(TAG, "onCreate");
-        super.onCreate(savedInstanceState);
-
-        buildDetails();
-    }
-
-    private void buildDetails() {
-        ClassPresenterSelector selector = new ClassPresenterSelector();
-        // Attach your media item details presenter to the row presenter:
-        DetailsOverviewRowPresenter rowPresenter =
-            new DetailsOverviewRowPresenter(new DetailsDescriptionPresenter());
-
-        selector.addClassPresenter(DetailsOverviewRow.class, rowPresenter);
-        selector.addClassPresenter(ListRow.class,
-                new ListRowPresenter());
-        mRowsAdapter = new ArrayObjectAdapter(selector);
-
-        Resources res = getActivity().getResources();
-        DetailsOverviewRow detailsOverview = new DetailsOverviewRow(
-                "Media Item Details");
-
-        // Add images and action buttons to the details view
-        detailsOverview.setImageDrawable(res.getDrawable(R.drawable.jelly_beans));
-        detailsOverview.addAction(new Action(1, "Buy $9.99"));
-        detailsOverview.addAction(new Action(2, "Rent $2.99"));
-        mRowsAdapter.add(detailsOverview);
-
-        // Add a Related items row
-        ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(
-                new StringPresenter());
-        listRowAdapter.add("Media Item 1");
-        listRowAdapter.add("Media Item 2");
-        listRowAdapter.add("Media Item 3");
-        HeaderItem header = new HeaderItem(0, "Related Items", null);
-        mRowsAdapter.add(new ListRow(header, listRowAdapter));
-
-        setAdapter(mRowsAdapter);
-    }
-}
-</pre>
-
-<p>The following screenshot shows the output of this code on a TV device:</p>
-
-<img src="{@docRoot}preview/tv/images/detailsfragment.png" alt="" height="XXX" id="figure1" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> Display layout example based on {@code DetailsFragment}, using a
-  {@code DetailsOverviewRow} and a {@code ListRow} for related items.
-</p>
-
-
-<h3 id="activity">Creating a Details Activity</h3>
-
-<p>Fragments such as the {@code DetailsFragment} must be contained within an activity in order
-  to be used for display. Creating an activity for your details view, separate from the browse
-  activity, enables you to invoke your details view using an Intent. This section explains how to
-  build an activity to contain your implementation of the detail view for your media items.</p>
-
-<p>Start creating the details activity by building a layout that references your implementation
-  of the {@code DetailsFragment}:</p>
-
-<pre>
-&lt;!-- file: res/layout/details.xml --&gt;
-
-&lt;fragment xmlns:android="http://schemas.android.com/apk/res/android"
-    <strong>android:name="com.example.android.mediabrowser.MediaItemDetailsFragment"</strong>
-    android:id="&#64;+id/details_fragment"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-/&gt;
-</pre>
-
-<p>Next, create an activity class that uses the layout shown in the previous code example:</p>
-
-<pre>
-public class DetailsActivity extends Activity
-{
-    &#64;Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        <strong>setContentView(R.layout.details);</strong>
-    }
-}
-</pre>
-
-<p>Finally, add this new activity to the manifest. Remember to apply the Leanback theme to
-  ensure that the user interface is consistent with the media browse activity:</p>
-
-<pre>
-&lt;application&gt;
-  ...
-
-  &lt;activity android:name=".DetailsActivity"
-    android:exported="true"
-    <strong>android:theme="@style/Theme.Leanback"/&gt;</strong>
-
-&lt;/application&gt;
-</pre>
-
-
-<h3 id="item-listener">Listener for Clicked Items</h3>
-
-<p>After you have implemented the {@code DetailsFragment}, you must modify your main media
-  browsing view to move to your details view when a user clicks on a media item. In order to enable
-  this behavior, add an {@code OnItemClickedListener} object to the BrowseFragment that fires an
-  intent to start the item details activity.</p>
-
-<p>The following example shows how to implement a listener to start the details view when a user
-  clicks a media item in the main media browsing activity:</p>
-
-<pre>
-public class BrowseMediaActivity extends Activity {
-    ...
-
-    &#64;Override
-    protected void onCreate(Bundle savedInstanceState) {
-        ...
-
-        // create the media item rows
-        buildRowsAdapter();
-
-        // add a listener for selected items
-        mBrowseFragment.setOnItemClickedListener(
-            new OnItemClickedListener() {
-                &#64;Override
-                public void onItemClicked(Object item, Row row) {
-                    System.out.println("Media Item clicked: " + item.toString());
-                    Intent intent = new Intent(BrowseMediaActivity.this,
-                            DetailsActivity.class);
-                    // pass the item information
-                    intent.getExtras().putLong("id", item.getId());
-                    startActivity(intent);
-                }
-            });
-    }
-}
-</pre>
diff --git a/docs/html/preview/tv/ui/in-app-search.jd b/docs/html/preview/tv/ui/in-app-search.jd
deleted file mode 100644
index b372254..0000000
--- a/docs/html/preview/tv/ui/in-app-search.jd
+++ /dev/null
@@ -1,119 +0,0 @@
-page.title=Searching in TV Apps
-parent.title=User Interfaces for TV
-parent.link=index.html
-
-trainingnavtop=true
-previous.title=DetailsFragment
-previous.link=details.html
-next.title=Recommendations
-next.link=recommendations.html
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#add-search-ui">Add Search User Interface</a></li>
-  </ol>
-
-</div>
-</div>
-
-
-<p>Users frequently have specific content in mind when using a media app. A search interface can
-  help your users get to the content they want faster than browsing. The Leanback library provides a
-  set of classes to enable a standard search interface within your app that is consistent with other
-  search functions on TV and provides features such as voice input.</p>
-
-<h2 id="add-search-ui">Add Search User Interface</h2>
-<p>When you use the BrowseFragment class for your media browsing interface, you can enable the
-  search icon by setting an OnClickListener to the browse fragment object. The following sample code
-  demonstrates this technique.</p>
-
-<pre>
-&#64;Override
-public void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.browse_activity);
-
-    mBrowseFragment = (BrowseFragment)
-            getFragmentManager().findFragmentById(R.id.browse_fragment);
-
-    ...
-
-    mBrowseFragment.setOnSearchClickedListener(new View.OnClickListener() {
-        &#64;Override
-        public void onClick(View view) {
-            Intent intent = new Intent(BrowseActivity.this, SearchActivity.class);
-            startActivity(intent);
-        }
-    });
-
-    mBrowseFragment.setAdapter(buildAdapter());
-}
-</pre>
-
-<p class="note">
-  <strong>Note:</strong> You can set the color of the search icon using the
-  {@code setSearchAffordanceColor()} method of {@code BrowseFragment}.
-</p>
-
-<p>When a user selects the search icon, the system invokes a search activity via the defined
-  Intent. Your search activity should use a linear layout containing a SearchFragment. This fragment
-  must also implement the SearchFragment.SearchResultProvider interface in order to display the
-  results of a search. The following code sample shows how to extend the SearchFragment class to
-  provide a search interface and results:</p>
-
-<pre>
-public class MySearchFragment extends SearchFragment
-        implements SearchFragment.SearchResultProvider {
-
-    private static final int SEARCH_DELAY_MS = 300;
-    private ArrayObjectAdapter mRowsAdapter;
-    private Handler mHandler = new Handler();
-    private SearchRunnable mDelayedLoad;
-
-    &#64;Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        mRowsAdapter = new ArrayObjectAdapter(new ListRowPresenter());
-        setSearchResultProvider(this);
-        setOnItemClickedListener(getDefaultItemClickedListener());
-        mDelayedLoad = new SearchRunnable();
-    }
-
-    &#64;Override
-    public ObjectAdapter getResultsAdapter() {
-        return mRowsAdapter;
-    }
-
-    &#64;Override
-    public boolean onQueryTextChange(String newQuery) {
-        mRowsAdapter.clear();
-        if (!TextUtils.isEmpty(newQuery)) {
-            mDelayedLoad.setSearchQuery(newQuery);
-            mHandler.removeCallbacks(mDelayedLoad);
-            mHandler.postDelayed(mDelayedLoad, SEARCH_DELAY_MS);
-        }
-        return true;
-    }
-
-    &#64;Override
-    public boolean onQueryTextSubmit(String query) {
-        mRowsAdapter.clear();
-        if (!TextUtils.isEmpty(query)) {
-            mDelayedLoad.setSearchQuery(query);
-            mHandler.removeCallbacks(mDelayedLoad);
-            mHandler.postDelayed(mDelayedLoad, SEARCH_DELAY_MS);
-        }
-        return true;
-    }
-}
-</pre>
-
-<p>This example code shown above is meant to be used with a separate SearchRunnable class, that
-  runs the search query on a separate thread. This technique keeps potentially slow-running queries
-  from interfering with the main user interface thread.</p>
-
diff --git a/docs/html/preview/tv/ui/index.jd b/docs/html/preview/tv/ui/index.jd
deleted file mode 100644
index 9513bc6..0000000
--- a/docs/html/preview/tv/ui/index.jd
+++ /dev/null
@@ -1,44 +0,0 @@
-page.title=User Interfaces for TV
-page.tags="input","screens"
-
-trainingnavtop=true
-startpage=true
-
-@jd:body
-
-
-<p>
-  Building an effective and engaging for TV devices requires a firm understanding what works well
-  in the context of a living room. Imagine a large screen that can be seen by many people at the
-  same time, controlled a few buttons by users with limited attention and you start to see the
-  challenges and opportunity of building an app for TV. Building apps for this environment
-  requires a different approach and different tools.</p>
-
-<p>This section discusses how to build a living room experience with your app, including
-  implementation instructions and user interface widgets built for TV. Also check out the
-  <a href="{@docRoot}design/tv/index.html">Design for TV</a> for information and inspiration
-  on creating engaging user interfaces for TV devices.</p>
-
-<h2>Topics</h2>
-
-<dl>
-  <dt><b><a href="layouts.html">Layouts</a></b></dt>
-    <dd>Learn how to build app layouts for TV screens.</dd>
-
-  <dt><b><a href="navigation.html">Navigation</a></b></dt>
-    <dd>Learn how to build navigation for TV devices.</dd>
-
-  <dt><b><a href="browse.html">BrowseFragment</a></b></dt>
-    <dd>Learn how to use this fragment to build a browsing interface for media catalogs.</dd>
-
-  <dt><b><a href="details.html">DetailsFragment</a></b></dt>
-    <dd>Learn how to use this fragment to build a details page for media items.</dd>
-
-  <dt><b><a href="search.html">In-App Search</a></b></dt>
-    <dd>Learn how to use a built-for-TV user interface for searching within your app.</dd>
-
-  <dt><b><a href="recommendations.html">Recommendations</a></b></dt>
-    <dd>Learn how to contribute watch next suggestions and get your content noticed by users.</dd>
-</dl>
-
-
diff --git a/docs/html/preview/tv/ui/layouts.jd b/docs/html/preview/tv/ui/layouts.jd
deleted file mode 100644
index 5655152..0000000
--- a/docs/html/preview/tv/ui/layouts.jd
+++ /dev/null
@@ -1,298 +0,0 @@
-page.title=Layouts for TV
-parent.title=User Interfaces for TV
-parent.link=index.html
-
-trainingnavtop=true
-next.title=Navigation for TV
-next.link=navigation.html
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#themes">Themes</a>
-      <ol>
-        <li><a href="#leanback-theme">Leanback Theme</a></li>
-      </ol>
-    </li>
-    <li><a href="#structure">Layout Structure</a>
-      <ol>
-        <li><a href="#overscan">Overscan</a></li>
-      </ol>
-    </li>
-    <li><a href="#visibility">Text and Controls Visibility</a></li>
-    <li><a href="#density-resources">Screen Density and Image Resources</a></li>
-    <li><a href="#anti-patterns">Layout Anti-Patterns</a></li>
-    <li><a href="#large-bitmaps">Handling Large Bitmaps</a></li>
-  </ol>
-
-</div>
-</div>
-
-<p>
-  A TV screen is typically viewed from about 10 feet away, and while it is much larger than most
-  other Android device displays, this type of screen does not provide the same level of precise
-  detail and color as a smaller device. These factors require that you create app layouts with
-  TV devices in mind in order to create a useful and enjoyable user experience.</p>
-
-<p>This guide provides guidance and implementation details for building effective layouts for
-  TV apps.</p>
-
-
-<h2 id="themes">Themes</h2>
-
-<p>Android <a href="{@docRoot}guide/topics/ui/themes.html">Themes</a> can provide a basis for
-  layouts in your apps. On TV devices, you should use a theme to suppress the title bar from
-  your app activities that are meant for TV. The title bar is a standard user interface element
-  for Android apps on phones and tablets, but it is not appropriate for TV apps. The following
-  code example from TV app manifest demonstrates how to apply this theme:
-</p>
-
-<pre>
-&lt;application&gt;
-  ...
-
-  &lt;activity
-    android:name="com.example.android.TvActivity"
-    android:label="&#64;string/app_name"
-    <strong>android:theme="&#64;android:style/Theme.NoTitleBar"</strong>&gt;
-    ...
-
-  &lt;/activity&gt;
-&lt;/application&gt;
-
-</pre>
-
-
-<h3 id="leanback-theme">Leanback Theme</h3>
-
-<p>The Android framework provides a standard theme for TV activities, called {@code
-  Leanback.Theme}, which establishes a consistent visual style for TV apps. Use of this theme is
-  recommended for most apps. The following code sample shows how to apply this theme to a given
-  activity within an app:</p>
-
-<pre>
-&lt;activity
-  android:name="com.example.android.TvActivity"
-  android:label="&#64;string/app_name"
-  <strong>android:theme="&#64;android:style/Theme.Leanback"</strong>&gt;
-</pre>
-
-
-<h2 id="structure">Layout Structure</h2>
-
-<p>Layouts for TV devices should follow some basic guidelines to ensure they are useable and
-  effective on large screens. Follow these tips to build landscape layouts optimized for TV screens:
-</p>
-
-<ul>
-  <li>Build layouts with a landscape orientation. TV screens are always displayed in this
-    orientation.</li>
-  <li>Put on-screen navigation controls on the left or right side of the screen and save the
-    vertical space for content.</li>
-  <li>Create UIs that are divided into sections, using <a
-    href="{@docRoot}guide/components/fragments.html"
-  >Fragments</a> and use view groups like {@link android.widget.GridView} instead of {@link
-    android.widget.ListView} to make better use of the horizontal screen space.
-  </li>
-  <li>Use view groups such as {@link android.widget.RelativeLayout} or {@link
-    android.widget.LinearLayout} to arrange views. This approach allows the system to adjust the
-    position of the views to the size, alignment, aspect ratio, and pixel density of a TV screen.</li>
-  <li>Add sufficient margins between layout controls to avoid a cluttered UI.</li>
-</ul>
-
-
-<h3 id="overscan">Overscan</h3>
-
-<p>Layouts for TV have some unique requirements due to the evolution of TV standards and the
-  desire to always present a full screen picture to viewers. For this reason, TV devices may
-  clip the outside edge of an app layout in order to ensure a that the entire display is filled.
-  This behavior is generally referred to as Overscan.</p>
-
-<p>In order to account for the impact of overscan and make sure that all the user interface
-  elements you place in a layout are actually shown on screen, you should incorporate a 10% margin
-  on all sides of your layout. This translates into a 27dp margin on the left and right edges and
-  a 48dp margin on the top and bottom of your base layouts for activities. The following
-  example layout demonstrates how to set these margins in the root layout for a TV app:
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/base_layout"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:orientation="vertical"
-  android:layout_marginTop="27dp"
-  android:layout_marginLeft="48dp"
-  android:layout_marginRight="48dp"
-  android:layout_marginBottom="27dp" &gt;
-&lt;/LinearLayout&gt;
-</pre>
-
-<p class="caution">
-  <strong>Caution:</strong> Do not apply overscan margins to your layout if you are using the
-  Leanback Support Library {@code BrowseFragment} or related widgets, as those layouts already
-  incorporate overscan-safe margins.
-</p>
-
-
-<h2 id="visibility">Text and Controls Visibility</h2>
-
-<p>
-The text and controls in a TV app layout should be easily visible and navigable from a distance.
-Follow these tips to make them easier to see from a distance :
-</p>
-
-<ul>
-  <li>Break text into small chunks that users can quickly scan.</li>
-  <li>Use light text on a dark background. This style is easier to read on a TV.</li>
-  <li>Avoid lightweight fonts or fonts that have both very narrow and very broad strokes.
-  Use simple sans-serif fonts and anti-aliasing to increase readability.</li>
-  <li>Use Android's standard font sizes:
-<pre>
-&lt;TextView
-      android:id="@+id/atext"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:gravity="center_vertical"
-      android:singleLine="true"
-      android:textAppearance="?android:attr/textAppearanceMedium"/&gt;
-</pre>
-  </li>
-  <li>Ensure that all your view widgets are large enough to be clearly visible to someone
-    sitting 10 feet away from the screen (this distance is greater for very large screens). The
-    best way to do this is to use layout-relative sizing rather than absolute sizing, and
-    density-independent pixel units instead of absolute pixel units. For example, to set the
-    width of a widget, use wrap_content instead of a pixel measurement, and to set the margin
-    for a widget, use dip instead of px values.</li>
-</ul>
-
-
-<h2 id="density-resources">Screen Density and Image Resources</h2>
-
-<p>The common high-definition TV display resolutions are 720p, 1080i, and 1080p.
-  Your TV layout should target a screen size of 1920 x 1080 pixels, and then allow the Android
-  system to downscale your layout elements to 720p if necessary. In general, downscaling
-  (removing pixels) does not degrade your layout presentation quality. However, upscaling can
-  cause display artifacts that degrade the quality of your layout and have a negative impact on
-  the user experience of your app.</p>
-
-<p>
-  To get the best scaling results for images, provide them as
-  <a href="{@docRoot}tools/help/draw9patch.html">9-patch image</a> elements if possible. If you
-  provide low quality or small images in your layouts, they will appear pixelated, fuzzy, or
-  grainy. This is not a good experience for the user. Instead, use high-quality images.
-</p>
-
-<p>
-  For more information on optimizing layouts and resources for large screens see
-  <a href="{@docRoot}training/multiscreen/index.html">Designing for multiple screens</a>.
-</p>
-
-
-<h2 id="anti-patterns">Layout Anti-Patterns</h2>
-
-<p>There are a few approaches to building layouts for TV that you should avoid because they do not
-work well and lead to bad user experiences. Here are some user interface approaches you
-should specifically <em>not</em> use when developing a layout for TV.
-</p>
-
-<ul>
-  <li><strong>Re-using phone or tablet layouts</strong> - Do not reuse layouts from a phone or
-    tablet app without modification. Layouts built for other Android device form factors are not
-    well suited for TV devices and should be simplified for operation on a TV.</li>
-  <li><strong>ActionBar</strong> - While this user interface convention is recommended for use
-    on phones and tablets, it is not appropriate for a TV interface. In particular, using an
-    antion bar options menu (or any pull-down menu for that matter) is strongly discouraged, due
-    to the difficulty in navigating such a menu with a remote control.</li>
-  <li><strong>ViewPager</strong> - Sliding between screens can work great on a phone or tablet,
-    but don't try this on a TV!</li>
-
-</ul>
-
-<p>For more information on designing layouts that are appropriate to TV, see the
-  <a href="{@docRoot}design/tv/index.html">TV Design</a> guide.</p>
-
-
-<h2 id="large-bitmaps">Handling Large Bitmaps</h2>
-
-<p>TV devices, like any other Android device, have a limited amount of memory. If you build your
-  app layout with very high-resolution images or use many high-resolutions images in the operation
-  of your app, it can quickly run into memory limits and cause out of memory errors.
-  To avoid these types of problems, follow these tips:</p>
-
-<ul>
-  <li>Load images only when they're displayed on the screen. For example, when displaying multiple images in
-      a {@link android.widget.GridView} or
-      {@link android.widget.Gallery}, only load an image when
-      {@link android.widget.Adapter#getView(int, View, ViewGroup) getView()}
-      is called on the View's {@link android.widget.Adapter}.
-  </li>
-  <li>Call {@link android.graphics.Bitmap#recycle()} on
-      {@link android.graphics.Bitmap} views that are no longer needed.
-  </li>
-  <li>Use {@link java.lang.ref.WeakReference} for storing references
-      to {@link android.graphics.Bitmap} objects in an in-memory
-      {@link java.util.Collection}.</li>
-  <li>If you fetch images from the network, use {@link android.os.AsyncTask}
-      to fetch them and store them on the SD card for faster access.
-      Never do network transactions on the application's UI thread.
-  </li>
-  <li>Scale down large images to a more appropriate size as you download them;
-    otherwise, downloading the image itself may cause an out of memory exception.
-    The following sample code demonstrates how to scale down images while downloading:
-<pre>
-  // Get the source image's dimensions
-  BitmapFactory.Options options = new BitmapFactory.Options();
-  // This does not download the actual image, just downloads headers.
-  options.inJustDecodeBounds = true;
-  BitmapFactory.decodeFile(IMAGE_FILE_URL, options);
-  // The actual width of the image.
-  int srcWidth = options.outWidth;
-  // The actual height of the image.
-  int srcHeight = options.outHeight;
-
-  // Only scale if the source is bigger than the width of the destination view.
-  if(desiredWidth > srcWidth)
-    desiredWidth = srcWidth;
-
-  // Calculate the correct inSampleSize/scale value. This approach helps reduce
-  // memory use. This value should be a power of 2.
-  int inSampleSize = 1;
-  while(srcWidth / 2 > desiredWidth){
-    srcWidth /= 2;
-    srcHeight /= 2;
-    inSampleSize *= 2;
-  }
-
-  float desiredScale = (float) desiredWidth / srcWidth;
-
-  // Decode with inSampleSize
-  options.inJustDecodeBounds = false;
-  options.inDither = false;
-  options.inSampleSize = inSampleSize;
-  options.inScaled = false;
-  // Ensures the image stays as a 32-bit ARGB_8888 image.
-  // This preserves image quality.
-  options.inPreferredConfig = Bitmap.Config.ARGB_8888;
-
-  Bitmap sampledSrcBitmap = BitmapFactory.decodeFile(IMAGE_FILE_URL, options);
-
-  // Resize
-  Matrix matrix = new Matrix();
-  matrix.postScale(desiredScale, desiredScale);
-  Bitmap scaledBitmap = Bitmap.createBitmap(sampledSrcBitmap, 0, 0,
-      sampledSrcBitmap.getWidth(), sampledSrcBitmap.getHeight(), matrix, true);
-  sampledSrcBitmap = null;
-
-  // Save
-  FileOutputStream out = new FileOutputStream(LOCAL_PATH_TO_STORE_IMAGE);
-  scaledBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
-  scaledBitmap = null;
-</pre>
-  </li>
-</ul>
-
diff --git a/docs/html/preview/tv/ui/navigation.jd b/docs/html/preview/tv/ui/navigation.jd
deleted file mode 100644
index 3041e58..0000000
--- a/docs/html/preview/tv/ui/navigation.jd
+++ /dev/null
@@ -1,144 +0,0 @@
-page.title=Navigation for TV
-parent.title=User Interfaces for TV
-parent.link=index.html
-
-trainingnavtop=true
-previous.title=Layouts for TV
-previous.link=layouts.html
-next.title=BrowseFragment
-next.link=browse.html
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#d-pad-navigation">D-pad Navigation</a></li>
-    <li><a href="#focus-selection">Focus and Selection</a></li>
-  </ol>
-
-</div>
-</div>
-
-<p>TV devices provide a limited set of navigation controls for apps. Creating an effective
-  navigation scheme for your TV app depends on understanding these limited controls and the limits
-  of users perception while operating your app. As you build your Android application for TVs,
-  you should pay special attention to how the user actually navigates around your application
-  when using remote control buttons instead of a touch screen.</p>
-
-<p>This guide shows you how to build an effective navigation scheme for your TV app.</p>
-
-
-<h2 id="d-pad-navigation">D-pad Navigation</h2>
-
-<p>On a TV device, users navigate with controls on a remote control device, using either a
-  directional pad (D-pad) or arrow keys. This type of control limits movement to up, down, left,
-  and right. To build a great TV-optimized app, you must provide a navigation scheme where
-  the user can quickly learn how to navigate your app using these limited controls.</p>
-
-<p>Follow these guidelines to build navigation system that works well with a D-pad on a TV device:
-</p>
-
-<ul>
-  <li>Ensure that the D-pad can navigate to all the visible controls on the screen.</li>
-  <li>For scrolling lists with focus, D-pad up/down keys scroll the list and Enter key selects
-    an item in the list. Ensure that users can select an element in the list and that the list still
-    scrolls when an element is selected.</li>
-  <li>Ensure that movement between controls is straightforward and predictable.</li>
-</ul>
-
-<p>The Android framework handles directional navigation between layout elements automatically, so
-  you typically do not need to do anything extra for your app. However, you should thoroughly test
-  navigation with a D-pad control to discover any navigation problems. If you discover that your
-  screen layout makes navigation difficult, or if you want users to move through the layout in a
-  specific way, you can set up explicit directional navigation for your controls. The following
-  code sample shows how to define the next control to receive focus for a
-  {@link android.widget.TextView} layout object:</p>
-
-<pre>
-&lt;TextView android:id="&#64;+id/Category1"
-             android:nextFocusDown="&#64;+id/Category2"\&gt;
-</pre>
-
-<p>The following table lists all of the available navigation attributes for Android user interface
-widgets:</p>
-
-<table>
-  <tr>
-    <th>Attribute</th>
-    <th>Function</th>
-  </tr>
-  <tr>
-    <td>{@link android.R.attr#nextFocusDown}</td>
-    <td>Defines the next view to receive focus when the user navigates down.</td>
-  </tr>
-  <tr>
-    <td>{@link android.R.attr#nextFocusLeft}</td>
-    <td>Defines the next view to receive focus when the user navigates left.</td>
-  </tr>
-  <tr>
-    <td>{@link android.R.attr#nextFocusRight}</td>
-    <td>Defines the next view to receive focus when the user navigates right.</td>
-  </tr>
-  <tr>
-    <td>{@link android.R.attr#nextFocusUp}</td>
-    <td>Defines the next view to receive focus when the user navigates up.</td>
-  </tr>
-</table>
-
-<p>To use one of these explicit navigation attributes, set the value to the ID ({@code android:id}
-  value) of another widget in the layout. You should set up the navigation order as a loop, so that
-  the last control directs focus back to the first one.</p>
-
-<p class="note">
-  <strong>Note:</strong> You should only use these attributes to modify the navigation order if the
-  default order that the system applies does not work well.
-</p>
-
-
-<h2 id="focus-selection">Focus and Selection</h2>
-
-<p>The success of a navigation scheme on TV devices is strongly dependent on how easy it is for a
-  user to determine what user interface element is in focus on screen. If you do not provide clear
-  indications of what is in focus on screen (and therefore what item they can take action on),
-  users can quickly become frustrated and exit your app. By the same token, it is important
-  to always have an item in focus that a user can take action on immediately after your app starts,
-  and any time your app is not playing content.</p>
-
-<p>Your app layout and implementation should use color, size, animation or a combination of
-  these attributes to help users easily determine what actions they can take next. Use a uniform
-  scheme for indicating focus across your application.</p>
-
-<p>Android provides <a href="{@docRoot}guide/topics/resources/drawable-resource.html#StateList">
-Drawable State List Resources</a> to implement highlights for selected and focused controls. The
-following code example demonstates how to apply selection indication for a button object:
-</p>
-
-<pre>
-&lt;!-- res/drawable/button.xml --&gt;
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;selector xmlns:android="http://schemas.android.com/apk/res/android"&gt;
-    &lt;item android:state_pressed="true"
-          android:drawable="@drawable/button_pressed" /&gt; &lt;!-- pressed --&gt;
-    &lt;item android:state_focused="true"
-          android:drawable="@drawable/button_focused" /&gt; &lt;!-- focused --&gt;
-    &lt;item android:state_hovered="true"
-          android:drawable="@drawable/button_focused" /&gt; &lt;!-- hovered --&gt;
-    &lt;item android:drawable="@drawable/button_normal" /&gt; &lt;!-- default --&gt;
-&lt;/selector&gt;
-</pre>
-
-<p>
-This layout XML applies the above state list drawable to a {@link android.widget.Button}:
-</p>
-<pre>
-&lt;Button
-    android:layout_height="wrap_content"
-    android:layout_width="wrap_content"
-    android:background="@drawable/button" /&gt;
-</pre>
-
-<p>Make sure to provide sufficient padding within the focusable and selectable controls so that
-  the highlights around them are clearly visible.</p>
-
diff --git a/docs/html/preview/tv/ui/recommendations.jd b/docs/html/preview/tv/ui/recommendations.jd
deleted file mode 100644
index 52ac2e5..0000000
--- a/docs/html/preview/tv/ui/recommendations.jd
+++ /dev/null
@@ -1,234 +0,0 @@
-page.title=Making Recommendations
-parent.title=User Interfaces for TV
-parent.link=index.html
-
-trainingnavtop=true
-previous.title=Searching in TV Apps
-previous.link=in-app-search.html
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#service">Create a Recommendations Service</a></li>
-    <li><a href="#build">Build Recommendations</a></li>
-    <li><a href="#run-service">Run Recommendations Service</a></li>
-    <li><a href="#DesignLandscapeLayouts">Design Landscape Layouts</a></li>
-  </ol>
-
-</div>
-</div>
-
-
-<p>Content recommendations appear as the first row of the TV launch screen after the first use
-  of the device. This row is intended to help users quickly find content they enjoy. Contributing
-  recommendations from your apps content catalog can help bring users back to your app.</p>
-
-
-<img src="{@docRoot}preview/tv/images/home-recommendations.png" alt="" height="XXX" id="figure1" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> The first row after the search widget is the system-wide
-  recommendations.
-</p>
-
-
-<h2 id="service">Create a Recommendations Service</h2>
-
-<p>Content recommendations are created with background processing. In order for your application
-  to contribute to recommendations, you create a service that periodically adds listings from your
-  app's catalog to the system list of recommendations.</p>
-
-<p>The following code example illustrates how to extend the {@link android.app.IntentService} to
-  create a recommendation service for your application.</p>
-
-<pre>
-public class RecommendationsService extends IntentService {
-
-    ...
-
-    public Notification buildRecommendation(Context context, Movie movie)
-            throws IOException {
-
-        if (mNotificationManager == null) {
-            mNotificationManager = (NotificationManager)
-                    mContext.getSystemService(Context.NOTIFICATION_SERVICE);
-        }
-
-        Bundle extras = new Bundle();
-        if (mBackgroundUri != movie.getBackgroundUri()) {
-            extras.putString(EXTRA_BACKGROUND_IMAGE_URL, movie.getBackgroundUri());
-        }
-
-        // build the recommendation as a Notification object
-        Notification notification = new NotificationCompat.BigPictureStyle(
-                new NotificationCompat.Builder(context)
-                        .setContentTitle(movie.getTitle())
-                        .setContentText(movie.getDescription())
-                        .setPriority(movie.getPriority())
-                        .setOngoing(true)
-                        .setCategory("recommendation")
-                        .setLargeIcon(movie.getImage())
-                        .setSmallIcon(movie.getSmallIcon())
-                        .setContentIntent(buildPendingIntent(movie.getId()))
-                        .setExtras(extras))
-                .build();
-
-        // post the recommendation to the NotificationManager
-        mNotificationManager.notify(movie.getId(), notification);
-        mNotificationManager = null;
-        return notification;
-    }
-
-    private PendingIntent buildPendingIntent(long id) {
-        Intent detailsIntent = new Intent(this, DetailsActivity.class);
-        detailsIntent.putExtra("id", id);
-
-        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
-        stackBuilder.addParentStack(DetailsActivity.class);
-        stackBuilder.addNextIntent(detailsIntent);
-        // Ensure each PendingIntent is unique
-        detailsIntent.setAction(Long.toString(id));
-
-        PendingIntent intent = stackBuilder.getPendingIntent(
-                0, PendingIntent.FLAG_UPDATE_CURRENT);
-        return intent;
-    }
-}
-</pre>
-
-<p>In order for this class to be recognized and run as a service, you must register this service
-  using your app manifest. The following code snippet illustrates how to add this class as a
-  service:</p>
-
-<pre>
-&lt;manifest ... &gt;
-  &lt;application ... &gt;
-    ...
-
-    &lt;service android:name=&quot;.UpdateRecommendationsService&quot;
-             android:enabled=&quot;true&quot; android:exported=&quot;true&quot;/&gt;
-  &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-<h2 id="build">Build Recommendations</h2>
-
-<p>Once it starts running, your service must create recommendations and pass them to the Android
-  framework. The framework receives the recommendations as {@link android.app.Notification} objects
-  that use a specific style and are marked with a specific category.</p>
-
-<p>The following code example demonstrates how to get an instance of the {@link
-  android.app.NotificationManager}, build a recommendation and post it to the manager:</p>
-
-<pre>
-public class RecommendationsService extends IntentService {
-
-    ...
-
-    public Notification buildRecommendation(Context context, Movie movie)
-            throws IOException {
-
-        if (mNotificationManager == null) {
-            mNotificationManager = (NotificationManager)
-                    mContext.getSystemService(Context.NOTIFICATION_SERVICE);
-        }
-
-        Bundle extras = new Bundle();
-        if (mBackgroundUri != movie.getBackgroundUri()) {
-            extras.putString(EXTRA_BACKGROUND_IMAGE_URL, movie.getBackgroundUri());
-        }
-
-        // build the recommendation as a Notification object
-        Notification notification = new NotificationCompat.BigPictureStyle(
-                new NotificationCompat.Builder(context)
-                        .setContentTitle(movie.getTitle())
-                        .setContentText(movie.getDescription())
-                        .setPriority(movie.getPriority())
-                        .setOngoing(true)
-                        .setCategory("recommendation")
-                        .setLargeIcon(movie.getImage())
-                        .setSmallIcon(movie.getSmallIcon())
-                        .setContentIntent(buildPendingIntent(movie.getId()))
-                        .setExtras(extras))
-                .build();
-
-        // post the recommendation to the NotificationManager
-        mNotificationManager.notify(movie.getId(), notification);
-        mNotificationManager = null;
-        return notification;
-    }
-
-    private PendingIntent buildPendingIntent(long id) {
-        Intent detailsIntent = new Intent(this, DetailsActivity.class);
-        detailsIntent.putExtra("id", id);
-
-        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
-        stackBuilder.addParentStack(DetailsActivity.class);
-        stackBuilder.addNextIntent(detailsIntent);
-        // Ensure each PendingIntent is unique
-        detailsIntent.setAction(Long.toString(id));
-
-        PendingIntent intent = stackBuilder.getPendingIntent(
-                0, PendingIntent.FLAG_UPDATE_CURRENT);
-        return intent;
-    }
-}
-</pre>
-
-
-<h3 id="run-service">Run Recommendations Service</h3>
-
-<p>Your app's recommendation service must run periodically in order to create current
-  recommendations. In order to run your service, you should create a class that runs a timer and
-  invokes it at regular intervals. The following code example extends the {@link
-  android.content.BroadcastReceiver} class to start periodic execution of a recommendation service
-  every 30 minutes:</p>
-
-<pre>
-public class BootupActivity extends BroadcastReceiver {
-    private static final String TAG = "BootupActivity";
-
-    private static final long INITIAL_DELAY = 5000;
-
-    &#64;Override
-    public void onReceive(Context context, Intent intent) {
-        if (intent.getAction().endsWith(Intent.ACTION_BOOT_COMPLETED)) {
-            scheduleRecommendationUpdate(context);
-        }
-    }
-
-    private void scheduleRecommendationUpdate(Context context) {
-        AlarmManager alarmManager = (AlarmManager)context.getSystemService(
-                Context.ALARM_SERVICE);
-        Intent recommendationIntent = new Intent(context,
-                UpdateRecommendationsService.class);
-        PendingIntent alarmIntent = PendingIntent.getService(context, 0,
-                recommendationIntent, 0);
-
-        alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
-                INITIAL_DELAY,
-                AlarmManager.INTERVAL_HALF_HOUR,
-                alarmIntent);
-    }
-}
-</pre>
-
-<p>In order for the {@link android.content.BroadcastReceiver} class to execute after an TV
-  device starts up, you must register this class in your app manifest and attach an intent filter
-  for the completion of the device boot process. This sample code demonstrates how to add this
-  configuration to the manifest:</p>
-
-<pre>
-&lt;manifest ... &gt;
-  &lt;application ... &gt;
-    &lt;receiver android:name=&quot;.BootupActivity&quot; android:enabled=&quot;true&quot;
-              android:exported=&quot;false&quot;&gt;
-      &lt;intent-filter&gt;
-        &lt;action android:name=&quot;android.intent.action.BOOT_COMPLETED&quot;/&gt;
-      &lt;/intent-filter&gt;
-    &lt;/receiver&gt;
-  &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
diff --git a/docs/html/sdk/installing/adding-packages.jd b/docs/html/sdk/installing/adding-packages.jd
index c38c927..e6c0118 100644
--- a/docs/html/sdk/installing/adding-packages.jd
+++ b/docs/html/sdk/installing/adding-packages.jd
@@ -14,7 +14,7 @@
   background:#eee;
 }
 ol.large > li:nth-child(odd) {
-} 
+}
 ol.large > li:before {
   display:inline;
   left:-40px;
@@ -74,9 +74,14 @@
   </li>
 </ul>
 
+<p>When you open the SDK Manager for the first time, several packages will be selected by
+default. Leave these selected, but be sure you have everything you need
+to get started by following these steps:</p>
+
+
 <ol class="large">
 <li>
-  <h2 class="norule">Get the latest SDK tools</h2>
+  <h2 id="GetTools" class="norule">Get the latest SDK tools</h2>
 
 <img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
 
@@ -87,7 +92,7 @@
      <ul>
        <li><strong>Android SDK Tools</strong></li>
        <li><strong>Android SDK Platform-tools</strong></li>
-       <li><strong>Android SDK Build-tools</strong></li>
+       <li><strong>Android SDK Build-tools</strong> (highest version)</li>
      </ul>
    </li>
    <li>Open the first Android X.X folder (the latest version) and select:
@@ -97,16 +102,13 @@
       <strong>ARM EABI v7a System Image</strong></li>
      </ul>
    </li>
-   <li>Click <strong>Install</strong>.</li>
   </ol>
 </li>
 
 <li>
-  <h2 class="norule">Get the support library for additional APIs</h2>
+  <h2 id="GetSupportLib" class="norule">Get the support library for additional APIs</h2>
 
   <div class="sidebox">
-    <h3>Why use the support library?</h3>
-
     <p>The support library is required for:</p>
     <ul>
       <li><a href="{@docRoot}wear/index.html">Android Wear</a></li>
@@ -114,7 +116,7 @@
       <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
     </ul>
 
-    <p>The support library also provides these popular APIs:</p>
+    <p>It also provides these popular APIs:</p>
     <ul>
       <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">Navigation
       drawer</a></li>
@@ -127,16 +129,11 @@
   <p>The <a href="{@docRoot}tools/support-library/features.html">Android Support Library</a>
   provides an extended set of APIs that are compatible with most versions of Android.</p>
 
-  <p>To download the support library:</p>
-  <ol>
-    <li>Open the <strong>Extras</strong> directory and select:
+  <p>Open the <strong>Extras</strong> directory and select:</p>
      <ul>
        <li><strong>Android Support Repository</strong></li>
        <li><strong>Android Support Library</strong></li>
      </ul>
-    </li>
-    <li>Click <strong>Install</strong>.</li>
-  </ol>
 
   <p>&nbsp;</p>
   <p>&nbsp;</p>
@@ -145,10 +142,9 @@
 
 
 <li>
-  <h2 class="norule">Get Google Play services for even more APIs</h2>
+  <h2 id="GetGoogle" class="norule">Get Google Play services for even more APIs</h2>
 
   <div class="sidebox">
-    <h3>Why use Google Play services?</h3>
 
     <p>The Google Play services APIs provide a variety of features and services for your Android
     apps, such as:</p>
@@ -163,15 +159,11 @@
   </div>
 
   <p>To develop with Google APIs, you need the Google Play services package:</p>
-  <ol>
-    <li>Open the <strong>Extras</strong> directory and select:
+  <p>Open the <strong>Extras</strong> directory and select:</p>
      <ul>
        <li><strong>Google Repository</strong></li>
        <li><strong>Google Play services</strong></li>
      </ul>
-    </li>
-    <li>Click <strong>Install</strong>.</li>
-  </ol>
 
   <p class="note"><strong>Note:</strong> Google Play services APIs are not available on all
   Android-powered devices, but are available on all devices with Google Play Store. To use these
@@ -180,9 +172,21 @@
 </li>
 
 
+<li>
+  <h2 id="Install" class="norule">Install the packages</h2>
+  <p>Once you've selected all the desired packages, continue to install:</p>
+  <ol>
+   <li>Click <strong>Install X packages</strong>.</li>
+   <li>In the next window, double-click each package name on the left
+   to accept the license agreement for each.</li>
+   <li>Click <strong>Install</strong>.</li>
+  </ol>
+  <p>The download progress is shown at the bottom of the SDK Manager window.
+  <strong>Do not exit the SDK Manager</strong> or it will cancel the download.</p>
+</li>
 
 <li>
-  <h2 class="norule">Build something!</h2>
+  <h2 id="Build" class="norule">Build something!</h2>
 
 <p>With the above packages now in your Android SDK, you're ready to build apps
 for Android. As new tools and other APIs become available, simply launch the SDK Manager
@@ -208,8 +212,8 @@
 <h3>Use Google APIs</h3>
 <p>To start using Google APIs, such as Maps or
 Play Game services, see the guide to
-<strong><a href="{@docRoot}google/auth/api-client.html">Accessing Google Play Services
-APIs</a></strong>.</p>
+<strong><a href="{@docRoot}google/play-services/setup.html">Setting Up Google Play
+Services</a></strong>.</p>
 
 </div>
 </div><!-- end cols -->
diff --git a/docs/html/sdk/installing/index.jd b/docs/html/sdk/installing/index.jd
index b6929bd..3671726 100644
--- a/docs/html/sdk/installing/index.jd
+++ b/docs/html/sdk/installing/index.jd
@@ -108,13 +108,13 @@
       your JDK folder, for example <code>C:\Program Files\Java\jdk1.7.0_21</code>.</p>
     </p>
     </li>
-
+    
   </ol>
 
 
 <p>The individual tools and
 other SDK packages are saved within the Android Studio application directory.
-To access the tools directly, use a terminal to navigate into the application and locate
+If you need to access the tools directly, use a terminal to navigate into the application and locate
 the {@code sdk/} directory. For example:</p>
 <p><code>\Users\&lt;user&gt;\AppData\Local\Android\android-studio\sdk\</code></p>
 
@@ -140,7 +140,7 @@
 
 <p>The individual tools and
 other SDK packages are saved within the Android Studio application directory.
-To access the tools directly, use a terminal to navigate into the application and locate
+If you need access the tools directly, use a terminal to navigate into the application and locate
 the {@code sdk/} directory. For example:</p>
 <p><code>/Applications/Android\ Studio.app/sdk/</code></p>
 
diff --git a/docs/html/sdk/installing/studio.jd b/docs/html/sdk/installing/studio.jd
index add42d6..894514a 100644
--- a/docs/html/sdk/installing/studio.jd
+++ b/docs/html/sdk/installing/studio.jd
@@ -339,18 +339,12 @@
   </tr>
 
     <tr>
-    <td>APK signing</td>
+    <td>APK signing and keystore management</td>
     <td class="yes">Yes</td>
     <td class="yes">Yes</td>
     </tr>
 
     <tr>
-    <td>Keystore management</td>
-    <td class="no">Coming soon</td>
-    <td class="yes">Yes</td>
-    </tr>
-
-    <tr>
     <td>NDK support</td>
     <td class="no">Coming soon</td>
     <td class="yes">Yes</td>
@@ -619,7 +613,7 @@
 
   function onDownloadForRealz(link) {
     if ($("input#agree").is(':checked')) {
-      $("h1").text('Now downloading Android Studio...');
+      $("h1").text('Now redirecting to the install instructions...');
       $("#tos").slideUp();
       $("#jd-content .jd-descr").fadeOut('slow', function() {
         setTimeout(function() {
diff --git a/docs/html/tv/images/hero.jpg b/docs/html/tv/images/hero.jpg
index c42a436..e951167 100644
--- a/docs/html/tv/images/hero.jpg
+++ b/docs/html/tv/images/hero.jpg
Binary files differ
diff --git a/docs/html/tv/index.jd b/docs/html/tv/index.jd
index e1cae8c..3e7652c 100644
--- a/docs/html/tv/index.jd
+++ b/docs/html/tv/index.jd
@@ -4,7 +4,6 @@
 no_footer_links=true
 page.type=about
 
-
 @jd:body
 
 <style>
@@ -14,17 +13,9 @@
 }
 </style>
 
-<style>
-#footer {
-    display: none;
-}
-.content-footer {
-  display: none;
-}
-</style>
-
 
 <div class="landing-body-content">
+
   <div class="landing-hero-container">
 
     <div class="landing-section tv-hero">
@@ -42,9 +33,11 @@
                     Put your app on TV and bring everyone into
                     the action.</p>
                 </div>
+              </div>
 
               <div class="landing-body">
-                <a href="{@docRoot}preview/tv/index.html" class="landing-button landing-primary" style="margin-top: 40px;">
+                <a href="{@docRoot}preview/tv/start/index.html" class="landing-button
+                  landing-primary" style="margin-top: 40px;">
                   Get Started
                 </a>
               </div>
@@ -58,11 +51,10 @@
         </a>
       </div>
     </div> <!-- end .landing-section .landing-hero -->
-  </div> <!-- end .landing-hero-container -->
 
     <div class="landing-rest-of-page">
 
-      <div class="landing-section landing-gray-background" id="reimagine-your-app">
+      <div class="landing-section" style="background-color:#f5f5f5" id="reimagine-your-app">
         <div class="wrap">
           <div class="landing-section-header">
             <div class="landing-h1">Reimagine Your App</div>
@@ -71,7 +63,6 @@
             </div>
           </div>
 
-
           <div class="landing-body">
             <div class="landing-breakout cols">
 
@@ -119,13 +110,13 @@
         </div>  <!-- end .wrap -->
       </div>  <!-- end .landing-section -->
 
-      <div class="landing-section" style="background-color:#f5f5f5">
+      <div class="landing-section landing-gray-background">
         <div class="wrap">
           <div class="landing-section-header">
             <div class="landing-h1">Build to Entertain</div>
             <div class="landing-subhead">
-              Android TV let's you engage your users in a new, shared environment.<br>
-              Find out how to get your app ready for it's big screen debut.
+              Android TV lets you engage your users in a new, shared environment.<br>
+              Find out how to get your app ready for its big-screen debut.
             </div>
           </div>
 
@@ -142,7 +133,7 @@
                   catalogs.
                 </p>
                 <p class="landing-small">
-                  <a href="{@docRoot}design/tv/index.html">Learn pre-built fragments</a>
+                  <a href="{@docRoot}preview/tv/ui/browse.html">Learn pre-built fragments</a>
                 </p>
               </div>
 
@@ -151,11 +142,10 @@
 
                 <p>Get Found</p>
                 <p class="landing-small">
-                  Give your content the attention it deserves by including it in Android TV's global
-                  search results.
+                  Help users find your content quickly with in-app searching.
                 </p>
                 <p class="landing-small">
-                  <a href="{@docRoot}design/tv/index.html">Learn about TV design</a>
+                  <a href="{@docRoot}preview/tv/ui/in-app-search.html">Learn about app search</a>
                 </p>
               </div>
 
@@ -167,7 +157,8 @@
                   Suggest content from your app to keep your users coming back.
                 </p>
                 <p class="landing-small">
-                  <a href="{@docRoot}design/tv/index.html">Learn about design for TV</a>
+                  <a href="{@docRoot}preview/tv/ui/recommendations.html">Learn about
+                    recommendations</a>
                 </p>
               </div>
 
@@ -182,28 +173,26 @@
           <div class="landing-section-header">
             <div class="landing-h1 landing-align-left">Get Started with Android TV</div>
             <div class="landing-body">
-              <p>You can begin building apps right away using these developer resources.</p>
+              <p>Begin building TV apps right away using these developer resources:</p>
             </div>
           </div>
 
           <div class="landing-body">
             <div class="landing-breakout cols">
-              <div class="col-8">
-                <p>Preview SDK</p>
+              <div class="col-8" style="margin-left: -8px;">
+                <p style="font-size: 24px;">L-Preview SDK</p>
                 <p>
-                  Get started building for Android TV using the Android L-preview SDK. The preview
-                  SDK includes the Android TV emulator so you can start building your TV app right
-                  away.
+                  The preview SDK includes all the tools you need to build and test apps for TV.
+                  Download it and start creating your big-screen app.
                 </p>
 
               </div>
 
               <div class="col-8">
-                <p>ADT-1 Developer Kit</p>
+                <p style="font-size: 24px;">ADT-1 Developer Kit</p>
                 <p>
-                  While supplies last, developers can request an ADT-1 Developer Kit, a compact and
-                  powerful streaming media player and gamepad, ideal for developing apps for Android
-                  TV.
+                  Request an ADT-1 Developer Kit, a compact and powerful streaming media player
+                  and gamepad, ideal for developing and testing apps for TV.
                 </p>
 
               </div>
@@ -215,15 +204,16 @@
             <div class="landing-breakout cols">
 
               <div class="col-8">
-                <a href="{@docRoot}preview/download.html" class="landing-button landing-secondary">
+                <a href="{@docRoot}preview/setup-sdk.html" class="landing-button landing-secondary">
                   Download the Preview SDK
                 </a>
               </div>
 
               <div class="col-8">
-                <a href="{@docRoot}tv/adt-1/request.html" class="landing-button landing-secondary">
+                <a href="{@docRoot}preview/tv/adt-1/request.html" class="landing-button landing-secondary">
                   Request ADT-1 Developer Kit
                 </a>
+              </div>
             </div>
           </div>
 
@@ -232,31 +222,33 @@
 
     </div> <!-- end .landing-rest-of-page -->
 
-
-    <div class="content-footer wrap" itemscope="" itemtype="http://schema.org/SiteNavigationElement">
-      <div class="layout-content-col col-16" style="padding-top:4px">
-        <style>#___plusone_0 {float:right !important;}</style>
-        <div class="g-plusone" data-size="medium"></div>
+      <div class="content-footer wrap" itemscope="" itemtype="http://schema.org/SiteNavigationElement"
+        style="border-top: none;">
+        <div class="layout-content-col col-16" style="padding-top:4px">
+          <style>#___plusone_0 {float:right !important;}</style>
+          <div class="g-plusone" data-size="medium"></div>
+        </div>
       </div>
-    </div>
-    <div id="footer" class="wrap" style="width:940px;position:relative;top:-35px;z-index:-1">
-      <div id="copyright">
-        Except as noted, this content is
-        licensed under <a href="http://creativecommons.org/licenses/by/2.5/">
-        Creative Commons Attribution 2.5</a>. For details and
-        restrictions, see the <a href="/license.html">Content
-        License</a>.
+      <div id="footer" class="wrap" style="width:940px;position:relative;top:-35px;z-index:-1">
+        <div id="copyright">
+          Except as noted, this content is
+          licensed under <a href="http://creativecommons.org/licenses/by/2.5/">
+          Creative Commons Attribution 2.5</a>. For details and
+          restrictions, see the <a href="/license.html">Content
+          License</a>.
+        </div>
       </div>
-    </div>
 
-
-  </div> <!-- end landing-body-content -->
+  </div> <!-- end .landing-hero-container -->
 
   <script>
   $("a.landing-down-arrow").on("click", function(e) {
     $("body").animate({
-      scrollTop: $(".wear-hero").height() + 76
+      scrollTop: $(".tv-hero").height() + 120
     }, 1000, "easeOutQuint");
     e.preventDefault();
   });
   </script>
+
+</div> <!-- end landing-body-content -->
+
diff --git a/docs/html/wear/index.jd b/docs/html/wear/index.jd
index 026698c..0d9325d 100644
--- a/docs/html/wear/index.jd
+++ b/docs/html/wear/index.jd
@@ -51,7 +51,7 @@
               </div>
 
               <div class="landing-body">
-                <a href="/training/wearables/index.html" class="landing-button landing-primary" style="margin-top: 40px;">
+                <a href="{@docRoot}training/building-wearables.html" class="landing-button landing-primary" style="margin-top: 40px;">
                   Get Started
                 </a>
               </div>
@@ -62,11 +62,11 @@
       </div> <!-- end .wrap -->
       <div class="landing-scroll-down-affordance">
         <a class="landing-down-arrow" href="#extending-android-to-wearables">
-          <img src="/wear/images/carrot.png" alt="Scroll down to read more">
+          <img src="{@docRoot}wear/images/carrot.png" alt="Scroll down to read more">
         </a>
       </div>
     </div> <!-- end .landing-section .landing-hero -->
-  </div> <!-- end .landing-hero-container -->
+
 
     <div class="landing-rest-of-page">
       <div class="landing-section" id="extending-android-to-wearables">
@@ -85,8 +85,8 @@
               <div class="col-3-wide">
 
                 <div class="landing-inset-video-container">
-                  <img class="landing-bezel-only" src="/wear/images/screens/bezel.png" alt="">
-                  <img class="gif" src="/wear/images/screens/reservation_animated.gif">
+                  <img class="landing-bezel-only" src="{@docRoot}wear/images/screens/bezel.png" alt="">
+                  <img class="gif" src="{@docRoot}wear/images/screens/reservation_animated.gif">
                 </div>
 
                 <p class="landing-small">
@@ -94,7 +94,7 @@
                 </p>
               </div>
               <div class="col-3-wide">
-                <img src="/wear/images/screens/circle_message2.png" itemprop="image" alt="">
+                <img src="{@docRoot}wear/images/screens/circle_message2.png" itemprop="image" alt="">
                 <p class="landing-small">
                   Get glanceable, actionable information at just the right time with notifications
                   that are synced from your handheld device.
@@ -102,7 +102,7 @@
                 </p>
               </div>
               <div class="col-3-wide">
-                <img src="/wear/images/screens/fitness-24.png" alt="">
+                <img src="{@docRoot}wear/images/screens/fitness-24.png" alt="">
                 <p class="landing-small">
                   Design apps that can access a wide range of sensors and other hardware
                    directly on the wearable.
@@ -113,7 +113,7 @@
 
             <p>
               Before you start building, check out the
-              <a href="/design/devices/wear.html">Android Wear Design Principles</a>
+              <a href="{@docRoot}design/wear/index.html">Android Wear Design Principles</a>
               to understand how to create great experiences for this exciting, new form factor.</p>
 
           </div>
@@ -133,49 +133,49 @@
           <div class="landing-body">
             <div class="landing-breakout cols">
               <div class="col-4">
-                <img src="/wear/images/features/ts2.png" alt="">
+                <img src="{@docRoot}wear/images/features/ts2.png" alt="">
                 <p>Synced Notifications</p>
                 <p class="landing-small">
                   Notifications on handhelds can automatically sync to wearables, so design them
                   with both devices in mind.
                 </p>
                 <p class="landing-small">
-                  <a href="/training/wearables/notifications/index.html">Build notifications</a>
+                  <a href="{@docRoot}training/wearables/notifications/index.html">Build notifications</a>
                 </p>
               </div>
               <div class="col-4">
-                <img src="/wear/images/features/ts1.png" alt="">
+                <img src="{@docRoot}wear/images/features/ts1.png" alt="">
                 <p>Wearable Apps</p>
                 <p class="landing-small">
                   Create custom experiences with activities, services, sensors, and much
                   more with the Android SDK.
                 </p>
                 <p class="landing-small">
-                  <a href="/training/wearables/apps/index.html/">Create wearable apps</a>
+                  <a href="{@docRoot}training/wearables/apps/index.html">Create wearable apps</a>
 
                 </p>
               </div>
               <div class="col-4">
-                <img src="/wear/images/features/ts2.png" alt="">
+                <img src="{@docRoot}wear/images/features/ts2.png" alt="">
                 <p>Send Data</p>
                 <p class="landing-small">
                   Send data and actions between handhelds and wearables with
                   data replication APIs and RPCs.
                 </p>
                 <p class="landing-small">
-                  <a href="/training/wearables/apps/index.html/">Work with the Data Layer</a>
+                  <a href="{@docRoot}training/wearables/data-layer/index.html">Work with the Data Layer</a>
 
                 </p>
               </div>
               <div class="col-4">
-                <img src="/wear/images/features/ts4.png" alt="">
+                <img src="{@docRoot}wear/images/features/ts4.png" alt="">
                 <p>Voice Actions</p>
                 <p class="landing-small">
                   Register your app to handle voice actions, like "Ok Google, take a&nbsp;note,"
                   for a hands-free experience.
                 </p>
                 <p class="landing-small">
-                  <a href="/training/wearables/apps/index.html/">Integrate voice actions</a>
+                  <a href="{@docRoot}training/wearables/apps/voice-actions.html">Integrate voice actions</a>
                 </p>
               </div>
             </div>
@@ -183,58 +183,6 @@
         </div> <!-- end .wrap -->
       </div> <!-- end .landing-section -->
 
-<!--
-
-      <div class="landing-section landing-white-background">
-        <div class="wrap">
-          <div class="landing-section-header">
-            <div class="landing-h2">Building an Ecosystem</div>
-            <div class="landing-body landing-align-center">
-              <p class="landing-small">
-                We’re working with several partners to bring you watches powered by Android Wear later this year!
-              </p>
-            </div>
-          </div>
-
-          <div class="landing-partners cols">
-            <div class="col-4">
-              <img src="/wear/images/partners/asus.png" alt="Asus">
-            </div>
-            <div class="col-4">
-              <img src="/wear/images/partners/broadcom.png" alt="Broadcom">
-            </div>
-            <div class="col-4">
-              <img src="/wear/images/partners/fossil.png" alt="Fossil">
-            </div>
-            <div class="col-4">
-              <img src="/wear/images/partners/htc.png" alt="HTC">
-            </div>
-            <div class="col-4">
-              <img src="/wear/images/partners/intel.png" alt="Intel">
-            </div>
-            <div class="col-4">
-              <img src="/wear/images/partners/lg.png" alt="LG">
-            </div>
-            <div class="col-4">
-              <img src="/wear/images/partners/mediatek.png" alt="Mediatek">
-            </div>
-            <div class="col-4">
-              <img src="/wear/images/partners/mips.png" alt="MIPS">
-            </div>
-            <div class="col-4">
-              <img src="/wear/images/partners/motorola.png" alt="Motorola">
-            </div>
-            <div class="col-4">
-              <img src="/wear/images/partners/qualcomm.png" alt="Qualcomm">
-            </div>
-            <div class="col-4">
-              <img src="/wear/images/partners/samsung.png" alt="Samsung">
-            </div>
-          </div>
-        </div> <!-- end .wrap 
-
-      </div> <!-- end .landing-section -->
-
       <div class="landing-section landing-red-background">
         <div class="wrap">
           <div class="landing-section-header">
@@ -248,7 +196,7 @@
             </div>
           </div>
           <div class="landing-body">
-            <a href="/training/wearables/index.html" class="landing-button landing-secondary" style="margin-top: 20px;">
+            <a href="{@docRoot}training/building-wearables.html" class="landing-button landing-secondary" style="margin-top: 20px;">
               Get Started
             </a>
           </div>
@@ -277,7 +225,7 @@
               </div>
               <div class="col-3-wide">
                 <a target="_blank" href="http://android-developers.blogspot.com/2014/03/android-landing-developer-preview.html">
-                  <img class="landing-social-image" src="/wear/images/blogger.png" alt="">
+                  <img class="landing-social-image" src="{@docRoot}wear/images/blogger.png" alt="">
                 </a>
                 <div class="landing-social-copy">
                   <p>Blog Post</p>
@@ -313,12 +261,10 @@
         </div> <!-- end .wrap -->
       </div> <!-- end .landing-section -->
     </div> <!-- end .landing-rest-of-page -->
-
-
     <div class="content-footer wrap" itemscope="" itemtype="http://schema.org/SiteNavigationElement">
       <div class="layout-content-col col-16" style="padding-top:4px">
         <style>#___plusone_0 {float:right !important;}</style>
-        <div id="___plusone_0" style="text-indent: 0px; margin: 0px; padding: 0px; border-style: none; float: none; line-height: normal; font-size: 1px; vertical-align: baseline; display: inline-block; width: 90px; height: 20px; background: transparent;"><iframe frameborder="0" hspace="0" marginheight="0" marginwidth="0" scrolling="no" style="position: static; top: 0px; width: 90px; margin: 0px; border-style: none; left: 0px; visibility: visible; height: 20px;" tabindex="0" vspace="0" width="100%" id="I0_1402525433965" name="I0_1402525433965" src="https://apis.google.com/u/0/_/+1/fastbutton?usegapi=1&amp;size=medium&amp;origin=http%3A%2F%2Frobertly.mtv%3A8080&amp;url=http%3A%2F%2Frobertly.mtv%3A8080%2Fwear%2Findex.html&amp;gsrc=3p&amp;jsh=m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.en.QxHQHBkhz7M.O%2Fm%3D__features__%2Fam%3DUQ%2Frt%3Dj%2Fd%3D1%2Fz%3Dzcms%2Frs%3DAItRSTMLrMyRVKsu2FQoRingre3w1MT49A#_methods=onPlusOne%2C_ready%2C_close%2C_open%2C_resizeMe%2C_renderstart%2Concircled%2Cdrefresh%2Cerefresh%2Conload&amp;id=I0_1402525433965&amp;parent=http%3A%2F%2Frobertly.mtv%3A8080&amp;pfname=&amp;rpctoken=32453860" data-gapiattached="true" title="+1"></iframe></div>
+        <div class="g-plusone" data-size="medium"></div>
       </div>
     </div>
     <div id="footer" class="wrap" style="width:940px;position:relative;top:-35px;z-index:-1">
@@ -326,9 +272,20 @@
         Except as noted, this content is
         licensed under <a href="http://creativecommons.org/licenses/by/2.5/">
         Creative Commons Attribution 2.5</a>. For details and
-        restrictions, see the <a href="/license.html">Content
+        restrictions, see the <a href="{@docRoot}license.html">Content
         License</a>.
       </div>
     </div>
-  </div> <!-- end landing-body-content -->
+  </div> <!-- end .landing-hero-container -->
+
+  <script>
+  $("a.landing-down-arrow").on("click", function(e) {
+    $("body").animate({
+      scrollTop: $(".wear-hero").height() + 120
+    }, 1000, "easeOutQuint");
+    e.preventDefault();
+  });
+  </script>
+
+</div> <!-- end landing-body-content -->
 
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
index c670b5c..610f6cf 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
@@ -2259,7 +2259,6 @@
         protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
             final DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
             final boolean isPortrait = metrics.widthPixels < metrics.heightPixels;
-
             final int widthMode = getMode(widthMeasureSpec);
             final int heightMode = getMode(heightMeasureSpec);
 
@@ -2306,11 +2305,17 @@
 
             if (mOutsetBottom != null) {
                 int mode = MeasureSpec.getMode(heightMeasureSpec);
-                if (mode != MeasureSpec.UNSPECIFIED) {
+                if (mode != MeasureSpec.UNSPECIFIED && !isPortrait) {
                     int outset = (int) mOutsetBottom.getDimension(metrics);
                     int height = MeasureSpec.getSize(heightMeasureSpec);
                     heightMeasureSpec = MeasureSpec.makeMeasureSpec(height + outset, mode);
                 }
+                mode = MeasureSpec.getMode(widthMeasureSpec);
+                if (mode != MeasureSpec.UNSPECIFIED && isPortrait) {
+                    int outset = (int) mOutsetBottom.getDimension(metrics);
+                    int width = MeasureSpec.getSize(widthMeasureSpec);
+                    widthMeasureSpec = MeasureSpec.makeMeasureSpec(width + outset, mode);
+                }
             }
 
             super.onMeasure(widthMeasureSpec, heightMeasureSpec);
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index f8ff038..f53445a 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -59,6 +59,7 @@
 import android.os.Vibrator;
 import android.provider.Settings;
 import android.service.notification.INotificationListener;
+import android.service.notification.IStatusBarNotificationHolder;
 import android.service.notification.NotificationListenerService;
 import android.service.notification.StatusBarNotification;
 import android.telephony.TelephonyManager;
@@ -241,21 +242,21 @@
             return (nid == UserHandle.USER_ALL || nid == this.userid);
         }
 
-        public void notifyPostedIfUserMatch(StatusBarNotification sbn) {
-            if (!enabledAndUserMatches(sbn)) {
+        public void notifyPostedIfUserMatch(StatusBarNotificationHolder sbnHolder) {
+            if (!enabledAndUserMatches(sbnHolder.get())) {
                 return;
             }
             try {
-                listener.onNotificationPosted(sbn);
+                listener.onNotificationPosted(sbnHolder);
             } catch (RemoteException ex) {
                 Log.e(TAG, "unable to notify listener (posted): " + listener, ex);
             }
         }
 
-        public void notifyRemovedIfUserMatch(StatusBarNotification sbn) {
-            if (!enabledAndUserMatches(sbn)) return;
+        public void notifyRemovedIfUserMatch(StatusBarNotificationHolder sbnHolder) {
+            if (!enabledAndUserMatches(sbnHolder.get())) return;
             try {
-                listener.onNotificationRemoved(sbn);
+                listener.onNotificationRemoved(sbnHolder);
             } catch (RemoteException ex) {
                 Log.e(TAG, "unable to notify listener (removed): " + listener, ex);
             }
@@ -711,12 +712,13 @@
      */
     void notifyPostedLocked(NotificationRecord n) {
         // make a copy in case changes are made to the underlying Notification object
-        final StatusBarNotification sbn = n.sbn.clone();
+        final StatusBarNotificationHolder sbnHolder = new StatusBarNotificationHolder(
+                n.sbn.clone());
         for (final NotificationListenerInfo info : mListeners) {
             mHandler.post(new Runnable() {
                 @Override
                 public void run() {
-                    info.notifyPostedIfUserMatch(sbn);
+                    info.notifyPostedIfUserMatch(sbnHolder);
                 }});
         }
     }
@@ -727,13 +729,14 @@
     void notifyRemovedLocked(NotificationRecord n) {
         // make a copy in case changes are made to the underlying Notification object
         // NOTE: this copy is lightweight: it doesn't include heavyweight parts of the notification
-        final StatusBarNotification sbn_light = n.sbn.cloneLight();
+        final StatusBarNotificationHolder sbnLightHolder = new StatusBarNotificationHolder(
+                n.sbn.cloneLight());
 
         for (final NotificationListenerInfo info : mListeners) {
             mHandler.post(new Runnable() {
                 @Override
                 public void run() {
-                    info.notifyRemovedIfUserMatch(sbn_light);
+                    info.notifyRemovedIfUserMatch(sbnLightHolder);
                 }});
         }
     }
@@ -2531,4 +2534,22 @@
             updateLightsLocked();
         }
     }
+
+    /**
+     * Wrapper for a StatusBarNotification object that allows transfer across a oneway
+     * binder without sending large amounts of data over a oneway transaction.
+     */
+    private static final class StatusBarNotificationHolder
+            extends IStatusBarNotificationHolder.Stub {
+        private final StatusBarNotification mValue;
+
+        public StatusBarNotificationHolder(StatusBarNotification value) {
+            mValue = value;
+        }
+
+        @Override
+        public StatusBarNotification get() {
+            return mValue;
+        }
+    }
 }
diff --git a/tools/layoutlib/rename_font/README b/tools/layoutlib/rename_font/README
new file mode 100644
index 0000000..600b756
--- /dev/null
+++ b/tools/layoutlib/rename_font/README
@@ -0,0 +1,9 @@
+This tool is used to rename the PS name encoded inside the ttf font that we ship
+with the SDK. There is bug in Java that returns incorrect results for
+java.awt.Font#layoutGlyphVector() if two fonts with same name but differnt
+versions are loaded. As a workaround, we rename all the fonts that we ship with
+the SDK by appending the font version to its name.
+
+
+The build_font.py copies all files from input_dir to output_dir while renaming
+the font files (*.ttf) in the process.
diff --git a/tools/layoutlib/rename_font/Roboto-Regular.ttf b/tools/layoutlib/rename_font/Roboto-Regular.ttf
new file mode 100644
index 0000000..7469063
--- /dev/null
+++ b/tools/layoutlib/rename_font/Roboto-Regular.ttf
Binary files differ
diff --git a/tools/layoutlib/rename_font/build_font.py b/tools/layoutlib/rename_font/build_font.py
new file mode 100755
index 0000000..bd9b14c
--- /dev/null
+++ b/tools/layoutlib/rename_font/build_font.py
@@ -0,0 +1,154 @@
+#!/usr/bin/env python
+
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the 'License');
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an 'AS IS' BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""
+Rename the PS name of all fonts in the input directories and copy them to the
+output directory.
+
+Usage: build_font.py /path/to/input_fonts1/ /path/to/input_fonts2/ /path/to/output_fonts/
+
+"""
+
+import sys
+# fontTools is available at platform/external/fonttools
+from fontTools import ttx
+import re
+import os
+import xml.etree.ElementTree as etree
+import shutil
+import glob
+from multiprocessing import Pool
+
+# global variable
+dest_dir = '/tmp'
+
+def main(argv):
+  if len(argv) < 2:
+    sys.exit('Usage: build_font.py /path/to/input_fonts/ /path/to/out/dir/')
+  for directory in argv:
+    if not os.path.isdir(directory):
+      sys.exit(directory + ' is not a valid directory')
+  global dest_dir
+  dest_dir = argv[-1]
+  src_dirs = argv[:-1]
+  cwd = os.getcwd()
+  os.chdir(dest_dir)
+  files = glob.glob('*')
+  for filename in files:
+    os.remove(filename)
+  os.chdir(cwd)
+  input_fonts = list()
+  for src_dir in src_dirs:
+    for dirname, dirnames, filenames in os.walk(src_dir):
+      for filename in filenames:
+          input_path = os.path.join(dirname, filename)
+          extension = os.path.splitext(filename)[1].lower()
+          if (extension == '.ttf'):
+            input_fonts.append(input_path)
+          elif (extension == '.xml'):
+            shutil.copy(input_path, dest_dir)
+      if '.git' in dirnames:
+          # don't go into any .git directories.
+          dirnames.remove('.git')
+  # Create as many threads as the number of CPUs
+  pool = Pool(processes=None)
+  pool.map(convert_font, input_fonts)
+
+
+class InvalidFontException(Exception):
+  pass
+
+def convert_font(input_path):
+  filename = os.path.basename(input_path)
+  print 'Converting font: ' + filename
+  # the path to the output file. The file name is the fontfilename.ttx
+  ttx_path = os.path.join(dest_dir, filename)
+  ttx_path = ttx_path[:-1] + 'x'
+  try:
+    # run ttx to generate an xml file in the output folder which represents all
+    # its info
+    ttx_args = ['-q', '-d', dest_dir, input_path]
+    ttx.main(ttx_args)
+    # now parse the xml file to change its PS name.
+    tree = etree.parse(ttx_path)
+    root = tree.getroot()
+    for name in root.iter('name'):
+      [old_ps_name, version] = get_font_info(name)
+      if old_ps_name is not None and version is not None:
+        new_ps_name = old_ps_name + version
+        update_name(name, new_ps_name)
+    tree.write(ttx_path, xml_declaration=True, encoding='utf-8' )
+    # generate the udpated font now.
+    ttx_args = ['-q', '-d', dest_dir, ttx_path]
+    ttx.main(ttx_args)
+  except InvalidFontException:
+    # In case of invalid fonts, we exit.
+    print filename + ' is not a valid font'
+    raise
+  except Exception as e:
+    print 'Error converting font: ' + filename
+    print e
+    # Some fonts are too big to be handled by the ttx library.
+    # Just copy paste them.
+    shutil.copy(input_path, dest_dir)
+  try:
+    # delete the temp ttx file is it exists.
+    os.remove(ttx_path)
+  except OSError:
+    pass
+
+def get_font_info(tag):
+  ps_name = None
+  ps_version = None
+  for namerecord in tag.iter('namerecord'):
+    if 'nameID' in namerecord.attrib:
+      # if the tag has nameID=6, it is the postscript name of the font.
+      # see: http://scripts.sil.org/cms/scripts/page.php?item_id=IWS-Chapter08#3054f18b
+      if namerecord.attrib['nameID'] == '6':
+        if ps_name is not None:
+          if not sanitize(namerecord.text) == ps_name:
+            raise InvalidFontException('found multiple possibilities of the font name')
+        else:
+          ps_name = sanitize(namerecord.text)
+      # nameID=5 means the font version
+      if namerecord.attrib['nameID'] == '5':
+        if ps_version is not None:
+          if not ps_version == get_version(namerecord.text):
+            raise InvalidFontException('found multiple possibilities of the font version')
+        else:
+          ps_version = get_version(namerecord.text)
+  return [ps_name, ps_version]
+
+
+def update_name(tag, name):
+  for namerecord in tag.iter('namerecord'):
+    if 'nameID' in namerecord.attrib:
+      if namerecord.attrib['nameID'] == '6':
+        namerecord.text = name
+
+def sanitize(string):
+  return re.sub(r'[^\w-]+', '', string)
+
+def get_version(string):
+  # The string must begin with 'Version n.nn '
+  # to extract n.nn, we return the second entry in the split strings.
+  string = string.strip()
+  if not string.startswith('Version '):
+    raise InvalidFontException('mal-formed font version')
+  return sanitize(string.split()[1])
+
+if __name__ == '__main__':
+  main(sys.argv[1:])
diff --git a/tools/layoutlib/rename_font/test.py b/tools/layoutlib/rename_font/test.py
new file mode 100755
index 0000000..b0b69d8
--- /dev/null
+++ b/tools/layoutlib/rename_font/test.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+
+"""Tests build_font.py by renaming a font.
+
+The test copies Roboto-Regular.ttf to a tmp directory and ask build_font.py to rename it and put in another dir.
+We then use ttx to dump the new font to its xml and check if rename was successful
+
+To test locally, use:
+PYTHONPATH="$PYTHONPATH:/path/to/android/checkout/external/fonttools/Lib" ./test.py
+"""
+
+import unittest
+import build_font
+
+from fontTools import ttx
+import os
+import xml.etree.ElementTree as etree
+import shutil
+import tempfile
+
+class MyTest(unittest.TestCase):
+  def test(self):
+    font_name = "Roboto-Regular.ttf"
+    srcdir = tempfile.mkdtemp()
+    print "srcdir: " + srcdir
+    shutil.copy(font_name, srcdir)
+    destdir = tempfile.mkdtemp()
+    print "destdir: " + destdir
+    self.assertTrue(build_font.main([srcdir, destdir]) is None)
+    out_path = os.path.join(destdir, font_name)
+    ttx.main([out_path])
+    ttx_path = out_path[:-1] + "x"
+    tree = etree.parse(ttx_path)
+    root = tree.getroot()
+    name_tag = root.find('name')
+    [f_name, f_version] = build_font.get_font_info(name_tag)
+    shutil.rmtree(srcdir)
+    shutil.rmtree(destdir)
+    self.assertEqual(f_name, "Roboto-Regular1200310")
+
+
+
+if __name__ == '__main__':
+  unittest.main()