Massive clobber of all HTML files in developer docs for new site design

Change-Id: Idc55a0b368c1d2c1e7d4999601b739dd57f08eb3
diff --git a/docs/html/guide/appendix/api-levels.jd b/docs/html/guide/appendix/api-levels.jd
deleted file mode 100644
index bc7d83b..0000000
--- a/docs/html/guide/appendix/api-levels.jd
+++ /dev/null
@@ -1,421 +0,0 @@
-page.title=Android API Levels
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <h2>In this document</h2>
-<ol>
-  <li><a href="#intro">What is API Level?</a></li>
-  <li><a href="#uses">Uses of API Level in Android</a></li>
-  <li><a href="#considerations">Development Considerations</a>
-    <ol>
-      <li><a href="#fc">Application forward compatibility</a></li>
-      <li><a href="#bc">Application backward compatibility</a></li>
-      <li><a href="#platform">Selecting a platform version and API Level</a></li>
-      <li><a href="#apilevel">Declaring a minimum API Level</a></li>
-      <li><a href="#testing">Testing against higher API Levels</a></li>
-    </ol>
-  </li>
-  <li><a href="#provisional">Using a Provisional API Level</a></li>
-  <li><a href="#filtering">Filtering the Documentation</a></li>
-</ol>
-
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</a> manifest element</li>
-  </ol>
-
-</div>
-</div>
-
-<p>As you develop your application on Android, it's useful to understand the
-platform's general approach to API change management. It's also important to
-understand the API Level identifier and the role it plays in ensuring your 
-application's compatibility with devices on which it may be installed. </p>
-
-<p>The sections below provide information about API Level and how it affects
-your applications. </p>
-
-<p>For information about how to use the "Filter by API Level" control
-available in the API reference documentation, see 
-<a href="#filtering">Filtering the documentation</a> at the 
-end of this document. </p>
-
-<h2 id="intro">What is API Level?</h2>
-
-<p>API Level is an integer value that uniquely identifies the framework API
-revision offered by a version of the Android platform.</p>
-
-<p>The Android platform provides a framework API that applications can use to
-interact with the underlying Android system. The framework API consists of:</p>
-
-<ul>
-<li>A core set of packages and classes</li>
-<li>A set of XML elements and attributes for declaring a manifest file</li>
-<li>A set of XML elements and attributes for declaring and accessing resources</li>
-<li>A set of Intents</li>
-<li>A set of permissions that applications can request, as well as permission
-enforcements included in the system</li>
-</ul>
-
-<p>Each successive version of the Android platform can include updates to the
-Android application framework API that it delivers. </p>
-
-<p>Updates to the framework API are designed so that the new API remains
-compatible with earlier versions of the API. That is, most changes in the API
-are additive and introduce new or replacement functionality. As parts of the API
-are upgraded, the older replaced parts are deprecated but are not removed, so
-that existing applications can still use them. In a very small number of cases,
-parts of the API may be modified or removed, although typically such changes are
-only needed to ensure API robustness and application or system security. All
-other API parts from earlier revisions are carried forward without
-modification.</p>
-
-<p>The framework API that an Android platform delivers is specified using an
-integer identifier called "API Level". Each Android platform version supports
-exactly one API Level, although support is implicit for all earlier API Levels
-(down to API Level 1). The initial release of the Android platform provided 
-API Level 1 and subsequent releases have incremented the API Level.</p>
-
-<p>The following table specifies the API Level supported by each version of the
-Android platform.</p>
-
-<table>
-  <tr><th>Platform Version</th><th>API Level</th><th>VERSION_CODE</th><th>Notes</th></tr>
- 
-     <tr><td><a href="{@docRoot}sdk/android-4.0.3.html">Android 4.0.3</a></td>
-    <td><a href="{@docRoot}sdk/api_diff/15/changes.html" title="Diff Report">15</a></td>
-    <td>{@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1}</td>
-    <td rowspan="2"><a href="{@docRoot}sdk/android-4.0-highlights.html">Platform
-Highlights</a></td></tr>
-
-    <tr><td><a href="{@docRoot}sdk/android-4.0.html">Android 4.0, 4.0.1, 4.0.2</a></td>
-    <td><a href="{@docRoot}sdk/api_diff/14/changes.html" title="Diff Report">14</a></td>
-    <td>{@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}</td>
-    </tr>
-  
-    <tr><td><a href="{@docRoot}sdk/android-3.2.html">Android 3.2</a></td>
-    <td><a href="{@docRoot}sdk/api_diff/13/changes.html" title="Diff Report">13</a></td>
-    <td>{@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}</td>
-    <td><!-- <a href="{@docRoot}sdk/android-3.2-highlights.html">Platform Highlights</a>--></td></tr>
-  
-  <tr><td><a href="{@docRoot}sdk/android-3.1.html">Android 3.1.x</a></td>
-    <td><a href="{@docRoot}sdk/api_diff/12/changes.html" title="Diff Report">12</a></td>
-    <td>{@link android.os.Build.VERSION_CODES#HONEYCOMB_MR1}</td>
-    <td><a href="{@docRoot}sdk/android-3.1-highlights.html">Platform Highlights</a></td></tr>
-    
-  <tr><td><a href="{@docRoot}sdk/android-3.0.html">Android 3.0.x</td>
-    <td><a href="{@docRoot}sdk/api_diff/11/changes.html" title="Diff Report">11</a></td>
-    <td>{@link android.os.Build.VERSION_CODES#HONEYCOMB}</td>
-    <td><a href="{@docRoot}sdk/android-3.0-highlights.html">Platform Highlights</a></td></tr>
-    
-  <tr><td><a href="{@docRoot}sdk/android-2.3.3.html">Android 2.3.4<br>Android 2.3.3</td>
-    <td><a href="{@docRoot}sdk/api_diff/10/changes.html" title="Diff Report">10</a></td>
-    <td>{@link android.os.Build.VERSION_CODES#GINGERBREAD_MR1}</td>
-    <td rowspan="2"><a href="{@docRoot}sdk/android-2.3-highlights.html">Platform Highlights</a></td></tr>
-  
-  <tr><td><a href="{@docRoot}sdk/android-2.3.html">Android 2.3.2<br>Android 2.3.1<br>Android 2.3</td>
-    <td><a href="{@docRoot}sdk/api_diff/9/changes.html" title="Diff Report">9</a></td>
-    <td>{@link android.os.Build.VERSION_CODES#GINGERBREAD}</td>
-    </tr>
-  
-  <tr><td><a href="{@docRoot}sdk/android-2.2.html">Android 2.2.x</td>
-    <td ><a href="{@docRoot}sdk/api_diff/8/changes.html" title="Diff Report">8</a></td>
-    <td>{@link android.os.Build.VERSION_CODES#FROYO}</td>
-    <td><a href="{@docRoot}sdk/android-2.2-highlights.html">Platform Highlights</a></td></tr>
-  
-  <tr><td><a href="{@docRoot}sdk/android-2.1.html">Android 2.1.x</td>
-    <td><a href="{@docRoot}sdk/api_diff/7/changes.html" title="Diff Report">7</a></td>
-    <td>{@link android.os.Build.VERSION_CODES#ECLAIR_MR1}</td>
-    <td rowspan="3" ><a href="{@docRoot}sdk/android-2.0-highlights.html">Platform Highlights</a></td></tr>
-    
-  <tr><td><a href="{@docRoot}sdk/android-2.0.1.html">Android 2.0.1</td>
-    <td><a href="{@docRoot}sdk/api_diff/6/changes.html" title="Diff Report">6</a></td>
-    <td>{@link android.os.Build.VERSION_CODES#ECLAIR_0_1}</td>
-    </tr>
-    
-  <tr><td><a href="{@docRoot}sdk/android-2.0.html">Android 2.0</td>
-    <td><a href="{@docRoot}sdk/api_diff/5/changes.html" title="Diff Report">5</a></td>
-    <td>{@link android.os.Build.VERSION_CODES#ECLAIR}</td>
-    </tr>
-    
-  <tr><td><a href="{@docRoot}sdk/android-1.6.html">Android 1.6</td>
-    <td><a href="{@docRoot}sdk/api_diff/4/changes.html" title="Diff Report">4</a></td>
-    <td>{@link android.os.Build.VERSION_CODES#DONUT}</td>
-    <td><a href="{@docRoot}sdk/android-1.6-highlights.html">Platform Highlights</a></td></tr>
-    
-  <tr><td><a href="{@docRoot}sdk/android-1.5.html">Android 1.5</td>
-    <td><a href="{@docRoot}sdk/api_diff/3/changes.html" title="Diff Report">3</a></td>
-    <td>{@link android.os.Build.VERSION_CODES#CUPCAKE}</td>
-    <td><a href="{@docRoot}sdk/android-1.5-highlights.html">Platform Highlights</a></td></tr>
-    
-  <tr><td><a href="{@docRoot}sdk/android-1.1.html">Android 1.1</td>
-    <td>2</td>
-    <td>{@link android.os.Build.VERSION_CODES#BASE_1_1}</td><td></td></tr>
-    
-  <tr><td>Android 1.0</td>
-    <td>1</td>
-    <td>{@link android.os.Build.VERSION_CODES#BASE}</td>
-    <td></td></tr>
-</table>
-
-
-<h2 id="uses">Uses of API Level in Android</h2>
-
-<p>The API Level identifier serves a key role in ensuring the best possible
-experience for users and application developers: 
-
-<ul>
-<li>It lets the Android platform describe the maximum framework API revision 
-that it supports</li>
-<li>It lets applications describe the framework API revision that they
-require</li>
-<li>It lets the system negotiate the installation of applications on the user's
-device, such that version-incompatible applications are not installed.</li>
-</ul>
-
-<p>Each Android platform version stores its API Level identifier internally, in
-the Android system itself. </p>
-
-<p>Applications can use a manifest element provided by the framework API &mdash;
-<code>&lt;uses-sdk&gt;</code> &mdash; to describe the minimum and maximum API
-Levels under which they are able to run, as well as the preferred API Level that
-they are designed to support. The element offers three key attributes:</p>
-
-<ul>
-<li><code>android:minSdkVersion</code> &mdash; Specifies the minimum API Level
-on which the application is able to run. The default value is "1".</li>
-<li><code>android:targetSdkVersion</code> &mdash; Specifies the API Level
-on which the application is designed to run. In some cases, this allows the
-application to use manifest elements or behaviors defined in the target
-API Level, rather than being restricted to using only those defined 
-for the minimum API Level.</li>
-<li><code>android:maxSdkVersion</code> &mdash; Specifies the maximum API Level
-on which the application is able to run. <strong>Important:</strong> Please read the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
-documentation before using this attribute.  </li>
-</ul>
-
-<p>For example, to specify the minimum system API Level that an application
-requires in order to run, the application would include in its manifest a
-<code>&lt;uses-sdk&gt;</code> element with a <code>android:minSdkVersion</code>
-attribute. The value of <code>android:minSdkVersion</code> would be the integer
-corresponding to the API Level of the earliest version of the Android platform
-under which the application can run. </p>
-
-<p>When the user attempts to install an application, or when revalidating an
-appplication after a system update, the Android system first checks the
-<code>&lt;uses-sdk&gt;</code> attributes in the application's manifest and
-compares the values against its own internal API Level. The system allows the
-installation to begin only if these conditions are met:</p>
-
-<ul>
-<li>If a <code>android:minSdkVersion</code> attribute is declared, its value
-must be less than or equal to the system's API Level integer. If not declared,
-the system assumes that the application requires API Level 1. </li>
-<li>If a <code>android:maxSdkVersion</code> attribute is declared, its value
-must be equal to or greater than the system's API Level integer. 
-If not declared, the system assumes that the application
-has no maximum API Level. Please read the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
-documentation for more information about how the system handles this attribute.</li>
-</ul>
-
-<p>When declared in an application's manifest, a <code>&lt;uses-sdk&gt;</code>
-element might look like this: </p>
-
-<pre>&lt;manifest&gt;
-  &lt;uses-sdk android:minSdkVersion="5" /&gt;
-  ...
-&lt;/manifest&gt;</pre>
-
-<p>The principal reason that an application would declare an API Level in
-<code>android:minSdkVersion</code> is to tell the Android system that it is
-using APIs that were <em>introduced</em> in the API Level specified. If the
-application were to be somehow installed on a platform with a lower API Level,
-then it would crash at run-time when it tried to access APIs that don't exist.
-The system prevents such an outcome by not allowing the application to be
-installed if the lowest API Level it requires is higher than that of the
-platform version on the target device.</p>
-
-<p>For example, the {@link android.appwidget} package was introduced with API
-Level 3. If an application uses that API, it must declare a
-<code>android:minSdkVersion</code> attribute with a value of "3". The
-application will then be installable on platforms such as Android 1.5 (API Level
-3) and Android 1.6 (API Level 4), but not on the Android 1.1 (API Level 2) and
-Android 1.0 platforms (API Level 1).</p>
-
-<p>For more information about how to specify an application's API Level
-requirements, see the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
- section of the manifest file documentation.</p>
-
-
-<h2 id="considerations">Development Considerations</h2>
-
-<p>The sections below provide information related to API level that you should
-consider when developing your application.</p>
-
-<h3 id="fc">Application forward compatibility</h3>
-
-<p>Android applications are generally forward-compatible with new versions of
-the Android platform.</p>
-
-<p>Because almost all changes to the framework API are additive, an Android
-application developed using any given version of the API (as specified by its
-API Level) is forward-compatible with later versions of the Android platform and
-higher API levels. The application should be able to run on all later versions
-of the Android platform, except in isolated cases where the application uses a
-part of the API that is later removed for some reason. </p>
-
-<p>Forward compatibility is important because many Android-powered devices
-receive over-the-air (OTA) system updates. The user may install your
-application and use it successfully, then later receive an OTA update to a new
-version of the Android platform. Once the update is installed, your application
-will run in a new run-time version of the environment, but one that has the API
-and system capabilities that your application depends on. </p>
-
-<p>In some cases, changes <em>below</em> the API, such those in the underlying
-system itself, may affect your application when it is run in the new
-environment. For that reason it's important for you, as the application
-developer, to understand how the application will look and behave in each system
-environment. To help you test your application on various versions of the Android
-platform, the Android SDK includes multiple platforms that you can download.
-Each platform includes a compatible system image that you can run in an AVD, to
-test your application. </p>
-
-<h3 id="bc">Application backward compatibility</h3>
-
-<p>Android applications are not necessarily backward compatible with versions of
-the Android platform older than the version against which they were compiled.
-</p>
-
-<p>Each new version of the Android platform can include new framework APIs, such
-as those that give applications access to new platform capabilities or replace
-existing API parts. The new APIs are accessible to applications when running on
-the new platform and, as mentioned above, also when running on later versions of
-the platform, as specified by API Level. Conversely, because earlier versions of
-the platform do not include the new APIs, applications that use the new APIs are
-unable to run on those platforms.</p>
-
-<p>Although it's unlikely that an Android-powered device would be downgraded to
-a previous version of the platform, it's important to realize that there are
-likely to be many devices in the field that run earlier versions of the
-platform. Even among devices that receive OTA updates, some might lag and
-might not receive an update for a significant amount of time. </p>
-
-<h3 id="platform">Selecting a platform version and API Level</h3>
-
-<p>When you are developing your application, you will need to choose
-the platform version against which you will compile the application. In
-general, you should compile your application against the lowest possible
-version of the platform that your application can support. 
-
-<p>You can determine the lowest possible platform version by compiling the
-application against successively lower build targets. After you determine the
-lowest version, you should create an AVD using the corresponding platform
-version (and API Level) and fully test your application. Make sure to declare a
-<code>android:minSdkVersion</code> attribute in the application's manifest and
-set its value to the API Level of the platform version. </p>
-
-<h3 id="apilevel">Declaring a minimum API Level</h3>
-
-<p>If you build an application that uses APIs or system features introduced in
-the latest platform version, you should set the
-<code>android:minSdkVersion</code> attribute to the API Level of the latest
-platform version. This ensures that users will only be able to install your
-application if their devices are running a compatible version of the Android
-platform. In turn, this ensures that your application can function properly on
-their devices. </p>
-
-<p>If your application uses APIs introduced in the latest platform version but
-does <em>not</em> declare a <code>android:minSdkVersion</code> attribute, then
-it will run properly on devices running the latest version of the platform, but
-<em>not</em> on devices running earlier versions of the platform. In the latter
-case, the application will crash at runtime when it tries to use APIs that don't
-exist on the earlier versions.</p>
-
-<h3 id="testing">Testing against higher API Levels</h3>
-
-<p>After compiling your application, you should make sure to test it on the
-platform specified in the application's <code>android:minSdkVersion</code>
-attribute. To do so, create an AVD that uses the platform version required by
-your application. Additionally, to ensure forward-compatibility, you should run
-and test the application on all platforms that use a higher API Level than that
-used by your application. </p>
-
-<p>The Android SDK includes multiple platform versions that you can use,
-including the latest version, and provides an updater tool that you can use to
-download other platform versions as necessary. </p>
-
-<p>To access the updater, use the <code>android</code> command-line tool,
-located in the &lt;sdk&gt;/tools directory. You can launch the SDK updater by
-executing <code>android sdk</code>. You can
-also simply double-click the android.bat (Windows) or android (OS X/Linux) file.
-In ADT, you can also access the updater by selecting 
-<strong>Window</strong>&nbsp;>&nbsp;<strong>Android SDK
-Manager</strong>.</p>
-
-<p>To run your application against different platform versions in the emulator,
-create an AVD for each platform version that you want to test. For more
-information about AVDs, see <a
-href="{@docRoot}guide/developing/devices/index.html">Creating and Managing Virtual Devices</a>. If
-you are using a physical device for testing, ensure that you know the API Level
-of the Android platform it runs. See the table at the top of this document for
-a list of platform versions and their API Levels. </p>
-
-<h2 id="provisional">Using a Provisional API Level</h2>
-
-<p>In some cases, an "Early Look" Android SDK platform may be available. To let
-you begin developing on the platform although the APIs may not be final, the
-platform's API Level integer will not be specified. You must instead use the
-platform's <em>provisional API Level</em> in your application manifest, in order
-to build applications against the platform. A provisional API Level is not an
-integer, but a string matching the codename of the unreleased platform version.
-The provisional API Level will be specified in the release notes for the Early
-Look SDK release notes and is case-sensitive.</p>
-
-<p>The use of a provisional API Level is designed to protect developers and
-device users from inadvertently publishing or installing applications based on
-the Early Look framework API, which may not run properly on actual devices
-running the final system image.</p>
-
-<p>The provisional API Level will only be valid while using the Early Look SDK
-and can only be used to run applications in the emulator. An application using
-the provisional API Level can never be installed on an Android device. At the
-final release of the platform, you must replace any instances of the provisional
-API Level in your application manifest with the final platform's actual API
-Level integer.</p>
-
-
-<h2 id="filtering">Filtering the Reference Documentation by API Level</h2>
-
-<p>Reference documentation pages on the Android Developers site offer a "Filter
-by API Level" control in the top-right area of each page. You can use the 
-control to show documentation only for parts of the API that are actually 
-accessible to your application, based on the API Level that it specifies in 
-the <code>android:minSdkVersion</code> attribute of its manifest file. </p>
-
-<p>To use filtering, select the checkbox to enable filtering, just below the
-page search box. Then set the "Filter by API Level" control to the same API
-Level as specified by your application. Notice that APIs introduced in a later
-API Level are then grayed out and their content is masked, since they would not
-be accessible to your application. </p>
-
-<p>Filtering by API Level in the documentation does not provide a view
-of what is new or introduced in each API Level &mdash; it simply provides a way
-to view the entire API associated with a given API Level, while excluding API
-elements introduced in later API Levels.</p>
-
-<p>If you decide that you don't want to filter the API documentation, just
-disable the feature using the checkbox. By default, API Level filtering is
-disabled, so that you can view the full framework API, regardless of API Level.
-</p>
-
-<p>Also note that the reference documentation for individual API elements
-specifies the API Level at which each element was introduced. The API Level 
-for packages and classes is specified as "Since &lt;api level&gt;" at the 
-top-right corner of the content area on each documentation page. The API Level 
-for class members is specified in their detailed description headers, 
-at the right margin. </p>
diff --git a/docs/html/guide/appendix/g-app-intents.jd b/docs/html/guide/appendix/g-app-intents.jd
index df9d29b..10ec01e 100644
--- a/docs/html/guide/appendix/g-app-intents.jd
+++ b/docs/html/guide/appendix/g-app-intents.jd
@@ -4,7 +4,7 @@
 <div class="sidebox-wrapper">
 <div class="sidebox">
 For more information about intents, see the <a
-href="{@docRoot}guide/topics/intents/intents-filters.html">Intents and Intent Filters</a>.
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters</a>.
 </div>
 </div>
 
diff --git a/docs/html/guide/appendix/glossary.jd b/docs/html/guide/appendix/glossary.jd
index 06fdef2..94cb0f0 100644
--- a/docs/html/guide/appendix/glossary.jd
+++ b/docs/html/guide/appendix/glossary.jd
@@ -42,7 +42,7 @@
         SDK. It provides tools to browse the device, copy tools on the device, and
         forward ports for debugging. If you are developing in Eclipse using the
 		ADT Plugin, adb is integrated into your development environment. See 
-		<a href="{@docRoot}guide/developing/tools/adb.html">Android Debug Bridge</a>
+		<a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a>
 		for more information. </dd>
 
     <dt id="application">Application</dt>
@@ -91,7 +91,7 @@
     with the SDK. It provides screen capture, log dump, and process
     examination capabilities. If you are developing in Eclipse using the ADT
     Plugin, DDMS is integrated into your development environment. See <a
-    href="{@docRoot}guide/developing/debugging/ddms.html">Using DDMS</a> to learn more about the program.</dd>
+    href="{@docRoot}tools/debugging/ddms.html">Using DDMS</a> to learn more about the program.</dd>
 
     <dt id="dialog">Dialog</dt> <dd> A floating window that that acts as a lightweight
     form. A dialog can have button controls only and is intended to perform a
@@ -131,7 +131,7 @@
     is responsible for resolving the best-available receiver for each Intent,
     based on the criteria supplied in the Intent and the Intent Filters
     defined by other applications. For more information, see <a
-    href="{@docRoot}guide/topics/intents/intents-filters.html">Intents and
+    href="{@docRoot}guide/components/intents-filters.html">Intents and
     Intent Filters</a>. 
     <p>Related: <a href="#intentfilter">Intent Filter</a>, <a
     href="#broadcastreceiver">Broadcast Receiver</a>.</p></dd>
@@ -145,7 +145,7 @@
     available intent filters in all applications and passes the Intent to the
     application/activity that best matches the Intent and criteria. For more
     information, see <a
-    href="{@docRoot}guide/topics/intents/intents-filters.html">Intents and
+    href="{@docRoot}guide/components/intents-filters.html">Intents and
     Intent Filters</a>. 
     <p>Related: <a href="#intent">Intent</a>, <a
     href="#broadcastreceiver">Broadcast Receiver</a>.</p></dd>
diff --git a/docs/html/guide/appendix/install-location.jd b/docs/html/guide/appendix/install-location.jd
index 63a3817..19c4b39 100644
--- a/docs/html/guide/appendix/install-location.jd
+++ b/docs/html/guide/appendix/install-location.jd
@@ -174,7 +174,7 @@
   <dt>Copy Protection</dt>
     <dd>Your application cannot be installed to a device's SD card if it uses Google Play's 
       Copy Protection feature. However, if you use Google Play's 
-      <a href="{@docRoot}guide/market/licensing.html">Application Licensing</a> instead, your 
+      <a href="{@docRoot}guide/google/play/licensing.html">Application Licensing</a> instead, your 
       application <em>can</em> be installed to internal or external storage, including SD cards.</dd>
 </dl>
 
@@ -198,7 +198,7 @@
 provide additional services when inactive. When external storage becomes unavailable and a game
 process is killed, there should be no visible effect when the storage becomes available again and
 the user restarts the game (assuming that the game properly saved its state during the normal
-<a href="{@docRoot}guide/topics/fundamentals/activities.html#Lifecycle">Activity lifecycle</a>).</p>
+<a href="{@docRoot}guide/components/activities.html#Lifecycle">Activity lifecycle</a>).</p>
 
 <p>If your application requires several megabytes for the APK file, you should
 carefully consider whether to enable the application to install on the external storage so that
diff --git a/docs/html/guide/appendix/media-formats.jd b/docs/html/guide/appendix/media-formats.jd
index 137f138..93e8136 100644
--- a/docs/html/guide/appendix/media-formats.jd
+++ b/docs/html/guide/appendix/media-formats.jd
@@ -268,9 +268,9 @@
   <thead>
   <tr>
     <th>&nbsp;</th>
-    <th style="background-color:#f3f3f3;font-weight:normal"><acronym title="Standard definition">SD</a> (Low quality)</th>
-    <th style="background-color:#f3f3f3;font-weight:normal"><acronym title="Standard definition">SD</a> (High quality)</th>
-    <th style="background-color:#f3f3f3;font-weight:normal"><acronym title="High definition">HD</a> (Not available on all devices)</th>
+    <th><acronym title="Standard definition">SD</a> (Low quality)</th>
+    <th><acronym title="Standard definition">SD</a> (High quality)</th>
+    <th><acronym title="High definition">HD</a> (Not available on all devices)</th>
   </tr>
   </thead>
   <tbody>
diff --git a/docs/html/guide/basics/what-is-android.jd b/docs/html/guide/basics/what-is-android.jd
deleted file mode 100644
index 9393fab..0000000
--- a/docs/html/guide/basics/what-is-android.jd
+++ /dev/null
@@ -1,141 +0,0 @@
-page.title=What is Android?
-@jd:body
-
-<p>Android is a software stack for mobile devices that includes an operating
-system, middleware and key applications. The <a
-href="http://developer.android.com/sdk/index.html">Android SDK</a>
-provides the tools and APIs necessary to begin developing applications on the
-Android platform using the Java programming language.</p>
-
-<h2>Features</h2>
-
-<ul>
-    <li><strong>Application framework</strong> enabling reuse and replacement
-    of components</li>
-    <li><strong>Dalvik virtual machine</strong> optimized for mobile
-        devices</li>
-    <li><strong>Integrated browser</strong> based on the open source <a
-    href="http://webkit.org/">WebKit</a> engine </li>
-    <li><strong>Optimized graphics</strong> powered by a custom 2D graphics library; 3D
-    graphics based on the OpenGL ES 1.0 specification (hardware acceleration
-    optional)</li>
-    <li><strong>SQLite</strong> for structured data storage</li>
-    <li><strong>Media support</strong> for common audio, video, and still
-    image formats (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG,
-    GIF)</li>
-    <li><strong>GSM Telephony</strong> (hardware dependent)</li>
-    <li><strong>Bluetooth, EDGE, 3G, and WiFi</strong> (hardware dependent)</li>
-    <li><strong>Camera, GPS, compass, and accelerometer</strong> (hardware dependent)</li>
-    <li><strong>Rich development environment</strong> including a device
-    emulator, tools for debugging, memory and performance profiling, and a plugin for the Eclipse IDE</li>
-</ul>
-
-<a name="os_architecture" id="os_architecture"></a>
-<h2>Android Architecture</h2> 
-
-<p>The following diagram shows the major components of the Android operating
-system. Each section is described in more detail below.</p>
-
-<p><img src="{@docRoot}images/system-architecture.jpg" alt="Android System Architecture" width="713" height="512"></p>
-
-<a name="applications" id="applications"></a>
-<h2>Applications</h2>
-
-<p>Android will ship with a set of core applications including an email
-client, SMS program, calendar, maps, browser, contacts, and
-others. All applications are written using the Java programming language.</p>
-
-<a name="application_framework" id="application_framework"></a>
-<h2>Application Framework</h2>
-
-<p>By providing an open development platform, Android
-offers developers the ability to build extremely rich and innovative
-applications. Developers are free to take advantage of the
-device hardware, access location information, run background services, set alarms,
-add notifications to the status bar, and much, much more. </p>
-
-<p>Developers have full access to the same framework APIs used by the core
-applications. The application architecture is designed to simplify the reuse
-of components; any application can publish its capabilities and any other
-application may then make use of those capabilities (subject to security
-constraints enforced by the framework). This same mechanism allows components
-to be replaced by the user.</p>
-
-<p>Underlying all applications is a set of services and systems, including:
-<ul>
-    <li>A rich and extensible set of <a
-    href="{@docRoot}resources/tutorials/views/index.html">Views</a> that can be used to
-    build an application, including lists, grids, text boxes, buttons, and even
-    an embeddable web browser</li>
-    <li><a href="{@docRoot}guide/topics/providers/content-providers.html">Content
-    Providers</a> that enable applications to access data from other
-    applications (such as Contacts), or to share their own data</li> <li>A <a
-    href="{@docRoot}guide/topics/resources/resources-i18n.html">Resource
-    Manager</a>, providing access to non-code resources such as localized
-    strings, graphics, and layout files</li>
-    <li>A {@link android.app.NotificationManager Notification Manager} that enables
-    all applications to display custom alerts in the status bar</li>
-    <li>An {@link android.app.Activity Activity Manager} that manages the
-    lifecycle of applications and provides a common navigation backstack</li>
-</ul>
-
-<p>For more details and a walkthrough of an application, see the <a
-href="{@docRoot}resources/tutorials/notepad/index.html">Notepad Tutorial</a>.</p>
-    
-<a name="libraries" id="libraries"></a>
-<h2>Libraries</h2>
-
-<p>Android includes a set of C/C++ libraries used by various components of the
-Android system. These capabilities are exposed to developers through the
-Android application framework. Some of the core libraries are listed below:</p>
-<ul>
-    <li><strong>System C library</strong> - a BSD-derived implementation of
-    the standard C system library (libc), tuned for embedded Linux-based
-    devices</li>
-    <li><strong>Media Libraries</strong> - based on PacketVideo's OpenCORE;
-    the libraries support playback and recording of many popular audio and video
-    formats, as well as static image files, including MPEG4, H.264, MP3, AAC,
-    AMR, JPG, and PNG</li>
-    <li><strong>Surface Manager</strong> - manages access to the display
-    subsystem and seamlessly composites 2D and 3D graphic layers from multiple
-    applications</li>
-    <li><strong>LibWebCore</strong> - a modern web browser engine which
-    powers both the Android browser and an embeddable web view</li>
-    <li><strong>SGL</strong> - the underlying 2D graphics
-    engine</li>
-    <li><strong>3D libraries</strong> - an implementation based on
-    OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration
-    (where available) or the included, highly optimized 3D software
-    rasterizer</li>
-    <li><strong>FreeType</strong> - bitmap and vector font rendering</li>
-    <li><strong>SQLite</strong> - a powerful and lightweight relational
-    database engine available to all applications</li>
-</ul>
-
-<a name="runtime" id="runtime"></a>
-
-<h2>Android Runtime</h2>
-
-<p>Android includes a set of core libraries that provides most of
-the functionality available in the core libraries of the Java programming
-language.</p>
-
-<p>Every Android application runs in its own process, with its own instance of
-the Dalvik virtual machine. Dalvik has been written so that a device can run
-multiple VMs efficiently. The Dalvik VM executes files in the Dalvik
-Executable (.dex) format which is optimized for minimal memory
-footprint. The VM is register-based, and runs classes
-compiled by a Java language compiler that have been transformed into the .dex
-format by the included &quot;dx&quot; tool.</p>
-
-<p>The Dalvik VM relies on the Linux kernel for underlying functionality such
-as threading and low-level memory management.</p>
-
-<a name="kernel" id="kernel"></a>
-
-<h2>Linux Kernel</h2>
-
-<p>Android relies on Linux version 2.6 for core system services such as
-security, memory management, process management, network stack, and driver
-model. The kernel also acts as an abstraction layer between the hardware and
-the rest of the software stack.</p>
diff --git a/docs/html/guide/topics/fundamentals/activities.jd b/docs/html/guide/components/activities.jd
similarity index 98%
rename from docs/html/guide/topics/fundamentals/activities.jd
rename to docs/html/guide/components/activities.jd
index b79136c..36f651f 100644
--- a/docs/html/guide/topics/fundamentals/activities.jd
+++ b/docs/html/guide/components/activities.jd
@@ -40,8 +40,7 @@
 
 <h2>See also</h2>
 <ol>
-  <li><a href="{@docRoot}resources/tutorials/hello-world.html">Hello World Tutorial</a></li>
-  <li><a href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back
+  <li><a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back
 Stack</a></li>
 </ol>
 
@@ -65,7 +64,7 @@
 takes user focus. The back stack abides to the basic "last in, first out" stack mechanism,
 so, when the user is done with the current activity and presses the <em>Back</em> button, it
 is popped from the stack (and destroyed) and the previous activity resumes. (The back stack is
-discussed more in the <a href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks
+discussed more in the <a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks
 and Back Stack</a> document.)</p>
 
 <p>When an activity is stopped because a new activity starts, it is notified of this change in state
@@ -224,7 +223,7 @@
 respond.</p>
 
 <p>For more information about how your activities can respond to intents, see the <a
-href="{@docRoot}guide/topics/intents/intents-filters.html">Intents and Intent Filters</a>
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters</a>
 document.</p>
 
 
@@ -329,7 +328,7 @@
 href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a> document.</p>
 
 <p>For more information about using intents, see the <a
-href="{@docRoot}guide/topics/intents/intents-filters.html">Intents and Intent
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent
 Filters</a> document.</p>
 
 
@@ -602,7 +601,7 @@
 definition in table 1 might still be killed by the system&mdash;but that would happen only in
 extreme circumstances when there is no other recourse. When an activity might be killed is
 discussed more in the <a
-href="{@docRoot}guide/topics/fundamentals/processes-and-threads.html">Processes and
+href="{@docRoot}guide/components/processes-and-threads.html">Processes and
 Threading</a> document.</p>
 
 
@@ -772,6 +771,6 @@
 
 <p>For more information about how Android maintains a history of activities and
 enables user multitasking, continue with the <b><a
-href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back
+href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back
 Stack</a></b> document.</p>
 -->
\ No newline at end of file
diff --git a/docs/html/guide/topics/fundamentals/bound-services.jd b/docs/html/guide/components/bound-services.jd
similarity index 97%
rename from docs/html/guide/topics/fundamentals/bound-services.jd
rename to docs/html/guide/components/bound-services.jd
index ec7d723..b6a2512 100644
--- a/docs/html/guide/topics/fundamentals/bound-services.jd
+++ b/docs/html/guide/components/bound-services.jd
@@ -42,7 +42,7 @@
 
 <h2>See also</h2>
 <ol>
-  <li><a href="{@docRoot}guide/topics/fundamentals/services.html">Services</a></li>
+  <li><a href="{@docRoot}guide/components/services.html">Services</a></li>
 </ol>
 </div>
 
@@ -54,7 +54,7 @@
 
 <p>This document shows you how to create a bound service, including how to bind
 to the service from other application components. However, you should also refer to the <a
-href="{@docRoot}guide/topics/fundamentals/services.html">Services</a> document for additional
+href="{@docRoot}guide/components/services.html">Services</a> document for additional
 information about services in general, such as how to deliver notifications from a service, set
 the service to run in the foreground, and more.</p>
 
@@ -71,7 +71,7 @@
 <div class="sidebox">
   <h3>Binding to a Started Service</h3>
 
-<p>As discussed in the <a href="{@docRoot}guide/topics/fundamentals/services.html">Services</a>
+<p>As discussed in the <a href="{@docRoot}guide/components/services.html">Services</a>
 document, you can create a service that is both started and bound. That is, the service can be
 started by calling {@link android.content.Context#startService startService()}, which allows the
 service to run indefinitely, and also allow a client to bind to the service by calling {@link
@@ -170,7 +170,7 @@
 create a bound service, because it may require multithreading capabilities and
 can result in a more complicated implementation. As such, AIDL is not suitable for most applications
 and this document does not discuss how to use it for your service. If you're certain that you need
-to use AIDL directly, see the <a href="{@docRoot}guide/developing/tools/aidl.html">AIDL</a>
+to use AIDL directly, see the <a href="{@docRoot}tools/aidl.html">AIDL</a>
 document.</p>
 
 
@@ -341,7 +341,7 @@
   <p>For most applications, the service doesn't need to perform multi-threading, so using a {@link
 android.os.Messenger} allows the service to handle one call at a time. If it's important
 that your service be multi-threaded, then you should use <a
-href="{@docRoot}guide/developing/tools/aidl.html">AIDL</a> to define your interface.</p>
+href="{@docRoot}tools/aidl.html">AIDL</a> to define your interface.</p>
 </div>
 </div>
 
@@ -625,7 +625,7 @@
 two of those activities, the service may be destroyed and recreated as the current activity unbinds
 (during pause) before the next one binds (during resume). (This activity transition for how
 activities coordinate their lifecycles is described in the <a
-href="{@docRoot}guide/topics/fundamentals/activities.html#CoordinatingActivities">Activities</a>
+href="{@docRoot}guide/components/activities.html#CoordinatingActivities">Activities</a>
 document.)</p>
 </ul>
 
@@ -668,7 +668,7 @@
 Below, figure 1 illustrates the logic for this kind of lifecycle.</p>
 
 <p>For more information about the lifecycle of an started service, see the <a
-href="{@docRoot}guide/topics/fundamentals/services.html#Lifecycle">Services</a> document.</p>
+href="{@docRoot}guide/components/services.html#Lifecycle">Services</a> document.</p>
 
 
 
diff --git a/docs/html/guide/topics/fundamentals/fragments.jd b/docs/html/guide/components/fragments.jd
similarity index 98%
rename from docs/html/guide/topics/fundamentals/fragments.jd
rename to docs/html/guide/components/fragments.jd
index 2a22394..938e0ab 100644
--- a/docs/html/guide/topics/fundamentals/fragments.jd
+++ b/docs/html/guide/components/fragments.jd
@@ -73,7 +73,7 @@
 affected by the host activity's lifecycle. For example, when the activity is paused, so are all
 fragments in it, and when the activity is destroyed, so are all fragments. However, while an
 activity is running (it is in the <em>resumed</em> <a
-href="{@docRoot}guide/topics/fundamentals/activities.html#Lifecycle">lifecycle state</a>), you can
+href="{@docRoot}guide/components/activities.html#Lifecycle">lifecycle state</a>), you can
 manipulate each fragment independently, such as add or remove them. When you perform such a
 fragment transaction, you can also add it to a back stack that's managed by the
 activity&mdash;each back stack entry in the activity is a record of the fragment transaction that
@@ -499,7 +499,7 @@
 
 <p class="caution"><strong>Caution:</strong> You can commit a transaction using {@link
 android.app.FragmentTransaction#commit commit()} only prior to the activity <a
-href="{@docRoot}guide/topics/fundamentals/activities.html#SavingActivityState">saving its
+href="{@docRoot}guide/components/activities.html#SavingActivityState">saving its
 state</a> (when the user leaves the activity). If you attempt to commit after that point, an
 exception will be thrown. This is because the state after the commit can be lost if the activity
 needs to be restored. For situations in which its okay that you lose the commit, use {@link
@@ -690,14 +690,14 @@
 android.app.Fragment#onCreateView onCreateView()}, or {@link
 android.app.Fragment#onActivityCreated onActivityCreated()}. For more information about saving
 state, see the <a
-href="{@docRoot}guide/topics/fundamentals/activities.html#SavingActivityState">Activities</a>
+href="{@docRoot}guide/components/activities.html#SavingActivityState">Activities</a>
 document.</p>
 
 <p>The most significant difference in lifecycle between an activity and a fragment is how one is
 stored in its respective back stack. An activity is placed into a back stack of activities
 that's managed by the system when it's stopped, by default (so that the user can navigate back
 to it with the <em>Back</em> button, as discussed in <a
-href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back Stack</a>).
+href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back Stack</a>).
 However, a fragment is placed into a back stack managed by the host activity only when you
 explicitly request that the instance be saved by calling {@link
 android.app.FragmentTransaction#addToBackStack(String) addToBackStack()} during a transaction that
@@ -705,7 +705,7 @@
 
 <p>Otherwise, managing the fragment lifecycle is very similar to managing the activity
 lifecycle. So, the same practices for <a
-href="{@docRoot}guide/topics/fundamentals/activities.html#Lifecycle">managing the activity
+href="{@docRoot}guide/components/activities.html#Lifecycle">managing the activity
 lifecycle</a> also apply to fragments. What you also need to understand, though, is how the life
 of the activity affects the life of the fragment.</p>
 
diff --git a/docs/html/guide/topics/fundamentals.jd b/docs/html/guide/components/fundamentals.jd
similarity index 96%
rename from docs/html/guide/topics/fundamentals.jd
rename to docs/html/guide/components/fundamentals.jd
index a86d905..1717782 100644
--- a/docs/html/guide/topics/fundamentals.jd
+++ b/docs/html/guide/components/fundamentals.jd
@@ -123,7 +123,7 @@
 activity in the email application that composes new mail, in order for the user to share a picture.
 
 <p>An activity is implemented as a subclass of {@link android.app.Activity} and you can learn more
-about it in the <a href="{@docRoot}guide/topics/fundamentals/activities.html">Activities</a>
+about it in the <a href="{@docRoot}guide/components/activities.html">Activities</a>
 developer guide.</p>
 </dd>
 
@@ -138,7 +138,7 @@
 service and let it run or bind to it in order to interact with it.
 
 <p>A service is implemented as a subclass of {@link android.app.Service} and you can learn more
-about it in the <a href="{@docRoot}guide/topics/fundamentals/services.html">Services</a> developer
+about it in the <a href="{@docRoot}guide/components/services.html">Services</a> developer
 guide.</p>
 </dd>
 
@@ -262,11 +262,11 @@
 </ul>
 
 <p>For more information about using intents, see the <a
-href="{@docRoot}guide/topics/intents/intents-filters.html">Intents and
+href="{@docRoot}guide/components/intents-filters.html">Intents and
 Intent Filters</a> document. More information about activating specific components is also provided
 in the following documents: <a
-href="{@docRoot}guide/topics/fundamentals/activities.html">Activities</a>, <a
-href="{@docRoot}guide/topics/fundamentals/services.html">Services</a>, {@link
+href="{@docRoot}guide/components/activities.html">Activities</a>, <a
+href="{@docRoot}guide/components/services.html">Services</a>, {@link
 android.content.BroadcastReceiver} and <a
 href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>.</p>
 
@@ -283,7 +283,7 @@
 <ul>
   <li>Identify any user permissions the application requires, such as Internet access or
 read-access to the user's contacts.</li>
-  <li>Declare the minimum <a href="{@docRoot}guide/appendix/api-levels.html">API Level</a>
+  <li>Declare the minimum <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Level</a>
 required by the application, based on which APIs the application uses.</li>
   <li>Declare hardware and software features used or required by the application, such as a camera,
 bluetooth services, or a multitouch screen.</li>
@@ -380,7 +380,7 @@
 startActivity()}.</p>
 
 <p>For more about creating intent filters, see the <a
-href="{@docRoot}guide/topics/intents/intents-filters.html">Intents and Intent Filters</a> document.
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters</a> document.
 </p>
 
 
@@ -396,7 +396,7 @@
 for users when they search for applications from their device.</p>
 
 <p>For example, if your application requires a camera and uses APIs introduced in Android 2.1 (<a
-href="{@docRoot}guide/appendix/api-levels.html">API Level</a> 7), you should declare these as
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Level</a> 7), you should declare these as
 requirements in your manifest file. That way, devices that do <em>not</em> have a camera and have an
 Android version <em>lower</em> than 2.1 cannot install your application from Google Play.</p>
 
@@ -450,7 +450,7 @@
 such as Android 1.6 or Android 2.3. Each successive version often includes additional APIs not
 available in the previous version. In order to indicate which set of APIs are available, each
 platform version specifies an <a
-href="{@docRoot}guide/appendix/api-levels.html">API Level</a> (for example, Android 1.0 is API Level
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Level</a> (for example, Android 1.0 is API Level
 1 and Android 2.3 is API Level 9). If you use any APIs that were added to the platform after
 version 1.0, you should declare the minimum API Level in which those APIs were introduced using the
 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">{@code &lt;uses-sdk&gt;}</a>
@@ -463,7 +463,7 @@
 devices that meet all your application requirements.</p>
 
 <p>For more information about how Google Play filters applications based on these (and other)
-requirements, see the <a href="{@docRoot}guide/appendix/market-filters.html">Filters on Google Play</a>
+requirements, see the <a href="{@docRoot}guide/google/play/filters.html">Filters on Google Play</a>
 document.</p>
 
 
@@ -514,5 +514,5 @@
 
 <p>For a close look at implementing activities&mdash;the components your users use to
 interact with your application&mdash;continue with the <b><a
-href="{@docRoot}guide/topics/fundamentals/activities.html">Activities</a></b> document.</p>
+href="{@docRoot}guide/components/activities.html">Activities</a></b> document.</p>
 -->
diff --git a/docs/html/guide/components/index.jd b/docs/html/guide/components/index.jd
new file mode 100644
index 0000000..87bae53
--- /dev/null
+++ b/docs/html/guide/components/index.jd
@@ -0,0 +1,56 @@
+page.title=App Components
+page.landing=true
+page.landing.intro=Android's application framework lets you create extremely rich and innovative apps using a set of reusable components. This section explains how Android apps work and how you use components to build them. 
+page.landing.image=images/develop/app_components.png
+
+@jd:body
+
+<div class="landing-docs">
+
+  <div class="col-6">
+    <h3>Blog Articles</h3>
+    
+    <a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
+      <h4>Using DialogFragments</h4>
+      <p>In this post, I’ll show how to use DialogFragments with the v4 support library (for backward compatibility on pre-Honeycomb devices) to show a simple edit dialog and return a result to the calling Activity using an interface.</p>
+    </a>
+
+    <a href="http://android-developers.blogspot.com/2011/03/fragments-for-all.html">
+      <h4>Fragments For All</h4>
+      <p>Today we’ve released a static library that exposes the same Fragments API (as well as the new LoaderManager and a few other classes) so that applications compatible with Android 1.6 or later can use fragments to create tablet-compatible user interfaces. </p>
+    </a>
+    
+    <a
+href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
+      <h4>Multithreading for Performance</h4>
+      <p>A good practice in creating responsive applications is to make sure your main UI thread
+does the minimum amount of work. Any potentially long task that may hang your application should be
+handled in a different thread.</p>
+    </a>
+  </div>
+
+  <div class="col-6">
+    <h3>Training</h3>
+    
+    <a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
+      <h4>Managing the Activity Lifecycle</h4>
+      <p>This class explains important lifecycle callback methods that each Activity
+      instance receives and how you can use them so your activity does what the user expects and does not consume system
+      resources when your activity doesn't need them.</p>
+    </a>
+
+    <a href="http://developer.android.com/training/basics/fragments/index.html">
+      <h4>Building a Dynamic UI with Fragments</h4>
+      <p>This class shows you how to create a dynamic user experience with fragments and optimize
+your app's user experience for devices with different screen sizes, all while continuing to support
+devices running versions as old as Android 1.6.</p>
+    </a>
+
+    <a href="http://developer.android.com/training/sharing/index.html">
+      <h4>Sharing Content</h4>
+      <p>This class covers some common ways you can send and receive content between
+      applications using Intent APIs and the ActionProvider object.</p>
+    </a>
+  </div>
+
+</div>
diff --git a/docs/html/guide/topics/intents/intents-filters.jd b/docs/html/guide/components/intents-filters.jd
similarity index 100%
rename from docs/html/guide/topics/intents/intents-filters.jd
rename to docs/html/guide/components/intents-filters.jd
diff --git a/docs/html/guide/topics/fundamentals/loaders.jd b/docs/html/guide/components/loaders.jd
similarity index 100%
rename from docs/html/guide/topics/fundamentals/loaders.jd
rename to docs/html/guide/components/loaders.jd
diff --git a/docs/html/guide/topics/fundamentals/processes-and-threads.jd b/docs/html/guide/components/processes-and-threads.jd
similarity index 72%
rename from docs/html/guide/topics/fundamentals/processes-and-threads.jd
rename to docs/html/guide/components/processes-and-threads.jd
index 814d34e..07a2667 100644
--- a/docs/html/guide/topics/fundamentals/processes-and-threads.jd
+++ b/docs/html/guide/components/processes-and-threads.jd
@@ -30,12 +30,11 @@
 </div>
 </div>
 
-<p>When an application component starts and the process that should host that thread is not already
+<p>When an application component starts and the application does not have any other components
 running, the Android system starts a new Linux process for the application with a single thread of
 execution. By default, all components of the same application run in the same process and thread
 (called the "main" thread). If an application component starts and there already exists a process
-for that application (because another component from the application exists or Android has been
-able to retain its previous process cached in the background), then the component is
+for that application (because another component from the application exists), then the component is
 started within that process and uses the same thread of execution. However, you can arrange for
 different components in your application to run in separate processes, and you can create additional
 threads for any process.</p>
@@ -87,10 +86,7 @@
 importance are eliminated first, then those with the next lowest importance, and so on, as necessary
 to recover system resources.</p>
 
-<p>The exact mapping of processes to importance and the management of these processes is
-an implementation detail of the platform that changes over time.  Broadly speaking, there
-are five levels in the current implementation that are of most relevance to application
-developers.  The following list presents these different
+<p>There are five levels in the importance hierarchy. The following list presents the different
 types of processes in order of importance (the first process is <em>most important</em> and is
 <em>killed last</em>):</p>
 
@@ -104,15 +100,18 @@
 android.app.Activity}'s {@link android.app.Activity#onResume onResume()} method has been
 called).</li>
 
+        <li>It hosts a {@link android.app.Service} that's bound to the activity that the user is
+interacting with.</li>
+
+        <li>It hosts a {@link android.app.Service} that's running "in the foreground"&mdash;the
+service has called {@link android.app.Service#startForeground startForeground()}.
+
         <li>It hosts a {@link android.app.Service} that's executing one of its lifecycle
 callbacks ({@link android.app.Service#onCreate onCreate()}, {@link android.app.Service#onStart
 onStart()}, or {@link android.app.Service#onDestroy onDestroy()}).</li>
 
         <li>It hosts a {@link android.content.BroadcastReceiver} that's executing its {@link
         android.content.BroadcastReceiver#onReceive onReceive()} method.</li>
-
-        <li>Another foreground process has a dependency on this one: either bound
-        to a Service in this process, or using a Content Provider of the process.</li>
     </ul>
 
     <p>Generally, only a few foreground processes exist at any given time.  They are killed only as
@@ -131,79 +130,43 @@
 This might occur, for example, if the foreground activity started a dialog, which allows the
 previous activity to be seen behind it.</li>
 
-        <li>Another visible process has a dependency on this one: either bound
-        to a Service in this process, or using a Content Provider of the process.</li>
+        <li>It hosts a {@link android.app.Service} that's bound to a visible (or foreground)
+activity.</li>
       </ul>
 
       <p>A visible process is considered extremely important and will not be killed unless doing so
 is required to keep all foreground processes running. </p>
     </li>
 
-  <li><b>Perceptible process</b>
-    <p>A process that doesn't have any foreground or visible components, but is still
-      doing something that is directly perceptible by the user.  A classic example of such
-      a process would be one doing background music playback.  The main way applications
-      get into this state is through {@link android.app.Service#startForeground} or because
-      another perceptible process has a dependency on one of its services or content
-      providers.  In addition, as of {@link android.os.Build.VERSION_CODES#HONEYCOMB},
-      processes can go into this state when {@link android.app.Activity#onStop
-      Activity.onStop()} is executing, allowing the process to continue executing
-      critical code after no longer being visible to the user but before going
-      fully into the background.</p>
-
-      <p>Like visible processes, a perceptible process is considered extremely important
-      and will not be killed unless doing so is required to keep all foreground and
-      visible processes running. </p>
-    </li>
-
   <li><b>Service process</b>
     <p>A process that is running a service that has been started with the {@link
-android.content.Context#startService startService()} method and does not fall into any of the
+android.content.Context#startService startService()} method and does not fall into either of the two
 higher categories. Although service processes are not directly tied to anything the user sees, they
-are generally doing things that the user cares about (such as downloading a file the user has requested),
-so the system keeps them running unless there's not enough memory to retain them along with all
-foreground and visible processes. </p>
-
-    <p>Even though Android tries to keep these processes running, it is considered normal
-    operation for them to temporarily be killed to support the needs of more important
-    processes.  For example, if the user opens a very heavy-weight web page that needs
-    most of the device's RAM, background services may be temporarily killed to satisfy
-    those needs.  Services in these processes thus must be prepared to deal gracefully
-    with being killed while doing their work and later restarted.</p>
-
-    <p>In recent implementations of Android, there are actually a number of sub-divisions
-    in this area for processes that Android considers more important to the user and so
-    would like to try harder to keep around.  For example, the process hosting the current
-    home app is generally kept in this area so that the user will not see long delays in
-    returning home because that process has been killed.</p>
+are generally doing things that the user cares about (such as playing music in the background or
+downloading  data on the network), so the system keeps them running unless there's not enough memory
+to retain them along with all foreground and visible processes. </p>
   </li>
 
-  <li><b>Background (cached) process</b>
-    <p>The final importance level is for processes that are not of current significance.
-    This is basically any process that does not fall into one of the previous levels.
-    These processes have no direct impact on the user experience, and the system can kill
-    them at any time to reclaim memory for the other more important processes.
-    This includes everything from processes holding running activity objects that are not currently
-    visible to the user (the activity's {@link android.app.Activity#onStop onStop()}
-    method has been called) to processes that have no active code at all but may be
-    useful to keep around in case they are needed in the near future.</p>
-
-    <p>Usually there are many background processes being maintained, so they are kept
-    in an LRU list to allow older processes to be killed before more recent ones.  This
-    helps reduce the frequency that new processes need to be creating, facilitating things
-    like more rapid switching between the applications the user has recently visited.
-    However, processes in this state must deal correctly with being killed and later
-    restarted when needed.  For example, if an activity implements its lifecycle methods
+  <li><b>Background process</b>
+    <p>A process holding an activity that's not currently visible to the user  (the activity's
+{@link android.app.Activity#onStop onStop()} method has been called). These processes have no direct
+impact on the user experience, and the system can kill them at any time to reclaim memory for a
+foreground,
+visible, or service process. Usually there are many background processes running, so they are kept
+in an LRU (least recently used) list to ensure that the process with the activity that was most
+recently seen by the user is the last to be killed. If an activity implements its lifecycle methods
 correctly, and saves its current state, killing its process will not have a visible effect on
 the user experience, because when the user navigates back to the activity, the activity restores
 all of its visible state. See the <a
-href="{@docRoot}guide/topics/fundamentals/activities.html#SavingActivityState">Activities</a>
+href="{@docRoot}guide/components/activities.html#SavingActivityState">Activities</a>
 document for information about saving and restoring state.</p>
+  </li>
 
-    <p>Android may also employ other additional policies for killing background processes.  For
-    example, there are typically restrictions on a maximum number of such processes to
-    keep around, and limits on the amount of time they can spend holding wake locks
-    or consuming CPU power until they will be removed.</p>
+  <li><b>Empty process</b>
+    <p>A process that doesn't hold any active application components.  The only reason to keep this
+kind of process alive is for caching purposes, to improve startup time the next time a component
+needs to run in it.  The system often kills these processes in order to balance overall system
+resources between process caches and the underlying kernel caches.</p>
   </li>
 </ol>
 
@@ -213,48 +176,23 @@
 activity, the process is ranked as a visible process, not a service process.</p>
 
   <p>In addition, a process's ranking might be increased because other processes are dependent on
-it&mdash;a process that is serving another process can not generally be ranked lower than the process it is
+it&mdash;a process that is serving another process can never be ranked lower than the process it is
 serving. For example, if a content provider in process A is serving a client in process B, or if a
-service in process A has been bound to by a client in process B, process A is always considered at least
+service in process A is bound to a component in process B, process A is always considered at least
 as important as process B.</p>
 
   <p>Because a process running a service is ranked higher than a process with background activities,
-an activity that initiates a long-running operation may sometimes start a <a
-href="{@docRoot}guide/topics/fundamentals/services.html">service</a> for that operation, rather than
-simply create a worker thread&mdash;but only when the operation is a specific task that needs
-to be accomplished regardless of whether the user returns to the application.
+an activity that initiates a long-running operation might do well to start a <a
+href="{@docRoot}guide/components/services.html">service</a> for that operation, rather than
+simply create a worker thread&mdash;particularly if the operation will likely outlast the activity.
 For example, an activity that's uploading a picture to a web site should start a service to perform
 the upload so that the upload can continue in the background even if the user leaves the activity.
 Using a service guarantees that the operation will have at least "service process" priority,
-regardless of what happens to the activity.  This is not however an approach that should always
-be used.  It would not be appropriate when simply downloading the data for a web page, since
-that can easily be restarted later if the user returns to the web browser.  Allowing
-such a process to be in the background (instead of running a service) gives Android better
-information about how to manage that process in relation to others.
+regardless of what happens to the activity. This is the same reason that broadcast receivers should
+employ services rather than simply put time-consuming operations in a thread.</p>
 
-  <p>For a similar reason, broadcast receivers will often employ services rather than
-  simply put time-consuming operations in a thread.</p>
 
-  <p>Some command line tools are available to help you understand how Android is managing
-  its processes.  The most common command is <code>adb shell dumpsys activity</code>
-  which provides a summary of various key state, including at the end a list of the
-  process states, one per line (plus an optional second line for any key dependency
-  on that process), ordered from higher importance to lowest.  The exact
-  contents of these lines has changed across different versions of Android, but the
-  typical state for one process in the list would be:</p>
-  <pre>
-Proc # 2: adj=prcp /F  trm= 0 848:com.google.android.inputmethod.latin/u0a32 (service)
-    com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME<=Proc{417:system/1000}
-</pre>
 
-  <p>This is a perceptible process (adj=prcp) that is running with the foreground
-  scheduling class (/F), and has not recently been told to trim any memory
-  (trm= 0).  Its process id is 848; its name is com.google.android.inputmethod.latin;
-  its Linux uid is u0a32 (10032), and the key state contributing to its current
-  importance level is a service.</p>
-
-  <p>The second line provides the name of the service that is important, because another
-  process has a dependency on it (here the system process).</p>
 
 <h2 id="Threads">Threads</h2>
 
@@ -283,7 +221,7 @@
 including drawing events. From the user's perspective, the
 application appears to hang. Even worse, if the UI thread is blocked for more than a few seconds
 (about 5 seconds currently) the user is presented with the infamous "<a
-href="http://developer.android.com/guide/practices/design/responsiveness.html">application not
+href="http://developer.android.com/guide/practices/responsiveness.html">application not
 responding</a>" (ANR) dialog. The user might then decide to quit your application and uninstall it
 if they are unhappy.</p>
 
@@ -436,7 +374,7 @@
 therefore must be written to be thread-safe. </p>
 
 <p>This is primarily true for methods that can be called remotely&mdash;such as methods in a <a
-href="{@docRoot}guide/topics/fundamentals/bound-services.html">bound service</a>. When a call on a
+href="{@docRoot}guide/components/bound-services.html">bound service</a>. When a call on a
 method implemented in an {@link android.os.IBinder} originates in the same process in which the
 {@link android.os.IBinder IBinder} is running, the method is executed in the caller's thread.
 However, when the call originates in another process, the method is executed in a thread chosen from
@@ -474,7 +412,7 @@
 
 <p>To perform IPC, your application must bind to a service, using {@link
 android.content.Context#bindService bindService()}. For more information, see the <a
-href="{@docRoot}guide/topics/fundamentals/services.html">Services</a> developer guide.</p>
+href="{@docRoot}guide/components/services.html">Services</a> developer guide.</p>
 
 
 <!--
@@ -482,5 +420,5 @@
 
 <p>For information about how to perform work in the background for an indefinite period of time
 (without a user interface), continue with the <b><a
-href="{@docRoot}guide/topics/fundamentals/services.html">Services</a></b> document.</p>
+href="{@docRoot}guide/components/services.html">Services</a></b> document.</p>
 -->
diff --git a/docs/html/guide/topics/fundamentals/services.jd b/docs/html/guide/components/services.jd
similarity index 98%
rename from docs/html/guide/topics/fundamentals/services.jd
rename to docs/html/guide/components/services.jd
index 9c38897..ba5e1f0 100644
--- a/docs/html/guide/topics/fundamentals/services.jd
+++ b/docs/html/guide/components/services.jd
@@ -58,7 +58,7 @@
 
 <h2>See also</h2>
 <ol>
-<li><a href="{@docRoot}guide/topics/fundamentals/bound-services.html">Bound Services</a></li>
+<li><a href="{@docRoot}guide/components/bound-services.html">Bound Services</a></li>
 </ol>
 
 </div>
@@ -128,7 +128,7 @@
 android.app.Activity#onStart onStart()}, then stop it in {@link android.app.Activity#onStop
 onStop()}. Also consider using {@link android.os.AsyncTask} or {@link android.os.HandlerThread},
 instead of the traditional {@link java.lang.Thread} class. See the <a
-href="{@docRoot}guide/topics/fundamentals/processes-and-threads.html#Threads">Processes and
+href="{@docRoot}guide/components/processes-and-threads.html#Threads">Processes and
 Threading</a> document for more information about threads.</p>
   <p>Remember that if you do use a service, it still runs in your application's main thread by
 default, so you should still create a new thread within the service if it performs intensive or
@@ -190,7 +190,7 @@
 available again (though this also depends on the value you return from {@link
 android.app.Service#onStartCommand onStartCommand()}, as discussed later). For more information
 about when the system might destroy a service, see the <a
-href="{@docRoot}guide/topics/fundamentals/processes-and-threads.html">Processes and Threading</a>
+href="{@docRoot}guide/components/processes-and-threads.html">Processes and Threading</a>
 document.</p>
 
 <p>In the following sections, you'll see how you can create each type of service and how to use
@@ -252,7 +252,7 @@
 filters.</p>
 
 <p>For more information about creating intent filters for your service, see the <a
-href="{@docRoot}guide/topics/intents/intents-filters.html">Intents and Intent Filters</a>
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters</a>
 document.</p>
 
 
@@ -643,7 +643,7 @@
 <p>There are multiple ways to implement a bound service and the implementation is more
 complicated than a started service, so the bound service discussion appears in a separate
 document about <a
-href="{@docRoot}guide/topics/fundamentals/bound-services.html">Bound Services</a>.</p>
+href="{@docRoot}guide/components/bound-services.html">Bound Services</a>.</p>
 
 
 
@@ -857,10 +857,10 @@
 {@link android.content.Context#bindService bindService()}).</p>
 
 <p>For more information about creating a service that provides binding, see the <a
-href="{@docRoot}guide/topics/fundamentals/bound-services.html">Bound Services</a> document,
+href="{@docRoot}guide/components/bound-services.html">Bound Services</a> document,
 which includes more information about the {@link android.app.Service#onRebind onRebind()}
 callback method in the section about <a
-href="{@docRoot}guide/topics/fundamentals/bound-services.html#Lifecycle">Managing the Lifecycle of
+href="{@docRoot}guide/components/bound-services.html#Lifecycle">Managing the Lifecycle of
 a Bound Service</a>.</p>
 
 
diff --git a/docs/html/guide/topics/fundamentals/tasks-and-back-stack.jd b/docs/html/guide/components/tasks-and-back-stack.jd
similarity index 98%
rename from docs/html/guide/topics/fundamentals/tasks-and-back-stack.jd
rename to docs/html/guide/components/tasks-and-back-stack.jd
index 0880614..8b7041c 100644
--- a/docs/html/guide/topics/fundamentals/tasks-and-back-stack.jd
+++ b/docs/html/guide/components/tasks-and-back-stack.jd
@@ -29,14 +29,13 @@
 
 <h2>Articles</h2>
 <ol>
-  <li><a href="{@docRoot}resources/articles/multitasking-android-way.html">Multitasking the Android Way</a></li>
+  <li><a href="http://android-developers.blogspot.com/2010/04/multitasking-android-way.html">Multitasking the Android Way</a></li>
 </ol>
 
 <h2>See also</h2>
 <ol>
   <li><a href="{@docRoot}design/patterns/navigation.html">Android Design:
 Navigation</a></li>
-  <li><a href="{@docRoot}videos/index.html#v=fL6gSd4ugSI">Application Lifecycle video</a></li>
   <li><a
 href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;} manifest
 element</a></li>
@@ -46,7 +45,7 @@
 
 
 <p>An application usually contains multiple <a
-href="{@docRoot}guide/topics/fundamentals/activities.html">activities</a>. Each activity
+href="{@docRoot}guide/components/activities.html">activities</a>. Each activity
 should be designed around a specific kind of action the user can perform and can start other
 activities. For example, an email application might have one activity to show a list of new email.
 When the user selects an email, a new activity opens to view that email.</p>
@@ -210,7 +209,7 @@
 methods in your activity.</p>
 
 <p>For more information about how to save your activity state, see the <a
-href="{@docRoot}guide/topics/fundamentals/activities.html#SavingActivityState">Activities</a>
+href="{@docRoot}guide/components/activities.html#SavingActivityState">Activities</a>
 document.</p>
 
 
@@ -591,6 +590,6 @@
 <p>For more information about how to use intents to
 activate other application components and publish the intents to which your components
 respond, continue with the <b><a
-href="{@docRoot}guide/topics/intents/intents-filters.html">Intents and Intent
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent
 Filters</a></b> document.</p>
 -->
diff --git a/docs/html/guide/developing/building/building-cmdline.jd b/docs/html/guide/developing/building/building-cmdline.jd
deleted file mode 100644
index fd90b1a..0000000
--- a/docs/html/guide/developing/building/building-cmdline.jd
+++ /dev/null
@@ -1,371 +0,0 @@
-page.title=Building and Running from the Command Line
-parent.title=Building and Running
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-      <ol>
-        <li><a href="#DebugMode">Building in Debug Mode</a></li>
-        <li><a href="#ReleaseMode">Building in Release Mode</a>
-          <ol>
-            <li><a href="#ManualReleaseMode">Build unsigned</a></li>
-            <li><a href="#AutoReleaseMode">Build signed and aligned</a></li>
-            <li><a href="#OnceBuilt">Once built and signed in release mode</a></li>
-          </ol>
-        </li>
-        <li><a href="#RunningOnEmulator">Running on the Emulator</a></li>
-        <li><a href="#RunningOnDevice">Running on a Device</a></li>
-        <li><a href="#Signing">Application Signing</a></li>
-        <li><a href="#AntReference">Ant Command Reference</a></li>
-      </ol>
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}guide/developing/devices/managing-avds-cmdline.html">Managing AVDs from
-the Command Line</a></li>
-    <li><a href="{@docRoot}guide/developing/devices/emulator.html">Using the Android
-Emulator</a></li>
-    <li><a href="{@docRoot}guide/publishing/app-signing.html">Signing Your Applications</a></li>
-  </ol>
-    </div>
-  </div>
-
-  <p>There are two ways to build your application using the Ant build script: one for
-  testing/debugging your application &mdash; <em>debug mode</em> &mdash; and one for building your
-  final package for release &mdash; <em>release mode</em>. Regardless of which way you build your application,
-  it must be signed before it can install on an emulator or device&mdash;with a debug key when building
-  in debug mode and with your own private key when building in release mode.</p>
-
-  <p>Whether you're building in debug mode or release mode, you need to use the Ant tool to compile
-  and build your project. This will create the .apk file that you can install on an emulator or device.
-  When you build in debug mode, the .apk file is automatically signed by the SDK tools with
-  a debug key, so it's instantly ready for installation onto an emulator or attached
-  development device. You cannot distribute an application that is signed with a debug key.
-  When you build in release mode, the .apk file is <em>unsigned</em>, so you
-  must manually sign it with your own private key, using Keytool and Jarsigner.</p>
-
-  <p>It's important that you read and understand <a href=
-  "{@docRoot}guide/publishing/app-signing.html">Signing Your Applications</a>, particularly once
-  you're ready to release your application and share it with end-users. That document describes the
-  procedure for generating a private key and then using it to sign your .apk file. If you're just
-  getting started, however, you can quickly run your applications on an emulator or your own
-  development device by building in debug mode.</p>
-
-  <p>If you don't have Ant, you can obtain it from the <a href="http://ant.apache.org/">Apache Ant
-  home page</a>. Install it and make sure it is in your executable PATH. Before calling Ant, you
-  need to declare the JAVA_HOME environment variable to specify the path to where the JDK is
-  installed.</p>
-
-  <p class="note"><strong>Note:</strong> When installing JDK on Windows, the default is to install
-  in the "Program Files" directory. This location will cause <code>ant</code> to fail, because of
-  the space. To fix the problem, you can specify the JAVA_HOME variable like this:
-  <pre>set JAVA_HOME=c:\Progra~1\Java\&lt;jdkdir&gt;</pre>
-
-  <p>The easiest solution, however, is to install JDK in a non-space directory, for example:</p>
-
-  <pre>c:\java\jdk1.6.0_02</pre>
-
-  <h2 id="DebugMode">Building in Debug Mode</h2>
-
-  <p>For immediate application testing and debugging, you can build your application in debug mode
-  and immediately install it on an emulator. In debug mode, the build tools automatically sign your
-  application with a debug key and optimize the package with {@code zipalign}.</p>
-
-  <p>To build in debug mode:</p>
-
-  <ol>
-    <li>Open a command-line and navigate to the root of your project directory.</li>
-    <li>Use Ant to compile your project in debug mode:
-      <pre>
-ant debug
-</pre>
-
-      <p>This creates your debug <code>.apk</code> file inside the project <code>bin/</code> directory, named
-      <code>&lt;your_project_name&gt;-debug.apk</code>. The file is already signed with
-      the debug key and has been aligned with
-      <a href="{@docRoot}guide/developing/tools/zipalign.html"><code>zipalign</code></a>.
-      </p>
-    </li>
-  </ol>
-
-  <p>Each time you change a source file or resource, you must run Ant again in order to package up
-  the latest version of the application.</p>
-
-  <p>To install and run your application on an emulator, see the following section about <a href=
-  "#RunningOnEmulator">Running on the Emulator</a>.</p>
-
-  <h2 id="ReleaseMode">Building in Release Mode</h2>
-
-  <p>When you're ready to release and distribute your application to end-users, you must build your
-  application in release mode. Once you have built in release mode, it's a good idea to perform
-  additional testing and debugging with the final .apk.</p>
-
-  <p>Before you start building your application in release mode, be aware that you must sign the
-  resulting application package with your private key, and should then align it using the {@code
-  zipalign} tool. There are two approaches to building in release mode: build an unsigned package
-  in release mode and then manually sign and align the package, or allow the build script to sign
-  and align the package for you.</p>
-
-  <h3 id="ManualReleaseMode">Build unsigned</h3>
-
-  <p>If you build your application <em>unsigned</em>, then you will need to manually sign and align
-  the package.</p>
-
-  <p>To build an <em>unsigned</em> .apk in release mode:</p>
-
-  <ol>
-    <li>Open a command-line and navigate to the root of your project directory.</li>
-
-    <li>Use Ant to compile your project in release mode:
-      <pre>
-ant release
-</pre>
-    </li>
-  </ol>
-
-  <p>This creates your Android application .apk file inside the project <code>bin/</code>
-  directory, named <code><em>&lt;your_project_name&gt;</em>-unsigned.apk</code>.</p>
-
-  <p class="note"><strong>Note:</strong> The .apk file is <em>unsigned</em> at this point and can't
-  be installed until signed with your private key.</p>
-
-  <p>Once you have created the unsigned .apk, your next step is to sign the .apk with your private
-  key and then align it with {@code zipalign}. To complete this procedure, read <a href=
-  "{@docRoot}guide/publishing/app-signing.html">Signing Your Applications</a>.</p>
-
-  <p>When your <code>.apk</code> has been signed and aligned, it's ready to be distributed to end-users.
-  You should test the final build on different devices or AVDs to ensure that it
-  runs properly on different platforms.</p>
-
-  <h3 id="AutoReleaseMode">Build signed and aligned</h3>
-
-  <p>If you would like, you can configure the Android build script to automatically sign and align
-  your application package. To do so, you must provide the path to your keystore and the name of
-  your key alias in your project's {@code ant.properties} file. With this information provided,
-  the build script will prompt you for your keystore and alias password when you build in release
-  mode and produce your final application package, which will be ready for distribution.</p>
-
-  <p class="caution"><strong>Caution:</strong> Due to the way Ant handles input, the password that
-  you enter during the build process <strong>will be visible</strong>. If you are concerned about
-  your keystore and alias password being visible on screen, then you may prefer to perform the
-  application signing manually, via Jarsigner (or a similar tool). To instead perform the signing
-  procedure manually, <a href="#ManualReleaseMode">build unsigned</a> and then continue with
-  <a href="{@docRoot}guide/publishing/app-signing.html">Signing Your Applications</a>.</p>
-
-  <p>To specify your keystore and alias, open the project {@code ant.properties} file (found in
-  the root of the project directory) and add entries for {@code key.store} and {@code key.alias}.
-  For example:</p>
-  <pre>
-key.store=path/to/my.keystore
-key.alias=mykeystore
-</pre>
-
-  <p>Save your changes. Now you can build a <em>signed</em> .apk in release mode:</p>
-
-  <ol>
-    <li>Open a command-line and navigate to the root of your project directory.</li>
-
-    <li>Use Ant to compile your project in release mode:
-      <pre>
-ant release
-</pre>
-    </li>
-
-    <li>When prompted, enter you keystore and alias passwords.
-
-      <p class="caution"><strong>Caution:</strong> As described above, your password will be
-      visible on the screen.</p>
-    </li>
-  </ol>
-
-  <p>This creates your Android application .apk file inside the project <code>bin/</code>
-  directory, named <code><em>&lt;your_project_name&gt;</em>-release.apk</code>. This .apk file has
-  been signed with the private key specified in {@code ant.properties} and aligned with {@code
-  zipalign}. It's ready for installation and distribution.</p>
-
-  <h3 id="OnceBuilt">Once built and signed in release mode</h3>
-
-  <p>Once you have signed your application with a private key, you can install and run it on an
-  <a href="#RunningOnEmulator">emulator</a> or <a href="#RunningOnDevice">device</a>. You can
-  also try installing it onto a device from a web server. Simply upload the signed .apk to a web
-  site, then load the .apk URL in your Android web browser to download the application and begin
-  installation. (On your device, be sure you have enabled
-  <em>Settings &gt; Applications &gt; Unknown sources</em>.)</p>
-
-  <h2 id="RunningOnEmulator">Running on the Emulator</h2>
-
-  <p>Before you can run your application on the Android Emulator, you must <a href=
-  "{@docRoot}guide/developing/devices/managing-avds.html">create an AVD</a>.</p>
-
-  <p>To run your application:</p>
-
-  <ol>
-    <li>
-      <strong>Open the AVD Manager and launch a virtual device</strong>
-
-      <p>From your SDK's <code>platform-tools/</code> directory, execute the {@code android} tool
-with the <code>avd</code> options:</p>
-      <pre>
-android avd
-</pre>
-
-      <p>In the <em>Virtual Devices</em> view, select an AVD and click <strong>Start</strong>.</p>
-    </li>
-
-    <li>
-      <strong>Install your application</strong>
-
-      <p>From your SDK's <code>tools/</code> directory, install the {@code .apk} on the
-      emulator:</p>
-      <pre>
-adb install <em>&lt;path_to_your_bin&gt;</em>.apk
-</pre>
-
-      <p>Your .apk file (signed with either a release or debug key) is in your project {@code bin/}
-      directory after you build your application.</p>
-
-      <p>If there is more than one emulator running, you must specify the emulator upon which to
-      install the application, by its serial number, with the <code>-s</code> option. For
-      example:</p>
-      <pre>
-adb -s emulator-5554 install <em>path/to/your/app</em>.apk
-</pre>
-
-      <p>To see a list of available device serial numbers, execute {@code adb devices}.</p>
-    </li>
-  </ol>
-
-  <p>If you don't see your application on the emulator, try closing the emulator and launching the
-  virtual device again from the AVD Manager. Sometimes when you install an application for the
-  first time, it won't show up in the application launcher or be accessible by other applications.
-  This is because the package manager usually examines manifests completely only on emulator
-  startup.</p>
-
-  <p>Be certain to create multiple AVDs upon which to test your application. You should have one
-  AVD for each platform and screen type with which your application is compatible. For instance, if
-  your application compiles against the Android 1.5 (API Level 3) platform, you should create an
-  AVD for each platform equal to and greater than 1.5 and an AVD for each <a href=
-  "{@docRoot}guide/practices/screens_support.html">screen type</a> you support, then test your
-  application on each one.</p>
-
-  <p class="note"><strong>Tip:</strong> If you have <em>only one</em> emulator running, you can
-  build your application and install it on the emulator in one simple step. Navigate to the root of
-  your project directory and use Ant to compile the project with <em>install mode</em>: <code>ant
-  install</code>. This will build your application, sign it with the debug key, and install it on
-  the currently running emulator.</p>
-
-  <h2 id="RunningOnDevice">Running on a Device</h2>
-
-  <p>Before you can run your application on a device, you must perform some basic setup for your
-  device:</p>
-
-  <ul>
-    <li>Enable USB Debugging on your device. You can find the setting on most Android devices by
-    going to <strong>Settings > Applications > Development > USB debugging</strong>.</li>
-
-    <li>Ensure that your development computer can detect your device when connected via USB</li>
-  </ul>
-
-  <p>Read <a href="{@docRoot}guide/developing/device.html#setting-up">Setting up a Device for
-  Development</a> for more information.</p>
-
-  <p>Once your device is set up and connected via USB, navigate to your SDK's <code>platform-tools/</code>
-  directory and install the <code>.apk</code> on the device:</p>
-  <pre>
-adb -d install <em>path/to/your/app</em>.apk
-</pre>
-
-  <p>The {@code -d} flag specifies that you want to use the attached device (in case you also have
-  an emulator running).</p>
-
-  <p>For more information on the tools used above, please see the following documents:</p>
-
-  <ul>
-    <li><a href="{@docRoot}guide/developing/tools/android.html">android Tool</a></li>
-
-    <li><a href="{@docRoot}guide/developing/devices/emulator.html">Android Emulator</a></li>
-
-    <li><a href="{@docRoot}guide/developing/tools/adb.html">Android Debug Bridge</a> (ADB)</li>
-  </ul>
-
-  <h2 id="Signing">Application Signing</h2>
-
-  <p>As you begin developing Android applications, understand that all Android applications must be
-  digitally signed before the system will install them on an emulator or device. There are two ways
-  to do this: with a <em>debug key</em> (for immediate testing on an emulator or development
-  device) or with a <em>private key</em> (for application distribution).</p>
-
-  <p>The Android build tools help you get started by automatically signing your .apk files with a
-  debug key at build time. This means that you can compile your application and install it on the
-  emulator without having to generate your own private key. However, please note that if you intend
-  to publish your application, you <strong>must</strong> sign the application with your own private
-  key, rather than the debug key generated by the SDK tools.</p>
-
-  <p>The ADT plugin helps you get started quickly by signing your .apk files with a debug key,
-  prior to installing them on an emulator or development device. This means that you can quickly
-  run your application from Eclipse without having to generate your own private key. No specific
-  action on your part is needed, provided ADT has access to Keytool. However, please note that if
-  you intend to publish your application, you <strong>must</strong> sign the application with your
-  own private key, rather than the debug key generated by the SDK tools.</p>
-
-  <p>Please read <a href="{@docRoot}guide/publishing/app-signing.html">Signing Your
-  Applications</a>, which provides a thorough guide to application signing on Android and what it
-  means to you as an Android application developer. The document also includes a guide to exporting
-  and signing your application with the ADT's Export Wizard.</p>
-
-  <h2 id="AntReference">Ant Command Reference</h2>
-  <dt><code>ant clean</code></dt>
-  <dd>Cleans the project. If you include the <code>all</code> target before <code>clean</code>
-(<code>ant all clean</code>), other projects are also cleaned. For instance if you clean a
-test project, the tested project is also cleaned.</dd>
-
-  <dt><code>ant debug</code></dt>
-  <dd>Builds a debug package. Works on application, library, and test projects and compiles
-  dependencies as  needed.</dd>
-
-  <dt id="emma"><code>ant emma debug</code></dt>
-  <dd>Builds a test project while building the tested project with instrumentation turned on.
-  This is used to run tests with code coverage enabled.</dd>
-
-  <dt><code>ant release</code></dt>
-  <dd>Builds a release package.</dd>
-
-  <dt><code>ant instrument</code>
-  </dt>
-  <dd>Builds an instrumented debug package. This is generally called automatically when building a
-  test project with code coverage enabled (with the <code>emma</code>
-  target)</dd>
-
-  <dt><code>ant &lt;build_target&gt; install</code></dt>
-  <dd>Builds and installs a package. Using <code>install</code> by itself fails.</dd>
-
-  <dt><code>ant installd</code></dt>
-  <dd>Installs an already compiled debug package. This fails if the <code>.apk</code> is not
-  already built.</dd>
-
-  <dt><code>ant installr</code></dt>
-  <dd>Installs an already compiled release package. This fails if the <code>.apk</code> is not
-  already built.</dd>
-
-  <dt><code>ant installt</code></dt>
-  <dd>Installs an already compiled test package. Also installs the <code>.apk</code> of the
-  tested application. This fails if the <code>.apk</code> is not already built.</dd>
-
-  <dt><code>ant installi</code></dt>
-  <dd>Installs an already compiled instrumented package. This is generally not used manually as
-  it's called when installing a test package. This fails if the <code>.apk</code> is not already
-  built.</dd>
-
-   <dt><code>ant test</code></dt>
-   <dd>Runs the tests (for test projects). The tested and test <code>.apk</code> files must be
-   previously installed.</dd>
-
-  <dt><code>ant debug installt test</code></dt>
-  <dd>Builds a test project and the tested project, installs both <code>.apk</code> files, and
-  runs the tests.</dd>
-
-  <dt><code>ant emma debug install test</code></dt>
-  <dd>Builds a test project and the tested project, installs both <code>.apk</code> files, and
-  runs the tests with code coverage enabled.</dd>
-
diff --git a/docs/html/guide/developing/building/building-eclipse.jd b/docs/html/guide/developing/building/building-eclipse.jd
deleted file mode 100644
index 6ebc49e..0000000
--- a/docs/html/guide/developing/building/building-eclipse.jd
+++ /dev/null
@@ -1,165 +0,0 @@
-page.title=Building and Running from Eclipse with ADT
-parent.title=Building and Running
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#RunningOnEmulatorEclipse">Running on an Emulator</a></li>
-
-        <li><a href="#RunningOnDeviceEclipse">Running on a Device</a></li>
-
-        <li><a href="#RunConfig">Creating a Run Configuration</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>Eclipse and ADT provide an environment where most of the details of the build process are
-  hidden from you. By default, the build process constantly runs in the background as you make
-  changes to your project.</p>
-
-  <p>When Eclipse automatically builds your application, it enables debugging and signs the
-  <code>.apk</code> with a debug key, by default. When you run the application,
-  Eclipse invokes ADB and installs your application to a device or emulator, so you do not have to
-  manually perform these tasks. Since most of the build process is taken care of by Eclipse, the
-  following topics show you how to run an application, which will automatically build your
-  application as well.</p>
-
-  <p>To distribute your application, however, you must build your application in release mode and sign the
-  <code>.apk</code> file with your own private key.</p>
-  
-   <p>This document shows you how to run your application on an emulator or a real device 
-   from Eclipse&mdash;all of which is done using the debug version of your application. 
-   For more information about how to sign your application with a private key for release, see <a href=
-  "{@docRoot}guide/publishing/app-signing.html#ExportWizard">Signing Your Applications</a></p>
-
-  <h2 id="RunningOnEmulatorEclipse">Running on the emulator</h2>
-
-  <p>Before you can run your application on the Android Emulator, you must <a href=
-  "{@docRoot}guide/developing/devices/managing-avds.html">create an AVD</a>.</p>
-
-  <p>To run (or debug) your application, select <strong>Run</strong> &gt; <strong>Run</strong> (or
-  <strong>Run</strong> &gt; <strong>Debug</strong>) from the Eclipse menu bar. The ADT plugin will
-  automatically create a default run configuration for the project. Eclipse will then perform the
-  following:</p>
-
-  <ol>
-    <li>Compile the project (if there have been changes since the last build).</li>
-
-    <li>Create a default run configuration (if one does not already exist for the project).</li>
-
-    <li>Install and start the application on an emulator (or device), based on the Deployment
-    Target defined by the run configuration.
-
-      <p>By default, Android run configurations use an "automatic target" mode for selecting a
-      device target. For information on how automatic target mode selects a deployment target, see
-      <a href="#AutoAndManualTargetModes">Automatic and manual target modes</a> below.</p>
-    </li>
-  </ol>
-
-  <p>If you run the application with the Debug option, the application will start in the "Waiting For Debugger" mode. Once the debugger
-  is attached, Eclipse opens the Debug perspective and starts the application's main activity. Otherwise, if you run the
-  application with the normal Run option, Eclipse installs the application on the device and launches the main activity.</p>
-
-  <p>To set or change the run configuration used for your project, use the run configuration
-  manager. See the section below about <a href="#RunConfig">Creating a Run Configuration</a> for more information.</p>
-
-  <p>Be certain to create multiple AVDs upon which to test your application. You should have one
-  AVD for each platform and screen type with which your application is compatible. For instance, if
-  your application compiles against the Android 1.5 (API Level 3) platform, you should create an
-  AVD for each platform equal to and greater than 1.5 and an AVD for each <a href=
-  "{@docRoot}guide/practices/screens_support.html">screen type</a> you support, then test your
-  application on each one.</p>
-
-  <h2 id="RunningOnDeviceEclipse">Running on a device</h2>
-
-  <p>Before you can run your application on a device, you must perform some basic setup for your
-  device:</p>
-
-  <ul>
-    <li>Ensure that your application is debuggable by setting the
-    <code>android:debuggable</code> attribute of the <code>&lt;application&gt;</code>
-    element to <code>true</code>. As of ADT 8.0, this is done by default when you build in debug mode.</li>
-
-    <li>Enable USB Debugging on your device. You can find the setting on most Android devices by
-    going to <strong>Settings > Applications > Development > USB debugging</strong>.</li>
-
-    <li>Ensure that your development computer can detect your device when connected via USB</li>
-  </ul>
-
-  <p>Read <a href="{@docRoot}guide/developing/device.html">Using Hardware Devices</a>
-  for more information.</p>
-
-  <p>Once set up and your device is connected via USB, install your application on the device by
-  selecting <strong>Run</strong> &gt; <strong>Run</strong> (or <strong>Run</strong> &gt;
-  <strong>Debug</strong>) from the Eclipse menu bar.</p>
-
-  <h2 id="RunConfig">Creating a Run Configuration</h2>
-
-  <p>The run configuration specifies the project to run, the Activity to start, the emulator or
-  connected device to use, and so on. When you first run a project as an <em>Android
-  Application</em>, ADT will automatically create a run configuration. The default run
-  configuration will launch the default project Activity and use automatic target mode for device
-  selection (with no preferred AVD). If the default settings don't suit your project, you can
-  customize the run configuration or even create a new one.</p>
-
-  <p>To create or modify a run configuration, refer to the Eclipse documentation on how to create Run configurations.
-  The following steps highlight the important things you need to do for an Android project:</p>
-
-  <ol>
-    <li>Open the run configuration manager from the Run Menu.</li>
-
-    <li>Expand the <strong>Android Application</strong> item and create a new configuration or open
-    an existing one.
-    </li>
-
-    <li>With the Run Configuration selected, adjust your desired run configuration settings:
-      <ul>
-      <li>In the Android tab, specify the Project and Activity to launch.
-      </li>
-      <li><p>In the Target tab, consider whether you'd like to use Manual or Automatic mode when
-      selecting an AVD to run your application. See the following section on <a href=
-      "#AutoAndManualTargetModes">Automatic and manual target modes</a>).</p>
-
-      <p>You can specify any emulator options to the Additional Emulator Command Line Options
-      field. For example, you could add <code>-scale 96dpi</code> to scale the AVD's screen to an
-      accurate size, based on the dpi of your computer monitor. For a full list of emulator
-      options, see the <a href="{@docRoot}guide/developing/tools/emulator.html">Android
-      Emulator</a> document.</p>
-      </li>
-      </ul>
-    </li>
-  </ol>
-
-  <h4 id="AutoAndManualTargetModes">Automatic and manual target modes</h4>
-
-  <p>By default, a run configuration uses the <strong>automatic</strong> target mode in order to
-  select an AVD. In this mode, ADT will select an AVD for the application in the following
-  manner:</p>
-
-  <ol>
-    <li>If there's a device or emulator already running and its AVD configuration meets the
-    requirements of the application's build target, the application is installed and run upon
-    it.</li>
-
-    <li>If there's more than one device or emulator running, each of which meets the requirements
-    of the build target, a "device chooser" is shown to let you select which device to use.</li>
-
-    <li>If there are no devices or emulators running that meet the requirements of the build
-    target, ADT looks at the available AVDs. If there is an AVD that matches the build target of the project,
-    ADT chooses that AVD. If the AVD versions are newer than the build target of the project, ADT chooses
-    the oldest possible version of an AVD that meets the project's build target requirement.</li>
-
-    <li>If there are no suitable AVDs, the application is not installed a console error warning tells
-    you that there is no existing AVD that meets the build target requirements.</li>
-  </ol>
-
-  <p>However, if a "preferred AVD" is selected in the run configuration, then the application will
-  <em>always</em> be deployed to that AVD. If it's not already running, then a new emulator will be
-  launched.</p>
-
-  <p>If your run configuration uses <strong>manual</strong> mode, then the "device chooser" is
-  presented every time that your application is run, so that you can select which AVD to use.</p>
\ No newline at end of file
diff --git a/docs/html/guide/developing/building/index.jd b/docs/html/guide/developing/building/index.jd
deleted file mode 100644
index 569cd28..0000000
--- a/docs/html/guide/developing/building/index.jd
+++ /dev/null
@@ -1,81 +0,0 @@
-page.title=Building and Running
-@jd:body
-
-<div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-      <ol>
-        <li><a href="#detailed-build">A Detailed Look at the Build Process</a></li>
-      </ol>
-    </div>
-  </div>
-  
- <p>During the build process, your Android projects are compiled and packaged into an .apk file,
-  the container for your application binary. It contains all of the information necessary to run
-  your application on a device or emulator, such as compiled <code>.dex</code> files (<code>.class</code> files
-  converted to Dalvik byte code), a binary version of the <code>AndroidManifest.xml</code> file, compiled
-  resources (<code>resources.arsc</code>) and uncompiled resource files for your application.</p>
-
-  <p>If you are developing in Eclipse, the ADT plugin incrementally builds your project as you
-  make changes to the source code. Eclipse outputs an <code>.apk</code> file automatically to the bin folder of
-  the project, so you do not have to do anything extra to generate the <code>.apk</code>.</p>
-
-  <p>If you are developing in a non-Eclipse environment, you can build your project with the
-  generated <code>build.xml</code> Ant file that is in the project directory. The Ant file calls targets that
-  automatically call the build tools for you.</p>
-
-  <p>To run an application on an emulator or device, the application must be signed using debug or
-  release mode. You typically want to sign your application in debug mode when you develop and test
-  your application, because the build tools use a debug key with a known password so you do not have
-  to enter it every time you build. When you are ready to release the application to Google
-  Play, you must sign the application in release mode, using your own private key.</p>
-
-  <p>Fortunately, Eclipse or your Ant build script signs the application for you in debug mode
-  when you build your application. You can also easily setup Eclipse or your Ant build to sign your
-  application in release mode as well. For more information on signing applications, see <a href=
-  "{@docRoot}guide/publishing/app-signing.html">Signing Your Applications</a>.</p>
-  
-  <p>The following diagram depicts the components involved in building and running an application:</p>
-
-  <img src="{@docRoot}images/build-simplified.png" />
-
-  <h2 id="detailed-build">A Detailed Look at the Build Process</h2>
-
-  <p>The build process involves many tools and processes that generate intermediate files on the
-  way to producing an <code>.apk</code>. If you are developing in Eclipse, the complete build process is
-  automatically done periodically as you develop and save your code changes. If you are using other
-  IDEs, this build process is done every time you run the generated Ant build script for your
-  project. It is useful, however, to understand what is happening under the hood since much of the
-  tools and processes are masked from you. The following diagram depicts the different tools and
-  processes that are involved in a build:</p>
-
-  <img src="{@docRoot}images/build.png" />
-
-  <p>The general process for a typical build is outlined below:</p>
-
-  <ul>
-  
-    <li>The Android Asset Packaging Tool (aapt) takes your application resource files, such as the
-    <code>AndroidManifest.xml</code> file and the XML files for your Activities, and compiles them. An <code>R.java</code> is
-    also produced so you can reference your resources from your Java code.</li>
-
-    <li>The aidl tool converts any <code>.aidl</code> interfaces that you have into Java interfaces.</li>
-
-    <li>All of your Java code, including the <code>R.java</code> and <code>.aidl</code> files, are compiled by the Java
-    compiler and .class files are output.</li>
-
-    <li>The dex tool converts the .class files to Dalvik byte code. Any 3rd party libraries and
-    .class files that you have included in your project are also converted into <code>.dex</code> files so that
-    they can be packaged into the final <code>.apk</code> file.</li>
-
-    <li>All non-compiled resources (such as images), compiled resources, and the .dex files are
-    sent to the apkbuilder tool to be packaged into an <code>.apk</code> file.</li>
-
-    <li>Once the <code>.apk</code> is built, it must be signed with either a debug or release key before it can
-    be installed to a device.</li>
-
-    <li>Finally, if the application is being signed in release mode, you must align the <code>.apk</code> with
-    the zipalign tool. Aligning the final <code>.apk</code> decreases memory usage when the application is
-    running on a device.</li>
-  </ul>
-
diff --git a/docs/html/guide/developing/debug-tasks.html b/docs/html/guide/developing/debug-tasks.html
deleted file mode 100644
index 4e738041..0000000
--- a/docs/html/guide/developing/debug-tasks.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/guide/developing/debugging/index.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/guide/developing/debugging/index.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/developing/debugging/ddms.jd b/docs/html/guide/developing/debugging/ddms.jd
deleted file mode 100644
index 9892e49..0000000
--- a/docs/html/guide/developing/debugging/ddms.jd
+++ /dev/null
@@ -1,357 +0,0 @@
-page.title=Using DDMS
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-      <li><a href="#running">Running DDMS</a></li>
-        <li><a href="#how-ddms-works">How DDMS Interacts with a Debugger</a></li>
-
-        <li><a href="#using-ddms">Using DDMS</a>
-        <ol>
-                <li><a href="#heap">Viewing heap usage for a process</a></li>
-                <li><a href="#alloc">Tracking memory allocation of objects</a></li>
-                <li><a href="#emulator">Working with an emulator or device's file system</a></li>
-                <li><a href="#thread">Examining thread information</a></li>
-                <li><a href="#profiling">Starting method profiling</a></li>
-                <li><a href="#network">Using the Network Traffic tool</a></li>
-                <li><a href="#logcat">Using LogCat</a></li>
-                <li><a href="#ops-location">Emulating phone operations and location</a></li>
-            </ol>
-        
-        </li>
-      </ol>
-    </div>
-  </div>
-
-  <p>Android ships with a debugging tool called the Dalvik Debug Monitor Server (DDMS), which
-  provides port-forwarding services, screen capture on the device, thread and heap information on
-  the device, logcat, process, and radio state information, incoming call and SMS spoofing,
-  location data spoofing, and more. This page provides a modest discussion of DDMS features; it is
-  not an exhaustive exploration of all the features and capabilities.</p>
-  
-  <h2 id="running">Running DDMS</h2>
-  <p>DDMS is integrated into Eclipse and is also shipped in the <code>tools/</code> directory of the
-  SDK. DDMS works with both the emulator and a connected device. If both are connected and running simultaneously, 
-  DDMS defaults to the emulator.</p>
-  
-  <ul>
-    <li>From Eclipse: Click <strong>Window > Open Perspective > Other... > DDMS</strong>.</li>
-    <li>From the command line: Type <code>ddms</code> (or <code>./ddms</code> on Mac/Linux) from the <code>tools/</code>
-    directory. </li>
-  </ul>
-
-
-  <h2 id="how-ddms-works">How DDMS Interacts with a Debugger</h2>
-
-  <p>On Android, every application runs in its own process, each of which runs in its own virtual machine
-  (VM). Each VM exposes a unique port that a debugger can attach to.</p>
-
-  <p>When DDMS starts, it connects to <a href="{@docRoot}guide/developing/tools/adb.html">adb</a>.
-  When a device is connected, a VM monitoring service is created between
-  <code>adb</code> and DDMS, which notifies DDMS when a VM on the device is started or terminated. Once a VM
-  is running, DDMS retrieves the the VM's process ID (pid), via <code>adb</code>, and opens a connection to the
-  VM's debugger, through the adb daemon (adbd) on the device. DDMS can now talk to the VM using a
-  custom wire protocol.</p>
-
-  <p>DDMS assigns a debugging port to each VM on the device. Typically,
-  DDMS assigns port 8600 for the first debuggable VM, the next on 8601, and so on. When a debugger
-  connects to one of these ports, all traffic is forwarded to the debugger from the associated
-  VM. You can only attach a single debugger to a single port, but DDMS can handle multiple, attached
-  debuggers.</p>
-
-  <p>By default, DDMS also listens on another debugging port, the DDMS "base port" (8700, by default).
-  The base port is a port forwarder, which can accept VM traffic from any debugging port and forward
-  it to the debugger on port 8700. This allows you to attach one debugger to port 8700, and debug
-  all the VMs on a device. The traffic that is forwarded is determined by the currently selected process
-  in the DDMS Devices view.</p>
-
-  <p>The following screenshot shows a typical DDMS screen in Eclipse. If you are starting DDMS from
-  the command line, the screen is slightly different, but much of the functionality is identical.
-  Notice that the highlighted process, <code>com.android.email</code>, that is running in the emulator
-  has the debugging port 8700 assigned to it as well as 8606. This signifies that DDMS is currently
-  forwarding port 8606 to the static debugging port of 8700.</p>
-
-  <img src="{@docRoot}images/debug-ddms.png"
-       width="1024" />
-  <p class="img-caption"><strong>Figure 1.</strong> 
-  Screenshot of DDMS</p> 
-
-  <p>If you are not using Eclipse and ADT, read <a href=
-  "{@docRoot}guide/developing/debugging/debugging-projects-cmdline.html#debuggingPort">Configuring
-  your IDE to attach to the debugging port</a>, for more information on attaching your
-  debugger.</p>
-
-  <p class="note"><strong>Tip:</strong> You can set a number of DDMS preferences in
-  <strong>File</strong> &gt; <strong>Preferences</strong>. Preferences are saved to
-  <code>$HOME/.android/ddms.cfg</code>.</p>
-
-  <p class="warning"><strong>Known debugging issues with Dalvik</strong><br />
-  Debugging an application in the Dalvik VM should work the same as it does in other VMs. However,
-  when single-stepping out of synchronized code, the "current line" cursor may jump to the last
-  line in the method for one step.</p>
-
-  <h2 id="using-ddms">Using DDMS</h2>
-  The following sections describe how to use DDMS and the various tabs and panes that are part of the
-  DDMS GUI. The Eclipse version and the command line version have minor UI differences, but the 
-  same functionality. For information on running DDMS, see the previous section in this document,
-  <a href="#running">Running DDMS</a>.
-  
-  
-  <h3 id="heap">Viewing heap usage for a process</h3>
-
-  <p>DDMS allows you to view how much heap memory a process is using. This information is useful in
-  tracking heap usage at a certain point of time during the execution of your application.</p>
-  <p>To view heap usage for a process:</p>
-  <ol>
-    <li>In the Devices tab, select the process that you want to see the heap information for.</li>
-
-    <li>Click the <strong>Update Heap</strong> button to enable heap information for the
-    process.</li>
-
-    <li>In the Heap tab, click <strong>Cause GC</strong> to invoke garbage collection, which
-    enables the collection of heap data. When the operation completes, you will see a group of
-    object types and the memory that has been allocated for each type. You can click <strong>Cause
-    GC</strong> again to refresh the data.</li>
-
-    <li>Click on an object type in the list to see a bar graph that shows the number of objects
-    allocated for a particular memory size in bytes.</li>
-  </ol>
-
-  <h3 id="alloc">Tracking memory allocation of objects</h3>
-
-  <p>DDMS provides a feature to track objects that are being allocated to memory and to see which
-  classes and threads are allocating the objects. This allows you to track, in real time, where
-  objects are being allocated when you perform certain actions in your application. This
-  information is valuable for assessing memory usage that can affect application performance.
-  </p>
-  
-  <p>To track memory allocation of objects:</p>
-  <ol>
-    <li>In the Devices tab, select the process that you want to enable allocation tracking
-    for.</li>
-
-    <li>In the Allocation Tracker tab, click the <strong>Start Tracking</strong> button to begin
-    allocation tracking. At this point, anything you do in your application will be tracked.</li>
-
-    <li>Click <strong>Get Allocations</strong> to see a list of objects that have been allocated
-    since you clicked on the <strong>Start Tracking</strong> button. You can click on <strong>Get
-    Allocations</strong> again to append to the list new objects that that have been
-    allocated.</li>
-
-    <li>To stop tracking or to clear the data and start over, click the <strong>Stop Tracking
-    button</strong>.</li>
-
-    <li>Click on a specific row in the list to see more detailed information such as the method and
-    line number of the code that allocated the object.</li>
-  </ol>
-
-  <h3 id="emulator">Working with an emulator or device's file system</h3>
-
-  <p>DDMS provides a File Explorer tab that allows you to view, copy, and delete files on the
-  device. This feature is useful in examining files that are created by your application or if you
-  want to transfer files to and from the device.</p>
-  
-  <p>To work with an emulator or device's file system:</p>
-  <ol>
-    <li>In the Devices tab, select the emulator that you want to view the file system for.</li>
-
-    <li>To copy a file from the device, locate the file in the File Explorer and click the
-    <strong>Pull file</strong> button.</li>
-
-    <li>To copy a file to the device, click the <strong>Push file</strong> button on the File
-    Explorer tab.</li>
-  </ol>
-  
-  <!-- Need to elaborate more on where things are stored in the file system,
-   databases, apks, user info, files that are important to look at -->
-
-  <h3 id="thread">Examining thread information</h3>
-
-  <p>The Threads tab in DDMS shows you the currently running threads for a selected process.</p>
-
-  <ol>
-    <li>In the Devices tab, select the process that you want to examine the threads for.</li>
-
-    <li>Click the <strong>Update Threads</strong> button.</li>
-
-    <li>In the Threads tab, you can view the thread information for the selected process.</li>
-  </ol>
-
-  <h3 id="profiling">Starting method profiling</h3>
-
-  <p>Method profiling is a means to track certain metrics about a method, such as number of calls,
-  execution time, and time spent executing the method. If you want more granular control over 
-  where profiling data is collected, use the {@link android.os.Debug#startMethodTracing()} and 
-  {@link android.os.Debug#stopMethodTracing()} methods. For more information about generating trace logs, see 
-  <a href="debugging-tracing.html">Profiling and Debugging UIs</a>.</p>
-  
-  <p>Before you start method profiling in DDMS, be aware of the following restrictions:</p>
-    <ul>
-      <li>Android 1.5 devices are not supported.</li>
-      <li>Android 2.1 and earlier devices must
-      have an SD card present and your application must have permission to write to the SD card.
-      <li>Android 2.2 and later devices do not need an SD card. The trace log files are 
-      streamed directly to your development machine.</li>
-    </ul>
-  
-  <p>To start method profiling:</p>
-  <ol>
-    <li>On the Devices tab, select the process that you want to enable method profiling for.</li>
-
-    <li>Click the <strong>Start Method Profiling</strong> button.</li>
-
-    <li>Interact with your application to start the methods that you want to profile.</li>
-
-    <li>Click the <strong>Stop Method Profiling</strong> button. DDMS stops profiling your
-    application and opens <a href="{@docRoot}guide/developing/debugging/debugging-ui.html">Traceview</a>
-    with the method profiling information that was collected
-    between the time you clicked on <strong>Start Method Profiling</strong> and <strong>Stop Method
-    Profiling</strong>.</li>
-  </ol>
-
-   <h3 id="network">Using the Network Traffic tool</h3>
-   
-   <p>In Android 4.0, the DDMS (Dalvik Debug Monitor Server) includes a Detailed
-Network Usage tab that makes it possible to track when your application is
-making network requests. Using this tool, you can monitor how and when your app
-transfers data and optimize the underlying code appropriately. You can also
-distinguish between different traffic types by applying a “tag” to network
-sockets before use.</p>
-
-<p>These tags are shown in a stack area chart in DDMS, as shown in figure 2:</p>
-
-<img src="{@docRoot}images/developing/ddms-network.png" />
-<p class="img-caption"><strong>Figure 2.</strong> Network Usage tab.</p>
-
-<p>By monitoring the frequency of your data transfers, and the amount of data
-transferred during each connection, you can identify areas of your application
-that can be made more battery-efficient. Generally, you should look for
-short spikes that can be delayed, or that should cause a later transfer to be
-pre-empted. </p>
-
-<p>To better identify the cause of transfer spikes, the
-{@link android.net.TrafficStats} API allows you
-to tag the data transfers occurring within a thread using {@link
-android.net.TrafficStats#setThreadStatsTag setThreadStatsTag()}, followed
-by manually tagging (and untagging) individual sockets using {@link
-android.net.TrafficStats#tagSocket tagSocket()} and {@link
-android.net.TrafficStats#untagSocket untagSocket()}. For example:</p>
-
-<pre>TrafficStats.setThreadStatsTag(0xF00D);
-TrafficStats.tagSocket(outputSocket);
-// Transfer data using socket
-TrafficStats.untagSocket(outputSocket);</pre>
-
-<p>Alternatively, the Apache {@link org.apache.http.client.HttpClient} and 
-{@link java.net.URLConnection} APIs included in the platform
-automatically tag sockets internally based on the active tag (as 
-identified by 
-{@link android.net.TrafficStats#getThreadStatsTag getThreadStatsTag()}).
-These APIs correctly tag/untag sockets when recycled through
-keep-alive pools. In the following example,  
-{@link android.net.TrafficStats#setThreadStatsTag setThreadStatsTag()} 
-sets the active tag to be {@code 0xF00D}. 
-There can only be one active tag per thread. 
-That is the value that will 
-be returned by {@link android.net.TrafficStats#getThreadStatsTag getThreadStatsTag()}
-and thus used by {@link org.apache.http.client.HttpClient}  
- to tag sockets. The {@code finally} statement 
-invokes 
-{@link android.net.TrafficStats#clearThreadStatsTag clearThreadStatsTag()} 
-to clear the tag.</p>
-
-<pre>TrafficStats.setThreadStatsTag(0xF00D);
-    try {
-        // Make network request using HttpClient.execute()
-    } finally {
-        TrafficStats.clearThreadStatsTag();
-}</pre>
-
-<p>Socket tagging is supported in Android 4.0, but real-time stats will only be
-displayed on devices running Android 4.0.3 or higher.</p>
-   
-  <h3 id="logcat">Using LogCat</h3>
-
-  <p>LogCat is integrated into DDMS, and outputs the messages that you print out using the {@link android.util.Log}
-  class along with other system messages such as stack traces when exceptions are thrown. View the
-  <a href="{@docRoot}guide/developing/debugging/debugging-log.html">Reading and
-  Writing Log Messages.</a> topic for more information on how to log messages to the LogCat.</p>
-
-  <p>When you have set up your logging, you can use the LogCat feature of DDMS to filter certain
-  messages with the following buttons:</p>
-
-  <ul>
-    <li>Verbose</li>
-
-    <li>Debug</li>
-
-    <li>Info</li>
-
-    <li>Warn</li>
-
-    <li>Error</li>
-  </ul>
-  
-  <p>You can also setup your own custom filter to specify more details such as filtering messages
-  with the log tags or with the process id that generated the log message. The add filter,
-  edit filter, and delete filter buttons let you manage your custom filters.</p>
-
-  <h3 id="ops-location">Emulating phone operations and location</h3>
-  <p>The Emulator control tab lets you simulate a
-  phone's voice and data network status. This is useful when you want to test your application's
-  robustness in differing network environments.</p>
-
-  <h4>Changing network state, speed, and latency</h4>
-  <p>The Telephony Status section of the Emulator
-  controls tab lets you change different aspects of the phone's networks status, speed and latency.
-  The following options are available to you and are effective immediately after you set them:</p>
-
-  <ul>
-    <li>Voice - unregistered, home, roaming, searching, denied</li>
-
-    <li>Data - unregistered, home, roaming, searching, denied</li>
-
-    <li>Speed - Full, GSM, HSCSD, GPRS, EDGE, UMTS, HSDPA</li>
-
-    <li>Latency - GPRS, EDGE, UMTS</li>
-  </ul>
-
-  <h4>Spoofing calls or SMS text messages</h4>
-  <p>The Telephony Actions section of the Emulator
-  controls tab lets you spoof calls and messages. This is useful when you want to to test your
-  application's robustness in responding to incoming calls and messages that are sent to the phone.
-  The following actions are available to you:</p>
-
-  <ul>
-    <li>Voice - Enter a number in the <strong>Incoming number</strong> field and click 
-    <strong>Call</strong> to send a simulated call to the emulator or phone. Click the
-    <strong>Hang up</strong> button to terminate the call.</li>
-
-    <li>SMS - Enter a number in the <strong>Incoming number</strong> field and a message in the
-    <strong>Message:</strong> field and click the <strong>Send</strong> button to send the
-    message.</li>
-  </ul>
-
-  <h4>Setting the location of the phone</h4>
-  <p>If your application depends on the location of the phone, you can have DDMS send your
-  device or AVD a mock location. This is useful if you
-  want to test different aspects of your application's location specific features without
-  physically moving. The following geolocation data types are available to you:</p>
-
-  <ul>
-    <li>Manual - set the location by manually specifying decimal or sexagesimal longitude and
-    latitude values.</li>
-
-    <li>GPX - GPS eXchange file</li>
-
-    <li>KML - Keyhole Markup Language file</li>
-  </ul>
-  
-  For more information about providing mock location data, see 
-  <a href="{@docRoot}guide/topics/location/obtaining-user-location.html#MockData">Obtaining User Location</a>.
-  
diff --git a/docs/html/guide/developing/debugging/debugging-devtools.jd b/docs/html/guide/developing/debugging/debugging-devtools.jd
deleted file mode 100644
index 157d62e..0000000
--- a/docs/html/guide/developing/debugging/debugging-devtools.jd
+++ /dev/null
@@ -1,85 +0,0 @@
-page.title=Using the Dev Tools App
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
-<p>The Dev Tools application is installed by default on all system images included with the SDK,
-  so you can use it with the Android Emulator. With the Dev Tools application, you can enable a
-  number of settings on your device that will make it easier to test and debug your applications.</p>
-
-  <p> If you'd like to install the Dev Tools application
-  on a real development device, you can copy the application from your emulator and then install it
-  on your device using ADB. To copy the application from a running emulator, execute:</p>
-  <pre>
-adb -e pull /system/app/Development.apk ./Development.apk
-</pre>
-
-  <p>This copies the .apk file into the current directory. Then install it on your connected device
-  with:</p>
-  <pre>
-adb -d install Development.apk
-</pre>
-
-  <p>To get started, launch the Dev Tools application and select <strong>Development Settings</strong>. This will
-  open the Development Settings page with the following options (among others):</p>
-
-  <dl>
-    <dt><strong>Debug app</strong></dt>
-
-    <dd>
-      Lets you select the application to debug. You do not need to set this to attach a debugger,
-      but setting this value has two effects:
-
-      <ul>
-        <li>It will prevent Android from throwing an error if you pause on a breakpoint for a long
-        time while debugging.</li>
-
-        <li>It will enable you to select the <em>Wait for Debugger</em> option to pause application
-        startup until your debugger attaches (described next).</li>
-      </ul>
-    </dd>
-
-    <dt><strong>Wait for debugger</strong></dt>
-
-    <dd>Blocks the selected application from loading until a debugger attaches. This way you can
-    set a breakpoint in {@link android.app.Activity#onCreate onCreate()}, 
-    which is important to debug the startup process of an Activity.
-    When you change this option, any currently running instances of the selected application will
-    be killed. In order to check this box, you must have selected a debug application as described
-    in the previous option. You can do the same thing by adding {@link
-    android.os.Debug#waitForDebugger()} to your code.</dd>
-
-    <dt><strong>Show screen updates</strong></dt>
-
-    <dd>Flashes a momentary pink rectangle on any screen sections that are being redrawn. This is
-    very useful for discovering unnecessary screen drawing.</dd>
-
-    <dt><strong>Immediately destroy activities</strong></dt>
-
-    <dd>Tells the system to destroy an activity as soon as it is stopped (as if Android had to
-    reclaim memory).&nbsp; This is very useful for testing the {@link
-    android.app.Activity#onSaveInstanceState} / {@link
-    android.app.Activity#onCreate(android.os.Bundle)} code path, which would otherwise be difficult
-    to force. Choosing this option will probably reveal a number of problems in your application
-    due to not saving state. For more information about saving an activity's state, see the
-    <a href="{@docRoot}guide/topics/fundamentals/activities.html#SavingActivityState">Activities</a>
-document.</dd>
-
-    <dt><strong>Show CPU usage</strong></dt>
-
-    <dd>Displays CPU meters at the top of the screen, showing how much the CPU is being used. The
-    top red bar shows overall CPU usage, and the green bar underneath it shows the CPU time spent
-    in compositing the screen. 
-    <p class="note">Note: You cannot turn this feature off once it is on, without
-    restarting the emulator.</p></dd>
-
-    <dt><strong>Show background</strong></dt>
-
-    <dd>Displays a background pattern when no activity screens are visible. This typically does not
-    happen, but can happen during debugging.</dd>
-  </dl>
-
-  <p>These settings will be remembered across emulator restarts.</p>
-
-
-
diff --git a/docs/html/guide/developing/debugging/debugging-log.jd b/docs/html/guide/developing/debugging/debugging-log.jd
deleted file mode 100644
index b5b626e..0000000
--- a/docs/html/guide/developing/debugging/debugging-log.jd
+++ /dev/null
@@ -1,308 +0,0 @@
-page.title=Reading and Writing Logs
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#logClass">The Log class</a></li>
-
-        <li><a href="#startingLogcat">Starting LogCat</a></li>
-
-        <li><a href="#filteringOutput">Filtering Log Output</a></li>
-
-        <li><a href="#outputFormat">Controlling Log Output Format</a></li>
-
-        <li><a href="#alternativeBuffers">Viewing Alternative Log Output Buffers</a></li>
-
-        <li><a href="#viewingStd">Viewing stdout and stderr</a></li>
-
-        <li><a href="#DebuggingWebPages">Debugging Web Pages</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>The Android logging system provides a mechanism for collecting and viewing system debug
-  output. Logcat dumps a log of system messages, which include things such as stack traces when the
-  emulator throws an error and messages that you have written from your application by using the
-  {@link android.util.Log} class. You can run LogCat through ADB or from DDMS, which allows you to
-  read the messages in real time.</p>
-
-  <h2 id="logClass">The <code>Log</code> class</h2>
-
-  <p>{@link android.util.Log} is a logging class that you can utilize in your code to print out
-  messages to the LogCat. Common logging methods include:</p>
-
-  <ul>
-    <li>{@link android.util.Log#v(String,String)} (verbose)</li>
-
-    <li>{@link android.util.Log#d(String,String)} (debug)</li>
-
-    <li>{@link android.util.Log#i(String,String)} (information)</li>
-
-    <li>{@link android.util.Log#w(String,String)} (warning)</li>
-
-    <li>{@link android.util.Log#e(String,String)} (error)</li>
-  </ul>For example:
-  <pre class="no-pretty-print">
-Log.i("MyActivity", "MyClass.getView() &mdash; get item number " + position);
-</pre>
-
-  <p>The LogCat will then output something like:</p>
-  <pre class="no-pretty-print">
-I/MyActivity( 1557): MyClass.getView() &mdash; get item number 1
-</pre>
-
-  <h2 id="startingLogcat">Using LogCat</h2>
-
-  <p>You can use LogCat from within DDMS or call it on an ADB shell. For more information on how to
-  use LogCat within DDMS, see <a href="{@docRoot}guide/developing/debugging/ddms.html#logcat">Using
-  DDMS</a>. To run LogCat, through the ADB shell, the general usage is:</p>
-  <pre>
-[adb] logcat [&lt;option&gt;] ... [&lt;filter-spec&gt;] ...
-</pre>
-
-  <p>You can use the <code>logcat</code> command from your development computer or from a remote
-  adb shell in an emulator/device instance. To view log output in your development computer, you
-  use</p>
-  <pre>
-$ adb logcat
-</pre>
-
-  <p>and from a remote adb shell you use</p>
-  <pre>
-# logcat
-</pre>
-
-  <p>The following table describes the <code>logcat</code> command line options:</p>
-
-  <table>
-    <tr>
-      <td><code>-c</code></td>
-
-      <td>Clears (flushes) the entire log and exits.</td>
-    </tr>
-
-    <tr>
-      <td><code>-d</code></td>
-
-      <td>Dumps the log to the screen and exits.</td>
-    </tr>
-
-    <tr>
-      <td><code>-f&nbsp;&lt;filename&gt;</code></td>
-
-      <td>Writes log message output to <code>&lt;filename&gt;</code>. The default is
-      <code>stdout</code>.</td>
-    </tr>
-
-    <tr>
-      <td><code>-g</code></td>
-      <td>Prints the size of the specified log buffer and exits.</td>
-    </tr>
-
-    <tr>
-      <td><code>-n&nbsp;&lt;count&gt;</code></td>
-
-      <td>Sets the maximum number of rotated logs to <code>&lt;count&gt;</code>. The default value
-      is 4. Requires the <code>-r</code> option.</td>
-    </tr>
-
-    <tr>
-      <td><code>-r&nbsp;&lt;kbytes&gt;</code></td>
-
-      <td>Rotates the log file every <code>&lt;kbytes&gt;</code> of output. The default value is
-      16. Requires the <code>-f</code> option.</td>
-    </tr>
-
-    <tr>
-      <td><code>-s</code></td>
-
-      <td>Sets the default filter spec to silent.</td>
-    </tr>
-
-    <tr>
-      <td><code>-v&nbsp;&lt;format&gt;</code></td>
-
-      <td>Sets the output format for log messages. The default is <code>brief</code> format. For a
-      list of supported formats, see <a href="#outputFormat">Controlling Log Output
-      Format</a>.</td>
-    </tr>
-  </table>
-
-  <h3 id="filteringOutput">Filtering Log Output</h3>
-
-  <p>Every Android log message has a <em>tag</em> and a <em>priority</em> associated with it.</p>
-
-  <ul>
-    <li>The tag of a log message is a short string indicating the system component from which the
-    message originates (for example, "View" for the view system).</li>
-
-    <li>The priority is one of the following character values, ordered from lowest to highest
-    priority:</li>
-
-    <li style="list-style: none; display: inline">
-      <ul>
-        <li><code>V</code> &mdash; Verbose (lowest priority)</li>
-
-        <li><code>D</code> &mdash; Debug</li>
-
-        <li><code>I</code> &mdash; Info</li>
-
-        <li><code>W</code> &mdash; Warning</li>
-
-        <li><code>E</code> &mdash; Error</li>
-
-        <li><code>F</code> &mdash; Fatal</li>
-
-        <li><code>S</code> &mdash; Silent (highest priority, on which nothing is ever printed)</li>
-      </ul>
-    </li>
-  </ul>
-
-  <p>You can obtain a list of tags used in the system, together with priorities, by running
-  LogCat and observing the first two columns of each message, given as
-  <code>&lt;priority&gt;/&lt;tag&gt;</code>.</p>
-
-  <p>Here's an example of logcat output that shows that the message relates to priority level "I"
-  and tag "ActivityManager":</p>
-  <pre>
-I/ActivityManager(  585): Starting activity: Intent { action=android.intent.action...}
-</pre>
-
-  <p>To reduce the log output to a manageable level, you can restrict log output using <em>filter
-  expressions</em>. Filter expressions let you indicate to the system the tags-priority
-  combinations that you are interested in &mdash; the system suppresses other messages for the
-  specified tags.</p>
-
-  <p>A filter expression follows this format <code>tag:priority ...</code>, where <code>tag</code>
-  indicates the tag of interest and <code>priority</code> indicates the <em>minimum</em> level of
-  priority to report for that tag. Messages for that tag at or above the specified priority are
-  written to the log. You can supply any number of <code>tag:priority</code> specifications in a
-  single filter expression. The series of specifications is whitespace-delimited.</p>
-
-  <p>Here's an example of a filter expression that suppresses all log messages except those with
-  the tag "ActivityManager", at priority "Info" or above, and all log messages with tag "MyApp",
-  with priority "Debug" or above:</p>
-  <pre>
-adb logcat ActivityManager:I MyApp:D *:S
-</pre>
-
-  <p>The final element in the above expression, <code>*:S</code>, sets the priority level for all
-  tags to "silent", thus ensuring only log messages with "View" and "MyApp" are displayed. Using
-  <code>*:S</code> is an excellent way to ensure that log output is restricted to the filters that
-  you have explicitly specified &mdash; it lets your filters serve as a "whitelist" for log
-  output.</p>
-
-  <p>The following filter expression displays all log messages with priority level "warning" and higher, on all tags:</p>
-  <pre>
-adb logcat *:W
-</pre>
-
-  <p>If you're running LogCat from your development computer (versus running it on a
-  remote adb shell), you can also set a default filter expression by exporting a value for the
-  environment variable <code>ANDROID_LOG_TAGS</code>:</p>
-  <pre>
-export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"
-</pre>
-
-  <p>Note that <code>ANDROID_LOG_TAGS</code> filter is not exported to the emulator/device
-  instance, if you are running LogCat from a remote shell or using <code>adb shell
-  logcat</code>.</p>
-
-  <h3 id="outputFormat">Controlling Log Output Format</h3>
-
-  <p>Log messages contain a number of metadata fields, in addition to the tag and priority. You can
-  modify the output format for messages so that they display a specific metadata field. To do so,
-  you use the <code>-v</code> option and specify one of the supported output formats listed
-  below.</p>
-
-  <ul>
-    <li><code>brief</code> &mdash; Display priority/tag and PID of the process issuing the
-    message (the default format).</li>
-
-    <li><code>process</code> &mdash; Display PID only.</li>
-
-    <li><code>tag</code> &mdash; Display the priority/tag only.</li>
-
-    <li><code>raw</code> &mdash; Display the raw log message, with no other metadata fields.</li>
-
-    <li><code>time</code> &mdash; Display the date, invocation time, priority/tag, and PID of the
-    process issuing the message.</li>
-
-    <li><code>threadtime</code> &mdash; Display the date, invocation time, priority, tag, and
-    the PID and TID of the thread issuing the message.</li>
-
-    <li><code>long</code> &mdash; Display all metadata fields and separate messages with blank
-    lines.</li>
-  </ul>
-
-  <p>When starting LogCat, you can specify the output format you want by using the
-  <code>-v</code> option:</p>
-  <pre>
-[adb] logcat [-v &lt;format&gt;]
-</pre>
-
-  <p>Here's an example that shows how to generate messages in <code>thread</code> output
-  format:</p>
-  <pre>
-adb logcat -v thread
-</pre>
-
-  <p>Note that you can only specify one output format with the <code>-v</code> option.</p>
-
-  <h3 id="alternativeBuffers">Viewing Alternative Log Buffers</h3>
-
-  <p>The Android logging system keeps multiple circular buffers for log messages, and not all of
-  the log messages are sent to the default circular buffer. To see additional log messages, you can
-  run the <code>logcat</code> command with the <code>-b</code> option, to request viewing of an alternate
-  circular buffer. You can view any of these alternate buffers:</p>
-
-  <ul>
-    <li><code>radio</code> &mdash; View the buffer that contains radio/telephony related
-    messages.</li>
-
-    <li><code>events</code> &mdash; View the buffer containing events-related messages.</li>
-
-    <li><code>main</code> &mdash; View the main log buffer (default)</li>
-  </ul>
-
-  <p>The usage of the <code>-b</code> option is:</p>
-  <pre>
-[adb] logcat [-b &lt;buffer&gt;]
-</pre>
-
-  <p>Here's an example of how to view a log buffer containing radio and telephony messages:</p>
-  <pre>
-adb logcat -b radio
-</pre><a name="stdout"
-        id="stdout"></a>
-
-  <h2 id="viewingStd">Viewing stdout and stderr</h2>
-
-  <p>By default, the Android system sends <code>stdout</code> and <code>stderr</code>
-  (<code>System.out</code> and <code>System.err</code>) output to <code>/dev/null</code>. In
-  processes that run the Dalvik VM, you can have the system write a copy of the output to the log
-  file. In this case, the system writes the messages to the log using the log tags
-  <code>stdout</code> and <code>stderr</code>, both with priority <code>I</code>.</p>
-
-  <p>To route the output in this way, you stop a running emulator/device instance and then use the
-  shell command <code>setprop</code> to enable the redirection of output. Here's how you do it:</p>
-  <pre>
-$ adb shell stop
-$ adb shell setprop log.redirect-stdio true
-$ adb shell start
-</pre>
-
-  <p>The system retains this setting until you terminate the emulator/device instance. To use the
-  setting as a default on the emulator/device instance, you can add an entry to
-  <code>/data/local.prop</code> on the device.</p>
-
-  <h2 id="DebuggingWebPages">Debugging Web Apps</h2>
-  <p>
-  If you're developing a web application for Android, you can debug your JavaScript using the console JavaScript APIs,
-  which output messages to LogCat. For more information, see
-  <a href="{@docRoot}guide/webapps/debugging.html">Debugging Web Apps</a>.</p>
diff --git a/docs/html/guide/developing/debugging/debugging-projects-cmdline.jd b/docs/html/guide/developing/debugging/debugging-projects-cmdline.jd
deleted file mode 100644
index 3b5ceab..0000000
--- a/docs/html/guide/developing/debugging/debugging-projects-cmdline.jd
+++ /dev/null
@@ -1,78 +0,0 @@
-page.title=Debugging from Other IDEs
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#start-debugging">Starting a Debugging Environment</a>
-        <ul>
-          <li><a href="#debuggingPort">Configuring Your IDE to Attach to the Debugging Port</a></li>
-        </ul>
-        </li>
-      </ol>
-    </div>
-  </div>
- 
-  <p>If you are not using Eclipse to develop, you can still take advantage of all the tools that
-  the Android SDK provides for debugging. A basic debugging environment consists of:</p>
-
-  <ul>
-    <li><a href="{@docRoot}guide/developing/tools/adb.html">ADB</a></li>
-
-    <li><a href="{@docRoot}guide/developing/debugging/ddms.html">DDMS</a></li>
-
-    <li>Java Debugger</li>
-  </ul>
-  
-  <p>You need to obtain a JDWP-compliant Java debugger to properly debug your application.
-  Most Java IDEs will already have one included, or you can use a command line debugger,
-  such as JDB, if you are using a simple text editor to develop applications.</p>
-
-  <h2 id="start-debugging">Starting a debugging environment</h2>
-  <p>A Java Debugger assists you in finding problems with
-  your code by letting you set breakpoints, step through execution of your application, and examine
-  variable values. Since you are not using Eclipse, you have to manually start up the debugging
-  environment yourself by running a few tools that are provided in the Android SDK. To begin
-  debugging your application, follow these general steps:</p>
-
-  <ol>
-    <li>Load an AVD with the Android emulator or connect a device to your computer.</li>
-    
-    <li>Start DDMS from the sdk <code>/tools</code> directory. This also starts ADB if it is 
-    not already started. You should see your device appear in DDMS.</li>
-
-    <li>Install and run your <code>.apk</code> file on the device or emulator. In DDMS, you should see your
-    application running under the device that you installed it to.</li>
-
-    <li>Attach your debugger to the debugging port 8700, or to the specific port shown for the
-    application in DDMS.</li>
-  </ol>
-
-  <h3 id="debuggingPort">Configuring Your IDE to Attach to the Debugging Port</h3>
-
-  <p>DDMS assigns a specific debugging port to every virtual machine that it finds on the
-  emulator. You must either attach your IDE to that port (listed on the Info tab for that VM), or
-  you can use a default port 8700 to connect to whatever application is currently selected on the
-  list of discovered virtual machines.</p>
-
-  <p>Your IDE should attach to your application running on the emulator, showing you its threads
-  and allowing you to suspend them, inspect their state, and set breakpoints. If you selected "Wait
-  for debugger" in the Development settings panel the application will run when Eclipse connects,
-  so you will need to set any breakpoints you want before connecting.</p>
-
-  <p>Changing either the application being debugged or the "Wait for debugger" option causes the
-  system to kill the selected application if it is currently running. You can use this to kill your
-  application if it is in a bad state by simply going to the settings and toggling the
-  checkbox.</p>
-
-
-
-
-
-
-
diff --git a/docs/html/guide/developing/debugging/debugging-projects.jd b/docs/html/guide/developing/debugging/debugging-projects.jd
deleted file mode 100644
index 2283f8b..0000000
--- a/docs/html/guide/developing/debugging/debugging-projects.jd
+++ /dev/null
@@ -1,67 +0,0 @@
-page.title=Debugging from Eclipse with ADT
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#tools">The Debug Perspective</a></li>
-
-        <li><a href="#toptips">The DDMS Perspective</a></li>
-      </ol>
-    </div>
-  </div>
-  
-  <p>If you are developing in Eclipse with the ADT plugin, you can use the built-in Java Debugger,
-  along with DDMS, to debug your applications. To access the debugger and
-  DDMS, Eclipse displays the debugger and DDMS features as perspectives, which are customized
-  Eclipse views that display certain tabs and windows depending on the perspective that you are in.
-  Eclipse also takes care of starting the ADB host daemon for you, so you do not have to run this
-  manually.</p>
-
-  <h2>The Debug Perspective in Eclipse</h2>
-
-  <p>The Debug Perspective in Eclipse gives you access to the following tabs:</p>
-
-  <ul>
-    <li>Debug - Displays previously and currently debugged Android applications and its currently
-    running threads</li>
-
-    <li>Variables - When breakpoints are set, displays variable values during code execution</li>
-
-    <li>Breakpoints - Displays a list of the set breakpoints in your application code</li>
-
-    <li>LogCat - Allows you to view system log messages in real time. The LogCat tab is also
-    available in the DDMS perspective.</li>
-  </ul>
-  <p>You can access the Debug Perspective by clicking <strong>Window &gt; Open Perspective &gt;
-  Debug</strong>. Refer to the appropriate documentation for the Eclipse debugger for more
-  information.</p>
-
-  <h2>The DDMS Perspective</h2>
-  <p>The DDMS Perspective in Eclipse lets you access all of the features
-  of DDMS from within the Eclipse IDE. The following sections of DDMS are available to you:</p>
-
-  <ul>
-    <li>Devices - Shows the list of devices and AVDs that are connected to ADB.</li>
-
-    <li>Emulator Control - Lets you carry out device functions.</li>
-
-    <li>LogCat - Lets you view system log messages in real time.</li>
-
-    <li>Threads - Shows currently running threads within a VM.</li>
-
-    <li>Heap - Shows heap usage for a VM.</li>
-
-    <li>Allocation Tracker - Shows the memory allocation of objects.</li>
-
-    <li>File Explorer - Lets you explore the device's file system.</li>
-  </ul>
-  <p>To access the DDMS perspective, go to <strong>Window &gt; Open Perspective &gt;
-  DDMS</strong>. If DDMS does not appear, go to <strong>Window &gt; Open Perspective &gt; Other
-  ...</strong> and select <strong>DDMS</strong> from the Open Perspective window that appears. For
-  more information on using DDMS, see <a href="ddms.html">Using the Dalvik Debug Monitor Server</a>.
-  </p>
\ No newline at end of file
diff --git a/docs/html/guide/developing/debugging/debugging-tracing.jd b/docs/html/guide/developing/debugging/debugging-tracing.jd
deleted file mode 100644
index 72f6498..0000000
--- a/docs/html/guide/developing/debugging/debugging-tracing.jd
+++ /dev/null
@@ -1,402 +0,0 @@
-page.title=Profiling with Traceview and dmtracedump
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li>
-          <a href="#traceviewLayout">Traceview Layout</a>
-
-          <ol>
-            <li><a href="#timelinepanel">Timeline Panel</a></li>
-
-            <li><a href="#profilepanel">Profile Panel</a></li>
-          </ol>
-        </li>
-
-        <li>
-          <a href="#format">Traceview File Format</a>
-          <ol>
-            <li><a href="#datafileformat">Data File Format</a></li>
-
-            <li><a href="#keyfileformat">Key File Format</a></li>
-          </ol>
-        </li>
-
-        <li><a href="#creatingtracefiles">Creating Trace Files</a></li>
-
-        <li><a href="#copyingfiles">Copying Trace Files to a Host Machine</a></li>
-
-        <li><a href="#runningtraceview">Viewing Trace Files in Traceview</a></li>
-
-        <li><a href="#dmtracedump">Using dmtracedump</a></li>
-        
-        <li><a href="#knownissues">Traceview Known Issues</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>Traceview is a graphical viewer for execution logs that you create by using the {@link
-  android.os.Debug} class to log tracing information in your code. Traceview can help you debug
-  your application and profile its performance.</p>
-
-  <h2 id="traceviewLayout">Traceview Layout</h2>
-
-  <p>When you have a trace log file (generated by adding tracing code to your application or by DDMS),
-  you can have Traceview load the log files and display their data in a window visualizes your application
-  in two panels:</p>
-
-  <ul>
-    <li>A <a href="#timelinepanel">timeline panel</a> -- describes when each thread and method
-    started and stopped</li>
-
-    <li>A <a href="#timelinepanel">profile panel</a> -- provides a summary of what happened inside
-    a method</li>
-  </ul>
-
-  <p>The sections below provide addition information about the traceview output panes.</p>
-  
-  <h3 id="timelinepanel">Timeline Panel</h3>
-
-  <p>The image below shows a close up of the timeline panel. Each thread&rsquo;s execution is shown
-  in its own row, with time increasing to the right. Each method is shown in another color (colors
-  are reused in a round-robin fashion starting with the methods that have the most inclusive time).
-  The thin lines underneath the first row show the extent (entry to exit) of all the calls to the
-  selected method. The method in this case is <code>LoadListener.nativeFinished()</code> and it was selected in
-  the profile view.</p>
-
-  <img src="{@docRoot}images/traceview_timeline.png"
-       alt="Traceview timeline panel"
-       width="893"
-       height="284" />
-       <p class="img-caption"><strong>Figure 1.</strong> The Traceview Timeline Panel</p>
-
-  <h3 id="profilepanel">Profile Panel</h3>
-
-  <p>Figure 2 shows the profile pane, a summary of all the time spent
-  in a method. The table shows both the inclusive and exclusive times (as well as the percentage of
-  the total time). Exclusive time is the time spent in the method. Inclusive time is the time spent
-  in the method plus the time spent in any called functions. We refer to calling methods as
-  "parents" and called methods as "children." When a method is selected (by clicking on it), it
-  expands to show the parents and children. Parents are shown with a purple background and children
-  with a yellow background. The last column in the table shows the number of calls to this method
-  plus the number of recursive calls. The last column shows the number of calls out of the total
-  number of calls made to that method. In this view, we can see that there were 14 calls to
-  <code>LoadListener.nativeFinished();</code> looking at the timeline panel shows that one of those calls took
-  an unusually long time.</p>
-
-  <img src="{@docRoot}images/traceview_profile.png"
-       alt="Traceview profile panel."
-       width="892"
-       height="630" />
-  <p class="img-caption"><strong>Figure 2.</strong> The Traceview Profile Panel</p>
-
-  <h2 id="format">Traceview File Format</h2>
-
-  <p>Tracing creates two distinct pieces of output: a <em>data</em> file, which holds the trace
-  data, and a <em>key</em> file, which provides a mapping from binary identifiers to thread and
-  method names. The files are concatenated when tracing completes, into a single <em>.trace</em>
-  file.</p>
-
-  <p class="note"><strong>Note:</strong> The previous version of Traceview did not concatenate
-  these files for you. If you have old key and data files that you'd still like to trace, you can
-  concatenate them yourself with <code>cat mytrace.key mytrace.data &gt;
-  mytrace.trace</code>.</p>
-
-  <h3 id="datafileformat">Data File Format</h3>
-
-  <p>The data file is binary, structured as follows (all values are stored in little-endian
-  order):</p>
-  <pre>
-* File format:
-* header
-* record 0
-* record 1
-* ...
-*
-* Header format:
-* u4 magic 0x574f4c53 ('SLOW')
-* u2 version
-* u2 offset to data
-* u8 start date/time in usec
-*
-* Record format:
-* u1 thread ID
-* u4 method ID | method action
-* u4 time delta since start, in usec
-</pre>
-
-  <p>The application is expected to parse all of the header fields, then seek to "offset to data"
-  from the start of the file. From there it just reads 9-byte records until EOF is reached.</p>
-
-  <p><em>u8 start date/time in usec</em> is the output from <code>gettimeofday()</code>. It's mainly there so
-  that you can tell if the output was generated yesterday or three months ago.</p>
-
-  <p><em>method action</em> sits in the two least-significant bits of the <em>method</em> word. The
-  currently defined meanings are:</p>
-
-  <ul>
-    <li>0 - method entry</li>
-
-    <li>1 - method exit</li>
-
-    <li>2 - method "exited" when unrolled by exception handling</li>
-
-    <li>3 - (reserved)</li>
-  </ul>
-
-  <p>An unsigned 32-bit integer can hold about 70 minutes of time in microseconds.</p>
-
-  <h3 id="keyfileformat">Key File Format</h3>
-
-  <p>The key file is a plain text file divided into three sections. Each section starts with a
-  keyword that begins with '*'. If you see a '*' at the start of a line, you have found the start
-  of a new section.</p>
-
-  <p>An example file might look like this:</p>
-  <pre>
-*version
-1
-clock=global
-*threads
-1 main
-6 JDWP Handler
-5 Async GC
-4 Reference Handler
-3 Finalizer
-2 Signal Handler
-*methods
-0x080f23f8 java/io/PrintStream write ([BII)V
-0x080f25d4 java/io/PrintStream print (Ljava/lang/String;)V
-0x080f27f4 java/io/PrintStream println (Ljava/lang/String;)V
-0x080da620 java/lang/RuntimeException   &lt;init&gt;    ()V
-[...]
-0x080f630c android/os/Debug startMethodTracing ()V
-0x080f6350 android/os/Debug startMethodTracing (Ljava/lang/String;Ljava/lang/String;I)V
-*end
-</pre>
-<p>The following list describes the major sections of a key file:</p>
-  <dl>
-    <dt><em>version section</em></dt>
-
-    <dd>The first line is the file version number, currently 1. The second line,
-    <code>clock=global</code>, indicates that we use a common clock across all threads. A future
-    version may use per-thread CPU time counters that are independent for every thread.</dd>
-
-    <dt><em>threads section</em></dt>
-
-    <dd>One line per thread. Each line consists of two parts: the thread ID, followed by a tab,
-    followed by the thread name. There are few restrictions on what a valid thread name is, so
-    include everything to the end of the line.</dd>
-
-    <dt><em>methods section</em></dt>
-
-    <dd>One line per method entry or exit. A line consists of four pieces, separated by tab marks:
-    <em>method-ID</em> [TAB] <em>class-name</em> [TAB] <em>method-name</em> [TAB]
-    <em>signature</em> . Only the methods that were actually entered or exited are included in the
-    list. Note that all three identifiers are required to uniquely identify a method.</dd>
-  </dl>
-
-  <p>Neither the threads nor methods sections are sorted.</p>
-
-  <h2 id="creatingtracefiles">Creating Trace Files</h2>
-
-  <p>To use Traceview, you need to generate log files containing the trace information you want to
-  analyze.</p>
-  
-  <p>There are two ways to generate trace logs:</p>
-  <ul>
-    <li>Include the {@link android.os.Debug} class in your code and call its
-  methods to start and stop logging of trace information to disk. This method is very precise because
-  you can specify in your code exactly where to start and stop logging trace data.</li>
-    <li>Use the method profiling feature of DDMS to generate trace logs. This method is less
-    precise since you do not modify code, but rather specify when to start and stop logging with
-    a DDMS. Although you have less control on exactly where the data is logged, this method is useful 
-    if you don't have access to the application's code, or if you do not need the precision of the first method.
-    </li>
-  </ul>
-  
-  <p>Before you start generating trace logs, be aware of the following restrictions:</p>
-  <ul>
-    <li>If you are using the {@link android.os.Debug} class, your device or emulator must have an SD card
-     and your application must have permission to write to the SD card. </li>
-    <li>If you are using DDMS, Android 1.5 devices are not supported.</li>
-    <li>If you are using DDMS, Android 2.1 and earlier devices must
-    have an SD card present and your application must have permission to write to the SD card.
-    <li>If you are using DDMS, Android 2.2 and later devices do not need an SD card. The trace log files are 
-    streamed directly to your development machine.</li>
-  </ul>
-  
-  <p>This document focuses on using the {@link android.os.Debug} class to generate trace data.  For more information on using DDMS
-  to generate trace data, see <a href="ddms.html#profiling">Using the Dalvik Debug Monitor Server.</a>
-  </p>
-  
-  <p>To create the trace files, include the {@link android.os.Debug} class and call one of the
-  {@link android.os.Debug#startMethodTracing() startMethodTracing()} methods. In the call, you
-  specify a base name for the trace files that the system generates. To stop tracing, call {@link
-  android.os.Debug#stopMethodTracing() stopMethodTracing()}. These methods start and stop method
-  tracing across the entire virtual machine. For example, you could call 
-  {@link android.os.Debug#startMethodTracing() startMethodTracing()} in
-  your activity's {@link android.app.Activity#onCreate onCreate()} method, and call
-  {@link android.os.Debug#stopMethodTracing() stopMethodTracing()} in that activity's
-  {@link android.app.Activity#onDestroy()} method.</p>
-  <pre>
-    // start tracing to "/sdcard/calc.trace"
-    Debug.startMethodTracing("calc");
-    // ...
-    // stop tracing
-    Debug.stopMethodTracing();
-</pre>
-
-  <p>When your application calls startMethodTracing(), the system creates a file called
-  <code>&lt;trace-base-name&gt;.trace</code>. This contains the binary method trace data and a
-  mapping table with thread and method names.</p>
-
-  <p>The system then begins buffering the generated trace data, until your application calls
-  stopMethodTracing(), at which time it writes the buffered data to the output file. If the system
-  reaches the maximum buffer size before stopMethodTracing() is called, the system stops tracing
-  and sends a notification to the console.</p>
-
-  <p>Interpreted code will run more slowly when profiling is enabled. Don't try to generate
-  absolute timings from the profiler results (i.e. "function X takes 2.5 seconds to run"). The
-  times are only useful in relation to other profile output, so you can see if changes have made
-  the code faster or slower.</p>
-
-  <p>When using the Android emulator, you must specify an SD card when you create your AVD because the trace files
-  are written to the SD card. Your application must have permission to write to the SD card as well.
-
-  <p>The format of the trace files is previously described <a href="#format">in this
-  document</a>.</p>
-
-  <h2 id="copyingfiles">Copying Trace Files to a Host Machine</h2>
-
-  <p>After your application has run and the system has created your trace files
-  <code>&lt;trace-base-name&gt;.trace</code> on a device or emulator, you must copy those files to
-  your development computer. You can use <code>adb pull</code> to copy the files. Here's an example
-  that shows how to copy an example file, calc.trace, from the default location on the emulator to
-  the /tmp directory on the emulator host machine:</p>
-  <pre>
-adb pull /sdcard/calc.trace /tmp
-</pre>
-
-  <h2 id="runningtraceview">Viewing Trace Files in Traceview</h2>
-
-  <p>To run Traceview and view the trace files, enter <code>traceview
-  &lt;trace-base-name&gt;</code>. For example, to run Traceview on the example files copied in the
-  previous section, use:</p>
-  <pre>
-traceview /tmp/calc
-</pre>
-
-  <p class="note"><strong>Note:</strong> If you are trying to view the trace logs of an application 
-  that is built with ProGuard enabled (release mode build), some method and member names might be obfuscated.
-  You can use the Proguard <code>mapping.txt</code> file to figure out the original unobfuscated names. For more information
-  on this file, see the <a href="{@docRoot}guide/developing/tools/proguard.html">Proguard</a> documentation.</p>
-
-      <h2 id="dmtracedump">Using dmtracdedump</h2>
-
-      <p><code>dmtracedump</code> is a tool that gives you an alternate way of generating
-      graphical call-stack diagrams from trace log files. The tool uses the Graphviz Dot utility to
-      create the graphical output, so you need to install Graphviz before running dmtracedump.</p>
-
-      <p>The dmtracedump tool generates the call stack data as a tree diagram, with each call
-      represented as a node. It shows call flow (from parent node to child nodes) using arrows. The
-      diagram below shows an example of dmtracedump output.</p>
-      <img src=
-      "{@docRoot}images/tracedump.png"
-          width="485"
-          height="401" />
-       <p class="image-caption"><strong>Figure 3.</strong> Screenshot of dmtracedump</p>
-
-      <p>For each node, dmtracedump shows <code>&lt;ref&gt;
-      <em>callname</em> (&lt;inc-ms&gt;, &lt;exc-ms&gt;,&lt;numcalls&gt;)</code>, where</p>
-
-      <ul>
-        <li><code>&lt;ref&gt;</code> -- Call reference number, as used in trace logs</li>
-
-        <li><code>&lt;inc-ms&gt;</code> -- Inclusive elapsed time (milliseconds spent in method,
-        including all child methods)</li>
-
-        <li><code>&lt;exc-ms&gt;</code> -- Exclusive elapsed time (milliseconds spent in method,
-        not including any child methods)</li>
-
-        <li><code>&lt;numcalls&gt;</code> -- Number of calls</li>
-      </ul>
-
-      <p>The usage for dmtracedump is:</p>
-      <pre>
-dmtracedump [-ho] [-s sortable] [-d trace-base-name] [-g outfile] &lt;trace-base-name&gt;
-</pre>
-
-      <p>The tool then loads trace log data from <code>&lt;trace-base-name&gt;.data</code> and
-      <code>&lt;trace-base-name&gt;.key</code>. The table below lists the options for dmtracedump.</p>
-
-      <table>
-        <tr>
-          <th>Option</th>
-
-          <th>Description</th>
-        </tr>
-
-        <tr>
-          <td><code>-d&nbsp;&lt;trace-base-name&gt;</code></td>
-
-          <td>Diff with this trace name</td>
-        </tr>
-
-        <tr>
-          <td><code>-g&nbsp;&lt;outfile&gt;</code></td>
-
-          <td>Generate output to &lt;outfile&gt;</td>
-        </tr>
-
-        <tr>
-          <td><code>-h</code></td>
-
-          <td>Turn on HTML output</td>
-        </tr>
-
-        <tr>
-          <td><code>-o</code></td>
-
-          <td>Dump the trace file instead of profiling</td>
-        </tr>
-
-        <tr>
-          <td><code>-d&nbsp;&lt;trace-base-name&gt;</code></td>
-
-          <td>URL base to the location of the sortable javascript file</td>
-        </tr>
-
-        <tr>
-          <td><code>-t&nbsp;&lt;percent&gt;</code></td>
-
-          <td>Minimum threshold for including child nodes in the graph (child's inclusive time as a
-          percentage of parent inclusive time). If this option is not used, the default threshold
-          is 20%.</td>
-        </tr>
-      </table>
-  
-  
-    
-  <h2 id="knownissues">Traceview Known Issues</h2>
-
-  <dl>
-    <dt>Threads</dt>
-
-    <dd>
-      Traceview logging does not handle threads well, resulting in these two problems:
-
-      <ol>
-        <li>If a thread exits during profiling, the thread name is not emitted;</li>
-
-        <li>The VM reuses thread IDs. If a thread stops and another starts, they may get the same
-        ID.</li>
-      </ol>
-    </dd>
-
-    </dl>
\ No newline at end of file
diff --git a/docs/html/guide/developing/debugging/debugging-ui.jd b/docs/html/guide/developing/debugging/debugging-ui.jd
deleted file mode 100644
index 22748be..0000000
--- a/docs/html/guide/developing/debugging/debugging-ui.jd
+++ /dev/null
@@ -1,547 +0,0 @@
-page.title=Debugging and Profiling User Interfaces
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li>
-            <a href="#HierarchyViewer">
-                Debugging and Optimizing User Interfaces with Hierarchy Viewer
-            </a>
-            <ol>
-                <li><a href="#runhv">Running Hierarchy Viewer and choosing a window</a></li>
-                <li><a href="#viewhierarchy">About the View Hierarchy window</a></li>
-                <li><a href="#indiView">Working with an individual View in Tree View</a></li>
-                <li><a href="#hvdebugging">Debugging with View Hierarchy</a></li>
-                <li><a href="#hvoptimize">Optimizing with View Hierarchy</a></li>
-            </ol>
-        </li>
-        <li>
-            <a href="#pixelperfect">
-                Examining and Designing User Interfaces with Pixel Perfect
-            </a>
-            <ol>
-                <li><a href="#aboutpixelperfect">About the Pixel Perfect window</a></li>
-                <li><a href="#overlays">Working with Pixel Perfect overlays</a></li>
-            </ol>
-        </li>
-        <li><a href="#layoutopt">Optimizing Layouts with <code>layoutopt</code></a></li>
-      </ol>
-      <h2>Related videos</h2>
-          <ol>
-              <li>
-<iframe title="Hierarchyviewer" 
-    width="272" height="234" 
-    src="http://www.youtube.com/embed/PAgE7saQUUY?rel=0&amp;hd=1" 
-    frameborder="0" allowfullscreen>
-</iframe>
-              </li>
-              <li>
-<iframe title="Pixel Perfect" 
-    width="272" height="234" 
-    src="http://www.youtube.com/embed/C45bMZGdN7Y?rel=0&amp;hd=1" 
-    frameborder="0" 
-    allowfullscreen>
-</iframe>
-              </li>
-          </ol>
-    </div>
-  </div>
-
-  <p>
-Sometimes your application's layout can slow down your application.
-  To help debug issues in your layout, the Android SDK provides the Hierarchy Viewer and
-  <code>layoutopt</code> tools.
-  </p>
-
-  <p>The Hierarchy Viewer application allows you to debug and optimize your user interface. It
-  provides a visual representation of the layout's View hierarchy (the View Hierarchy window)
-  and a magnified view of the display (the Pixel Perfect window).</p>
-
-  <p><code>layoutopt</code> is a command-line tool that helps you optimize the layouts and layout
-  hierarchies of your applications. You can run it against your layout files or resource
-  directories to quickly check for inefficiencies or other types of problems that could be
-  affecting the performance of your application.</p>
-
-<h2 id="HierarchyViewer">Debugging and Optimizing User Interfaces with Hierarchy Viewer</h2>
-
-<h3 id="runhv">Running Hierarchy Viewer and choosing a window</h3>
-<p>
-    To run Hierarchy Viewer, follow these steps:</p>
-<ol>
-    <li>
-        Connect your device or launch an emulator.
-        <p>
-            To preserve security, Hierarchy Viewer can only connect to devices running a
-            developer version of the Android system.
-        </p>
-    </li>
-    <li>
-        If you have not done so already, install the application you want to work with.
-    </li>
-    <li>
-        Run the application, and ensure that its UI is visible.
-    </li>
-    <li>
-        From a terminal, launch <code>hierarchyviewer</code> from the
-        <code>&lt;sdk&gt;/tools/</code>
-        directory.
-    </li>
-    <li>
-        The first window you see displays a list of devices and emulators. To expand the list
-        of Activity objects for a device or emulator, click the arrow on the left. This displays a
-        list of the Activity objects whose UI is currently visible on the device or emulator. The
-        objects are listed by their Android component name. The list includes both your application
-        Activity and system Activity objects. A screenshot of this window appears in
-        figure 1.
-    </li>
-    <li>
-        Select the name of your Activity from the list. You can now look at its view
-        hierarchy using the View Hierarchy window, or look at a magnified image of the UI using
-        the Pixel Perfect window.
-    </li>
-</ol>
-<p>
-    To learn how to use the View Hierarchy window, go to
-    <a href="#viewhierarchy">About the View Hierarchy window</a>. To learn how to use the
-    Pixel Perfect window, go to <a href="#pixelperfect">About the Pixel Perfect window</a>.
-</p>
-<img id="Fig1" src="{@docRoot}images/developing/hv_device_window.png" alt="" height="600"/>
-<p class="img-caption"><strong>Figure 1.</strong> Hierarchy Viewer device window</p>
-<h3 id="viewhierarchy">About the View Hierarchy window</h3>
-<p>
-    The View Hierarchy window displays the View objects that form the UI of the
-    Activity that is running on your device or emulator. You use it to look at individual
-    View objects within the context of the entire View tree. For each View object, the View
-    Hierarchy window also displays rendering performance data.
-</p>
-<p>
-    To see the View Hierarchy window, run Hierarchy Viewer as described in
-    the section <a href="#runhv">Running Hierarchy Viewer and choosing a window</a>. Next, click
-    <strong>View Hierarchy</strong> at the top of the device window.
-</p>
-<p>
-    You should see four panes:
-</p>
-<ul>
-    <li>
-        <strong>Tree View</strong>: The left-hand pane displays the Tree View,
-        a diagram of the Activity object's hierarchy of views. Use Tree View to examine individual
-        View objects and see the relationships between View objects in your UI.
-        <p>
-            To zoom in on the pane, use the slider at the bottom of the pane, or use your mouse
-            scroll wheel. To move around in the pane or reveal View objects that are not currently
-            visible, click and drag the pane.
-        </p>
-        <p>
-            To highlight the nodes in the tree whose class or ID match a search string, enter the
-            string in the <strong>Filter by class or id:</strong> edit box at the bottom of the
-            window. The background of nodes that match the search string will change from gray to
-            bright blue.
-        </p>
-        <p>
-            To save a screenshot of Tree View to a PNG file, click <strong>Save As PNG</strong> at
-            the top of the View Hierarchy window. This displays a dialog in which you can choose
-            a directory and file name.
-        </p>
-        <p>
-            To save a layered screenshot of your device or emulator to an Adobe Photoshop (PSD)
-            file, click <strong>Capture Layers</strong> at the top of the View Hierarchy window.
-            This displays a dialog in which you can choose a directory or file name.
-            Each View in the UI is saved as a separate Photoshop layer.
-        </p>
-        <p>
-            In Photoshop (or similar program that accepts .psd files), you can hide, show or edit a
-            layer independently of others. When you save a layered screenshot, you can examine and
-            modify the image of an individual View object. This helps you experiment with design
-            changes.
-        </p>
-    </li>
-    <li>
-        The upper right-hand pane displays the <strong>Tree Overview</strong>, a smaller map
-        representation of the entire Tree View window. Use Tree Overview to identify the part of the
-        view tree that is being displayed in Tree View.
-        <p>
-            You can also use Tree Overview to move around in the Tree View pane. Click and drag
-            the shaded rectangle over an area to reveal it in Tree View.
-        </p>
-    </li>
-    <li>
-        The middle right-hand pane displays the <strong>Properties View</strong>,
-        a list of the properties for a selected View object. With Properties View, you can
-        examine all the properties without having to look at your application source.
-        <p>
-            The properties are organized by category. To find an individual property, expand
-            a category name by clicking the arrow on its left. This reveals all the properties
-            in that category.
-        </p>
-    </li>
-    <li>
-        The lower right-hand pane displays the <strong>Layout View</strong>,
-        a block representation of the UI. Layout View is another way to navigate through your UI.
-        When you click on a View object in Tree View, its position in the UI is highlighted.
-        Conversely, when you click in an area of Layout View, the View object for that area is
-        highlighted in Tree View.
-        <p>
-            The outline colors of blocks in Layout View provide additional information:
-        </p>
-            <ul>
-                <li>
-                    Bold red: The block represents the the View that is currently selected in
-                    Tree View.
-                </li>
-                <li>
-                    Light red: The block represents the parent of the block outlined in bold red.
-                </li>
-                <li>
-                    White: The block represents a visible View that is not a parent or child of the
-                    View that is currently selected in Tree View.
-                </li>
-            </ul>
-    </li>
-</ul>
-<p>
-    When the UI of the current Activity changes, the View Hierarchy window is not automatically
-    updated. To update it, click <strong>Load View Hierarchy</strong> at the top of the window.
-</p>
-<p>
-    Also, the window is not updated if you switch to a new Activity. To update it, start by
-    clicking the window selection icon in the bottom left-hand corner of the window. This
-    navigates back to the Window Selection window. From this window, click the Android
-    component name of the new Activity and then click <strong>Load View Hierarchy</strong>
-    at the top of the window.
-</p>
-<p>
-    A screenshot of the View Hierarchy window appears in figure 2.
-</p>
-<img id="Fig2" src="{@docRoot}images/developing/hv_view_hierarchy_window.png" alt="" height="600"/>
-<p class="img-caption"><strong>Figure 2.</strong> The View Hierarchy window</p>
-<h3 id="indiView">Working with an individual View in Tree View</h3>
-<p>
-    Each node in Tree View represents a single View. Some information is always visible. Starting
-    at the top of the node, you see the following:
-</p>
-<ol>
-    <li>
-        View class: The View object's class.
-    </li>
-    <li>
-        View object address: A pointer to View object.
-    </li>
-    <li>
-        View object ID: The value of the
-        <code><a href="{@docRoot}guide/topics/resources/layout-resource.html#idvalue">android:id</a>
-        </code> attribute.
-    </li>
-    <li>
-        Performance indicators: A set of three colored dots that indicate the rendering
-        speed of this View relative to other View objects in the tree. The three dots
-        represent (from left to right) the measure, layout, and draw times of the rendering.
-        <p>
-            The colors indicate the following relative performance:
-        </p>
-        <ul>
-            <li>
-                Green: For this part of the render time, this View is in the faster 50% of all
-                the View objects in the tree. For example, a green dot for the measure time means
-                that this View has a faster measure time than 50% of the View objects in the tree.
-            </li>
-            <li>
-                Yellow: For this part of the render time, this View is in the slower 50% of all
-                the View objects in the tree. For example, a yellow dot for the layout time means
-                that this View has a slower layout time than 50% of the View objects in the tree.
-            </li>
-            <li>
-                Red: For this part of the render time, this View is the slowest one in the tree.
-                For example, a red dot for the draw time means that this View takes the most
-                time to draw of all the View objects in the tree.
-            </li>
-        </ul>
-    </li>
-    <li>
-        View index: The zero-based index of the View in its parent View. If it is the only child,
-        this is 0.
-    </li>
-</ol>
-<p>
-    When you select a node, additional information for the View appears in a small window above
-    the node. When you click one of the nodes, you see the following:
-</p>
-<ul>
-    <li>
-        Image: The actual image of the View, as it would appear in the emulator. If the View has
-        children, these are also displayed.
-    </li>
-    <li>
-        View count: The number of View objects represented by this node. This includes the View
-        itself and a count of its children. For example, this value is 4 for a View that has 3
-        children.
-    </li>
-    <li>
-        Render times: The actual measure, layout, and draw times for the View rendering, in
-        milliseconds. These represent the same values as the performance indicators mentioned in
-        the preceding section.
-    </li>
-</ul>
-<p>
-    An annotated screenshot of an individual node in the Tree View window appears in figure 3.
-</p>
-<img id="Fig3" src="{@docRoot}images/developing/hv_treeview_screenshot.png" alt="" height="600"/>
-<p class="img-caption"><strong>Figure 3.</strong> An annotated node in Tree View</p>
-<h3 id="hvdebugging">Debugging with View Hierarchy</h3>
-<p>
-    The View Hierarchy window helps you debug an application by providing a static display
-    of the UI. The display starts with your application's opening screen. As you step through
-    your application, the display remains unchanged until you redraw it by invalidating and
-    then requesting layout for a View.
-</p>
-<p>
-    To redraw a View in the display:
-</p>
-    <ul>
-        <li>
-            Select a View in Tree View. As you move up towards the root of the tree (to the
-            left in the Tree View), you see the highest-level View objects. Redrawing a high-level
-            object usually forces the lower-level objects to redraw as well.
-        </li>
-        <li>
-            Click <strong>Invalidate</strong> at the top of the window. This marks the View as
-            invalid, and schedules it for a redraw at the next point that a layout is requested.
-        </li>
-        <li>
-            Click <strong>Request Layout</strong> to request a layout. The View and its children
-            are redrawn, as well as any other View objects that need to be redrawn.
-        </li>
-    </ul>
-<p>
-    Manually redrawing a View allows you to watch the View object tree and examine the properties of
-    individual View objects one step at a time as you go through breakpoints in your code.
-</p>
-<h3 id="hvoptimize">Optimizing with View Hierarchy</h3>
-<p>
-    View Hierarchy also helps you identify slow render performance. You start by looking at the
-    View nodes with red or yellow performance indicators to identify the slower View objects. As you
-    step through your application, you can judge if a View is consistently slow or slow only in
-    certain circumstances.
-</p>
-<p>
-    Remember that slow performance is not necessarily evidence of a problem, especially for
-    ViewGroup objects. View objects that have more children and more complex View objects render
-    more slowly.
-</p>
-<p>
-    The View Hierarchy window also helps you find performance issues. Just by looking at the
-    performance indicators (the dots) for each View node, you can see which View objects are the
-    slowest to measure, layout, and draw. From that, you can quickly identify the problems you
-    should look at first.
-</p>
-<h2 id="pixelperfect">Examining and Designing User Interfaces with Pixel Perfect</h2>
-<p>
-    Pixel Perfect is a tool for examining pixel properties and laying out UIs from a design drawing.
-</p>
-<h3 id="aboutpixelperfect">About the Pixel Perfect window</h3>
-<p>
-    The Pixel Perfect window displays a magnified image of the screen that is currently
-    visible on the emulator or device. In it, you can examine the properties
-    of individual pixels in the screen image. You can also use the Pixel Perfect window
-    to help you lay out your application UI based on a bitmap design.
-</p>
-<p>
-    To see the Pixel Perfect window, run Hierarchy Viewer, as described in
-    the section <a href="#runhv">Running Hierarchy Viewer and choosing a window</a>. Next, click
-    <strong>Inspect Screenshot</strong> at the top of the device window. The Pixel Perfect window
-    appears.
-</p>
-<p>
-    In it, you see three panes:
-</p>
-<ul>
-    <li>
-        View Object pane: This is a hierarchical list of the View objects that are currently
-        visible on the device or emulator screen, including both the ones in your application and
-        the ones generated by the system. The objects are listed by their View class.
-        To see the class names of a View object's children, expand the View by clicking the
-        arrow to its left. When you click a View, its position is highlighted in the Pixel Perfect
-        pane on the right.
-    </li>
-    <li>
-        Pixel Perfect Loupe pane: This is the magnified screen image. It is overlaid by a grid in
-        which each square represents one pixel. To look at the information for a pixel, click in its
-        square. Its color and X,Y coordinates appear at the bottom of the pane.
-        <p>
-            The magenta crosshair in the pane corresponds to the positioning
-            crosshair in the next pane. It only moves when you move the crosshair in the next pane.
-        </p>
-        <p>
-            To zoom in or out on the image, use the <strong>Zoom</strong> slider at the bottom of
-            the pane, or use your mouse's scroll wheel.
-        </p>
-        <p>
-            When you select a pixel in the Loupe pane, you see the following information at the
-            bottom of the pane:
-        </p>
-        <ul>
-            <li>
-                Pixel swatch: A rectangle filled with the same color as the pixel.
-            </li>
-            <li>
-                HTML color code: The hexadecimal RGB code corresponding to the pixel color
-            </li>
-            <li>
-                RGB color values: A list of the (R), green (G), and blue (B) color values of the
-                pixel color. Each value is in the range 0-255.
-            </li>
-            <li>
-                X and Y coordinates: The pixel's coordinates, in device-specific pixel units.
-                The values are 0-based, with X=0 at the left of the screen and Y=0 at the top.
-            </li>
-        </ul>
-    </li>
-    <li>
-        Pixel Perfect pane: This displays the currently visible screen as it would appear in the
-        emulator.
-        <p>
-            You use the cyan crosshair to do coarse positioning. Drag the crosshair in the image,
-            and the Loupe crosshair will move accordingly. You can also click on a point in the
-            Pixel Perfect pane, and the crosshair will move to that point.
-        </p>
-        <p>
-            The image corresponding to the View object selected in the View Object pane is
-            outlined in a box that indicates the View object's position on the screen. For the
-            selected object, the box is bold red. Sibling and parent View objects have a light
-            red box. View objects that are neither parents nor siblings are in white.
-        </p>
-        <p>
-            The layout box may have other rectangles either inside or outside it, each of which
-            indicates part of the View. A purple or green rectangle indicates the View bounding box.
-            A white or black box inside the layout box represents the <strong>padding</strong>, the
-            defined distance between the View object's content and its bounding box. An outer white
-            or black rectangle represents the <strong>margins</strong>, the distance between the
-            View bounding box and adjacent View objects. The padding and margin boxes are white if
-            the layout background is black, and vice versa.
-        </p>
-        <p>
-            You can save the screen image being displayed in the Pixel Perfect pane as a PNG file.
-            This produces a screenshot of the current screen. To do this, click
-            <strong>Save as PNG</strong> at the top of the window. This displays a dialog,
-            in which you can choose a directory and filename for the file.
-        </p>
-    </li>
-</ul>
-<p>
-    The panes are not automatically refreshed when you change one of the View objects or go to
-    another Activity. To refresh the Pixel Perfect pane and the Loupe pane, click
-    <strong>Refresh Screenshot</strong> at the top of the window. This will change the panes
-    to reflect the current screen image. You still may need to refresh the View Object pane;
-    to do this, click <strong>Refresh Tree</strong> at the top of the window.
-</p>
-<p>
-    To automatically refresh the panes while you are debugging, set
-    <strong>Auto Refresh</strong> at the top of the window, and then set a refresh rate
-    with the <strong>Refresh Rate</strong> slider at the bottom of the Loupe pane.
-</p>
-<h3 id="overlays">Working with Pixel Perfect overlays</h3>
-<p>
-    You often construct a UI based on a design done as a bitmap image. The Pixel Perfect window
-    helps you match up your View layout to a bitmap image by allowing you to load the bitmap as an
-    <strong>overlay</strong> on the screen image.
-</p>
-<p>
-    To use a bitmap image as an overlay:
-</p>
-<ul>
-    <li>
-        Start your application in a device or emulator and navigate to the Activity whose UI you
-        want to work with.
-    </li>
-    <li>
-        Start Hierarchy Viewer and navigate to the Pixel Perfect window.
-    </li>
-    <li>
-        At the top of the window, click <strong>Load Overlay</strong>. A dialog opens, prompting
-        for the image file to load. Load the image file.
-    </li>
-    <li>
-        Pixel Perfect displays the overlay over the screen image in the Pixel Perfect pane. The
-        lower left corner of the bitmap image (X=0, Y=<em>max value</em>) is anchored on the lower
-        leftmost pixel (X=0, Y=<em>max screen</em>) of the screen.
-        <p>
-            By default, the overlay has a 50% transparency, which allows you to see the screen
-            image underneath. You can adjust this with the <strong>Overlay:</strong> slider at the
-            bottom of the Loupe pane.
-        </p>
-        <p>
-            Also by default, the overlay is not displayed in the Loupe pane. To display it,
-            set <strong>Show in Loupe</strong> at the top of the window.
-        </p>
-    </li>
-</ul>
-<p>
-    The overlay is not saved as part of the screenshot when you save the screen image as a PNG
-    file.
-</p>
-<p>
-    A screenshot of the Pixel Perfect window appears in figure 4.
-</p>
-<img id="Fig4" src="{@docRoot}images/developing/hv_pixelperfect.png"
-        alt=""
-        height="600"/>
-<p class="img-caption"><strong>Figure 4.</strong> The Pixel Perfect window</p>
-<h2 id="layoutopt">Optimizing layouts with layoutopt</h2>
-<p>
-    The <code>layoutopt</code> tool lets you analyze the XML files that define your
-    application's UI to find inefficiencies in the view hierarchy.</p>
-
-<p>
-    To run the tool, open a terminal and launch <code>layoutopt &lt;xmlfiles&gt;</code>
-    from your SDK <code>tools/</code> directory. The &lt;xmlfiles&gt; argument is a space-
-    delimited list of resources you want to analyze, either uncompiled resource xml files or
-    directories of such files.
-</p>
-<p>
-    The tool loads the specified XML files and analyzes their definitions and
-    hierarchies according to a set of predefined rules. For every issue it detects, it
-    displays the following information:
-</p>
-<ul>
-    <li>
-        The filename in which the issue was detected.
-    </li>
-    <li>
-        The line number for the issue.
-    </li>
-    <li>
-        A description of the issue, and for some types of issues it also suggests a resolution.
-    </li>
-</ul>
-<p>The following is a sample of the output from the tool:</p>
-<pre>
-$ layoutopt samples/
-samples/compound.xml
-   7:23 The root-level &lt;FrameLayout/&gt; can be replaced with &lt;merge/&gt;
-   11:21 This LinearLayout layout or its FrameLayout parent is useless
-samples/simple.xml
-   7:7 The root-level &lt;FrameLayout/&gt; can be replaced with &lt;merge/&gt;
-samples/too_deep.xml
-   -1:-1 This layout has too many nested layouts: 13 levels, it should have &lt;= 10!
-   20:81 This LinearLayout layout or its LinearLayout parent is useless
-   24:79 This LinearLayout layout or its LinearLayout parent is useless
-   28:77 This LinearLayout layout or its LinearLayout parent is useless
-   32:75 This LinearLayout layout or its LinearLayout parent is useless
-   36:73 This LinearLayout layout or its LinearLayout parent is useless
-   40:71 This LinearLayout layout or its LinearLayout parent is useless
-   44:69 This LinearLayout layout or its LinearLayout parent is useless
-   48:67 This LinearLayout layout or its LinearLayout parent is useless
-   52:65 This LinearLayout layout or its LinearLayout parent is useless
-   56:63 This LinearLayout layout or its LinearLayout parent is useless
-samples/too_many.xml
-   7:413 The root-level &lt;FrameLayout/&gt; can be replaced with &lt;merge/&gt;
-   -1:-1 This layout has too many views: 81 views, it should have &lt;= 80!
-samples/useless.xml
-   7:19 The root-level &lt;FrameLayout/&gt; can be replaced with &lt;merge/&gt;
-   11:17 This LinearLayout layout or its FrameLayout parent is useless
-</pre>
diff --git a/docs/html/guide/developing/debugging/index.jd b/docs/html/guide/developing/debugging/index.jd
deleted file mode 100644
index 0ad1a08..0000000
--- a/docs/html/guide/developing/debugging/index.jd
+++ /dev/null
@@ -1,188 +0,0 @@
-page.title=Debugging
-@jd:body
-
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#stack">Debugging Environment</a></li>
-
-        <li><a href="#addltools">Additional Debugging Tools</a></li>
-
-        <li><a href="#tips">Debugging Tips</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>The Android SDK provides most of the tools that you need to debug your applications. You need
-  a JDWP-compliant debugger if you want to be able to do things such as step through code,
-  view variable values, and pause execution of an application. If you are using Eclipse, a
-  JDWP-compliant debugger is already included and there is no setup required. If you are using
-  another IDE, you can use the debugger that comes with it and attach the debugger to a special
-  port so it can communicate with the application VMs on your devices. The main components that
-  comprise a typical Android debugging environment are:</p>
-
-  <dl>
-    <dt><a href="{@docRoot}guide/developing/tools/adb.html"><strong>adb</strong></a></dt>
-
-    <dd><code>adb</code> acts as a middleman between a device and your development system. It provides various
-    device management capabilities, including moving and syncing files to the emulator, running a
-    UNIX shell on the device or emulator, and providing a general means to communicate with
-    connected emulators and devices.</dd>
-
-    <dt><a href="{@docRoot}guide/developing/debugging/ddms.html"><strong>Dalvik Debug Monitor
-    Server</strong></a></dt>
-
-    <dd>DDMS is a graphical program that communicates with your devices through <code>adb</code>. DDMS can
-    capture screenshots, gather thread and stack information, spoof incoming calls and SMS
-    messages, and has many other features.</dd>
-
-    <dt><strong><a href="{@docRoot}guide/developing/device.html">Device</a> or
-    <a href="{@docRoot}guide/developing/devices/index.html">Android Virtual Device</a></strong></dt>
-
-    <dd>Your application must run in a device or in an AVD so that it can be debugged. An <code>adb</code> device
-    daemon runs on the device or emulator and provides a means for the <code>adb</code> host daemon to
-    communicate with the device or emulator.</dd>
-
-    <dt><strong>JDWP debugger</strong></dt>
-
-    <dd>The Dalvik VM (Virtual Machine) supports the JDWP protocol to allow debuggers to attach to
-    a VM. Each application runs in a VM and exposes a unique port that you can attach a debugger to
-    via DDMS. If you want to debug multiple applications, attaching to each port might become
-    tedious, so DDMS provides a port forwarding feature that can forward a specific VM's debugging
-    port to port 8700. You can switch freely from application to application by highlighting it in the
-    Devices tab of DDMS. DDMS forwards the appropriate port to port 8700. Most modern Java IDEs include a JDWP debugger,
-    or you can use a command line debugger such as <a href="http://download.oracle.com/javase/6/docs/technotes/tools/">
-    <code>jdb</code></a>.</dd>
-  </dl>
-
-  <h2>Debugging Environment</h2>
-
-  <p>Figure 1 shows how the various debugging tools work together in a typical
-  debugging environment.</p>
-  <img src="{@docRoot}images/debugging.png"
-        alt="Debugging workflow" />
-  <p class="img-caption><strong>Figure 1. </strong> Debugging Workflow</p>
-
-  <p>On your emulator or device, each application runs in its own instance of a Dalvik VM. The <code>adb</code>
-  device daemon allows communication with the VMs from an outside party.</p>
-
-  <p>On your development machine, the <code>adb</code> host daemon communicates with the <code>adb</code> device daemon and
-  allows tools such as DDMS to communicate with the device or emulator. The <code>adb</code> host daemon also
-  allows you to access shell commands on the device as well as providing capabilities such as
-  application installation and file transferring.</p>
-
-  <p>Each application VM on the device or emulator exposes a debugging port that you can attach to
-  via DDMS. DDMS can forward any of these ports to a static debugging port (typically port 8700) by
-  selecting the application that you want to debug in the DDMS user interface. A JDWP debugger can
-  attach to this static debugging port and debug all the applications that are running on the
-  device or emulator without having to attach to multiple ports.</p>
-
-  <p>If you are using Eclipse, much of these interconnections are hidden from you. DDMS, <code>adb</code>, and a
-  JDWP debugger are all setup for you and you can access them through the Debug and DDMS
-  perspectives in Eclipse. If you are developing in a non-Eclipse environment, you have to invoke
-  these tools manually.</p>
-
-  <h2 id="addltools">Additional Debugging Tools</h2>
-
-  <p>In addition to the main debugging tools, the Android SDK provides additional tools to help you
-  debug and profile your applications:</p>
-
-  <dl>
-    <dt><strong><a href="{@docRoot}guide/developing/debugging/debugging-ui.html">Heirarchy Viewer
-    and layoutopt</a></strong></dt>
-
-    <dd>Graphical programs that let you debug and profile user interfaces.</dd>
-
-    <dt><strong><a href=
-    "{@docRoot}guide/developing/debugging/debugging-tracing.html">Traceview</a></strong></dt>
-
-    <dd>A graphical viewer that displays trace file data for method calls and times saved by your
-    application, which can help you profile the performance of your application.</dd>
-
-    <dt><strong><a href="{@docRoot}guide/developing/debugging/debugging-devtools.html">Dev Tools
-    Android application</a></strong></dt>
-
-    <dd>The Dev Tools application included in the emulator system image exposes several settings
-    that provide useful information such as CPU usage and frame rate. You can also transfer the
-    application to a hardware device.</dd>
-  </dl>
-
-
-  <h2 id="tips">Debugging Tips</h2>
-
-<p>While debugging, keep these helpful tips in mind to help you figure out common problems with your
-applications:</p>
-
-<dl>
-<dt><strong>Dump the stack trace</strong></dt>
-<dd>To obtain a stack dump from emulator, you can log
-in with <code>adb shell</code>, use <code>ps</code> to find the process you
-want, and then <code>kill -3</code>. The stack trace appears in the log file.
-</dd>
-
-<dt><strong>Display useful info on the emulator screen</strong></dt>
-<dd>The device can display useful information such as CPU usage or highlights
-around redrawn areas. Turn these features on and off in the developer settings
-window as described in <a href="{@docRoot}guide/developing/debugging/debugging-devtools.html">
-Debugging with the Dev Tools App</a>.
-</dd>
-
-<dt><strong>Get application and system state information from the emulator</strong></dt>
-<dd>You can access dumpstate information from the <code>adb shell</code> commands. See
-<a href="{@docRoot}guide/developing/tools/adb.html#dumpsys">dumpsys and
-dumpstate</a> on the adb topic page.</dd>
-
-
-
-<dt><strong>Get wireless connectivity information</strong></dt>
-<dd>You can get information about wireless connectivity using DDMS.
-From the <strong>Device</strong> menu, select <strong>Dump
-radio state</strong>.</dd>
-
-<dt><strong>Log trace data</strong></dt>
-<dd>You can log method calls and other tracing data in an activity by calling
-{@link android.os.Debug#startMethodTracing(String) startMethodTracing()}. See <a
-href="{@docRoot}guide/developing/debugging/debugging-tracing.html">Profiling with Traceview and
-dmtracedump</a> for details. </dd>
-
-<dt><strong>Log radio data</strong></dt>
-<dd>By default, radio information is not logged to the system (it is a lot of
-data). However, you can enable radio logging using the following commands:
-
-<pre class="no-pretty-print">
-adb shell
-logcat -b radio
-</pre>
-</dd>
-
-<dt><strong>Capture screenshots</strong></dt>
-<dd>The Dalvik Debug Monitor Server (DDMS) can capture screenshots from the emulator. Select
-<strong>Device > Screen capture</strong>.</dd>
-
-<dt><strong>Use debugging helper classes</strong></dt>
-<dd>Android provides debug helper classes such as {@link android.util.Log
-    util.Log} and {@link android.os.Debug} for your convenience. </dd>
-
-<dt><strong>Garbage collection</strong></dt>
-<dd>
-The debugger and garbage collector are currently loosely integrated. The VM guarantees that any
-object the debugger is aware of is not garbage collected until after the debugger disconnects.
-This can result in a buildup of objects over time while the debugger is connected. For example,
-if the debugger sees a running thread, the associated {@link java.lang.Thread} object is not
-garbage collected even after the thread terminates.
-</dd>
-
-</dl>
-
-<p>See the <a href="{@docRoot}resources/faq/troubleshooting.html">Troubleshooting</a> document
-for answers to some common developing and debugging issues.</p>
-
-
-
-
-
-
-
diff --git a/docs/html/guide/developing/device.jd b/docs/html/guide/developing/device.jd
deleted file mode 100644
index d91551a..0000000
--- a/docs/html/guide/developing/device.jd
+++ /dev/null
@@ -1,267 +0,0 @@
-page.title=Using Hardware Devices
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#setting-up">Setting up a Device for Development</a>
-      <ol>
-        <li><a href="#VendorIds">USB Vendor IDs</a></li>
-      </ol>
-    </li>
-  </ol>
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}sdk/win-usb.html">Google USB Driver</a></li>
-    <li><a href="{@docRoot}sdk/oem-usb.html">OEM USB Drivers</a></li>
-  </ol>
-</div>
-</div>
-
-<p>When building a mobile application, it's important that you always test your application on a
-real device before releasing it to users. This page describes how to set up your development
-environment and Android-powered device for testing and debugging on the device.</p>
-
-<p>You can use any Android-powered device as an environment for running,
-debugging, and testing your applications. The tools included in the SDK make it easy to install and
-run your application on the device each time you compile. You can install your application on the
-device directly from Eclipse or from the command line with ADB. If
-you don't yet have a device, check with the service providers in your area to determine which
-Android-powered devices are available.</p>
-
-<p>If you want a SIM-unlocked phone, then you might consider the Google Nexus S. To find a place
-to purchase the Nexus S and other Android-powered devices, visit <a
-href="http://www.google.com/phone/detail/nexus-s">google.com/phone</a>.</p>
-
-<p class="note"><strong>Note:</strong> When developing on a device, keep in mind that you should
-still use the <a
-href="{@docRoot}guide/developing/devices/emulator.html">Android emulator</a> to test your
-application
-on configurations that are not equivalent to those of your real device. Although the emulator
-does not allow you to test every device feature (such as the accelerometer), it does
-allow you to verify that your application functions properly on different versions of the Android
-platform, in different screen sizes and orientations, and more.</p>
-
-
-<h2 id="setting-up">Setting up a Device for Development</h2>
-
-<p>With an Android-powered device, you can develop and debug your Android applications just as you
-would on the emulator. Before you can start, there are just a few things to do:</p>
-
-<ol>
-  <li>Declare your application as "debuggable" in your Android Manifest.
-    <p>When using Eclipse, you can skip this step, because running your app directly from
-the Eclipse IDE automatically enables debugging.</p>
-    <p>In the <code>AndroidManifest.xml</code> file, add <code>android:debuggable="true"</code> to
-the <code>&lt;application></code> element.</p>
-    <p class="note"><strong>Note:</strong> If you manually enable debugging in the manifest
- file, be sure to disable it before you build for release (your published application
-should usually <em>not</em> be debuggable).</p></li>
-  <li>Turn on "USB Debugging" on your device.
-    <p>On the device, go to <strong>Settings > Applications > Development</strong> 
-    and enable <strong>USB debugging</strong> 
-    (on an Android 4.0 device, the setting is 
-located in <strong>Settings > Developer options</strong>).</p>
-  </li>
-  <li>Set up your system to detect your device.
-    <ul>
-      <li>If you're developing on Windows, you need to install a USB driver for adb. For an
-installation guide and links to OEM drivers, see the <a href="{@docRoot}sdk/oem-usb.html">OEM USB
-Drivers</a> document.</li>
-      <li>If you're developing on Mac OS X, it just works. Skip this step.</li>
-      <li>If you're developing on Ubuntu Linux, you need to add a
-<code>udev</code> rules file that contains a USB configuration for each type of device
-you want to use for development. In the rules file, each device manufacturer
-is identified by a unique vendor ID, as specified by the
-<code>ATTR{idVendor}</code> property. For a list of vendor IDs, see  <a
-href="#VendorIds">USB Vendor IDs</a>, below. To set up device detection on
-Ubuntu Linux:
-
-        <ol type="a">
-          <li>Log in as root and create this file:
-            <code>/etc/udev/rules.d/51-android.rules</code></span>.
-            <p>Use this format to add each vendor to the file:<br/>
-              <code>SUBSYSTEM==&quot;usb&quot;, ATTR{idVendor}==&quot;0bb4&quot;, MODE=&quot;0666&quot;, GROUP=&quot;plugdev&quot;</code>
-              <br /><br />
-              
-              In this example, the vendor ID is for HTC. The <code>MODE</code>
-assignment specifies read/write permissions, and <code>GROUP</code> defines
-which Unix group  owns the device node. </p>
-            
-            <p class="note"><strong>Note:</strong> The rule syntax
-may vary slightly depending on your  environment. Consult the <code>udev</code>
-documentation for your system as needed. For an overview of rule syntax, see
-this guide to <a
-href="http://www.reactivated.net/writing_udev_rules.html">writing udev
-rules</a>.</p>
-          </li>
-          <li>Now execute:<br/>
-            <code>chmod a+r /etc/udev/rules.d/51-android.rules</code>
-          </li>
-        </ol>
-      </li>
-    </ul>
-  </li>
-</ol>
-
-<p>When plugged in over USB, can verify that your device is connected by executing <code>adb
-devices</code> from your SDK {@code platform-tools/} directory. If connected,
-you'll see the device name listed as a "device."</p>
-
-<p>If using Eclipse, run or debug your application as usual. You will be
-presented with a <b>Device Chooser</b> dialog that lists the available
-emulator(s) and connected device(s). Select the device upon which you want to
-install and run the application.</p>
-
-<p>If using the <a href="{@docRoot}guide/developing/tools/adb.html">Android
-Debug Bridge</a> (adb), you can issue commands with the <code>-d</code> flag to
-target your connected device.</p>
-
-<h3 id="VendorIds">USB Vendor IDs</h3>
-
-<p>This table provides a reference to the vendor IDs needed in order to add USB
-device support on Linux. The USB Vendor ID is the value given to the
-<code>ATTR{idVendor}</code> property in the rules file, as described 
-above.</p>
-
-<table>
-  <tr>
-    <th>Company</th><th>USB Vendor ID</th></tr>
-  <tr>
-    <td>Acer</td>
-    <td><code>0502</code></td>
-  </tr>
-  <tr>
-    <td>ASUS</td>
-    <td><code>0b05</code></td>
-  </tr>
-  <tr>
-    <td>Dell</td>
-    <td><code>413c</code></td>
-  </tr>
-  <tr>
-    <td>Foxconn</td>
-    <td><code>0489</code></td>
-  </tr>
-  <tr>
-    <td>Fujitsu</td>
-    <td><code>04c5</code></td>
-  </tr>
-  <tr>
-    <td>Fujitsu Toshiba</td>
-    <td><code>04c5</code></td>
-  </tr>
-  <tr>
-    <td>Garmin-Asus</td>
-    <td><code>091e</code></td>
-  </tr>
-  <tr>
-    <td>Google</td>
-    <td><code>18d1</code></td>
-  </tr>
-  <tr>
-    <td>Hisense</td>
-    <td><code>109b</code></td>
-  </tr>
-  <tr>
-    <td>HTC</td>
-    <td><code>0bb4</code></td>
-  </tr>
-  <tr>
-    <td>Huawei</td>
-    <td><code>12d1</code></td>
-  </tr>
-  <tr>
-    <td>K-Touch</td>
-    <td><code>24e3</code></td>
-  </tr>
-  <tr>
-    <td>KT Tech</td>
-    <td><code>2116</code></td>
-  </tr>
-  <tr>
-    <td>Kyocera</td>
-    <td><code>0482</code></td>
-  </tr>
-  <tr>
-    <td>Lenovo</td>
-    <td><code>17ef</code></td>
-  </tr>
-  <tr>
-    <td>LG</td>
-    <td><code>1004</code></td>
-  </tr>
-  <tr>
-    <td>Motorola</td>
-    <td><code>22b8</code></td>
-  </tr>
-  <tr>
-    <td>NEC</td>
-    <td><code>0409</code></td>
-  </tr>
-  <tr>
-    <td>Nook</td>
-    <td><code>2080</code></td>
-  </tr>
-  <tr>
-    <td>Nvidia</td>
-    <td><code>0955</code></td>
-  </tr>
-  <tr>
-    <td>OTGV</td>
-    <td><code>2257</code></td>
-  </tr>
-  <tr>
-    <td>Pantech</td>
-    <td><code>10a9</code></td>
-  </tr>
-  <tr>
-    <td>Pegatron</td>
-    <td><code>1d4d</code></td>
-  </tr>
-  <tr>
-    <td>Philips</td>
-    <td><code>0471</code></td>
-  </tr>
-  <tr>
-    <td>PMC-Sierra</td>
-    <td><code>04da</code></td>
-  </tr>
-  <tr>
-    <td>Qualcomm</td>
-    <td><code>05c6</code></td>
-  </tr>
-  <tr>
-    <td>SK Telesys</td>
-    <td><code>1f53</code></td>
-  </tr>
-  <tr>
-    <td>Samsung</td>
-    <td><code>04e8</code></td>
-  </tr>
-  <tr>
-    <td>Sharp</td>
-    <td><code>04dd</code></td>
-  </tr>
-  <tr>
-    <td>Sony</td>
-    <td><code>054c</code></td>
-  </tr>
-  <tr>
-    <td>Sony Ericsson</td>
-    <td><code>0fce</code></td>
-  </tr>
-  <tr>
-    <td>Teleepoch</td>
-    <td><code>2340</code></td>
-  </tr>
-  <tr>
-    <td>Toshiba</td>
-    <td><code>0930</code></td>
-  </tr>
-  <tr>
-    <td>ZTE</td>
-    <td><code>19d2</code></td>
-  </tr>
-</table>
diff --git a/docs/html/guide/developing/devices/emulator.jd b/docs/html/guide/developing/devices/emulator.jd
deleted file mode 100644
index 5edd1f5..0000000
--- a/docs/html/guide/developing/devices/emulator.jd
+++ /dev/null
@@ -1,1571 +0,0 @@
-page.title=Using the Android Emulator
-parent.title=Managing Virtual Devices
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <h2>In this document</h2>
-    <ol>
-      <li><a href="#overview">Overview</a></li>
-      <li><a href="#avds">Android Virtual Devices and the Emulator</a></li>
-      <li><a href="#starting">Starting and Stopping the Emulator</a></li>
-      <li><a href="#apps">Installing Applications on the Emulator</a></li>
-      <li><a href="#acceleration">Using Hardware Acceleration</a>
-        <ol>
-          <li><a href="#accel-graphics">Configuring Graphics Acceleration</a></li>
-          <li><a href="#accel-vm">Configuring Virtual Machine Acceleration</a></li>
-        </ol>
-      </li>
-      <li><a href="#sdcard">SD Card Emulation</a>
-        <ol>
-          <li><a href="#sdcard-creating">Creating an SD card image</a></li>
-          <li><a href="#sdcard-files">Copying files to an SD card image</a></li>
-          <li><a href="#sdcard-loading">Loading an SD card image</a></li>
-        </ol>
-      </li>
-      <li><a href="#diskimages">Working with Emulator Disk Images</a>
-	      <ol>
-	        <li><a href="#defaultimages">Default image files</a></li>
-	        <li><a href="#runtimeimages">Runtime images: user data and SD card</a></li>
-	        <li><a href="#temporaryimages">Temporary images</a></li>
-	      </ol>
-	    </li>
-      <li><a href="#emulatornetworking">Emulator Networking</a>
-	      <ol>
-          <li><a href="#networkaddresses">Network Address Space</a></li>
-          <li><a href="#networkinglimitations">Local Networking Limitations</a></li>
-          <li><a href="#redirection">Using Network Redirection</a></li>
-          <li><a href="#dns">Configuring the Emulator's DNS Settings</a></li>
-          <li><a href="#proxy">Using the Emulator with a Proxy</a></li>
-          <li><a href="#connecting">Interconnecting Emulator Instances</a></li>
-          <li><a href="#calling">Sending a Voice Call or SMS to Another Emulator Instance</a></li>
-        </ol>
-      </li>
-      <li><a href="#console">Using the Emulator Console</a>
-        <ol>
-          <li><a href="#portredirection">Port Redirection</a></li>
-          <li><a href="#geo">Geo Location Provider Emulation</a></li>
-          <li><a href="#events">Hardware Events Emulation</a></li>
-          <li><a href="#power">Device Power Characteristics</a></li>
-          <li><a href="#netstatus">Network Status</a></li>
-          <li><a href="#netdelay">Network Delay Emulation</a></li>
-          <li><a href="#netspeed">Network Speed Emulation</a></li>
-          <li><a href="#telephony">Telephony Emulation</a></li>
-          <li><a href="#sms">SMS Emulation</a></li>
-          <li><a href="#vm">VM State</a></li>
-          <li><a href="#window">Emulator Window</a></li>
-          <li><a href="#terminating">Terminating an Emulator Instance</a></li>
-        </ol>
-      </li>
-      <li><a href="#limitations">Emulator Limitations</a></li>
-      <li><a href="#troubleshooting">Troubleshooting Emulator Problems</a></li>
-    </ol>
-
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}guide/developing/tools/emulator.html">Android Emulator</a></li>
-    <li><a href="{@docRoot}guide/developing/devices/managing-avds.html">Managing AVDs with AVD Manager</a></li>
-  </ol>
-</div>
-</div>
-
-<img src="{@docRoot}images/emulator-wvga800l.png" alt="Image of the Android Emulator"
-width="367" height="349" style="margin-left:2em;float:right;"/>
-<p>The Android SDK includes a virtual mobile device emulator
-that runs on your computer. The emulator lets you prototype, develop and test
-Android applications without using a physical device. </p>
-
-<p>The Android emulator mimics all of the hardware and software features
-of a typical mobile device, except that it cannot place actual phone
-calls. It provides a variety of navigation and control keys, which you can "press"
-using your mouse or keyboard to generate events for your application. It also
-provides a screen in which your application is displayed, together with any other
-active Android applications. </p>
-
-<p>To let you model and test your application more easily, the emulator utilizes
-Android Virtual Device (AVD) configurations. AVDs let you define certain hardware
-aspects of your emulated phone and allow you to create many configurations to test
-many Android platforms and hardware permutations. Once your application is running on
-the emulator, it can use the services of the Android platform to invoke other
-applications, access the network, play audio and video, store and retrieve data,
-notify the user, and render graphical transitions and themes. </p>
-
-<p>The emulator also includes a variety of debug capabilities, such as a console
-from which you can log kernel output, simulate application interrupts (such as
-arriving SMS messages or phone calls), and simulate latency effects and dropouts
-on the data network.</p>
-
-
-
-<h2 id="overview">Overview</h2>
-
-<p>The Android emulator is an application that provides a virtual
-mobile device on which you can run your Android applications. It runs a full
-Android system stack, down to the kernel level, that includes a set of
-preinstalled applications (such as the dialer) that you can access from your
-applications. You can choose what version of the Android system you want to
-run in the emulator by configuring AVDs, and you can also customize the
-mobile device skin and key mappings. When launching the emulator and at runtime,
-you can use a variety of commands and options to control its behavior.
-</p>
-
-<p>The Android system images available through the Android SDK Manager contain
-code for the Android Linux kernel, the native libraries, the Dalvik VM, and the
-various Android packages (such as the Android framework and preinstalled
-applications). The emulator provides dynamic binary translation of device
-machine code to the OS and processor architecture of your development
-machine.</p>
-
-<p>The Android emulator supports many hardware features likely to be found on
-mobile devices, including: </p>
-
-<ul>
-  <li>An ARMv5 CPU and the corresponding memory-management unit (MMU)</li>
-  <li>A 16-bit LCD display</li>
-  <li>One or more keyboards (a Qwerty-based keyboard and associated Dpad/Phone
-buttons)</li>
-  <li>A sound chip with output and input capabilities</li>
-  <li>Flash memory partitions (emulated through disk image files on the
-development machine)</li>
-  <li>A GSM modem, including a simulated SIM Card</li>
-  <li>A camera, using a webcam connected to your development computer.</li>
-  <li>Sensors like an accelerometer, using data from a USB-connected Android device.</li>
-</ul>
-
-<p>The following sections describe the emulator and its use for development of Android
-applications in more detail.</p>
-
-
-<h2 id="avds">Android Virtual Devices and the Emulator</h2>
-
-<p>To use the emulator, you first must create one or more AVD configurations. In each
-configuration, you specify an Android platform to run in the emulator and the set of hardware
-options and emulator skin you want to use. Then, when you launch the emulator, you specify
-the AVD configuration that you want to load. </p>
-
-<p>Each AVD functions as an independent device, with its own private storage for
-user data, SD card, and so on. When you launch the emulator with an AVD configuration,
-it automatically loads the user data and SD card data from the AVD directory. By default,
-the emulator stores the user data, SD card data, and cache in the AVD directory.</p>
-
-<p>To create and manage AVDs you use the AVD Manager UI or the <code>android</code> tool
-that is included in the SDK.
-For complete information about how to set up AVDs, see <a
-href="{@docRoot}guide/developing/devices/index.html">Managing Virtual Devices</a>.</p>
-
-
-<h2 id="starting">Starting and Stopping the Emulator</h2>
-
-<p>During development and testing of your application, you install and run your
-application in the Android emulator. You can launch the emulator as a standalone
-application from a command line, or you can run it from within your Eclipse
-development environment. In either case, you specify the AVD configuration to
-load and any startup options you want to use, as described in this document.
-</p>
-
-<p>You can run your application on a single instance of the emulator or,
-depending on your needs, you can start multiple emulator instances and run your
-application in more than one emulated device. You can use the emulator's
-built-in commands to simulate GSM phone calling or SMS between emulator
-instances, and you can set up network redirection that allows emulators to send
-data to one another. For more information, see <a href="#telephony">Telephony
-Emulation</a>, <a href="#sms">SMS Emulation</a>, and
-<a href="#emulatornetworking">Emulator Networking</a></p>
-
-<p>To start an instance of the emulator from the command line, navigate to the
-<code>tools/</code> folder of the SDK. Enter <code>emulator</code> command
-like this: </p>
-
-<pre>emulator -avd &lt;avd_name&gt; [&lt;options&gt;]</pre>
-
-<p>This initializes the emulator, loads an AVD configuration and displays the emulator
-window. For more information about command line options for the emulator, see the
-<a href="{@docRoot}guide/developing/tools/emulator.html">Android Emulator</a> tool reference.</p>
-
-<p class="note"><strong>Note:</strong> You can run multiple
-instances of the emulator concurrently, each with its own AVD configuration and
-storage area for user data, SD card, and so on.</p>
-
-<p>If you are working in Eclipse, the ADT plugin for Eclipse installs your
-application and starts the emulator automatically, when you run or debug
-the application. You can specify emulator startup options in the Run/Debug
-dialog, in the Target tab. When the emulator is running, you can issue
-console commands as described later in this document.</p>
-
-<p>If you are not working in Eclipse, see <a href="#apps">Installing Applications
-on the Emulator</a> for information about how to install your application.</p>
-
-<p>To stop an emulator instance, just close the emulator's window.</p>
-
-<p>For a reference of the emulator's startup commands and keyboard mapping, see
-the <a href="{@docRoot}guide/developing/tools/emulator.html">Android Emulator</a> tool
-reference.</p>
-
-
-<h2 id="apps">Installing Applications on the Emulator</h2>
-
-<p>If you don't have access to Eclipse or the ADT Plugin, you can install your application on the
-emulator using the <a href="{@docRoot}guide/developing/tools/adb.html#move">adb</a> utility. Before
-installing the application, you need to build and package it into an <code>.apk</code> as described
-in <a href="{@docRoot}guide/developing/building/index.html">Building and
-Running Apps</a>. Once the application is installed, you can start the emulator from the command
-line as described previously, using any startup options necessary.
-When the emulator is running, you can also connect to the emulator instance's
-<a href="#console">console</a> to issue commands as needed.</p>
-
-<p>As you update your code, you periodically package and install it on the emulator.
-The emulator preserves the application and its state data across restarts,
-in a user-data disk partition. To ensure that the application runs properly
-as you update it, you may need to delete the emulator's user-data partition.
-To do so, start the emulator with the <code>-wipe-data</code> option.
-For more information about the user-data partition and other emulator storage,
-see <a href="#diskimages">Working with Emulator Disk Images</a>.</p>
-
-
-<h2 id="acceleration">Using Hardware Acceleration</h2>
-
-<p>In order to make the Android emulator run faster and be more responsive, you can configure it to
-take advantage of hardware acceleration, using a combination of configuration options, specific
-Android system images and hardware drivers.</p>
-
-
-<h3 id="accel-graphics">Configuring Graphics Acceleration</h3>
-
-<p class="caution"><strong>Caution:</strong> As of SDK Tools Revision 17, the graphics
-acceleration feature for the emulator is experimental; be alert for incompatibilities and
-errors when using this feature. </p>
-
-<p>Graphics acceleration for the emulator takes advantage of your development computer's graphics
-hardware, specifically its graphics processing unit (GPU), to make screen drawing faster. To use
-the graphics acceleration feature, you must have the following versions of the Android development
-tools installed:</p>
-
-<ul>
-  <li>Android SDK Tools, Revision 17 or higher</li>
-  <li>Android SDK Platform API 15, Revision 3 or higher</li>
-</ul>
-
-<p>Use the <a href="{@docRoot}sdk/installing.html#AddingComponents">Android SDK
-Manager</a> to install these components:</p>
-
-<p class="note"><strong>Note:</strong> Not all applications are compatible with graphics hardware
-acceleration. In particular, the Browser application and applications using the {@link
-android.webkit.WebView} component are not compatible with graphics acceleration.</p>
-
-<p>To configure an AVD to use graphics acceleration:</p>
-
-<ol>
-  <li>Make sure you have the required SDK components installed (listed above).</li>
-  <li>Start the AVD Manager and create a new AVD with the <strong>Target</strong> value of
-<strong>Android 4.0.3 (API Level 15)</strong>, revision 3 or higher.</li>
-  <li>If you want to have graphics acceleration enabled by default for this AVD, in the
-<strong>Hardware</strong> section, click <strong>New</strong>, select <strong>GPU emulation</strong>
-and set the value to <strong>Yes</strong>.
-  <p class="note"><strong>Note:</strong> You can also enable graphics acceleration when you
-start an emulator using command line options as describe in the next section.</p>
-  </li>
-  <li>Name the AVD instance and select any other configuration options.
-  <p class="caution"><strong>Caution:</strong> Do not select the <strong>Snapshot: Enabled</strong>
-option. Snapshots are not supported for emulators with graphics acceleration enabled.</p>
-  </li>
-  <li>Click <strong>Create AVD</strong> to save the emulator configuration.</li>
-</ol>
-
-<p>If you set <strong>GPU emulation</strong> to <strong>Yes</strong> for your AVD, then graphics
-acceleration is automatically enabled when you run it. If you did not enable <strong>GPU
-emulation</strong> when you created the AVD, you can still enable it at runtime.</p>
-
-<p>To enable graphics acceleration at runtime for an AVD:</p>
-
-<ul>
-  <li>If you are running the emulator from the command line, just include the {@code -gpu on}
-option:
-<pre>emulator -avd &lt;avd_name&gt; -gpu on</pre>
-    <p class="note"><strong>Note:</strong> You must specify an AVD configuration that uses
-Android 4.0.3 (API Level 15, revision 3) or higher system image target. Graphics acceleration is not
-available for earlier system images.</p>
-  </li>
-  <li>If you are running the emulator from Eclipse, run your Android application using an AVD with
-the {@code -gpu on} option enabled:
-    <ol>
-      <li>In Eclipse, click your Android project folder and then select <strong>Run > Run
-Configurations...</strong></li>
-      <li>In the left panel of the <strong>Run Configurations</strong> dialog, select your Android
-project run configuration or create a new configuration.</li>
-      <li>Click the <strong>Target</strong> tab.</li>
-      <li>Select the AVD you created in the previous procedure.</li>
-      <li>In the <strong>Additional Emulator Command Line Options</strong> field, enter:<br>
-        {@code -gpu on}</li>
-      <li>Run your Android project using this run configuration.</li>
-    </ol>
-  </li>
-</ul>
-
-
-<h3 id="accel-vm">Configuring Virtual Machine Acceleration</h2>
-
-<p class="caution"><strong>Caution:</strong> As of SDK Tools Revision 17, the virtual machine
-acceleration feature for the emulator is experimental; be alert for incompatibilities and errors
-when using this feature.</p>
-
-<p>Many modern CPUs provide extensions for running virtual machines (VMs) more efficiently. Taking
-advantage of these extensions with the Android emulator requires some additional configuration of
-your development system, but can significantly improve the execution speed. Before attempting to use
-this type of acceleration, you should first determine if your development system’s CPU supports one
-of the following virtualization extensions technologies:</p>
-
-<ul>
-  <li>Intel Virtualization Technology (VT, VT-x, vmx) extensions</li>
-  <li>AMD Virtualization (AMD-V, SVM) extensions (only supported for Linux)</li>
-</ul>
-
-<p>The specifications from the manufacturer of your CPU should indicate if it supports
-virtualization extensions. If your CPU does not support one of these virtualization technologies,
-then you cannot use virtual machine acceleration.</p>
-
-<p class="note"><strong>Note:</strong> Virtualization extensions are typically enabled through
-your computer's BIOS and are frequently turned off by default. Check the documentation for your
-system's motherboard to find out how to enable virtualization extensions.</p>
-
-<p>Once you have determined that your CPU supports virtualization extensions, make sure you can work
-within these additional requirements of running an emulator inside an accelerated virtual
-machine:</p>
-
-<ul>
-  <li><strong>x86 AVD Only</strong> - You must use an AVD that is uses an x86 system image target.
-AVDs that use ARM-based system images cannot be accelerated using the emulator configurations
-described here.</li>
-  <li><strong>Not Inside a VM</strong> - You cannot run a VM-accelerated emulator inside another
-virtual machine, such as a VirtualBox or VMWare-hosted virtual machine. You must run the emulator
-directly on your system hardware.</li>
-  <li><strong>Other VM Drivers</strong> - If you are running another virtualization technology on
-your system such as VirtualBox or VMWare, you may need to unload the driver for that virtual machine
-hosting software before running an accelerated emulator.</li>
-  <li><strong>OpenGL&reg; Graphics</strong> - Emulation of OpenGL ES graphics may not perform at the
-same level as an actual device.</li>
-</ul>
-
-<p>To use virtual machine acceleration with the emulator, you need the following version of Android
-development tools. Use the <a href="{@docRoot}sdk/installing.html#AddingComponents">Android SDK
-Manager</a> to install these components:</p>
-
-<ul>
-  <li>Android SDK Tools, Revision 17 or higher</li>
-  <li>Android x86-based system image</li>
-</ul>
-
-<p>If your development environment meets all of the requirements for running a VM-accelerated
-emulator, you can use the AVD Manager to create an x86-based AVD configuration:</p>
-
-<ol>
-  <li>In the Android SDK Manager, make sure you have an x86-based <strong>System Image</strong>
-    installed for your target Android version. If you do not have an x86 <strong>System
-    Image</strong> installed, select one in the Android SDK Manager and install it.
-    <p class="note"><strong>Tip:</strong> System images are listed under each API Level in the SDK
-    Manager. An x86 system image may not be available for all API levels.</p>
-  </li>
-  <li>Start the AVD Manager and create a new AVD with an x86 value for the
-<strong>CPU/ABI</strong> field. You may need to select a specific <strong>Target</strong> value, or
-select a <strong>Target</strong> value and then select a specific <strong>CPU/ABI</strong>
-option.</li>
-  <li>Name the emulator instance and select any other configuration options.</li>
-  <li>Click <strong>Create AVD</strong> to save the emulator configuration.</li>
-</ol>
-
-<h4 id="vm-windows">Configuring VM Acceleration on Windows</h4>
-
-<p>Virtual machine acceleration for Windows requires the installation of the Intel Hardware
-Accelerated Execution Manager (Intel HAXM). The software requires an Intel CPU with
-Virtualization Technology (VT) support and one of the following operating systems:</p>
-
-<ul>
-  <li>Windows 7 (32/64-bit)</li>
-  <li>Windows Vista (32/64-bit)</li>
-  <li>Windows XP (32-bit only)</li>
-</ul>
-
-<p>To install the virtualization driver:</p>
-
-<ol>
-  <li>Start the Android SDK Manager, select <strong>Extras</strong> and then select <strong>Intel
-Hardware Accelerated Execution Manager</strong>.</li>
-  <li>After the download completes, execute {@code
-&lt;sdk&gt;/extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.exe}.</li>
-  <li>Follow the on-screen instructions to complete installation.</li>
-  <li>After installation completes, confirm that the virtualization driver is operating correctly by
-opening a command prompt window and running the following command:
-    <pre>sc query intelhaxm</pre>
-    <p>You should see a status message including the following information:</p>
-<pre>
-SERVICE_NAME: intelhaxm
-       ...
-       STATE              : 4  RUNNING
-       ...
-</pre>
-  </li>
-</ol>
-
-<p>To run an x86-based emulator with VM acceleration:</p>
-<ul>
-  <li>If you are running the emulator from the command line, just specify an x86-based AVD:
-<pre>emulator -avd &lt;avd_name&gt;</pre>
-    <p class="note"><strong>Note:</strong> You must provide an x86-based AVD configuration
-name, otherwise VM acceleration will not be enabled.</p>
-  </li>
-  <li>If you are running the emulator from Eclipse, run your Android application with an x86-based
-AVD:
-    <ol>
-      <li>In Eclipse, click your Android project folder and then select <strong>Run > Run
-Configurations...</strong></li>
-      <li>In the left panel of the <strong>Run Configurations</strong> dialog, select your Android
-project run configuration or create a new configuration.</li>
-      <li>Click the <strong>Target</strong> tab.</li>
-      <li>Select the x86-based AVD you created previously.</li>
-      <li>Run your Android project using this run configuration.</li>
-    </ol>
-  </li>
-</ul>
-
-<p>You can adjust the amount of memory available to the Intel HAXM kernel extension by re-running
-its installer.</p>
-
-<p>You can stop using the virtualization driver by uninstalling it. Re-run the installer or use
-the Control Panel to remove the software.</p>
-
-
-<h4 id="vm-mac">Configuring VM Acceleration on Mac</h4>
-
-<p>Virtual machine acceleration on a Mac requires the installation of the Intel Hardware Accelerated
-Execution Manager (Intel HAXM) kernel extension to allow the Android emulator to make use of CPU
-virtualization extensions. The kernel extension is compatible with Mac OS X Snow Leopard (version
-10.6.0) and higher.</p>
-
-<p>To install the Intel HAXM kernel extension:</p>
-
-<ol>
-  <li>Start the Android SDK Manager, select <strong>Extras</strong> and then select <strong>Intel
-Hardware Accelerated Execution Manager</strong>.
-  <li>After the download completes, execute
-    {@code &lt;sdk&gt;/extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmg}.</li>
-  <li>Double click the <strong>IntelHAXM.mpkg</strong> icon to begin installation.</li>
-  <li>Follow the on-screen instructions to complete installation.</li>
-  <li>After installation completes, confirm that the new kernel extension is operating correctly by
-opening a terminal window and running the following command:
-    <pre>kextstat | grep intel</pre>
-    <p>You should see a status message containing the following extension name, indicating that the
-      kernel extension is loaded:</p>
-    <pre>com.intel.kext.intelhaxm</pre>
-  </li>
-</ol>
-
-<p>To run an x86-based emulator with VM acceleration:</p>
-<ul>
-  <li>If you are running the emulator from the command line, just specify an x86-based AVD:
-<pre>emulator -avd &lt;avd_name&gt;</pre>
-    <p class="note"><strong>Note:</strong> You must provide an x86-based AVD configuration
-name, otherwise VM acceleration will not be enabled.</p>
-  </li>
-  <li>If you are running the emulator from Eclipse, run your Android application with an x86-based
-AVD:
-    <ol>
-      <li>In Eclipse, click your Android project folder and then select <strong>Run > Run
-Configurations...</strong></li>
-      <li>In the left panel of the <strong>Run Configurations</strong> dialog, select your Android
-project run configuration or create a new configuration.</li>
-      <li>Click the <strong>Target</strong> tab.</li>
-      <li>Select the x86-based AVD you created previously.</li>
-      <li>Run your Android project using this run configuration.</li>
-    </ol>
-  </li>
-</ul>
-
-<p>You can adjust the amount of memory available to the Intel HAXM kernel extension by re-running
-the installer.</p>
-
-<p>You can stop using the virtualization kernel driver by uninstalling it. Before removing it, shut
-down any running x86 emulators. To unload the virtualization kernel driver, run the following
-command in a terminal window:</p>
-
-<pre>sudo /System/Library/Extensions/intelhaxm.kext/Contents/Resources/uninstall.sh</pre>
-
-<h4 id="vm-linux">Configuring VM Acceleration on Linux</h4>
-
-<p>Linux-based systems support virtual machine acceleration through the KVM software package. Follow
-<a href="https://www.google.com/?q=kvm+installation">instructions for installing KVM</a> on your
-Linux system, and verify that KVM is enabled. In addition to following the installation
-instructions, be aware of these configuration requirements:</p>
-
-<ul>
-  <li>Running KVM requires specific user permissions, make sure you have sufficient permissions
-according to the KVM installation instructions.</li>
-  <li>If you use another virtualization technology in your Linux platform, unload its kernel driver
-before running the x86 emulator. For example, the VirtualBox driver program is {@code vboxdrv}.</li>
-</ul>
-
-<p>To run an x86-based emulator with VM acceleration:</p>
-
-<ul>
-  <li>If you are running the emulator from the command line, start the emulator with an x86-based
-AVD and include the KVM options:
-<pre>emulator -avd &lt;avd_name&gt; -qemu -m 512 -enable-kvm</pre>
-    <p class="note"><strong>Note:</strong> You must provide an x86-based AVD configuration
-name, otherwise VM acceleration will not be enabled.</p>
-  </li>
-  <li>If you are running the emulator from Eclipse, run your Android application with an x86-based
-AVD and include the KVM options:
-    <ol>
-      <li>In Eclipse, click your Android project folder and then select <strong>Run > Run
-Configurations...</strong></li>
-      <li>In the left panel of the <strong>Run Configurations</strong> dialog, select your Android
-project run configuration or create a new configuration.</li>
-      <li>Click the <strong>Target</strong> tab.</li>
-      <li>Select the x86-based AVD you created previously.</li>
-      <li>In the <strong>Additional Emulator Command Line Options</strong> field, enter:
-        <pre>-qemu -m 512 -enable-kvm</pre>
-      </li>
-      <li>Run your Android project using this run configuration.</li>
-    </ol>
-  </li>
-</ul>
-
-<p class="note"><strong>Important:</strong> When using the {@code -qemu} command line option, make sure
-it is the last parameter in your command. All subsequent options are interpreted as qemu-specific
-parameters.</p>
-
-
-<h2 id="sdcard">SD Card Emulation</h2>
-
-<p>You can create a disk image and then load it to the emulator at startup, to
-simulate the presence of a user's SD card in the device. To do this, you can specify
-an SD card image when you create an AVD, or you can use the mksdcard utility included
-in the SDK.</p>
-
-<p>The following sections describe how to create an SD card disk image, how to copy
-files to it, and how to load it in the emulator at startup. </p>
-
-<p>Note that you can only load a disk image at emulator startup. Similarly, you
-can not remove a simulated SD card from a running emulator. However, you can
-browse, send files to, and copy/remove files from a simulated SD card either
-with adb or the emulator. </p>
-
-<p>The emulator supports emulated SDHC cards, so you can create an SD card image
-of any size up to 128 gigabytes.</p>
-
-
-<h3 id="sdcard-creating">Creating an SD card image</h3>
-
-<p>There are several ways of creating an SD card image. The easiest way is to use the
-<strong>AVD Manager</strong> to create a new SD card by specifying a size when you create an AVD.
-You can also use the {@code android} command line tool when creating an AVD. Just add the
-<code>-c</code> option to your command: </p>
-
-<pre>android create avd -n &lt;avd_name&gt; -t &lt;targetID&gt; -c &lt;size&gt;[K|M]</pre>
-
-<p>The <code>-c</code> option can also be used to to specify a path to an SD card
-image for the new AVD. For more information, see <a
-href="{@docRoot}guide/developing/devices/managing-avds-cmdline.html">Managing Virtual Devices
-from the Command Line</a>.
-</p>
-
-<p>You can also use the mksdcard tool, included in the SDK, to create a FAT32 disk
-image that you can load in the emulator at startup. You can access mksdcard in
-the tools/ directory of the SDK and create a disk image like this: </p>
-
-<pre>mksdcard &lt;size&gt; &lt;file&gt;</pre>
-
-<p>For example:</p>
-
-<pre>mksdcard 1024M sdcard1.iso</pre>
-
-<p>For more information, see <a
-href="{@docRoot}guide/developing/tools/mksdcard.html"><code>mksdcard</code></a>.</p>
-
-
-<h3 id="sdcard-files">Copying files to an SD card image</h3>
-
-<p>Once you have created the disk image, you can copy files to it prior to
-loading it in the emulator. To copy files, you can mount the image as a loop
-device and then copy the files to it, or you can use a utility such as {@code mtools} to
-copy the files directly to the image. The {@code mtools} package is available for Linux,
-Mac, and Windows.</p>
-
-<p>Alternatively, you can use the {@code adb push} command to move files onto an SD card image
-while it is loaded in an emulator. For more information see the <a
-href="{@docRoot}guide/developing/tools/adb.html#copyfiles">{@code adb push}</a> documentation.</p>
-
-<h3 id="sdcard-loading">Loading an SD card image</h3>
-
-<p>By default, the emulator loads the SD card image that is stored with the active
-AVD (see the <code>-avd</code> startup option).</p>
-
-<p>Alternatively, you can start the emulator with the
-<code>-sdcard</code> flag and specify the name and path of your image (relative
-to the current working directory): </p>
-
-<pre>emulator -sdcard &lt;filepath&gt;</pre>
-
-
-<h2 id="diskimages">Working with Emulator Disk Images</h2>
-
-<p>The emulator uses mountable disk images stored on your development machine to
-simulate flash (or similar) partitions on an actual device. For example, it uses a
-disk image containing an emulator-specific kernel, the Android system, a
-ramdisk image, and writeable images for user data and simulated SD card.</p>
-
-<p>To run properly, the emulator requires access to a specific set of disk image
-files. By default, the Emulator always looks for the disk images in the
-private storage area of the AVD in use. If no images exist there when
-the Emulator is launched, it creates the images in the AVD directory based on
-default versions stored in the SDK. </p>
-
-<p class="note"><strong>Note:</strong> The default storage location for
-AVDs is in <code>~/.android/avd</code> on OS X and Linux, <code>C:\Documents and
-Settings\&lt;user&gt;\.android\</code> on Windows XP, and
-<code>C:\Users\&lt;user&gt;\.android\</code>
-on Windows Vista.</p>
-
-<p>To let you use alternate or custom versions of the image files, the emulator
-provides startup options that override the default locations and filenames of
-the image files. When you use one of these options, the emulator searches for the image
-file under the image name or location that you specify; if it can not locate the
-image, it reverts to using the default names and location.</p>
-
-<p>The emulator uses three types of image files: default image files, runtime
-image files, and temporary image files. The sections below describe how to
-override the location/name of each type of file. </p>
-
-<h3 id="defaultimages">Default image files</h3>
-
-<p>When the emulator launches, but does not find an existing user data image in
-the active AVD's storage area, it creates a new one from a default version
-included in the SDK. The default user data image is read-only. The image
-files are read-only.</p>
-
-<p>The emulator provides the <code>-system &lt;dir&gt;</code> startup option to
-let you override the location where the emulator looks for the default
-user data image. </p>
-
-<p>The emulator also provides a startup option that lets you override the name
-of the default user data image, as described in the following table. When you use the
-option, the emulator looks in the default directory, or in a custom location
-(if you specified <code>-system &lt;dir&gt;</code>). </p>
-
-
-<table>
-<tr>
-  <th width="10%" >Name</th>
-    <th width="30%" >Description</th>
-    <th width="40%" >Comments</th>
-</tr>
-
-<!--
-<tr>
-  <td><code>kernel-qemu.img</code></td>
-  <td>The emulator-specific Linux kernel image</td>
-  <td>Override using <code>-kernel &lt;file&gt;</code></td>
-</tr>
-
-<tr>
-  <td><code>ramdisk.img</code></td>
-  <td>The ramdisk image used to boot the system.</td>
-  <td>Override using <code>-ramdisk &lt;file&gt;</code></td>
-</tr>
-
-<tr>
-  <td><code>system.img</code></td>
-  <td>The <em>initial</em> Android system image.</td>
-  <td>Override using <code>-image &lt;file&gt;</code></td>
-</tr>
--->
-<tr>
-  <td><code>userdata.img</code></td>
-  <td>The <em>initial</em> user-data disk image</td>
-  <td>Override using <code>-initdata &lt;file&gt;</code>. Also see
-<code>-data &lt;file&gt;</code>, below.</td>
-</tr>
-
-</table>
-
-<h3 id="runtimeimages">Runtime images: user data and SD card</h3>
-
-<p>At runtime, the emulator reads and writes data to two disk images: a
-user-data image and (optionally) an SD card image. These images emulate the user-data
-partition and removable storage media on actual device. </p>
-
-<p>The emulator provides a default user-data disk image. At startup, the emulator
-creates the default image as a copy of the system user-data image (user-data.img),
-described above. The emulator stores the new image with the files of the active AVD.</p>
-
-<!--
-<p>The emulator provides a startup option, <code>-datadir &lt;dir&gt;</code>,
-that you can use to override the location under which the emulator looks for the runtime
-image files. </p>
--->
-
-<p>The emulator provides startup options to let you override the actual names and storage
-locations of the runtime images to load, as described in the following table. When you use one
-of these options, the emulator looks for the specified file(s) in the current working directory,
-in the AVD directory, or in a custom location (if you specified a path with the filename). </p>
-
-<table>
-<tr>
-  <th width="10%" >Name</th>
-    <th width="30%" >Description</th>
-    <th width="40%" >Comments</th>
-</tr>
-<tr>
-  <td><code>userdata-qemu.img</code></td>
-  <td>An image to which the emulator writes runtime user-data for a unique user.</td>
-  <td>Override using <code>-data &lt;filepath&gt;</code>, where <code>&lt;filepath&gt;</code> is the
-path the image, relative to the current working directory. If you supply a filename only,
-the emulator looks for the file in the current working directory. If the file at <code>&lt;filepath&gt;</code> does
-not exist, the emulator creates an image from the default userdata.img, stores it under the name you
-specified, and persists user data to it at shutdown. </td>
-</tr>
-
-<tr>
-  <td><code>sdcard.img</code></td>
-  <td>An image representing an SD card inserted into the emulated device.</td>
-  <td>Override using <code>-sdcard &lt;filepath&gt;</code>, where <code>&lt;filepath&gt;</code> is the
-path the image, relative to the current working directory. If you supply a filename only,
-the emulator looks for the file in the current working directory. </td>
-</tr>
-
-</table>
-
-<h4>User-Data Image</h4>
-
-<p>Each emulator instance uses a writeable user-data image to store user- and
-session-specific data. For example, it uses the image to store a unique user's
-installed application data, settings, databases, and files. </p>
-
-<p>At startup, the emulator attempts to load a user-data image stored during
-a previous session. It looks for the file in the current working directory,
-in the AVD directory described in a previous section and at the custom location/name
-that you specified at startup. </p>
-
-<ul>
-<li>If it finds a user-data image, it mounts the image and makes it available
-to the system for reading and writing of user data. </li>
-<li>If it does not find one, it creates an image by copying the system user-data
-image (userdata.img), described above. At device power-off, the system persists
-the user data to the image, so that it will be available in the next session.
-Note that the emulator stores the new disk image at the location/name that you
-specify in <code>-data</code> startup option.</li>
-</ul>
-
-<p class="note"><strong>Note:</strong> Because of the AVD configurations used in the emulator,
-each emulator instance gets its own dedicated storage. There is no longer a need
-to use the <code>-d</code> option to specify an instance-specific storage area.</p>
-
-<h4>SD Card</h4>
-
-<P>Optionally, you can create a writeable disk image that the emulator can use
-to simulate removeable storage in an actual device. For information about how to create an
-emulated SD card and load it in the emulator, see <a href="#sdcard">SD Card Emulation</a></p>
-
-<p>You can also use the android tool to automatically create an SD Card image
-for you, when creating an AVD. For more information, see <a
-href="{@docRoot}guide/developing/devices/managing-avds.html">Managing Virtual Devices with AVD
-Manager</a>.
-
-
-<h3 id="temporaryimages">Temporary Images</h3>
-
-<p>The emulator creates two writeable images at startup that it deletes at
-device power-off. The images are: </p>
-
-<ul>
-  <li>A writable copy of the Android system image</li>
-  <li>The <code>/cache</code> partition image</li>
-</ul>
-
-<p>The emulator does not permit renaming the temporary system image or
-persisting it at device power-off. </p>
-
-<p>The <code>/cache</code> partition image is initially empty, and is used by
-the browser to cache downloaded web pages and images. The emulator provides an
-<code>-cache &lt;file&gt;</code>, which specifies the name of the file in which
-to persist the <code>/cache</code> image at device power-off. If <code>&lt;file&gt;
-</code> does not exist, the emulator creates it as an empty file. </p>
-
-<p>You can also disable the use of the cache partition by specifying the
-<code>-nocache</code> option at startup. </p>
-
-
-<h2 id="emulatornetworking">Emulator Networking</h2>
-
-<p>The emulator provides versatile networking capabilities that you can use to
-set up complex modeling and testing environments for your application. The
-sections below introduce the emulator's network architecture and capabilities.
-</p>
-
-<h3 id="networkaddresses">Network Address Space</h3>
-
-<p>Each instance of the emulator runs behind a virtual router/firewall service
-that isolates it from your development machine's network interfaces and settings
-and from the internet. An emulated device can not see your development machine
-or other emulator instances on the network. Instead, it sees only that it is
-connected through Ethernet to a router/firewall.</p>
-
-<p>The virtual router for each instance manages the 10.0.2/24 network address
-space &mdash; all addresses managed by the router are in the form of
-10.0.2.&lt;xx&gt;, where &lt;xx&gt; is a number. Addresses within this space are
-pre-allocated by the emulator/router as follows:</p>
-
-<table>
-  <tr>
-    <th>Network Address</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td>10.0.2.1</td>
-    <td>Router/gateway address </td>
-  </tr>
-  <tr>
-    <td>10.0.2.2</td>
-    <td>Special alias to your host loopback interface (i.e., 127.0.0.1 on your
-development machine)</td>
-  </tr>
-  <tr>
-    <td>10.0.2.3</td>
-    <td>First DNS server</td>
-  </tr>
-  <tr>
-    <td>10.0.2.4 / 10.0.2.5 / 10.0.2.6</td>
-    <td>Optional second, third and fourth DNS server (if any) </td>
-  </tr>
-  <tr>
-    <td>10.0.2.15</td>
-    <td>The emulated device's own network/ethernet interface</td>
-  </tr>
-  <tr>
-    <td>127.0.0.1</td>
-    <td>The emulated device's own loopback interface </td>
-  </tr>
-</table>
-
-<p>Note that the same address assignments are used by all running emulator
-instances. That means that if you have two instances running concurrently on
-your machine, each will have its own router and, behind that, each will have an
-IP address of 10.0.2.15. The instances are isolated by a router and can
-<em>not</em> see each other on the same network. For information about how to
-let emulator instances communicate over TCP/UDP, see <a
-href="#connecting">Connecting Emulator Instances</a>.</p>
-
-<p>Also note that the address 127.0.0.1 on your development machine corresponds
-to the emulator's own loopback interface. If you want to access services running
-on your development machine's loopback interface (a.k.a. 127.0.0.1 on your
-machine), you should use the special address 10.0.2.2 instead.</p>
-
-<p>Finally, note that each emulated device's pre-allocated addresses are
-specific to the Android emulator and will probably be very different on real
-devices (which are also very likely to be NAT-ed, i.e., behind a
-router/firewall)</p>
-
-
-<h3 id="networkinglimitations">Local Networking Limitations</h3>
-
-<p>Android applications running in an emulator can connect to the network available on your
-workstation. However, they connect through the emulator, not directly to hardware, and the emulator
-acts like a normal application on your workstation. This means that the emulator, and thus your
-Android applications, are subject to some limitations:</p>
-
-<ul>
-  <li>Communication with the emulated device may be blocked by a firewall
-program running on your machine.</li>
-  <li>Communication with the emulated device may be blocked by another
-(physical) firewall/router to which your machine is connected.</li>
-</ul>
-
-<p>The emulator's virtual router should be able to handle all outbound TCP and
-UDP connections/messages on behalf of the emulated device, provided your
-development machine's network environment allows it to do so. There are no
-built-in limitations on port numbers or ranges except the one imposed by your
-host operating system and network.</p>
-
-<p>Depending on the environment, the emulator may not be able to support other
-protocols (such as ICMP, used for "ping") might not be supported. Currently, the
-emulator does not support IGMP or multicast. </p>
-
-<h3 id="redirection">Using Network Redirection</h3>
-
-<p>To communicate with an emulator instance behind its virtual router, you need
-to set up network redirection on the virtual router. Clients can then connect
-to a specified guest port on the router, while the router directs traffic
-to/from that port to the emulated device's host port. </p>
-
-<p>To set up the network redirection, you create a mapping of host and guest
-ports/addresses on the the emulator instance. There are two ways to set up
-network redirection: using emulator console commands and using the ADB tool, as
-described below. </p>
-
-
-<h4 id="consoleredir">Setting up Redirection through the Emulator Console</h4>
-
-<p>Each emulator instance provides a control console the you can connect to, to
-issue commands that are specific to that instance. You can use the
-<code>redir</code> console command to set up redirection as needed for an
-emulator instance. </p>
-
-<p>First, determine the console port number for the target emulator instance.
-For example, the console port number for the first emulator instance launched is
-5554. Next, connect to the console of the target emulator instance, specifying
-its console port number, as follows: </p>
-
-<pre><code>telnet localhost 5554</code></pre>
-
-<p>Once connected, use the <code>redir</code> command to work with redirection.
-To add a redirection, use:</p>
-
-<pre><code>add&nbsp;&lt;protocol&gt;:&lt;host-port&gt;:&lt;guest-port&gt;</code>
-</pre>
-
-<p>where <code>&lt;protocol&gt;</code> is either <code>tcp</code> or <code>udp</code>,
-and <code>&lt;host-port&gt;</code> and <code>&lt;guest-port&gt;</code> sets the
-mapping between your own machine and the emulated system, respectively. </p>
-
-<p>For example, the following command sets up a redirection that handles all
-incoming TCP connections to your host (development) machine on 127.0.0.1:5000
-and will pass them through to the emulated system's 10.0.2.15:6000.:</p>
-
-<pre>redir add tcp:5000:6000</pre>
-
-<p>To delete a redirection, you can use the <code>redir del</code> command. To
-list all redirection for a specific instance, you can use <code>redir
-list</code>. For more information about these and other console commands, see
-<a href="#console">Using the Emulator Console</a>. </p>
-
-<p>Note that port numbers are restricted by your local environment. this typically
-means that you cannot use host port numbers under 1024 without special
-administrator privileges.  Also, you won't be able to set up a redirection for a
-host port that is already in use by another process on your machine. In that
-case, <code>redir</code> generates an error message to that effect. </p>
-
-<h4 id="adbredir">Setting Up Redirection through ADB</h4>
-
-<p>The Android Debug Bridge (ADB) tool provides port forwarding, an alternate
-way for you to set up network redirection. For more information, see <a
-href="{@docRoot}guide/developing/tools/adb.html#forwardports">Forwarding Ports</a> in the ADB
-documentation.</p>
-
-<p>Note that ADB does not currently offer any way to remove a redirection,
-except by killing the ADB server.</p>
-
-
-<h3 id="dns">Configuring the Emulator's DNS Settings</h3>
-
-<p>At startup, the emulator reads the list of DNS servers that your system is
-currently using. It then stores the IP addresses of up to four servers on this
-list and sets up aliases to them on the emulated addresses 10.0.2.3, 10.0.2.4,
-10.0.2.5 and 10.0.2.6 as needed.  </p>
-
-<p>On Linux and OS X, the emulator obtains the DNS server addresses by parsing
-the file <code>/etc/resolv.conf</code>. On Windows, the emulator obtains the
-addresses by calling the <code>GetNetworkParams()</code> API. Note that this
-usually means that the emulator ignores the content of your "hosts" file
-(<code>/etc/hosts</code> on Linux/OS X, <code>%WINDOWS%/system32/HOSTS</code>
- on Windows).</P>
-
-<p>When starting the emulator at the command line, you can also use the
-<code>-dns-server &lt;serverList&gt;</code> option to manually specify the
-addresses of DNS servers to use, where &lt;serverList&gt; is a comma-separated
-list of server names or IP addresses. You might find this option useful if you
-encounter DNS resolution problems in the emulated network (for example, an
-"Unknown Host error" message that appears when using the web browser).</p>
-
-
-<h3 id="proxy">Using the Emulator with a Proxy</h3>
-
-<p>If your emulator must access the Internet through a proxy server, you can use
-the <code>-http-proxy &lt;proxy&gt;</code> option when starting the emulator, to
-set up the appropriate redirection. In this case, you specify proxy information
-in <code>&lt;proxy&gt;</code> in one of these formats:</p>
-
-<pre>http://&lt;machineName&gt;:&lt;port&gt;</pre>
-
-<p>or</p>
-
-<pre>http://&lt;username&gt;:&lt;password&gt;@&lt;machineName&gt;:&lt;port&gt;</pre>
-
-<p>The <code>-http-proxy</code> option forces the emulator to use the specified
-HTTP/HTTPS proxy for all outgoing TCP connections. Redirection for UDP is not
-currently supported.</p>
-
-<p>Alternatively, you can define the environment variable
-<code>http_proxy</code> to the value you want to use for
-<code>&lt;proxy&gt;</code>. In this case, you do not need to specify a value for
-<code>&lt;proxy&gt;</code> in the <code>-http-proxy</code> command &mdash; the
-emulator checks the value of the <code>http_proxy</code> environment variable at
-startup and uses its value automatically, if defined. </p>
-
-<p>You can use the <code>-verbose-proxy</code> option to diagnose proxy
-connection problems.</p>
-
-
-<h3 id="connecting">Interconnecting Emulator Instances</h3>
-
-<p>To allow one emulator instance to communicate with another, you must set up
-the necessary network redirection as illustrated below. </p>
-
-<p>Assume that your environment is</p>
-
-<ul>
-  <li>A is you development machine</li>
-  <li>B is your first emulator instance, running on A</li>
-  <li>C is your second emulator instance, also running on A</li>
-</ul>
-
-<p>and you want to run a server on B, to which C will connect, here is how you
-could set it up: </p>
-
-<ol>
-  <li>Set up the server on B, listening to
-<code>10.0.2.15:&lt;serverPort&gt;</code></li>
-  <li>On B's console, set up a redirection from
-<code>A:localhost:&lt;localPort&gt;</code> to <code>
-B:10.0.2.15:&lt;serverPort&gt;</code></li>
-  <li>On C, have the client connect to <code>10.0.2.2:&lt;localPort&gt;</code></li>
-</ol>
-
-<p>For example, if you wanted to run an HTTP server, you can select
-<code>&lt;serverPort&gt;</code> as 80 and <code>&lt;localPort&gt;</code> as
-8080:</p>
-
-<ul>
-  <li>B listens on 10.0.2.15:80</li>
-  <li>On B's console, issue <code>redir add tcp:8080:80</code></li>
-  <li>C connects to 10.0.2.2:8080</li>
-</ul>
-
-<h3 id="calling">Sending a Voice Call or SMS to Another Emulator Instance</h3>
-
-<p>The emulator automatically forwards simulated voice calls and SMS messages from one instance to
-another. To send a voice call or SMS, use the dialer application or SMS application, respectively,
-from one of the emulators.</p>
-
-<p>To initiate a simulated voice call to another emulator instance:</p>
-<ol>
-<li>Launch the dialer application on the originating emulator instance.</li>
-<li>As the number to dial, enter the console port number of the instance you'd like to call. You can determine
-  the console port number of the target instance by checking its window title, where the
-  console port number is reported as "Android Emulator (&lt;port&gt;). </li>
-<li>Press "Dial". A new inbound call appears in the target emulator instance. </li>
-</ol>
-
-<p>To send an SMS message to another emulator instance, launch the SMS application (if available). Specify the console port number of the target emulator instance as as the SMS address, enter the message text, and send the message. The message is delivered to the target emulator instance. </p>
-
-<p>You can also connect to an emulator instance's console to simulate an incoming voice call or SMS. For more information, see <a href="#telephony">Telephony Emulation</a> and <a href="#sms">SMS Emulation</a>.
-
-
-<h2 id="console">Using the Emulator Console</h2>
-
-<p>Each running emulator instance provides a console that lets you query and control the emulated
-device environment. For example, you can use the console to manage port redirection, network
-characteristics, and telephony events while your application is running on the emulator. To
-access the console and enter commands, use telnet to connect to the console's port number.</p>
-
-<p>To connect to the console of any running emulator instance at any time, use this command: </p>
-
-<pre>telnet localhost &lt;console-port&gt;</pre>
-
-<p>An emulator instance occupies a pair of adjacent ports: a console port and an  {@code adb} port.
-The port numbers differ by 1, with the  {@code adb} port having the higher port number. The console
-of the first emulator instance running on a given machine uses console port 5554 and  {@code adb}
-port 5555. Subsequent instances use port numbers increasing by two &mdash; for example, 5556/5557,
-5558/5559, and so on. Up to 16 concurrent emulator instances can run a console facility. </p>
-
-<p>To connect to the emulator console, you must specify a valid console port. If multiple emulator instances are running, you need to determine the console port of the emulator instance you want to connect to. You can find the instance's console port listed in the title of the instance window. For example, here's the window title for an instance whose console port is 5554:</p>
-
-<p><code>Android Emulator (5554)</code></p>
-
-<p>Alternatively, you can use the <code>adb devices</code> command, which prints a list of running emulator instances and their console port numbers. For more information, see <a href="{@docRoot}guide/developing/tools/adb.html#devicestatus">Querying for Emulator/Device Instances</a> in the adb documentation.</p>
-
-<p class="note">Note: The emulator listens for connections on ports 5554-5587 and accepts connections only from localhost.</p>
-
-<p>Once you are connected to the console, you can then enter <code>help [command]</code> to see a list of console commands and learn about specific commands. </p>
-
-<p>To exit the console session, use <code>quit</code> or <code>exit</code>.</p>
-
-<p>The following sections below describe the major functional areas of the console.</p>
-
-
-<h3 id="portredirection">Port Redirection</h3>
-
-<p>You can use the console to add and remove port redirection while the emulator is running. After
-you connect to the console, manage port redirection by entering the following command:</p>
-
-<pre>redir &lt;list|add|del&gt; </pre>
-
-<p>The <code>redir</code> command supports the subcommands listed in the table below. </p>
-
-<table>
-<tr>
-  <th width="25%" >Subcommand
-  <th width="30%" >Description</th>
-  <th width="35%">Comments</th>
-</tr>
-
-  <tr>
-    <td><code>list</code></td>
-    <td>List the current port redirection.</td>
-  <td>&nbsp;</td>
-  </tr>
-
-
-<tr>
- <td><code>add&nbsp;&lt;protocol&gt;:&lt;host-port&gt;:&lt;guest-port&gt;</code></td>
-  <td>Add a new port redirection.</td>
-<td><ul><li>&lt;protocol&gt; must be either &quot;tcp&quot; or &quot;udp&quot;</li>
-<li>&lt;host-port&gt; is the port number to open on the host</li>
-<li>&lt;guest-port&gt; is the port number to route data to on the emulator/device</li>
-</ul></td>
-</tr>
-<tr>
-  <td><code>del &lt;protocol&gt;:&lt;host-port&gt;</code></td>
-  <td>Delete a port redirection.</td>
-<td>The meanings of &lt;protocol&gt; and &lt;host-port&gt; are listed in the previous row.</td>
-</tr>
-</table>
-
-
-<h3 id="geo">Geo Location Provider Emulation</h3>
-
-<p>You can use the console to set the geographic location reported to the applications running
-inside an emulator. Use the <code>geo</code> command to send a simple GPS fix to the
-emulator, with or without NMEA 1083 formatting:</p>
-
-<pre>geo &lt;fix|nmea&gt;</pre>
-
-<p>The <code>geo</code> command supports the subcommands listed in the table below.</p>
-
-<table>
-<tr>
-  <th width="25%">Subcommand</th>
-  <th width="30%">Description</th>
-  <th width="35%">Comments</th>
-</tr>
-
-  <tr>
-    <td><code>fix &lt;longitude&gt; &lt;latitude&gt; [&lt;altitude&gt;]</code></td>
-    <td>Send a simple GPS fix to the emulator instance.</td>
-  <td>Specify longitude and latitude in decimal degrees. Specify altitude in meters.</td>
-  </tr>
-<tr>
-  <td><code>nmea &lt;sentence&gt;</code></td>
-  <td>Send an NMEA 0183 sentence to the emulated device, as if it were sent from an emulated GPS modem.</td>
-<td><code>&lt;sentence&gt;</code> must begin with '$GP'. Only '$GPGGA' and '$GPRCM' sentences are currently supported.</td>
-</tr>
-</table>
-
-<p>You can issue the <code>geo</code> command as soon as an emulator instance is running. The
-emulator sets the location you enter by creating a mock location provider. This provider responds to
-location listeners set by applications, and also supplies the location to the {@link
-android.location.LocationManager}. Any application can query the location manager to obtain the
-current GPS fix for the emulated device by calling:
-
-<pre>LocationManager.getLastKnownLocation("gps")</pre>
-
-<p>For more information about the Location Manager, see {@link android.location.LocationManager}.
-</p>
-
-<h3 id="events">Hardware Events Emulation</h3>
-
-<p>The {@code event} console commands sends hardware events to the emulator. The syntax for this
-command is as follows:</p>
-
-<pre>event &lt;send|types|codes|text&gt;</pre>
-
-<p>The <code>event</code> command supports the subcommands listed in the table below. </p>
-
-<table>
-<tr>
-  <th width="25%" >Subcommand
-  <th width="30%" >Description</th>
-  <th width="35%">Comments</th>
-</tr>
-
-  <tr>
-    <td><code>send &lt;type&gt;:&lt;code&gt;:&lt;value&gt; [...]</code></td>
-    <td>Send one or more events to the Android kernel. </td>
-  <td>You can use text names or integers for <code>&lt;type&gt;</code> and <code>&lt;value&gt;</code>.</td>
-  </tr>
-<tr>
-  <td><code>types</code></td>
-  <td>List all <code>&lt;type&gt;</code> string aliases supported by the <code>event</code> subcommands.</td>
-<td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>codes &lt;type&gt;</code></td>
-  <td>List all <code>&lt;codes&gt;</code> string aliases supported by the <code>event</code>
-   subcommands for the specified <code>&lt;type&gt;</code>.</td>
-<td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>event text &lt;message&gt;</code></td>
-  <td>Simulate keypresses to send the specified string of characters as a message,</td>
-<td>The message must be a UTF-8 string. Unicode posts will be reverse-mapped according to the current device keyboard. Unsupported characters will be discarded silently.</td>
-</tr>
-</table>
-
-
-<h3 id="power">Device Power Characteristics</h3>
-
-<p>The {@code power} command controls the power state reported by the emulator to applications. The
-syntax for this command is as follows: </p>
-
-<pre>power &lt;display|ac|status|present|health|capacity&gt;</pre>
-
-<p>The <code>event</code> command supports the subcommands listed in the table below. </p>
-
-<table>
-<tr>
-  <th width="25%" >Subcommand </th>
-  <th width="30%" >Description</th>
-  <th width="35%">Comments</th>
-</tr>
-
-  <tr>
-    <td><code>display</code></td>
-    <td>Display battery and charger state.</td>
-  <td>&nbsp;</td>
-  </tr>
-<tr>
-  <td><code>ac &lt;on|off&gt;</code></td>
-  <td>Set AC charging state to on or off. </td>
-<td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>status &lt;unknown|charging|discharging|not-charging|full&gt;</code></td>
-  <td>Change battery status as specified.</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-  <td><code>present &lt;true|false&gt;</code></td>
-  <td>Set battery presence state.</td>
-<td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>health &lt;unknown|good|overheat|dead|overvoltage|failure&gt;</code></td>
-  <td>Set battery health state.</td>
-<td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>power health &lt;percent&gt;</code></td>
-  <td>Set remaining battery capacity state (0-100).</td>
-<td>&nbsp;</td>
-</tr>
-</table>
-
-
-<h3 id="netstatus">Network Status</h3>
-
-<p>You can use the console to check the network status and current delay and speed characteristics. To do so, connect to the console and use the <code>netstatus</code> command. Here's an example of the command and its output. </p>
-
-<pre>network status
-</pre>
-
-
-<h3 id="netdelay">Network Delay Emulation</h3>
-
-<p>The emulator lets you simulate various network latency levels, so that you can test your
-application in an environment more typical of the actual conditions in which it will run. You can
-set a latency level or range at emulator startup or you can use the console to change the latency,
-while the application is running in the emulator. </p>
-
-<p>To set latency at emulator startup, use the  <code>-netdelay</code> emulator option with a
-supported <code>&lt;delay&gt;</code> value, as listed in the table below. Here are some
-examples:</p>
-
-<pre>emulator -netdelay gprs
-emulator -netdelay 40 100</pre>
-
-<p>To make changes to  network delay while the emulator is running, connect to the console and use
-the <code>netdelay</code> command with a supported <code>&lt;delay&gt;</code> value from the table
-below.</p>
-
-<pre>network delay gprs</pre>
-
-<p>The format of network &lt;delay&gt; is one of the following (numbers are milliseconds):</p>
-
-<table style="clear:right;width:100%;">
-<tr>
-  <th width="30%" >Value</th>
-  <th width="35%" >Description</th><th width="35%">Comments</th></tr>
-
-  <tr><td><code>gprs</code></td><td>GPRS</td>
-  <td>(min 150, max 550)</td>
-  </tr>
-
-<tr><td><code>edge</code></td><td>EDGE/EGPRS</td>
-<td>(min 80, max 400)</td>
-</tr>
-<tr><td><code>umts</code></td><td>UMTS/3G</td>
-<td>(min 35, max 200)</td>
-</tr>
-<tr><td><code>none</code></td><td>No latency</td><td>(min 0, max 0)</td></tr>
-<tr><td><code>&lt;num&gt;</code></td>
-<td>Emulate an exact latency  (milliseconds).</td>
-<td>&nbsp;</td></tr>
-<tr><td><code>&lt;min&gt;:&lt;max&gt;</code></td>
-<td>Emulate an specified latency range (min, max milliseconds).</td>
-<td>&nbsp;</td></tr>
-</table>
-
-
-<h3 id="netspeed">Network Speed Emulation</h3>
-
-<p>The emulator also lets you simulate various network transfer rates.
-You can set a transfer rate or range at emulator startup or you can use the console to change the
-rate, while the application is running in the emulator.</p>
-
-<p>To set the network speed at emulator startup, use the  <code>-netspeed</code> emulator option with a supported
-<code>&lt;speed&gt;</code> value, as listed in the table below. Here are some examples:</p>
-
-<pre>emulator -netspeed gsm
-emulator -netspeed 14.4 80</pre>
-
-<p>To make changes to network speed while the emulator is running, connect to the console and use
-the <code>netspeed</code> command with a supported <code>&lt;speed&gt;</code> value from the table
-below.</p>
-
-<pre>network speed 14.4 80</pre>
-
-<p>The format of network <code>&lt;speed&gt;</code> is one of the following (numbers are
-kilobits/sec):</p>
-<table style="clear:right;width:100%;">
-<tbody>
-<tr>
-  <th width="30%">Value</th>
-  <th width="35%">Description</th><th width="35%">Comments</th></tr>
-
-  <tr>
-  <td><code>gsm</code></td>
-  <td>GSM/CSD</td><td>(Up: 14.4, down: 14.4)</td></tr>
-<tr>
-  <td><code>hscsd</code></td>
-  <td>HSCSD</td><td>(Up: 14.4, down: 43.2)</td></tr>
-<tr>
-  <td><code>gprs</code></td>
-  <td>GPRS</td><td>(Up: 40.0, down: 80.0)</td></tr>
-<tr>
-  <td><code>edge</code></td>
-  <td>EDGE/EGPRS</td>
-  <td>(Up: 118.4, down: 236.8)</td>
-</tr>
-<tr>
-  <td><code>umts</code></td>
-  <td>UMTS/3G</td><td>(Up: 128.0, down: 1920.0)</td></tr>
-<tr>
-  <td><code>hsdpa</code></td>
-  <td>HSDPA</td><td>(Up: 348.0, down: 14400.0)</td></tr>
-<tr>
-  <td><code>full</code></td>
-  <td>no limit</td><td>(Up: 0.0, down: 0.0)</td></tr>
-<tr>
-  <td><code>&lt;num&gt;</code></td>
-  <td>Set an exact rate used for both upload and download.</td><td></td></tr>
-<tr>
-  <td><code>&lt;up&gt;:&lt;down&gt;</code></td>
-  <td>Set exact rates for upload and download separately.</td><td></td></tr>
-</table>
-
-
-<h3 id="telephony">Telephony Emulation</h3>
-
-<p>The Android emulator includes its own GSM emulated modem that lets you simulate telephony
-functions in the emulator. For example, you can simulate inbound phone calls, establish data
-connections and terminate them. The Android system handles simulated calls exactly as it would
-actual calls. The emulator does not support call audio.</p>
-
-<p>You can use the {@code gsm} command to access the emulator's telephony functions after connecting
-to the console. The syntax for this command is as follows:</p>
-
-<pre>gsm &lt;call|accept|busy|cancel|data|hold|list|voice|status&gt; </pre>
-
-<p>The <code>gsm</code> command supports the subcommands listed in the table below. </p>
-<table>
-  <tr>
-    <th>Subcommand </th>
-    <th width="25%">Description</th>
-    <th>Comments</th>
-  </tr>
-  <tr>
-    <td><code>call &lt;phonenumber&gt;</code></td>
-    <td>Simulate an inbound phone call from &lt;phonenumber&gt;.</td>
-    <td>&nbsp;</td>
-  </tr>
-  <tr>
-    <td><code>accept &lt;phonenumber&gt;</code></td>
-    <td>Accept an inbound call from &lt;phonenumber&gt; and change the call's state "active".</td>
-    <td>You can change a call's state to "active" only if its current state is "waiting" or "held".</td>
-  </tr>
-  <tr>
-    <td><code>busy &lt;phonenumber&gt;</code></td>
-    <td>Close an outbound call to &lt;phonenumber&gt; and change the call's state to "busy".</td>
-    <td>You can change a call's state to "busy" only if its current state is "waiting".</td>
-  </tr>
-  <tr>
-    <td><code>cancel &lt;phonenumber&gt;</code></td>
-    <td>Terminate an inbound or outbound phone call to/from &lt;phonenumber&gt;.</td>
-    <td>&nbsp;</td>
-  </tr>
-  <tr>
-    <td><code>data &lt;state&gt;</code></td>
-    <td>Change the state of the GPRS data connection to &lt;state&gt;.</td>
-    <td>Supported &lt;state&gt; values are:<br />
-    <ul>
-          <li><code>unregistered</code> -- No network available</li>
-          <li><code>home</code> -- On local network, non-roaming</li>
-          <li><code>roaming</code> -- On roaming network</li>
-          <li><code>searching</code> -- Searching networks</li>
-          <li><code>denied</code> -- Emergency calls only</li>
-          <li><code>off</code> -- Same as 'unregistered'</li>
-      <li><code>on</code> -- same as 'home'</li>
-    </ul>
-          </td>
-  </tr>
-  <tr>
-    <td><code>hold</code></td>
-    <td>Change the state of a call to "held". </td>
-    <td>You can change a call's state to "held" only if its current state is	 "active" or "waiting". </td>
-  </tr>
-  <tr>
-    <td><code>list</code></td>
-    <td>List all inbound and outbound calls and their states.</td>
-    <td>&nbsp;</td>
-  </tr>
-  <tr>
-    <td><code>voice &lt;state&gt;</code></td>
-    <td>Change the state of the GPRS voice connection to &lt;state&gt;.</td>
-    <td>Supported &lt;state&gt; values are:<br />
-    <ul>
-    <li><code>unregistered</code> -- No network available</li>
-    <li><code>home</code> -- On local network, non-roaming</li>
-    <li><code>roaming</code> -- On roaming network</li>
-    <li><code>searching</code> -- Searching networks</li>
-    <li><code>denied</code> -- Emergency calls only</li>
-    <li><code>off</code> -- Same as 'unregistered'</li>
-    <li><code>on</code> -- Same as 'home'</li>
-    </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>status</code></td>
-    <td>Report the current GSM voice/data state.</td>
-    <td>Values are those described for the <code>voice</code> and <code>data</code> commands.</td>
-  </tr>
-</table>
-
-
-<h3 id="sms">SMS Emulation</h3>
-
-<p>The Android emulator console lets you generate an SMS message and direct it to an emulator
-instance. Once you connect to an emulator instance, you can generate an emulated incoming SMS using
-the following command:</p>
-
-<pre>sms send &lt;senderPhoneNumber&gt; &lt;textmessage&gt;</pre>
-
-<p>where <code>&lt;senderPhoneNumber&gt;</code> contains an arbitrary numeric string. </p>
-
-<p>The console forwards the SMS message to the Android framework, which passes it through to an application that handles that message type. </p>
-
-
-<h3 id="vm">VM State</h3>
-
-<p>You can use the <code>vm</code> command to control the VM on an emulator instance. The syntax for
-this command is as follows: </p>
-
-<pre>vm &lt;start|stop|status&gt;</pre>
-
-<p>The <code>vm</code> command supports the subcommands listed in the table below. </p>
-
-<table>
-<tr>
-  <th width="25%">Subcommand</th>
-  <th width="30%">Description</th>
-  <th width="35%">Comments</th>
-</tr>
-<tr>
-    <td><code>start</code></td>
-    <td>Start the VM on the instance. </td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-    <td><code>stop</code></td>
-    <td>Stop the VM on the instance. </td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-    <td><code>start</code></td>
-    <td>Display the current status of the VM (running or stopped). </td>
-  <td>&nbsp;</td>
-</tr>
-</table>
-
-
-<h3 id="window">Emulator Window</h3>
-
-<p>You can use the <code>window</code> command to manage the emulator window. The syntax for this
-command is as follows: </p>
-
-<pre>window &lt;scale&gt;</pre>
-
-<p>The <code>vm</code> command supports the subcommands listed in the table below. </p>
-
-<table>
-<tr>
-  <th width="25%">Subcommand</th>
-  <th width="30%">Description</th>
-  <th width="35%">Comments</th>
-</tr>
-<tr>
-    <td><code>scale &lt;scale&gt;</code></td>
-    <td>Scale the emulator window.</td>
-  <td>A number between 0.1 and 3 that sets the scaling factor. You can
-  also specify scale as a DPI value if you add the suffix "dpi" to the scale value. A value of "auto"
-  tells the emulator to select the best window size.</td>
-</tr>
-</table>
-
-
-<h3 id="terminating">Terminating an Emulator Instance</h3>
-
-<p>You can terminate an emulator instance through the console, using the <code>kill</code> command.</p>
-
-
-<h2 id="limitations">Emulator Limitations</h2>
-
-<p>The functional limitations of the emulator include: </p>
-<ul>
-  <li>No support for placing or receiving actual phone calls. You can simulate phone calls (placed
-    and received) through the emulator console, however. </li>
-  <li>No support for USB connections</li>
-  <li>No support for device-attached headphones</li>
-  <li>No support for determining network connected state</li>
-  <li>No support for determining battery charge level and AC charging state</li>
-  <li>No support for determining SD card insert/eject</li>
-  <li>No support for Bluetooth</li>
-</ul>
-
-
-<h2 id="troubleshooting">Troubleshooting Emulator Problems</h2>
-
-<p>The {@code adb} utility sees the emulator as an actual physical device. For this reason, you
-might have to use the {@code -d} flag with some common {@code adb} commands, such as
-<code>install</code>. The {@code -d} flag lets you specify which of several connected devices to use
-as the target of a command. If you don't specify {@code -d}, the emulator targets the first
-device in its list. For more information about {@code adb}, see <a
-href="{@docRoot}guide/developing/tools/adb.html">Android Debug Bridge</a>.</p>
-
-<p>For emulators running on Mac OS X, if you see an error {@code Warning: No DNS servers found}
-when starting the emulator, check to see whether you have an <code>/etc/resolv.conf</code> file. If
-not, please run the following line in a command window:</p>
-    <pre>ln -s /private/var/run/resolv.conf /etc/resolv.conf</pre>
-
-<p>See <a href="{@docRoot}resources/faq/index.html">Frequently Asked Questions</a> for more
-troubleshooting information. </p>
diff --git a/docs/html/guide/developing/devices/index.jd b/docs/html/guide/developing/devices/index.jd
deleted file mode 100644
index 64651a1..0000000
--- a/docs/html/guide/developing/devices/index.jd
+++ /dev/null
@@ -1,78 +0,0 @@
-page.title=Managing Virtual Devices
-@jd:body
-
-
- <p>An Android Virtual Device (AVD) is an emulator configuration that lets you model an actual
-  device by defining hardware and software options to be emulated by the Android Emulator.</p>
-
-  <p>The easiest way to create an AVD is to use the graphical <a href= 
-  "{@docRoot}guide/developing/devices/managing-avds.html">AVD Manager</a>, which you launch
-  from Eclipse by clicking <strong>Window &gt; AVD Manager</strong>. You can also start the AVD
-Manager from the command line by calling the <code>android</code> tool with the <code>avd</code>
-options, from the <strong>&lt;sdk>/tools/</strong> directory.</p>
-
-  <p>You can also create AVDs on the command line by passing the <code>android</code> tool options.
-  For more information on how to create AVDs in this manner, see <a href= 
-  "{@docRoot}guide/developing/devices/managing-avds-cmdline.html">Managing Virtual
-  Devices from the Command Line</a>.</p>
-
-  <p>An AVD consists of:</p>
-
-  <ul>
-    <li>A hardware profile: Defines the hardware features of the virtual
-    device. For example, you can define whether the device has a camera, whether it uses a physical
-    QWERTY keyboard or a dialing pad, how much memory it has, and so on.</li>
-
-    <li>A mapping to a system image: You can define what version of the Android platform will run
-    on the virtual device. You can choose a version of the standard Android platform or the system
-    image packaged with an SDK add-on.</li>
-
-    <li>Other options: You can specify the emulator skin you want to use with the AVD, which lets
-    you control the screen dimensions, appearance, and so on. You can also specify the emulated SD
-    card to use with the AVD.</li>
-
-    <li>A dedicated storage area on your development machine: the device's user data (installed
-    applications, settings, and so on) and emulated SD card are stored in this area.</li>
-  </ul>
-
-  <p>You can create as many AVDs as you need, based on the types of device you want to model. 
-  To thoroughly test your application, you should create an AVD for each general device configuration
-  (for example, different screen sizes and platform versions) with which your application is compatible
-  and test your application on each one.</p>
-
-  <p>Keep these points in mind when you are selecting a system image target for your AVD:</p>
-
-  <ul>
-    <li>The API Level of the target is important, because your application will not be able to run
-    on a system image whose API Level is less than that required by your application, as specified
-    in the <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">
-    <code>minSdkVersion</code></a> attribute of the application's manifest file. For more
-    information about the relationship between system API Level and application
-    <code>minSdkVersion</code>, see <a href=
-    "{@docRoot}guide/publishing/versioning.html">Specifying Minimum System API Version</a>.</li>
-
-    <li>You should create at least one AVD that uses a target whose API Level is greater than that required
-    by your application, because it allows you to test the
-    forward-compatibility of your application. Forward-compatibility testing ensures that, when
-    users who have downloaded your application receive a system update, your application will
-    continue to function normally.</li>
-
-    <li>If your application declares a 
-    <a href="{@docRoot}guide/topics/manifest/uses-library-element.html"><code>uses-library</code></a>
-    element in its manifest file, the application can only run on a system image in which that external
-    library is present. If you want to run your application on an emulator, create an AVD that
-    includes the required library. Usually, you must create such an AVD using an Add-on component for the
-    AVD's platform (for example, the Google APIs Add-on contains the Google Maps library).</li>
-  </ul>
-
-  <p>To learn how to manage AVDs using a graphical tool, read <a href=
-  "{@docRoot}guide/developing/devices/managing-avds.html">Managing AVDs with AVD Manager</a>. To
-learn how to manage AVDs on the command line, read
-  <a href="{@docRoot}guide/developing/devices/managing-avds-cmdline.html">Managing AVDs
-  from the Command Line</a>.</p>
-
-
-
-
-
-
diff --git a/docs/html/guide/developing/devices/managing-avds-cmdline.jd b/docs/html/guide/developing/devices/managing-avds-cmdline.jd
deleted file mode 100644
index 8674334..0000000
--- a/docs/html/guide/developing/devices/managing-avds-cmdline.jd
+++ /dev/null
@@ -1,369 +0,0 @@
-page.title=Managing AVDs from the Command Line
-parent.title=Managing Virtual Devices
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#listingtargets">Listing Targets</a></li>
-    <li><a href="#AVDCmdLine">Creating AVDs</a>
-      <ol>
-        <li><a href="#CustomDensity">Customize the device resolution or density</a></li>
-        <li><a href="#DefaultLocation">Default location of AVD files</a></li>
-        <li><a href="#hardwareopts">Setting hardware emulation options</a></li>
-      </ol>
-    </li>
-    <li><a href="#moving">Moving an AVD</a></li>
-    <li><a href="#updating">Updating an AVD</a></li>
-    <li><a href="#deleting">Deleting an AVD</a></li>
-  </ol>
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}guide/developing/building/building-cmdline.html">Building and Running
-from the Command Line</a></li>
-    <li><a href="{@docRoot}guide/developing/devices/emulator.html">Using the Android
-Emulator</a></li>
-  </ol>
-  </div>
-</div>
-
-
-<p>The <code>android</code> tool lets you manage AVDs on the command line. For a complete reference 
-of the command line options that you can use, see the reference for the 
-<a href="{@docRoot}guide/developing/tools/android.html"><code>android</code></a> tool.</p>
-
-
-
-<h2 id="listingtargets">Listing Targets</h2>
-
-<p>To generate a list of system image targets, use this command: </p>
-
-<pre>android list targets</pre>
-
-<p>The <code>android</code> tool scans the <code>&lt;sdk&gt;/platforms/</code> and
-<code>&lt;sdk&gt;/add-ons/</code> directories looking for valid system images and
-then generates the list of targets. Here's an example of the command output:
-</p>
-
-<pre>Available Android targets:
-id: 1 or "android-3"
-     Name: Android 1.5
-     Type: Platform
-     API level: 3
-     Revision: 4
-     Skins: QVGA-L, HVGA-L, HVGA (default), HVGA-P, QVGA-P
-id: 2 or "android-4"
-     Name: Android 1.6
-     Type: Platform
-     API level: 4
-     Revision: 3
-     Skins: QVGA, HVGA (default), WVGA800, WVGA854
-id: 3 or "android-7"
-     Name: Android 2.1-update1
-     Type: Platform
-     API level: 7
-     Revision: 2
-     Skins: QVGA, WQVGA400, HVGA (default), WVGA854, WQVGA432, WVGA800
-id: 4 or "android-8"
-     Name: Android 2.2
-     Type: Platform
-     API level: 8
-     Revision: 2
-     Skins: WQVGA400, QVGA, WVGA854, HVGA (default), WVGA800, WQVGA432
-id: 5 or "android-9"
-     Name: Android 2.3
-     Type: Platform
-     API level: 9
-     Revision: 1
-     Skins: HVGA (default), WVGA800, WQVGA432, QVGA, WVGA854, WQVGA400
-</pre>
-
-
-
-<h2 id="AVDCmdLine">Creating AVDs</h2>
-
-<p>In addition to creating AVDs with the 
-<a href="{@docRoot}guide/developing/devices/managing-avds-cmdline.html">AVD Manager user interface</a>,
-you can also create them by passing in command line arguments to the <code>android</code> tool.
-</p>
-
-<p>Open a terminal window and change to
-the <code>&lt;sdk&gt;/tools/</code> directory, if needed.</p>
-
-<p>To create each AVD, you issue the command <code>android create avd</code>,
-with options that specify a name for the new AVD and the system image you want
-to run on the emulator when the AVD is invoked. You can specify other options on
-the command line also, such as the emulated SD card size, the emulator skin, or a custom
-location for the user data files.</p> 
-
-<p>Here's the command-line usage for creating an AVD: </p>
-
-<pre>android create avd -n &lt;name&gt; -t &lt;targetID&gt; [-&lt;option&gt; &lt;value&gt;] ... </pre>
-
-<p>You can use any name you want for the AVD, but since you are likely to be
-creating multiple AVDs, you should choose a name that lets you recognize the
-general characteristics offered by the AVD. The target ID is an integer assigned by the
-<code>android</code> tool. The target ID is not derived from the system image name, 
-version, or API Level, or other attribute, so you need to run the <code>android list targets</code>
-command to list the target ID of each system image. You should do this <em>before</em> you run
-the <code>android create avd</code> command. See the <a
-href="{@docRoot}guide/developing/tools/android.html">android</a>
-tool documentation for more information on the command line options.</p>
-
-
-<p>When you've selected the target you want to use and made a note of its ID,
-use the <code>android create avd</code> command to create the AVD, supplying the
-target ID as the <code>-t</code> argument. Here's an example that creates an
-AVD with name "my_android1.5" and target ID "2" (the standard Android 1.5 
-system image in the list above): </p>
-
-<pre>android create avd -n my_android1.5 -t 2</pre>
-
-<p>If the target you selected was a standard Android system image ("Type:
-platform"), the <code>android</code> tool next asks you whether you want to
-create a custom hardware profile. </p>
-<pre>Android 1.5 is a basic Android platform.
-Do you wish to create a custom hardware profile [no]</pre>
-
-<p>If you want to set custom hardware emulation options for the AVD, enter
-"yes" and set values as needed. If you want to use the default hardware
-emulation options for the AVD, just press the return key (the default is "no").
-The <code>android</code> tool creates the AVD with name and system image mapping you
-requested, with the options you specified. For more information, see <a href="#hardwareopts">
-Setting Hardware Emulation Options</a>.
-
-<p class="note"><strong>Note:</strong> If you are creating an AVD whose target is an SDK add-on, the
-<code>android</code> tool does not allow you to set hardware emulation options.
-It assumes that the provider of the add-on has set emulation options
-appropriately for the device that the add-on is modeling, and so prevents you
-from resetting the options. </p>
-
-
-<h3 id="CustomDensity">Customize the device resolution or density</h3>
-
-<p>When testing your application, we recommend that you test your application in several different
-AVDs, using different screen configurations (different combinations of size and density). In
-addition, you should set up the AVDs to run at a physical size that closely matches an actual
-device.</p>
-
-<p>To set up your AVDs for a specific resolution or density, follow these steps:</p>
-
-<ol>
-  <li>Use the <code>create avd</code> command to create a new AVD, specifying
-the <code>--skin</code> option with a value that references either a default
-skin name (such as "WVGA800") or a custom skin resolution (such as 240x432).
-Here's an example:
-     <pre>android create avd -n &lt;name&gt; -t &lt;targetID&gt; --skin WVGA800</pre>
-  </li>
-  <li>To specify a custom density for the skin, answer "yes" when asked whether
-you want to create a custom hardware profile for the new AVD.</li>
-  <li>Continue through the various profile settings until the tool asks you to
-specify "Abstracted LCD density" (<em>hw.lcd.density</em>). Enter an appropriate
-value, such as "120" for a low-density screen, "160" for a medium density screen,
-or "240" for a high-density screen.</li>
-  <li>Set any other hardware options and complete the AVD creation.</li>
-</ol>
-
-<p>In the example above (WVGA medium density), the new AVD will emulate a 5.8"
-WVGA screen.</p>
-
-<p>As an alternative to adjusting the emulator skin configuration, you can use
-the emulator skin's default density and add the <code>-dpi-device</code> option
-to the <a href="{@docRoot}guide/developing/tools/emulator.html">emulator</a> command line when
-starting the AVD. For example:</p>
-
-<pre>emulator -avd WVGA800 -scale 96dpi -dpi-device 160</pre>
-
-
-
-<h3 id="DefaultLocation">Default location of AVD files</h3>
-
-<p>When you create an AVD, the <code>android</code> tool creates a dedicated directory for it
-on your development computer. The directory contains the AVD configuration file,
-the user data image and SD card image (if available), and any other files
-associated with the device. Note that the directory does not contain a system
-image &mdash; instead, the AVD configuration file contains a mapping to the
-system image, which it loads when the AVD is launched. </p>
-
-<p>The <code>android</code> tool also creates an <code>&lt;AVD_name&gt;.ini</code> file for the AVD at the
-root of the <code>.android/avd/</code> directory on your computer. The file specifies the
-location of the AVD directory and always remains at the root the .android 
-directory.</p>
-
-<p>By default, the <code>android</code> tool creates the AVD directory inside
-<code>~/.android/avd/</code> (on Linux/Mac), <code>C:\Documents and
-Settings\&lt;user&gt;\.android\</code> on Windows XP, and 
-<code>C:\Users\&lt;user&gt;\.android\</code> on Windows 7 and Vista. 
-If you want to use a custom location for the AVD directory, you 
-can do so by using the <code>-p &lt;path&gt;</code> option when 
-you create the AVD: </p>
-
-<pre>android create avd -n my_android1.5 -t 2 -p path/to/my/avd</pre>
-
-<p>If the .android directory is hosted on a network drive, we recommend using
-the <code>-p</code> option to place the AVD directory in another location. 
-The  AVD's .ini file remains in the .android directory on the network
-drive, regardless of the location of the AVD directory. 
-
-
-<h3 id="hardwareopts">Setting hardware emulation options</h3>
-
-<p>When you are creating a new AVD that uses a standard Android system image ("Type:
-platform"), the <code>android</code> tool lets you set hardware emulation
-options for virtual device. The table below lists the options available and the
-default values, as well as the names of properties that store the emulated
-hardware options in the AVD's configuration file (the config.ini file in the
-AVD's local directory). </p>
-
-<p class="table-caption"><strong>Table 1.</strong> Available hardware profile options for AVDs and
-the default values </p>
-
-<table>
-<tr>
-<th>Characteristic</th>
-<th>Description</th>
-<th>Property</th>
-</tr>
-
-<tr>
-<td>Device ram size</td>
-<td>The amount of physical RAM on the device, in megabytes. Default value is "96".
-<td>hw.ramSize</td>
-</tr>
-
-<tr>
-<td>Touch-screen support</td>
-<td>Whether there is a touch screen or not on the device. Default value is "yes".</td>
-<td>hw.touchScreen
-
-<tr>
-<td>Trackball support </td>
-<td>Whether there is a trackball on the device. Default value is "yes".</td>
-<td>hw.trackBall</td>
-</tr>
-
-<tr>
-<td>Keyboard support</td>
-<td>Whether the device has a QWERTY keyboard. Default value is "yes".</td>
-<td>hw.keyboard</td>
-</tr>
-
-<tr>
-<td>DPad support</td>
-<td>Whether the device has DPad keys. Default value is "yes".</td>
-<td>hw.dPad</td>
-</tr>
-
-<tr>
-<td>GSM modem support</td>
-<td>Whether there is a GSM modem in the device. Default value is "yes".</td>
-<td>hw.gsmModem</td>
-</tr>
-
-<tr>
-<td>Camera support</td>
-<td>Whether the device has a camera. Default value is "no".</td>
-<td>hw.camera</td>
-</tr>
-
-<tr>
-<td>Maximum horizontal camera pixels</td>
-<td>Default value is "640".</td>
-<td>hw.camera.maxHorizontalPixels</td>
-</tr>
-
-<tr>
-<td>Maximum vertical camera pixels</td>
-<td>Default value is "480".</td>
-<td>hw.camera.maxVerticalPixels</td>
-</tr>
-
-<tr>
-<td>GPS support</td>
-<td>Whether there is a GPS in the device. Default value is "yes".</td>
-<td>hw.gps</td>
-</tr>
-
-<tr>
-<td>Battery support</td>
-<td>Whether the device can run on a battery. Default value is "yes".</td>
-<td>hw.battery</td>
-</tr>
-
-<tr>
-<td>Accelerometer</td>
-<td>Whether there is an accelerometer in the device. Default value is "yes".</td>
-<td>hw.accelerometer</td>
-</tr>
-
-<tr>
-<td>Audio recording support</td>
-<td>Whether the device can record audio. Default value is "yes".</td>
-<td>hw.audioInput</td>
-</tr>
-
-<tr>
-<td>Audio playback support</td>
-<td>Whether the device can play audio. Default value is "yes".</td>
-<td>hw.audioOutput</td>
-</tr>
-
-<tr>
-<td>SD Card support</td>
-<td>Whether the device supports insertion/removal of virtual SD Cards. Default value is "yes".</td>
-<td>hw.sdCard</td>
-</tr>
-
-<tr>
-<td>Cache partition support</td>
-<td>Whether we use a /cache partition on the device. Default value is "yes".</td>
-<td>disk.cachePartition</td>
-</tr>
-
-<tr>
-<td>Cache partition size</td>
-<td>Default value is "66MB".</td>
-<td>disk.cachePartition.size </td>
-</tr>
-
-<tr>
-<td>Abstracted LCD density</td>
-<td>Sets the generalized density characteristic used by the AVD's screen. Default value is "160".</td>
-<td>hw.lcd.density </td>
-</tr>
-
-<tr>
-<td>Trackball support</td>
-<td>Whether there is a trackball present.</td>
-<td>hw.trackBall </td>
-</tr>
-</table>
-
-
-<h2 id="moving">Moving an AVD</h2>
-
-<p>If you want to move or rename an AVD, you can do so using this command:</p>
-
-<pre>android move avd -n &lt;name&gt; [-&lt;option&gt; &lt;value&gt;] ...</pre>
-
-<h2 id="updating">Updating an AVD</h2>
-
-<p>If, for any reason, the platform/add-on root folder has its name changed (maybe because the user has installed an update of the platform/add-on) then the AVD will not be able to load the system image that it is mapped to. In this case, the <code>android list targets</code> command will produce this output: 
-
-<pre>The following Android Virtual Devices could not be loaded: 
-Name: foo 
-Path: &lt;path&gt;/.android/avd/foo.avd 
-Error: Invalid value in image.sysdir. Run 'android update avd -n foo' </pre>
-
-<p>To fix this error, use the <code>android update avd</code> command to recompute the path to the system images.</p>
-
-<h2 id="deleting">Deleting an AVD</h2>
-
-<p>You can use the <code>android</code> tool to delete an AVD. Here is the command usage:</p>
-
-<pre>android delete avd -n &lt;name&gt; </pre>
-
-<p>When you issue the command, the <code>android</code> tool looks for an AVD matching the 
-specified name deletes the AVD's directory and files. </p>
diff --git a/docs/html/guide/developing/devices/managing-avds.jd b/docs/html/guide/developing/devices/managing-avds.jd
deleted file mode 100644
index 412bd91..0000000
--- a/docs/html/guide/developing/devices/managing-avds.jd
+++ /dev/null
@@ -1,237 +0,0 @@
-page.title=Managing AVDs with AVD Manager
-parent.title=Managing Virtual Devices
-parent.link=index.html
-@jd:body
-
-  <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#createavd">Creating an AVD</a>
-          <ol>
-            <li><a href="#hardwareopts">Hardware options</a></li>
-          </ol>
-        </li>        
-      </ol>
-    </div>
-  </div>
-
-  <p>The AVD Manager is an easy to use user interface to manage your AVD (Android Virtual Device)
-  configurations. An AVD is a device configuration for the Android emulator that allows you to
-  model different configurations of Android-powered devices. When you start the AVD Manager in Eclipse 
-  or run the <code>android</code> tool on the command line, you will see the AVD Manager as shown in
-  figure 1:</p>
-  
-  <img src="{@docRoot}images/avd-manager.png">
-  
-  <p class="img-caption"><strong>Figure 1. </strong>Screenshot of the AVD Manager. </p>
-  
-  <p>From the main screen, you can create, delete, repair and start AVDs as well as see the details
-  of each AVD. </p>
-
-  
-  <h2 id="createavd">Creating an AVD</h2>
-
-  <p>You can create as many AVDs as you would like to test on. It is recommended that you test your
-  applications on all API levels higher than the target API level for your application.</p>
-
-  <p>To create an AVD:</p>
-
-  <ol>
-    <li>Start the AVD Manager:
-
-      <ul>
-        <li>In Eclipse: select <strong>Window &gt; AVD Manager</strong>, or click
-        the AVD Manager icon in the Eclipse toolbar.</li>
-
-        <li>In other IDEs: Navigate to your SDK's <code>tools/</code> directory and execute the
-        <code>android</code> tool with no arguments.</li>
-      </ul>
-    </li>
-
-    <li><p>In the <em>Virtual Devices</em> panel, you'll see a list of existing AVDs. Click
-    <strong>New</strong> to create a new AVD. The <strong>Create New AVD</strong> dialog appears.</p>
-      
-      <img src="{@docRoot}images/developing/avd-dialog.png" alt="AVD Dialog">
-      <p class="img-caption"><strong>Figure 2.</strong> Screenshot of the Create AVD window</p>
-    </li>
-
-    <li>Fill in the details for the AVD.
-
-      <p>Give it a name, a platform target, an SD card size, and a skin (HVGA is default). You can
-      also add specific hardware features of the emulated device by clicking the
-      <strong>New...</strong> button and selecting the feature. For a list of hardware features,
-      see <a href="#hardwareopts">Hardware options</a>.</p>
-
-      <p class="note"><strong>Note:</strong> Be sure to define a target for your AVD that satisfies
-      your application's Build Target (the AVD platform target must have an API Level equal to or
-      greater than the API Level that your application compiles against).</p>
-    </li>
-
-    <li>Click <strong>Create AVD</strong>.</li>
-  </ol>
-
-  <p>Your AVD is now ready and you can either close the AVD Manager, create more AVDs, or
-  launch an emulator with the AVD by selecting a device and clicking <strong>Start</strong>.</p>
-
-<h3 id="hardwareopts">Hardware options</h3>
-<p>If you are creating a new AVD, you can specify the following hardware options for the AVD
-to emulate:</p>
-
-  <table>
-    <tr>
-      <th>Characteristic</th>
-
-      <th>Description</th>
-
-      <th>Property</th>
-    </tr>
-
-    <tr>
-      <td>Device ram size</td>
-
-      <td>The amount of physical RAM on the device, in megabytes. Default value is "96".</td>
-
-      <td>hw.ramSize</td>
-    </tr>
-
-    <tr>
-      <td>Touch-screen support</td>
-
-      <td>Whether there is a touch screen or not on the device. Default value is "yes".</td>
-
-      <td>hw.touchScreen</td>
-    </tr>
-
-    <tr>
-      <td>Trackball support</td>
-
-      <td>Whether there is a trackball on the device. Default value is "yes".</td>
-
-      <td>hw.trackBall</td>
-    </tr>
-
-    <tr>
-      <td>Keyboard support</td>
-
-      <td>Whether the device has a QWERTY keyboard. Default value is "yes".</td>
-
-      <td>hw.keyboard</td>
-    </tr>
-
-    <tr>
-      <td>DPad support</td>
-
-      <td>Whether the device has DPad keys. Default value is "yes".</td>
-
-      <td>hw.dPad</td>
-    </tr>
-
-    <tr>
-      <td>GSM modem support</td>
-
-      <td>Whether there is a GSM modem in the device. Default value is "yes".</td>
-
-      <td>hw.gsmModem</td>
-    </tr>
-
-    <tr>
-      <td>Camera support</td>
-
-      <td>Whether the device has a camera. Default value is "no".</td>
-
-      <td>hw.camera</td>
-    </tr>
-
-    <tr>
-      <td>Maximum horizontal camera pixels</td>
-
-      <td>Default value is "640".</td>
-
-      <td>hw.camera.maxHorizontalPixels</td>
-    </tr>
-
-    <tr>
-      <td>Maximum vertical camera pixels</td>
-
-      <td>Default value is "480".</td>
-
-      <td>hw.camera.maxVerticalPixels</td>
-    </tr>
-
-    <tr>
-      <td>GPS support</td>
-
-      <td>Whether there is a GPS in the device. Default value is "yes".</td>
-
-      <td>hw.gps</td>
-    </tr>
-
-    <tr>
-      <td>Battery support</td>
-
-      <td>Whether the device can run on a battery. Default value is "yes".</td>
-
-      <td>hw.battery</td>
-    </tr>
-
-    <tr>
-      <td>Accelerometer</td>
-
-      <td>Whether there is an accelerometer in the device. Default value is "yes".</td>
-
-      <td>hw.accelerometer</td>
-    </tr>
-
-    <tr>
-      <td>Audio recording support</td>
-
-      <td>Whether the device can record audio. Default value is "yes".</td>
-
-      <td>hw.audioInput</td>
-    </tr>
-
-    <tr>
-      <td>Audio playback support</td>
-
-      <td>Whether the device can play audio. Default value is "yes".</td>
-
-      <td>hw.audioOutput</td>
-    </tr>
-
-    <tr>
-      <td>SD Card support</td>
-
-      <td>Whether the device supports insertion/removal of virtual SD Cards. Default value is
-      "yes".</td>
-
-      <td>hw.sdCard</td>
-    </tr>
-
-    <tr>
-      <td>Cache partition support</td>
-
-      <td>Whether we use a /cache partition on the device. Default value is "yes".</td>
-
-      <td>disk.cachePartition</td>
-    </tr>
-
-    <tr>
-      <td>Cache partition size</td>
-
-      <td>Default value is "66MB".</td>
-
-      <td>disk.cachePartition.size</td>
-    </tr>
-
-    <tr>
-      <td>Abstracted LCD density</td>
-
-      <td>Sets the generalized density characteristic used by the AVD's screen. Default value is
-      "160".</td>
-
-      <td>hw.lcd.density</td>
-    </tr>
-  </table>
-
diff --git a/docs/html/guide/developing/eclipse-adt.html b/docs/html/guide/developing/eclipse-adt.html
deleted file mode 100644
index 879a356..0000000
--- a/docs/html/guide/developing/eclipse-adt.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/guide/developing/projects/projects-eclipse.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/guide/developing/projects/projects-eclipse.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/developing/index.jd b/docs/html/guide/developing/index.jd
deleted file mode 100644
index 3af4a8c..0000000
--- a/docs/html/guide/developing/index.jd
+++ /dev/null
@@ -1,150 +0,0 @@
-page.title=Introduction
-@jd:body
-
-<p>Developing applications for Android devices is facilitated by a group of tools that are
-  provided with the SDK. You can access these tools through an Eclipse plugin called ADT (Android
-  Development Tools) or from the command line. Developing with Eclipse is the preferred method because
-  it can directly invoke the tools that you need while developing applications.</p>
-
-  <p>However, you may choose to develop with another IDE or a simple text editor and invoke the
-  tools on the command line or with scripts. This is a less streamlined way to develop because you
-  will sometimes have to call command line tools manually, but you will have access to the same
-  number of features that you would have in Eclipse.</p>
-
-<div class="figure" style="width:461px">
-  <img src="{@docRoot}images/developing/developing_overview.png"
-       alt="Development process for Android applications"
-       height="738" />
-  <p class="img-caption">
-    <strong>Figure 1.</strong> The development process for Android applications.
-  </p>
-</div>
-
-<p>The basic steps for developing applications (with or without Eclipse) are shown in figure 1. The
-development steps encompass four development phases, which include:</p>
-
-<ul>
-  <li><strong>Setup</strong>
-    <p>During this phase you install and set up your development environment. You also create
-      Android Virtual Devices (AVDs) and connect hardware devices on which you can install your
-      applications.</p>
-    <p>See <a href="{@docRoot}guide/developing/devices/index.html">Managing Virtual Devices</a>
-      and <a href="{@docRoot}guide/developing/device.html">Using Hardware Devices</a> for more
-      information.
-  </li>
-  <li><strong>Development</strong>
-    <p>During this phase you set up and develop your Android project, which contains all of the
-    source code and resource files for your application. For more informations, see
-    <a href="{@docRoot}guide/developing/projects/index.html">Create an Android project</a>.</p>
-  </li>
-  <li><strong>Debugging and Testing</strong>
-    <p>During this phase you build your project into a debuggable <code>.apk</code> package that you
-    can install and run on the emulator or an Android-powered device. If you are using Eclipse,
-    builds are generated each time you project is saved. If you're using another IDE,
-    you can build your project using Ant and install it on a device using
-    <a href="{@docRoot}guide/developing/tools/adb.html">adb</a>. For more information, see
-    <a href="{@docRoot}guide/developing/building/index.html">Build and run your application</a>.</p>
-    <p>Next, you debug your application using a JDWP-compliant debugger along with the debugging
-    and logging tools that are provided with the Android SDK. Eclipse already comes packaged with
-    a compatible debugger. For more information see,
-    <a href="{@docRoot}guide/developing/debugging/index.html">Debug your application with the
-      SDK debugging and logging tools</a>.</p>
-    <p>Last, you test your application using various Android SDK testing tools. For more
-    information, see <a href="{@docRoot}guide/developing/testing/index.html">Test your application
-    with the Testing and Instrumentation framework</a>.</p>
-  </li>
-  <li><strong>Publishing</strong>
-    <p>During this phase you configure and build your application for release and distribute your
-      application to users. For more information, see
-      <a href="{@docRoot}guide/publishing/publishing_overview.html">Publishing Overview</a>.</p>
-  </li>
-</ul>
-
-<h2 id="EssentialTools">Essential command line tools</h2>
-
-  <p>When developing in IDEs or editors other than Eclipse, be familiar with
-  all of the tools below, because you will have to run them from the command line.</p>
-
-  <dl>
-    <dt><a href="{@docRoot}guide/developing/tools/android.html">android</a></dt>
-
-    <dd>Create and update Android projects and create, move, and delete AVDs.</dd>
-
-    <dt><a href="{@docRoot}guide/developing/devices/emulator.html">Android Emulator</a></dt>
-
-    <dd>Run your Android applications on an emulated Android platform.</dd>
-
-    <dt><a href="{@docRoot}guide/developing/tools/adb.html">Android Debug Bridge</a></dt>
-
-    <dd>Interface with your emulator or connected device (install apps, shell the device, issue
-    commands, etc.).</dd>
-  </dl>
-
-  <p>In addition to the above tools that are included with the SDK, you need the following open
-  source and third-party tools:</p>
-
-  <dl>
-    <dt>Ant</dt>
-
-    <dd>To compile and build your Android project into an installable .apk file.</dd>
-
-    <dt>Keytool</dt>
-
-    <dd>To generate a keystore and private key, used to sign your .apk file. Keytool is part of the
-    JDK.</dd>
-
-    <dt>Jarsigner (or similar signing tool)</dt>
-
-    <dd>To sign your .apk file with a private key generated by Keytool. Jarsigner is part of the
-    JDK.</dd>
-  </dl>
-
-  <p>If you are using Eclipse and ADT, tools such as <code>adb</code> and <code>android</code>
-  are automatically called by Eclipse and ADT so you don't have to manually invoke these tools.
-  You need to be familiar with <code>adb</code>, however, because certain functions are not
-accessible from
-  Eclipse, such as the <code>adb</code> shell commands. You might also need to call Keytool and
-Jarsigner to
-  sign your applications, but you can set up Eclipse to do this automatically as well.</p>
-
-<p>For more information on the tools provided with the Android SDK, see the
-  <a href="{@docRoot}guide/developing/tools/index.html">Tools</a> section of the documentation.</p>
-
-<h2 id="ThirdParty">Other Third-Party Development Tools</h2>
-<p>
-	The tools described in this section are not developed by the Android SDK team. The Android Dev Guide
-	    does not provide documentation for these tools. Please refer to the linked documents in each
-	    section for documentation.
-</p>
-<h3 id="IntelliJ">Developing in IntelliJ IDEA</h3>
-<div style="float: right">
-<img alt="The IntelliJ graphical user interface" height="500px"
-src="{@docRoot}images/developing/intellijidea_android_ide.png"/>
-</div>
-<p>
-	IntelliJ IDEA is a powerful Java IDE from JetBrains that provides
-	full-cycle Android development support in both the free Community
-	Edition and the Ultimate edition.
-</p>
-<p>
-	The IDE ensures compatibility with the latest Android SDK and offers a
-	smart code editor with completion, quick navigation between code and
-	resources, a graphical debugger, unit testing support using Android
-	Testing Framework, and the ability to run applications in either the
-	emulator or a USB-connected device.
-</p>
-<p>
-	<strong>Links:</strong>
-</p>
-<ul>
-	<li>
-    	<a href="http://www.jetbrains.com/idea">IntelliJ IDEA official website</a>
-</li>
-	<li>
-    	<a href="http://www.jetbrains.com/idea/features/google_android.html">Android support in IntelliJ IDEA</a>
-</li>
-	<li>
-    	<a href="http://wiki.jetbrains.net/intellij/Android">IntelliJ IDEA Android Tutorials</a>
-	</li>
-</ul>
-
diff --git a/docs/html/guide/developing/other-ide.html b/docs/html/guide/developing/other-ide.html
deleted file mode 100644
index 41dba05..0000000
--- a/docs/html/guide/developing/other-ide.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/guide/developing/projects/projects-cmdline.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/guide/developing/projects/projects-cmdline.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/developing/projects/index.jd b/docs/html/guide/developing/projects/index.jd
deleted file mode 100644
index b16e466..0000000
--- a/docs/html/guide/developing/projects/index.jd
+++ /dev/null
@@ -1,446 +0,0 @@
-page.title=Managing Projects
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#ApplicationProjects">Android Projects</a></li>
-
-        <li><a href="#LibraryProjects">Library Projects</a>
-          <ol>
-            <li><a href="#considerations">Development considerations</a></li>
-          </ol>
-        </li>
-
-        <li><a href="#TestProjects">Test Projects</a></li>
-
-        <li><a href="#testing">Testing a Library Project</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>Projects act as containers for storing things such as code and resource files. The SDK tools
-  expect your projects to follow a specific structure so it can compile and package your
-  application correctly, so it is highly recommended that you create them with Eclipse and ADT or
-  with the <code>android</code> tool on the command line. There are three types of projects, and
-  they all share the same general structure but differ in function:</p>
-
-  <dl>
-    <dt><strong>Android Projects</strong></dt>
-
-    <dd>An Android project is the container for your application's source code, resource files, and
-    files such as the Ant build and Android Manifest file. An application project is the main type
-    of project and the contents are eventually built into an <code>.apk</code> file that you install on a
-    device.</dd>
-
-    <dt><strong>Test Projects</strong></dt>
-
-    <dd>These projects contain code to test your application projects and are built into
-    applications that run on a device.</dd>
-
-    <dt><strong>Library Projects</strong></dt>
-
-    <dd>These projects contain shareable Android source code and resources that you can reference
-    in Android projects. This is useful when you have common code that you want to reuse.
-    Library projects cannot be installed onto a device, however, they are
-    pulled into the <code>.apk</code> file at build time.</dd>
-  </dl>
-
-  <p>When you use the Android development tools to create a new project, the essential files and
-  folders will be created for you. There are only a handful of files and folders generated for you,
-  and some of them depend on whether you use the Eclipse plugin or the {@code android} tool to
-  generate your project. As your application grows in complexity, you might require new kinds of
-  resources, directories, and files.</p>
-
-  <h2 id="ApplicationProjects">Android Projects</h2>
-
-  <p>Android projects are the projects that eventually get built into an <code>.apk</code> file that you install
-  onto a device. They contain things such as application source code and resource files.
-  Some are generated for you by default, while others should be created if
-  required. The following directories and files comprise an Android project:</p>
-
-  <dl>
-    <dt><code>src/</code></dt>
-
-    <dd>Contains your stub Activity file, which is stored at
-    <code>src<em>/your/package/namespace/ActivityName</em>.java</code>. All other source code
-     files (such as <code>.java</code> or <code>.aidl</code> files) go here as well.</dd>
-
-    <dt><code>bin</code></dt>
-
-    <dd>Output directory of the build. This is where you can find the final <code>.apk</code> file and other
-    compiled resources.</dd>
-
-    <dt><code>jni</code></dt>
-
-    <dd>Contains native code sources developed using the Android NDK. For more information, see the
-    <a href="{@docRoot}sdk/ndk/index.html">Android NDK documentation</a>.</dd>
-
-    <dt><code>gen/</code></dt>
-
-    <dd>Contains the Java files generated by ADT, such as your <code>R.java</code> file and
-    interfaces created from AIDL files.</dd>
-
-    <dt><code>assets/</code></dt>
-
-    <dd>This is empty. You can use it to store raw asset files. Files that you save here are
-    compiled into an <code>.apk</code> file as-is, and the original filename is preserved. You can navigate this
-    directory in the same way as a typical file system using URIs and read files as a stream of
-    bytes using the the {@link android.content.res.AssetManager}. For example, this is a good
-    location for textures and game data.</dd>
-
-    <dt><code>res/</code></dt>
-
-    <dd>
-      Contains application resources, such as drawable files, layout files, and string values. See
-      <a href="{@docRoot}guide/topics/resources/index.html">Application Resources</a> for more
-      information.
-
-      <dl>
-        <dt><code>anim/</code></dt>
-
-        <dd>For XML files that are compiled into animation objects. See the <a href=
-        "{@docRoot}guide/topics/resources/animation-resource.html">Animation</a> resource
-        type.</dd>
-
-        <dt><code>color/</code></dt>
-
-        <dd>For XML files that describe colors. See the <a href=
-        "{@docRoot}guide/topics/resources/color-list-resource.html">Color Values</a> resource
-        type.</dd>
-
-        <dt><code>drawable/</code></dt>
-
-        <dd>For bitmap files (PNG, JPEG, or GIF), 9-Patch image files, and XML files that describe
-        Drawable shapes or a Drawable objects that contain multiple states (normal, pressed, or
-        focused). See the <a href=
-        "{@docRoot}guide/topics/resources/drawable-resource.html">Drawable</a> resource type.</dd>
-
-        <dt><code>layout/</code></dt>
-
-        <dd>XML files that are compiled into screen layouts (or part of a screen). See the <a href=
-        "{@docRoot}guide/topics/resources/layout-resource.html">Layout</a> resource type.</dd>
-
-        <dt><code>menu/</code></dt>
-
-        <dd>For XML files that define application menus.
-        See the <a href="{@docRoot}guide/topics/resources/menu-resource.html">Menus</a>
-        resource type.</dd>
-
-        <dt><code>raw/</code></dt>
-
-        <dd>For arbitrary raw asset files. Saving asset files here instead of in the
-        <code>assets/</code> directory only differs in the way that you access them. These files
-        are processed by aapt and must be referenced from the application using a resource
-        identifier in the {@code R} class. For example, this is a good place for media, such as MP3
-        or Ogg files.</dd>
-
-        <dt><code>values/</code></dt>
-
-        <dd>For XML files that are compiled into many kinds of resource. Unlike other resources in
-        the <code>res/</code> directory, resources written to XML files in this folder are not
-        referenced by the file name. Instead, the XML element type controls how the resources is
-        defined within them are placed into the {@code R} class.</dd>
-
-        <dt><code>xml/</code></dt>
-
-        <dd>For miscellaneous XML files that configure application components. For example, an XML
-        file that defines a {@link android.preference.PreferenceScreen}, {@link
-        android.appwidget.AppWidgetProviderInfo}, or <a href=
-        "{@docRoot}reference/android/app/SearchManager.html#SearchabilityMetadata">Searchability
-        Metadata</a>. See <a href="{@docRoot}guide/topics/resources/index.html">Application Resources</a>
-        for more information about configuring these application components.</dd>
-      </dl>
-    </dd>
-
-    <dt><code>libs/</code></dt>
-
-    <dd>Contains private libraries.</dd>
-
-    <dt><code>AndroidManifest.xml</code></dt>
-
-    <dd>The control file that describes the nature of the application and each of its components.
-    For instance, it describes: certain qualities about the activities, services, intent receivers,
-    and content providers; what permissions are requested; what external libraries are needed; what
-    device features are required, what API Levels are supported or required; and others. See the
-    <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>
-    documentation for more information</dd>
-
-    <dt><code>project.properties</code></dt>
-
-    <dd>This file contains project settings, such as the build target. This file is integral to
-    the project, so maintain it in a source revision control system. To edit project
-    properties in Eclipse, right-click the project folder and select
-    <strong>Properties</strong>.</dd>
-
-    <dt><code>local.properties</code></dt>
-
-    <dd>Customizable computer-specific properties for the build system. If you use Ant to build
-    the project, this contains the path to the SDK installation. Because the content of the file
-    is specific to the local installation of the SDK, the <code>local.properties</code> should not
-be maintained in a source revision control system. If you use Eclipse, this file is not
-used.</dd>
-
-    <dt><code>ant.properties</code></dt>
-
-    <dd>Customizable properties for the build system. You can edit this file to override default
-    build settings used by Ant and also provide the location of your keystore and key alias so that
-    the build tools can sign your application when building in release mode. This file is integral
-    to the project, so maintain it in a source revision control system. If you use Eclipse, this
-    file is not used.</dd>
-
-    <dt><code>build.xml</code></dt>
-
-    <dd>The Ant build file for your project. This is only applicable for projects that
-    you build with Ant.</dd>
-
-  </dl>
-
-  <h2 id="LibraryProjects">Library Projects</h2>
-
-  <div class="sidebox-wrapper">
-    <div class="sidebox">
-      <h2>Library project example code</h2>
-
-      <p>The SDK includes an example application called <code>TicTacToeMain</code> that shows how a dependent
-      application can use code and resources from an Android Library project. The TicTacToeMain
-      application uses code and resources from an example library project called TicTacToeLib.</p>
-
-      <p>To download the sample applications and run them as projects in
-      your environment, use the <em>Android SDK Manager</em> to download the "Samples for
-      SDK API 8" (or later) package into your SDK.</p>
-
-      <p>For more information and to browse the code of the samples, see
-      the <a href="{@docRoot}resources/samples/TicTacToeMain/index.html">TicTacToeMain
-      application</a>.</p>
-    </div>
-  </div>
-
-    <p>An Android <em>library project</em> is a development project that holds shared Android
-    source code and resources. Other Android application projects can reference the library project
-    and, at build time, include its compiled sources in their <code>.apk</code> files. Multiple
-    application projects can reference the same library project and any single application project
-    can reference multiple library projects.</p>
-
-    <p class="note"><strong>Note:</strong> You need SDK Tools r14 or newer to use the new library
-    project feature that generates each library project into its own JAR file.
-    You can download the tools and platforms using the
-    <em>Android SDK Manager</em>, as described in
-    <a href="{@docRoot}sdk/adding-components.html">Adding SDK Packages</a>.</p>
-
-    <p>If you have source code and resources that are common to multiple Android projects, you
-    can move them to a library project so that it is easier to maintain across applications and
-    versions. Here are some common scenarios in which you could make use of library projects:</p>
-
-    <ul>
-      <li>If you are developing multiple related applications that use some of the same components,
-      you move the redundant components out of their respective application projects and create a
-      single, reuseable set of the same components in a library project.</li>
-
-      <li>If you are creating an application that exists in both free and paid versions. You move
-      the part of the application that is common to both versions into a library project. The two
-      dependent projects, with their different package names, will reference the library project
-      and provide only the difference between the two application versions.</li>
-    </ul>
-
-    <p>Structurally, a library project is similar to a standard Android application project. For
-    example, it includes a manifest file at the project root, as well as <code>src/</code>,
-    <code>res/</code> and similar directories. The project can contain the same types of source
-    code and resources as a standard Android project, stored in the same way. For example, source
-    code in the library project can access its own resources through its <code>R</code> class.</p>
-
-    <p>However, a library project differs from an standard Android application project in that you
-    cannot compile it directly to its own <code>.apk</code> and run it on an Android device.
-    Similarly, you cannot export the library project to a self-contained JAR file, as you would do
-    for a true library. Instead, you must compile the library indirectly, by referencing the
-    library in the dependent application and building that application.</p>
-
-    <p>When you build an application that depends on a library project, the SDK tools compile the
-    library into a temporary JAR file and uses it in the main project, then uses the
-    result to generate the <code>.apk</code>. In cases where a resource ID is defined in both the
-    application and the library, the tools ensure that the resource declared in the application gets
-    priority and that the resource in the library project is not compiled into the application
-    <code>.apk</code>. This gives your application the flexibility to either use or redefine any
-    resource behaviors or values that are defined in any library.</p>
-
-    <p>To organize your code further, your application can add references to multiple library
-    projects, then specify the relative priority of the resources in each library. This lets you
-    build up the resources actually used in your application in a cumulative manner. When two
-    libraries referenced from an application define the same resource ID, the tools select the
-    resource from the library with higher priority and discard the other.</p>
-
-    <p>Once you have added references to library projects to your Android project,
-    you can set their relative priority. At build time, the
-    libraries are merged with the application one at a time, starting from the lowest priority to
-    the highest.</p>
-
-    <p>Library projects can reference other library projects and can import an external library
-    (JAR) in the  normal way.</p>
-
-  <h3 id="considerations">Development considerations</h3>
-
-  <p>As you develop your library project and dependent applications, keep the points listed below
-  in mind:</p>
-
-  <ul>
-  <li><p><strong>Resource conflicts</strong></p>
-  <p>Since the tools merge the resources of a library project with those of a dependent application
-  project, a given resource ID might be defined in both projects. In this case, the tools select
-  the resource from the application, or the library with highest priority, and discard the other
-  resource. As you develop your applications, be aware that common resource IDs are likely to be
-  defined in more than one project and will be merged, with the resource from the application or
-  highest-priority library taking precedence.</p>
-  </li>
-
-  <li><p><strong>Use prefixes to avoid resource conflicts</strong></p>
-
-  <p>To avoid resource conflicts for common resource IDs, consider using a prefix or other
-  consistent naming scheme that is unique to the project (or is unique across all projects).</p></li>
-
-  <li><p><strong>You cannot export a library project to a JAR file</strong></p>
-
-  <p>A library cannot be distributed as a binary file (such as a JAR file). This will
-be added in a future
-  version of the SDK Tools.</p></li>
-
-  <li><p><strong>A library project can include a JAR library</strong></p>
-
-  <p>You can develop a library project that itself includes a JAR library, however you need to
-  manually edit the dependent application project's build path and add a path to the JAR file.</p></li>
-
-  <li><p><strong>A library project can depend on an external JAR library</strong></p>
-
-  <p>You can develop a library project that depends on an external library (for example, the Maps
-  external library). In this case, the dependent application must build against a target that
-  includes the external library (for example, the Google APIs Add-On). Note also that both the
-  library project and the dependent application must declare the external library in their manifest
-  files, in a <a href=
-  "{@docRoot}guide/topics/manifest/uses-library-element.html"><code>&lt;uses-library&gt;</code></a>
-  element.</p></li>
-
-  <li> <p><strong>Library projects cannot include raw assets</strong></p>
-
-  <p>The tools do not support the use of raw asset files (saved in the <code>assets/</code> directory)
-  in a library project. Any asset resources
-  used by an application must be stored in the <code>assets/</code> directory of the application
-  project itself. However, resource files saved in the
-  <code>res/</code> directory are supported.</p></li>
-
-  <li><p><strong>Platform version must be lower than or equal to the Android project</strong></p>
-
-  <p>A library is compiled as part of the dependent application project, so the API used in the
-  library project must be compatible with the version of the Android library used to compile the
-  application project. In general, the library project should use an <a href=
-  "{@docRoot}guide/appendix/api-levels.html">API level</a> that is the same as &mdash; or lower
-  than &mdash; that used by the application. If the library project uses an API level that is
-  higher than that of the application, the application project will not compile. It is
-  perfectly acceptable to have a library that uses the Android 1.5 API (API level 3) and that is
-  used in an Android 1.6 (API level 4) or Android 2.1 (API level 7) project, for instance.</p></li>
-
-  <li> <p><strong>No restriction on library package names</strong></p>
-
-  <p>There is no requirement for the package name of a library to be the same as that of
-  applications that use it.</p></li>
-
-  <li><p><strong>Each library project creates its own R class </strong></p>
-
-  <p>When you build the dependent application project, library projects are compiled and
-  merged with the application project. Each library has its own <code>R</code> class, named according
-  to the library's package name. The <code>R</code> class generated from main
-  project and the library project is created in all the packages that are needed including the main
-  project's package and the libraries' packages.</p></li>
-
-  <li><p><strong>Library project storage location</strong></p>
-
-  <p>There are no specific requirements on where you should store a library project, relative to a
-  dependent application project, as long as the application project can reference the library
-  project by a relative link. What is important is that the main
-  project can reference the library project through a relative link.</p></li>
-  </ul>
-
-  <h2 id="TestProjects">Test Projects</h2>
-
-  <p>Test projects contain Android applications that you write using the
-  <a href="{@docRoot}guide/topics/testing/index.html">Testing and
-  Instrumentation framework</a>. The framework is an extension of the JUnit test framework and adds
-  access to Android system objects. The file structure of a test project is the same as an
-  Android project.</p>
-
-  <dl>
-    <dt><code>src/</code></dt>
-
-    <dd>Includes your test source files. Test projects do not require an Activity <code>.java</code>
-    file, but can include one.</dd>
-
-    <dt><code>gen/</code></dt>
-
-    <dd>This contains the Java files generated by ADT, such as your <code>R.java</code> file and
-    interfaces created from AIDL files.</dd>
-
-    <dt><code>assets/</code></dt>
-
-    <dd>This is empty. You can use it to store raw asset files.</dd>
-
-    <dt><code>res/</code></dt>
-
-    <dd>A folder for your application resources, such as drawable files, layout files, string
-    values, etc. See <a href="{@docRoot}guide/topics/resources/index.html">Application
-    Resources</a>.</dd>
-
-    <dt><code>AndroidManifest.xml</code></dt>
-
-    <dd>The Android Manifest for your project. See <a href=
-    "{@docRoot}guide/topics/manifest/manifest-intro.html">The AndroidManifest.xml File</a>. Test
-    Projects have a special <a href=
-    "{@docRoot}guide/topics/manifest/instrumentation-element.html">
-    <code>&lt;instrumentation&gt;</code></a>
-    element that connects the test project with the application project.</dd>
-
-    <dt><code>project.properties</code></dt>
-
-    <dd>This file contains project settings, such as the build target and links to the project being
-tested. This file is integral to the project, so maintain it in a source
-revision control system. To edit project properties in Eclipse, right-click the project folder
-and select <strong>Properties</strong>.</dd>
-
-    <dt><code>local.properties</code></dt>
-
-    <dd>Customizable computer-specific properties for the build system. If you use Ant to build
-    the project, this contains the path to the SDK installation. Because the content of the file
-    is specific to the local installation of the SDK, it should not be maintained in a Source
-    Revision Control system. If you use Eclipse, this file is not used.</dd>
-
-    <dt><code>ant.properties</code></dt>
-
-    <dd>Customizable properties for the build system. You can edit this file to override default
-    build settings used by Ant and provide the location to your keystore and key alias, so that the
-    build tools can sign your application when building in release mode. This file is integral to
-    the project, so maintain it in a source revision control system.
-    If you use Eclipse, this file is not used.</dd>
-
-    <dt><code>build.xml</code></dt>
-
-    <dd>The Ant build file for your project. This is only applicable for projects that
-    you build with Ant.</dd>
-  </dl>
-
-  <p>For more information, see the <a href=
-  "{@docRoot}guide/developing/testing/index.html">Testing</a> section.</p>
-
-
-  <h2 id="testing">Testing a Library Project</h2>
-
-  <p>There are two recommended ways of setting up testing on code and resources in a library
-  project:</p>
-
-  <ul>
-    <li>You can set up a <a href="{@docRoot}guide/developing/testing/testing_otheride.html">test
-    project</a> that instruments an application project that depends on the library project. You
-    can then add tests to the project for library-specific features.</li>
-
-    <li>You can set up a set up a standard application project that depends on the library and put
-    the instrumentation in that project. This lets you create a self-contained project that
-    contains both the tests/instrumentations and the code to test.</li>
-  </ul>
\ No newline at end of file
diff --git a/docs/html/guide/developing/projects/projects-cmdline.jd b/docs/html/guide/developing/projects/projects-cmdline.jd
deleted file mode 100644
index b8db5f3..0000000
--- a/docs/html/guide/developing/projects/projects-cmdline.jd
+++ /dev/null
@@ -1,295 +0,0 @@
-page.title=Managing Projects from the Command Line
-parent.title=Managing Projects
-parent.link=index.html
-@jd:body
-
-  <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#CreatingAProject">Creating an Android Project</a></li>
-        <li><a href="#UpdatingAProject">Updating a Project</a></li>
-        <li><a href="#SettingUpLibraryProject">Setting up a Library Project</a>
-          <ol>
-            <li><a href="#CreatingManifestFile">Creating the manifest file</a></li>
-            <li><a href="#UpdatingLibraryProject">Updating a library project</a></li>
-          </ol>
-        </li>
-        <li><a href="#ReferencingLibraryProject">Referencing a Library Project</a>
-          <ol>
-            <li><a href="#DeclaringLibrary">Declaring library components in the manifest
-file</a></li>
-            <li><a href="#depAppBuild">Building a dependent application</a></li>
-          </ol>
-        </li>
-      </ol>
-
-      <h2>See also</h2>
-
-      <ol>
-        <li><a href=
-        "{@docRoot}guide/developing/testing/testing_otheride.html#CreateTestProjectCommand">Testing
-        from Other IDEs</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>The <code>android</code> tool provides you with commands to create all three types of
-  projects. An Android project contains all of the files and resources that are needed to build a
-  project into an .apk file for installation.
-
-  <ul>
-    <li>An Android project contains all of the files and resources that are needed to build a project into
-  an .apk file for installation. You need to create an Android project for any application that you
-  want to eventually install on a device.</li>
-
-  <li>You can also designate an Android project as a library project, which allows it to be shared
-  with other projects that depend on it. Once an Android project is designated as a library
-  project, it cannot be installed onto a device.</li>
-
-  <li>Test projects extend JUnit test functionality to include Android specific functionality. For
-  more information on creating a test project, see <a href=
-  "{@docRoot}guide/developing/testing/testing_otheride.html">Testing from other IDEs</a>.</li>
-  </ul>
-
-
-  <h2 id="CreatingAProject">Creating an Android Project</h2>
-
-  <p>To create an Android project, you must use the <code>android</code> tool. When you create a
-  new project with <code>android</code>, it will generate a project directory with some default
-  application files, stub files, configuration files and a build file.</p>
-
-  <p>To create a new Android project, open a command-line, navigate to the <code>tools/</code>
-  directory of your SDK and run:</p>
-  <pre>
-android create project \
---target &lt;target_ID&gt; \
---name &lt;your_project_name&gt; \
---path path/to/your/project \
---activity &lt;your_activity_name&gt; \
---package &lt;your_package_namespace&gt;
-</pre>
-
-  <ul>
-    <li><code>target</code> is the "build target" for your application. It corresponds to an
-    Android platform library (including any add-ons, such as Google APIs) that you would like to
-    build your project against. To see a list of available targets and their corresponding IDs,
-    execute: <code>android list targets</code>.</li>
-
-    <li><code>name</code> is the name for your project. This is optional. If provided, this name
-    will be used for your .apk filename when you build your application.</li>
-
-    <li><code>path</code> is the location of your project directory. If the directory does not
-    exist, it will be created for you.</li>
-
-    <li><code>activity</code> is the name for your default {@link android.app.Activity} class. This
-    class file will be created for you inside
-    <code><em>&lt;path_to_your_project&gt;</em>/src/<em>&lt;your_package_namespace_path&gt;</em>/</code>
-    . This will also be used for your .apk filename unless you provide a <code>name</code>.</li>
-
-    <li><code>package</code> is the package namespace for your project, following the same rules as
-    for packages in the Java programming language.</li>
-  </ul>
-
-  <p>Here's an example:</p>
-  <pre>
-android create project \
---target 1 \
---name MyAndroidApp \
---path ./MyAndroidAppProject \
---activity MyAndroidAppActivity \
---package com.example.myandroid
-</pre>
-
-  <p>Once you've created your project, you're ready to begin development. You can move your project
-  folder wherever you want for development, but keep in mind that you must use the <a href=
-  "{@docRoot}guide/developing/tools/adb.html">Android Debug Bridge</a> (adb) &mdash; located in the
-  SDK <code>platform-tools/</code> directory &mdash; to send your application to the emulator (discussed
-  later). So you need access between your project solution and the <code>platform-tools/</code> folder.</p>
-
-  <p class="note"><strong>Tip:</strong> Add the <code>platform-tools/</code> as well as the <code>tools/</code> directory
-  to your <code>PATH</code> environment variable.</p>
-
-  <p class="caution"><strong>Caution:</strong> You should refrain from moving the location of the
-  SDK directory, because this will break the SDK location property located in <code>local.properties</code>.
-  If you need to update the SDK location, use the <code>android update project</code> command.
-  See <a href="#UpdatingAProject">Updating a Project</a> for more information.</p>
-
-  <h2 id="UpdatingAProject">Updating a Project</h2>
-
-  <p>If you're upgrading a project from an older version of the Android SDK or want to create a new
-  project from existing code, use the <code>android update project</code> command to update the
-  project to the new development environment. You can also use this command to revise the build
-  target of an existing project (with the <code>--target</code> option) and the project name (with
-  the <code>--name</code> option). The <code>android</code> tool will generate any files and
-  folders (listed in the previous section) that are either missing or need to be updated, as needed
-  for the Android project.</p>
-
-  <p>To update an existing Android project, open a command-line and navigate to the
-  <code>tools/</code> directory of your SDK. Now run:</p>
-  <pre>
-android update project --name &lt;project_name&gt; --target &lt;target_ID&gt;
---path &lt;path_to_your_project&gt;
-</pre>
-
-  <ul>
-    <li><code>target</code> is the "build target" for your application. It corresponds to an
-    Android platform library (including any add-ons, such as Google APIs) that you would like to
-    build your project against. To see a list of available targets and their corresponding IDs,
-    execute: <code>android list targets</code>.</li>
-
-    <li><code>path</code> is the location of your project directory.</li>
-
-    <li><code>name</code> is the name for the project. This is optional&mdash;if you're not
-    changing the project name, you don't need this.</li>
-  </ul>
-
-  <p>Here's an example:</p>
-  <pre>
-android update project --name MyApp --target 2 --path ./MyAppProject
-</pre>
-
-  <h2 id="SettingUpLibraryProject">Setting up a Library Project</h2>
-
-  <p>A library project is a standard Android project, so you can create a new one in the same way
-  as you would a new application project. Specifically, you can use the <code>android</code> tool
-  to generate a new library project with all of the necessary files and folders.</p>
-
-  <p>To create a new library project, navigate to the <code>&lt;sdk&gt;/tools/</code> directory and
-  use this command:</p>
-  <pre class="no-pretty-print">
-android create lib-project --name &lt;your_project_name&gt; \
---target &lt;target_ID&gt; \
---path path/to/your/project \
---package &lt;your_library_package_namespace&gt;
-</pre>
-
-  <p>The <code>create lib-project</code> command creates a standard project structure that includes
-  preset property that indicates to the build system that the project is a library. It does this by
-  adding this line to the project's <code>project.properties</code> file:</p>
-  <pre class="no-pretty-print">
-android.library=true
-</pre>
-
-  <p>Once the command completes, the library project is created and you can begin moving source
-  code and resources into it, as described in the sections below.</p>
-
-  <p>If you want to convert an existing application project to a library project, so that other
-  applications can use it, you can do so by adding a the <code>android.library=true</code> property
-  to the application's <code>project.properties</code> file.</p>
-
-  <h3 id="CreatingManifestFile">Creating the manifest file</h3>
-
-  <p>A library project's manifest file must declare all of the shared components that it includes,
-  just as would a standard Android application. For more information, see the documentation for
-  <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>.</p>
-
-  <p>For example, the <a href=
-  "{@docRoot}resources/samples/TicTacToeLib/AndroidManifest.html">TicTacToeLib</a> example library
-  project declares the Activity <code>GameActivity</code>:</p>
-  <pre>
-&lt;manifest&gt;
-  ...
-  &lt;application&gt;
-    ...
-    &lt;activity android:name="GameActivity" /&gt;
-    ...
-  &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-  <h3 id="UpdatingLibraryProject">Updating a library project</h3>
-
-  <p>If you want to update the build properties (build target, location) of the library project,
-  use this command:</p>
-  <pre>
-android update lib-project \
---target <em>&lt;target_ID&gt;</em> \
---path <em>path/to/your/project</em>
-</pre>
-
-  <h2 id="ReferencingLibraryProject">Referencing a Library Project</h2>
-
-  <p>If you are developing an application and want to include the shared code or resources from a
-  library project, you can do so easily by adding a reference to the library project in the
-  application project's build properties.</p>
-
-  <p>To add a reference to a library project, navigate to the <code>&lt;sdk&gt;/tools/</code>
-  directory and use this command:</p>
-  <pre>
-android update project \
---target <em>&lt;target_ID&gt;</em> \
---path <em>path/to/your/project</em>
---library <em>path/to/library_projectA</em>
-</pre>
-
-  <p>This command updates the application project's build properties to include a reference to the
-  library project. Specifically, it adds an <code>android.library.reference.<em>n</em></code>
-  property to the project's <code>project.properties</code> file. For example:</p>
-  <pre class="no-pretty-print">
-android.library.reference.1=path/to/library_projectA
-</pre>
-
-  <p>If you are adding references to multiple libraries, note that you can set their relative
-  priority (and merge order) by manually editing the <code>project.properties</code> file and
-  adjusting the each reference's <code>.<em>n</em></code> index as appropriate. For example, assume
-  these references:</p>
-  <pre class="no-pretty-print">
-android.library.reference.1=path/to/library_projectA
-android.library.reference.2=path/to/library_projectB
-android.library.reference.3=path/to/library_projectC
-</pre>
-
-  <p>You can reorder the references to give highest priority to <code>library_projectC</code> in
-  this way:</p>
-  <pre class="no-pretty-print">
-android.library.reference.2=path/to/library_projectA
-android.library.reference.3=path/to/library_projectB
-android.library.reference.1=path/to/library_projectC
-</pre>
-
-  <p>Note that the <code>.<em>n</em></code> index in the references must begin at "1" and increase
-  uniformly without "holes". References appearing in the index after a hole are ignored.</p>
-
-  <p>At build time, the libraries are merged with the application one at a time, starting from the
-  lowest priority to the highest. Note that a library cannot itself reference another library and
-  that, at build time, libraries are not merged with each other before being merged with the
-  application.</p>
-
-  <h3 id="DeclaringLibrary">Declaring library components in the manifest file</h3>
-
-  <p>In the manifest file of the application project, you must add declarations of all components
-  that the application will use that are imported from a library project. For example, you must
-  declare any <code>&lt;activity&gt;</code>, <code>&lt;service&gt;</code>,
-  <code>&lt;receiver&gt;</code>, <code>&lt;provider&gt;</code>, and so on, as well as
-  <code>&lt;permission&gt;</code>, <code>&lt;uses-library&gt;</code>, and similar elements.</p>
-
-  <p>Declarations should reference the library components by their fully-qualified package names,
-  where appropriate.</p>
-
-  <p>For example, the <a href=
-  "{@docRoot}resources/samples/TicTacToeMain/AndroidManifest.html">TicTacToeMain</a> example
-  application declares the library Activity <code>GameActivity</code> like this:</p>
-  <pre>
-&lt;manifest&gt;
-  ...
-  &lt;application&gt;
-    ...
-    &lt;activity android:name="com.example.android.tictactoe.library.GameActivity" /&gt;
-    ...
-  &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-  <p>For more information about the manifest file, see the documentation for
-  <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>.</p>
-
-  <h3 id="depAppBuild">Building a dependent application</h3>
-
-  <p>To build an application project that depends on one or more library projects, you can use the
-  standard Ant build commands and compile modes, as described in <a href=
-  "{@docRoot}guide/developing/building/index.html">Building and Running</a>. The tools
-compile and merge all libraries referenced by the application as part of
-  compiling the dependent application project. No additional commands or steps are necessary.</p>
-
diff --git a/docs/html/guide/developing/projects/projects-eclipse.jd b/docs/html/guide/developing/projects/projects-eclipse.jd
deleted file mode 100644
index 90f7820..0000000
--- a/docs/html/guide/developing/projects/projects-eclipse.jd
+++ /dev/null
@@ -1,237 +0,0 @@
-page.title=Managing Projects from Eclipse with ADT
-parent.title=Managing Projects
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#CreatingAProject">Creating an Android Project</a></li>
-
-        <li><a href="#SettingUpLibraryProject">Setting up a Library Project</a></li>
-
-        <li><a href="#ReferencingLibraryProject">Referencing a Library Project</a></li>
-      </ol>
-
-      <h2>See also</h2>
-
-      <ol>
-        <li><a href=
-        "{@docRoot}guide/developing/testing/testing_eclipse.html#CreateTestProjectEclipse">Testing
-        from Eclipse with ADT</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>Eclipse and the ADT plugin provide GUIs and wizards to create all three types of projects
-  (Android project, Library project, and Test project):
-  
-  <ul>
-    <li>An Android project contains all of the files and resources that are needed to build a project into
-  an .apk file for installation. You need to create an Android project for any application that you
-  want to eventually install on a device.</li>
-
-  <li>You can also designate an Android project as a library project, which allows it to be shared
-  with other projects that depend on it. Once an Android project is designated as a library
-  project, it cannot be installed onto a device.</li>
-
-  <li>Test projects extend JUnit test functionality to include Android specific functionality. For
-  more information on creating a test project, see <a href=
-  "{@docRoot}guide/developing/testing/testing_eclipse.html">Testing from Eclipse with ADT</a>.</li>
-  </ul>
-
-  <h2 id="CreatingAProject">Creating an Android Project</h2>
-
-  <p>The ADT plugin provides a <em>New Project Wizard</em> that you can use to quickly create a new Android
-  project (or a project from existing code). To create a new project:</p>
-
-  <ol>
-    <li>Select <strong>File</strong> &gt; <strong>New</strong> &gt; <strong>Project</strong>.</li>
-
-    <li>Select <strong>Android</strong> &gt; <strong>Android Project</strong>, and click
-    <strong>Next</strong>.</li>
-
-    <li>Select the contents for the project:
-
-      <ul>
-        <li>Enter a <em>Project Name</em>. This will be the name of the folder where your project
-        is created.</li>
-
-        <li>Under Contents, select <strong>Create new project in workspace</strong>. Select your
-        project workspace location.</li>
-
-        <li>Under Target, select an Android target to be used as the project's Build Target. The
-        Build Target specifies which Android platform you'd like your application built against.
-
-          <p>Select the lowest platform with which your application is compatible.</p>
-
-          <p class="note"><strong>Note:</strong> You can change your the Build Target for your
-          project at any time: Right-click the project in the Package Explorer, select
-          <strong>Properties</strong>, select <strong>Android</strong> and then check the desired
-          Project Target.</p>
-        </li>
-
-        <li>Under Properties, fill in all necessary fields.
-
-          <ul>
-            <li>Enter an <em>Application name</em>. This is the human-readable title for your
-            application &mdash; the name that will appear on the Android device.</li>
-
-            <li>Enter a <em>Package name</em>. This is the package namespace (following the same
-            rules as for packages in the Java programming language) where all your source code will
-            reside.</li>
-
-            <li>Select <em>Create Activity</em> (optional, of course, but common) and enter a name
-            for your main Activity class.</li>
-
-            <li>Enter a <em>Min SDK Version</em>. This is an integer that indicates the minimum API
-            Level required to properly run your application. Entering this here automatically sets
-            the <code>minSdkVersion</code> attribute in the <a href=
-            "{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</a> of your
-            Android Manifest file. If you're unsure of the appropriate <a href=
-            "{@docRoot}guide/appendix/api-levels.html">API Level</a> to use, copy the API Level
-            listed for the Build Target you selected in the Target tab.</li>
-          </ul>
-        </li>
-      </ul>
-    </li>
-
-    <li>Click <strong>Finish</strong>.</li>
-  </ol>
-
-  <p class="note"><strong>Tip:</strong> You can also start the New Project Wizard from the
-  <em>New</em> icon in the toolbar.</p>
-
-  <h2 id="SettingUpLibraryProject">Setting up a Library Project</h2>
-
-  <p>A library project is a standard Android project, so you can create a new one in the same way
-  as you would a new application project.</p>
-
-  <p>When you are creating the library project, you can select any application name, package, and
-  set other fields as needed, as shown in figure 1.</p>
-
-  <p>Next, set the project's properties to indicate that it is a library project:</p>
-
-  <ol>
-    <li>In the <strong>Package Explorer</strong>, right-click the library project and select
-    <strong>Properties</strong>.</li>
-
-    <li>In the <strong>Properties</strong> window, select the "Android" properties group at left
-    and locate the <strong>Library</strong> properties at right.</li>
-
-    <li>Select the "is Library" checkbox and click <strong>Apply</strong>.</li>
-
-    <li>Click <strong>OK</strong> to close the <em>Properties</em> window.</li>
-  </ol>
-
-  <p>The new project is now marked as a library project. You can begin moving source code and
-  resources into it, as described in the sections below.</p>
-
-  <p>You can also convert an existing application project into a library. To do so, simply open the
-  Properties for the project and select the "is Library" checkbox. Other application projects can
-  now reference the existing project as a library project.</p>
-  
-  <img src= "{@docRoot}images/developing/adt-props-isLib.png">
-
-  <p class="img-caption"><strong>Figure 1.</strong> Marking a project as an
-     Android library project.</p>
-
-  <h3>Creating the manifest file</h3>
-
-  <p>A library project's manifest file must declare all of the shared components that it includes,
-  just as would a standard Android application. For more information, see the documentation for
-  <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>.</p>
-
-  <p>For example, the <a href=
-  "{@docRoot}resources/samples/TicTacToeLib/AndroidManifest.html">TicTacToeLib</a> example library
-  project declares the Activity <code>GameActivity</code>:</p>
-  <pre>
-&lt;manifest&gt;
-  ...
-  &lt;application&gt;
-    ...
-    &lt;activity android:name="GameActivity" /&gt;
-    ...
-  &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-  <h2 id="ReferencingLibraryProject">Referencing a library project</h2>
-
-  <p>If you are developing an application and want to include the shared code or resources from a
-  library project, you can do so easily by adding a reference to the library project in the
-  application project's Properties.</p>
-
-  <p>To add a reference to a library project, follow these steps:</p>
-
-  <ol>
-    <li>In the <strong>Package Explorer</strong>, right-click the dependent project and select
-    <strong>Properties</strong>.</li>
-
-    <li>In the <strong>Properties</strong> window, select the "Android" properties group at left
-    and locate the <strong>Library</strong> properties at right.</li>
-
-    <li>Click <strong>Add</strong> to open the <strong>Project Selection</strong> dialog.</li>
-
-    <li>From the list of available library projects, select a project and click
-    <strong>OK</strong>.</li>
-
-    <li>When the dialog closes, click <strong>Apply</strong> in the <strong>Properties</strong>
-    window.</li>
-
-    <li>Click <strong>OK</strong> to close the <strong>Properties</strong> window.</li>
-  </ol>
-
-  <p>As soon as the Properties dialog closes, Eclipse rebuilds the project, including the contents
-  of the library project.</p>
-
-  <p>Figure 2 shows the Properties dialog that lets you add library references and move
-  them up and down in priority.</p><img src="{@docRoot}images/developing/adt-props-libRef.png">
-
-  <p class="img-caption"><strong>Figure 2.</strong> Adding a reference to a
-     library project in the properties of an application project.</p>
-
-  <p>If you are adding references to multiple libraries, note that you can set their relative
-  priority (and merge order) by selecting a library and using the <strong>Up</strong> and
-  <strong>Down</strong> controls. The tools merge the referenced libraries with your application
-  starting from lowest priority (bottom of the list) to highest (top of the list). If more than one
-  library defines the same resource ID, the tools select the resource from the library with higher
-  priority. The application itself has highest priority and its resources are always used in
-  preference to identical resource IDs defined in libraries.</p>
-
-  <h3>Declaring library components in the manifest file</h3>
-
-  <p>In the manifest file of the application project, you must add declarations of all components
-  that the application will use that are imported from a library project. For example, you must
-  declare any <code>&lt;activity&gt;</code>, <code>&lt;service&gt;</code>,
-  <code>&lt;receiver&gt;</code>, <code>&lt;provider&gt;</code>, and so on, as well as
-  <code>&lt;permission&gt;</code>, <code>&lt;uses-library&gt;</code>, and similar elements.</p>
-
-  <p>Declarations should reference the library components by their fully-qualified package names,
-  where appropriate.</p>
-
-  <p>For example, the <a href=
-  "{@docRoot}resources/samples/TicTacToeMain/AndroidManifest.html">TicTacToeMain</a> example
-  application declares the library Activity <code>GameActivity</code> like this:</p>
-  <pre>
-&lt;manifest&gt;
-  ...
-  &lt;application&gt;
-    ...
-    &lt;activity android:name="com.example.android.tictactoe.library.GameActivity" /&gt;
-    ...
-  &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-  <p>For more information about the manifest file, see the documentation for <a href=
-  "{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>.</p>
-
-
-
-
-
-
-
diff --git a/docs/html/guide/developing/testing/index.jd b/docs/html/guide/developing/testing/index.jd
deleted file mode 100644
index 8a08959..0000000
--- a/docs/html/guide/developing/testing/index.jd
+++ /dev/null
@@ -1,36 +0,0 @@
-page.title=Testing
-@jd:body
-<p>
-    Android includes powerful tools for setting up and running test applications.
-    Whether you are working in Eclipse with ADT or working from the command line, these tools
-    help you set up and run your tests within an emulator or the device you are targeting.
-    The documents listed below explain how to work with the tools in your development environment.
-</p>
-<p>
-    If you aren't yet familiar with the Android testing framework, please read the topic
-    <a href="{@docRoot}guide/topics/testing/testing_android.html">Testing Fundamentals</a>
-    before you get started.
-    For a step-by-step introduction to Android testing, try the <a
-    href="{@docRoot}resources/tutorials/testing/helloandroid_test.html">Hello, Testing</a>
-    tutorial, which introduces basic testing concepts and procedures.
-    For a more advanced tutorial, try <a
-    href="{@docRoot}resources/tutorials/testing/activity_test.html">Activity Testing</a>,
-    which guides you through a more complex testing scenario.
-</p>
-<dl>
-  <dt><a href="testing_eclipse.html">Testing from Eclipse, with ADT</a></dt>
-          <dd>
-            The ADT plugin lets you quickly set up and manage test projects directly in
-            the Eclipse UI. Once you have written your tests, you can build and run them and
-            then see the results in the Eclipse JUnit view. You can also use the SDK command-line
-            tools to execute your tests if needed.
-          </dd>
-  <dt><a href="testing_otheride.html">Testing from Other IDEs</a></dt>
-    <dd>
-        The SDK command-line tools provide the same capabilities as the ADT plugin. You can
-        use them to set up and manage test projects, build your test application,
-        run your tests, and see the results. You use
-        the <code>android</code> tool to create and manage test projects, the Ant build system
-        to compile them, and the <code>adb</code> tool to install and run them.
-    </dd>
-</dl>
diff --git a/docs/html/guide/developing/testing/testing_eclipse.jd b/docs/html/guide/developing/testing/testing_eclipse.jd
deleted file mode 100644
index 4e9ecca..0000000
--- a/docs/html/guide/developing/testing/testing_eclipse.jd
+++ /dev/null
@@ -1,535 +0,0 @@
-page.title=Testing from Eclipse with ADT
-parent.title=Testing
-parent.link=index.html
-@jd:body
-<div id="qv-wrapper">
-    <div id="qv">
-        <h2>In this document</h2>
-            <ol>
-                <li><a href="#CreateTestProjectEclipse">Creating a Test Project</a></li>
-                <li><a href="#CreateTestAppEclipse">Creating a Test Package</a></li>
-                <li><a href="#RunTestEclipse">Running Tests</a></li>
-            </ol>
-    </div>
-</div>
-<p>
-    This topic explains how create and run tests of Android applications in Eclipse with ADT.
-    Before you read this topic, you should read about how to create an Android application with the
-    basic processes for creating and running applications with ADT, as described in
-    <a href="{@docRoot}guide/developing/projects/projects-eclipse.html">Managing Projects from
-Eclipse</a>
-    and <a href="{@docRoot}guide/developing/building/building-eclipse.html">Building and Running
-from Eclipse</a>.
-    You may also want to read
-    <a href="{@docRoot}guide/topics/testing/testing_android.html">Testing Fundamentals</a>,
-    which provides an overview of the Android testing framework.
-</p>
-<p>
-    ADT provides several features that help you set up and manage your testing environment
-    effectively:
-</p>
-    <ul>
-        <li>
-            It lets you quickly create a test project and link it to the application under test.
-            When it creates the test project, it automatically inserts the necessary
-            <code>&lt;instrumentation&gt;</code> element in the test package's manifest file.
-        </li>
-        <li>
-            It lets you quickly import the classes of the application under test, so that your
-            tests can inspect them.
-        </li>
-        <li>
-            It lets you create run configurations for your test package and include in
-            them flags that are passed to the Android testing framework.
-        </li>
-        <li>
-            It lets you run your test package without leaving Eclipse. ADT builds both the
-            application under test and the test package automatically, installs them if
-            necessary to your device or emulator, runs the test package, and displays the
-            results in a separate window in Eclipse.
-        </li>
-    </ul>
-<p>
-    If you are not developing in Eclipse or you want to learn how to create and run tests from the
-    command line, see
-    <a href="{@docRoot}guide/developing/testing/testing_otheride.html">Testing from Other IDEs</a>.
-</p>
-<h2 id="CreateTestProjectEclipse">Creating a Test Project</h2>
-<p>
-    To set up a test environment for your Android application, you must first create a separate
-    project that holds the test code. The new project follows the directory structure
-    used for any Android application. It includes the same types of content and files, such as
-    source code, resources, a manifest file, and so forth. The test package you
-    create is connected to the application under test by an
-    <a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">
-    <code>&lt;instrumentation&gt;</code></a> element in its manifest file.
-</p>
-<p>
-    The <em>New Android Test Project</em> dialog makes it easy for you to generate a
-    new test project that has the proper structure, including the
-    <code>&lt;instrumentation&gt;</code> element in the manifest file. You can use the New
-    Android Test Project dialog to generate the test project at any time. The dialog appears
-    just after you create a new Android main application project, but you can also run it to
-    create a test project for a project that you created previously.
-</p>
-<p>
-    To create a test project in Eclipse with ADT:
-</p>
-<ol>
-    <li>
-        In Eclipse, select <strong>File &gt; New &gt; Other</strong>. This opens the <em>Select a
-        Wizard</em> dialog.
-    </li>
-    <li>
-        In the dialog, in the <em>Wizards</em> drop-down list, find the entry for Android, then
-        click the toggle to the left. Select <strong>Android Test Project</strong>, then at the
-        bottom of the dialog click <strong>Next</strong>. The <em>New Android Test Project</em>
-        wizard appears.
-    </li>
-    <li>
-        Next to <em>Test Project Name</em>, enter a name for the project. You may use any name,
-        but you may want to associate the name with the project name for the application under test.
-        One way to do this is to take the application's project name, append the string "Test" to
-        it, and then use this as the test package project name.
-        <p>
-            The name becomes part of the suggested project path, but you can change this in the
-            next step.
-        </p>
-    </li>
-    <li>
-        In the <em>Content</em> panel, examine the suggested path to the project.
-        If <em>Use default location</em> is set, then the wizard will suggest a path that is
-        a concatenation of the workspace path and the project name you entered. For example,
-        if your workspace path is <code>/usr/local/workspace</code> and your project name is
-        <code>MyTestApp</code>, then the wizard will suggest
-        <code>/usr/local/workspace/MyTestApp</code>. To enter your own
-        choice for a path, unselect <em>Use default location</em>, then enter or browse to the
-        path where you want your project.
-        <p>
-            To learn more about choosing the location of test projects, please read
-            <a href="{@docRoot}guide/topics/testing/testing_android.html#TestProjectPaths">
-            Testing Fundamentals</a>.
-        </p>
-    </li>
-    <li>
-        In the Test Target panel, set An Existing Android Project, click Browse, then select your
-        Android application from the list. You now see that the wizard has completed the Test
-        Target Package, Application Name, and Package Name fields for you (the latter two are in
-        the Properties panel).
-    </li>
-    <li>
-        In the Build Target panel, select the Android SDK platform that the application under test
-        uses.
-    </li>
-    <li>
-        Click Finish to complete the wizard. If Finish is disabled, look for error messages at the
-        top of the wizard dialog, and then fix any problems.
-    </li>
-</ol>
-<h2 id="CreateTestAppEclipse">Creating a Test Package</h2>
-<p>
-    Once you have created a test project, you populate it with a test package. This package does not
-    require an Activity, although you can define one if you wish. Although your test package can
-    combine Activity classes, test case classes, or ordinary classes, your main test case
-    should extend one of the Android test case classes or JUnit classes, because these provide the
-    best testing features.
-</p>
-<p>
-    Test packages do not need to have an Android GUI. When you run the package in
-    Eclipse with ADT, its results appear in the JUnit view. Running tests and seeing the results is
-    described in more detail in the section <a href="#RunTestEclipse">Running Tests</a>.
-</p>
-
-<p>
-    To create a test package, start with one of Android's test case classes defined in
-    {@link android.test android.test}. These extend the JUnit
-    {@link junit.framework.TestCase TestCase} class. The Android test classes for Activity objects
-    also provide instrumentation for testing an Activity. To learn more about test case
-    classes, please read the topic <a href="{@docRoot}guide/topics/testing/testing_android.html">
-    Testing Fundamentals</a>.
-</p>
-<p>
-    Before you create your test package, you choose the Java package identifier you want to use
-    for your test case classes and the Android package name you want to use. To learn more
-    about this, please read
-    <a href="{@docRoot}guide/topics/testing/testing_android.html#PackageNames">
-    Testing Fundamentals</a>.
-</p>
-<p>
-    To add a test case class to your project:
-</p>
-<ol>
-    <li>
-        In the <em>Project Explorer</em> tab, open your test project, then open the <em>src</em>
-        folder.
-    </li>
-    <li>
-        Find the Java package identifier set by the projection creation wizard. If you haven't
-        added classes yet, this node won't have any children, and its icon will not be filled in.
-        If you want to change the identifier value, right-click the identifier and select
-        <strong>Refactor</strong> &gt; <strong>Rename</strong>, then enter the new name.
-    </li>
-    <li>
-        When you are ready, right-click the Java package identifier again and select
-        <strong>New</strong> &gt; <strong>Class</strong>. This displays the <em>New Java Class</em>
-        dialog, with the <em>Source folder</em> and <em>Package</em> values already set.
-    </li>
-    <li>
-        In the <em>Name</em> field, enter a name for the test case class. One way to choose a
-        class name is to append the string "Test" to the class of the component you are testing.
-        For example, if you are testing the class MyAppActivity, your test case class
-        name would be MyAppActivityTest. Leave the modifiers set to <em>public</em>.
-    </li>
-    <li>
-        In the <em>Superclass</em> field, enter the name of the Android test case class you
-        are extending. You can also browse the available classes.
-    </li>
-    <li>
-        In <em>Which method stubs would you like to create?</em>, unset all the options, then
-        click <strong>Finish</strong>. You will set up the constructor manually.
-    </li>
-    <li>
-        Your new class appears in a new Java editor pane.
-    </li>
-</ol>
-<p>
-    You now have to ensure that the constructor is set up correctly. Create a constructor for your
-    class that has no arguments; this is required by JUnit. As the first statement in this
-    constructor, add a call to the base class' constructor. Each base test case class has its
-    own constructor signature. Refer to the class documentation in the documentation for
-    {@link android.test} for more information.
-</p>
-<p>
-    To control your test environment, you will want to override the <code>setUp()</code> and
-    <code>tearDown()</code> methods:
-</p>
-<ul>
-    <li>
-        <code>setUp()</code>: This method is invoked before any of the test methods in the class.
-        Use it to set up the environment for the test (the test fixture. You can use
-        <code>setUp()</code> to instantiate a new Intent with the action <code>ACTION_MAIN</code>.
-        You can then use this intent to start the Activity under test.
-    </li>
-    <li>
-        <code>tearDown()</code>: This method is invoked after all the test methods in the class. Use
-        it to do garbage collection and to reset the test fixture.
-    </li>
-</ul>
-<p>
-    Another useful convention is to add the method <code>testPreconditions()</code> to your test
-    class. Use this method to test that the application under test is initialized correctly. If this
-    test fails, you know that that the initial conditions were in error. When this happens, further
-    test results are suspect, regardless of whether or not the tests succeeded.
-</p>
-<p>
-    The Resources tab contains an
-    <a href="{@docRoot}resources/tutorials/testing/activity_test.html">Activity Testing</a>
-    tutorial with more information about creating test classes and methods.
-</p>
-<h2 id="RunTestEclipse">Running Tests</h2>
-    <div class="sidebox-wrapper">
-        <div class="sidebox">
-            <h2>Running tests from the command line</h2>
-                <p>
-                    If you've created your tests in Eclipse, you can still run your tests and test
-                    suites by using command-line tools included with the Android SDK. You may want
-                    to do this, for example, if you have a large number of tests to run, if you
-                    have a large test case, or if you want a fine level of control over which
-                    tests are run at a particular time.
-                </p>
-                <p>
-                    To run tests created in Eclipse with ADT with command-line tools, you must first
-                    install additional files into the test project using the <code>android</code>
-                    tool's "create test-project" option. To see how to do this, read
-                   <a href="{@docRoot}guide/developing/testing/testing_otheride.html#CreateProject">
-                    Testing in Other IDEs</a>.
-                </p>
-        </div>
-    </div>
-<p>
-    When you run a test package in Eclipse with ADT, the output appears in the Eclipse JUnit view.
-    You can run the entire test package or one test case class. To do run tests, Eclipse runs the
-    <code>adb</code> command for running a test package, and displays the output, so there is no
-    difference between running tests inside Eclipse and running them from the command line.
-</p>
-<p>
-    As with any other package, to run a test package in Eclipse with ADT you must either attach a
-    device to your computer or use the Android emulator. If you use the emulator, you must have an
-    Android Virtual Device (AVD) that uses the same target as the test package.
-</p>
-<p>
-    To run a test in Eclipse, you have two choices:</p>
-<ul>
-    <li>
-        Run a test just as you run an application, by selecting
-        <strong>Run As... &gt; Android JUnit Test</strong> from the project's context menu or
-        from the main menu's <strong>Run</strong> item.
-    </li>
-    <li>
-        Create an Eclipse run configuration for your test project. This is useful if you want
-        multiple test suites, each consisting of selected tests from the project. To run
-        a test suite, you run the test configuration.
-        <p>
-            Creating and running test configurations is described in the next section.
-        </p>
-    </li>
-</ul>
-<p>
-    To create and run a test suite using a run configuration:
-</p>
-<ol>
-    <li>
-        In the Package Explorer, select the test project, then from the main menu, select
-        <strong>Run &gt; Run Configurations...</strong>. The Run Configurations dialog appears.
-    </li>
-    <li>
-        In the left-hand pane, find the Android JUnit Test entry. In the right-hand pane, click the
-        Test tab. The Name: text box shows the name of your project. The Test class: dropdown box
-        shows one of the test classes in your project.
-    </li>
-    <li>
-        To run one test class, click  Run a single test, then enter your project name in the
-        Project: text box and the class name in the Test class: text box.
-        <p>
-            To run all the test classes, click Run all tests in the selected project or package,
-            then enter the project or package name in the text box.
-        </p>
-    </li>
-    <li>
-        Now click the Target tab.
-        <ul>
-            <li>
-                Optional: If you are using the emulator, click Automatic, then in the Android
-                Virtual Device (AVD) selection table, select an existing AVD.
-            </li>
-            <li>
-                In the Emulator Launch Parameters pane, set the Android emulator flags you want to
-                use. These are documented in the topic
-                <a href="{@docRoot}guide/developing/tools/emulator.html#startup-options">
-                Android Emulator</a>.
-            </li>
-        </ul>
-    </li>
-    <li>
-        Click the Common tab. In the Save As pane, click Local to save this run configuration
-        locally, or click Shared to save it to another project.
-    </li>
-    <li>
-        Optional: Add the configuration to the Run toolbar and the <strong>Favorites</strong>
-        menu: in the Display in Favorites pane click the checkbox next to Run.
-    </li>
-    <li>
-        Optional: To add this configuration to the <strong>Debug</strong> menu and toolbar, click
-        the checkbox next to Debug.
-    </li>
-    <li>
-        To save your settings, click Close.<br/>
-        <p class="note"><strong>Note:</strong>
-            Although you can run the test immediately by clicking Run, you should save the test
-            first and then run it by selecting it from the Eclipse standard toolbar.
-        </p>
-    </li>
-    <li>
-        On the Eclipse standard toolbar, click the down arrow next to the green Run arrow. This
-        displays a menu of saved Run and Debug configurations.
-    </li>
-    <li>
-        Select the test run configuration you just created. The test starts.
-    </li>
-</ol>
-<p>
-    The progress of your test appears in the Console view as a series of messages. Each message is
-    preceded by a timestamp and the <code>.apk</code> filename to which it applies. For example,
-    this message appears when you run a test to the emulator, and the emulator is not yet started:
-</p>
-<div class="sidebox-wrapper">
-    <div class="sidebox">
-        <h2>Message Examples</h2>
-        <p>
-            The examples shown in this section come from the
-            <a href="{@docRoot}resources/samples/SpinnerTest/index.html">SpinnerTest</a>
-            sample test package, which tests the
-            <a href="{@docRoot}resources/samples/Spinner/index.html">Spinner</a>
-            sample application. This test package is also featured in the
-            <a href="{@docRoot}resources/tutorials/testing/activity_test.html">Activity Testing</a>
-            tutorial.
-        </p>
-    </div>
-</div>
-<pre>
-    [<em>yyyy-mm-dd hh:mm:ss</em> - <em>testfile</em>] Waiting for HOME ('android.process.acore') to be launched...
-</pre>
-<p>
-    In the following description of these messages, <code><em>devicename</em></code> is the name of
-    the device or emulator you are using to run the test, and <code><em>port</em></code> is the
-    port number for the device. The name and port number are in the format used by the
-    <code><a href="{@docRoot}guide/developing/tools/adb.html#devicestatus">adb devices</a></code>
-    command. Also, <code><em>testfile</em></code> is the <code>.apk</code> filename of the test
-    package you are running, and <em>appfile</em> is the filename of the application under test.
-</p>
-<ul>
-    <li>
-        If you are using an emulator and you have not yet started it, then Eclipse
-        first starts the emulator. When this is complete, you see
-        the message:
-        <p>
-            <code>HOME is up on device '<em>devicename</em>-<em>port</em>'</code>
-        </p>
-    </li>
-    <li>
-        If you have not already installed your test package, then you see
-        the message:
-        <p>
-            <code>Uploading <em>testfile</em> onto device '<em>devicename</em>-<em>port</em>'
-            </code>
-        </p>
-        <p>
-            then the message <code>Installing <em>testfile</em></code>.
-        </p>
-        <p>
-            and finally the message <code>Success!</code>
-        </p>
-    </li>
-</ul>
-<p>
-    The following lines are an example of this message sequence:
-</p>
-<code>
-[2010-07-01 12:44:40 - MyTest] HOME is up on device 'emulator-5554'<br>
-[2010-07-01 12:44:40 - MyTest] Uploading MyTest.apk onto device 'emulator-5554'<br>
-[2010-07-01 12:44:40 - MyTest] Installing MyTest.apk...<br>
-[2010-07-01 12:44:49 - MyTest] Success!<br>
-</code>
-<br>
-<ul>
-    <li>
-        Next, if you have not yet installed the application under test to the device or
-        emulator, you see the message
-        <p>
-        <code>Project dependency found, installing: <em>appfile</em></code>
-        </p>
-        <p>
-            then the message <code>Uploading <em>appfile</em></code> onto device
-            '<em>devicename</em>-<em>port</em>'
-        </p>
-        <p>
-            then the message <code>Installing <em>appfile</em></code>
-        </p>
-        <p>
-            and finally the message <code>Success!</code>
-        </p>
-    </li>
-</ul>
-<p>
-    The following lines are an example of this message sequence:
-</p>
-<code>
-[2010-07-01 12:44:49 - MyTest] Project dependency found, installing: MyApp<br>
-[2010-07-01 12:44:49 - MyApp] Uploading MyApp.apk onto device 'emulator-5554'<br>
-[2010-07-01 12:44:49 - MyApp] Installing MyApp.apk...<br>
-[2010-07-01 12:44:54 - MyApp] Success!<br>
-</code>
-<br>
-<ul>
-    <li>
-        Next, you see the message
-        <code>Launching instrumentation <em>instrumentation_class</em> on device
-        <em>devicename</em>-<em>port</em></code>
-        <p>
-            <code>instrumentation_class</code> is the fully-qualified class name of the
-            instrumentation test runner you have specified (usually
-            {@link android.test.InstrumentationTestRunner}.
-        </p>
-    </li>
-    <li>
-        Next, as {@link android.test.InstrumentationTestRunner} builds a list of tests to run,
-        you see the message
-        <p>
-            <code>Collecting test information</code>
-        </p>
-        <p>
-            followed by
-        </p>
-        <p>
-            <code>Sending test information to Eclipse</code>
-        </p>
-    </li>
-    <li>
-        Finally, you see the message <code>Running tests</code>, which indicates that your tests
-        are running. At this point, you should start seeing the test results in the JUnit view.
-        When the tests are finished, you see the console message <code>Test run complete</code>.
-        This indicates that your tests are finished.
-    </li>
-</ul>
-<p>
-    The following lines are an example of this message sequence:
-</p>
-<code>
-[2010-01-01 12:45:02 - MyTest] Launching instrumentation android.test.InstrumentationTestRunner on device emulator-5554<br>
-[2010-01-01 12:45:02 - MyTest] Collecting test information<br>
-[2010-01-01 12:45:02 - MyTest] Sending test information to Eclipse<br>
-[2010-01-01 12:45:02 - MyTest] Running tests...<br>
-[2010-01-01 12:45:22 - MyTest] Test run complete<br>
-</code>
-<br>
-<p>
-    The test results appear in the JUnit view. This is divided into an upper summary pane,
-    and a lower stack trace pane.
-</p>
-<p>
-    The upper pane contains test information. In the pane's header, you see the following
-    information:
-</p>
-<ul>
-    <li>
-        Total time elapsed for the test package (labeled Finished after <em>x</em> seconds).
-    </li>
-    <li>
-        Number of runs (Runs:) - the number of tests in the entire test class.
-    </li>
-    <li>
-        Number of errors (Errors:) - the number of program errors and exceptions encountered
-        during the test run.
-    </li>
-    <li>
-        Number of failures (Failures:) - the number of test failures encountered during the test
-        run. This is the number of assertion failures. A test can fail even if the program does
-        not encounter an error.
-    </li>
-    <li>
-        A progress bar. The progress bar extends from left to right as the tests run. If all the
-        tests succeed, the bar remains green. If a test fails, the bar turns from green to red.
-    </li>
-</ul>
-<p>
-    The body of the upper pane contains the details of the test run. For each test case class
-    that was run, you see a line with the class name. To look at the results for the individual
-    test methods in that class, you click the left arrow to expand the line. You now see a
-    line for each test method in the class, and to its right the time it took to run.
-    If you double-click the method name, Eclipse opens the test class source in an editor view
-    pane and moves the focus to the first line of the test method.
-</p>
-<p>
-    The results of a successful test are shown in figure 1.
-</p>
-<a href="{@docRoot}images/testing/eclipse_test_results.png">
-    <img src="{@docRoot}images/testing/eclipse_test_results.png"
-         alt="Messages for a successful test" height="327px" id="TestResults"/>
-</a>
-<p class="img-caption">
-    <strong>Figure 1.</strong> Messages for a successful test.
-</p>
-<p>
-    The lower pane is for stack traces. If you highlight a failed test in the upper pane, the
-    lower pane contains a stack trace for the test. If a line corresponds to a point in your
-    test code, you can double-click it to display the code in an editor view pane, with the
-    line highlighted. For a successful test, the lower pane is empty.
-</p>
-<p>The results of a failed test are shown in figure 2.</p>
-<a href="{@docRoot}images/testing/eclipse_test_run_failure.png">
-    <img src="{@docRoot}images/testing/eclipse_test_run_failure.png"
-         alt="" height="372px" id="TestRun"/>
-</a>
-<p class="img-caption">
-    <strong>Figure 2.</strong> Messages for a test failure.
-</p>
diff --git a/docs/html/guide/developing/testing/testing_otheride.jd b/docs/html/guide/developing/testing/testing_otheride.jd
deleted file mode 100644
index 7745ae7..0000000
--- a/docs/html/guide/developing/testing/testing_otheride.jd
+++ /dev/null
@@ -1,694 +0,0 @@
-page.title=Testing from Other IDEs
-parent.title=Testing
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-    <div id="qv">
-        <h2>In this document</h2>
-            <ol>
-                <li>
-                    <a href="#CreateTestProjectCommand">Working with Test Projects</a>
-                    <ol>
-                        <li>
-                            <a href="#CreateTestProject">Creating a test project</a>
-                        </li>
-                        <li>
-                            <a href="#UpdateTestProject">Updating a test project</a>
-                        </li>
-                    </ol>
-                </li>
-                <li>
-                    <a href="#CreateTestApp">Creating a Test Package</a>
-                </li>
-                <li>
-                    <a href="#RunTestsCommand">Running Tests</a>
-                    <ol>
-                        <li>
-                            <a href="#RunTestsAnt">Quick build and run with Ant</a>
-                        </li>
-                        <li>
-                            <a href="#RunTestsDevice">Running tests on a device or emulator</a>
-                        </li>
-                    </ol>
-                </li>
-                <li>
-                    <a href="#AMSyntax">Using the Instrument Command</a>
-                    <ol>
-                        <li>
-                            <a href="#AMOptionsSyntax">Instrument options</a>
-                        </li>
-                        <li>
-                            <a href="#RunTestExamples">Instrument examples</a>
-                        </li>
-                    </ol>
-                </li>
-            </ol>
-        <h2>See Also</h2>
-            <ol>
-                <li>
-                    <a href="{@docRoot}guide/topics/testing/testing_android.html">
-                        Testing Fundamentals</a>
-                </li>
-                <li>
-                    <a href="{@docRoot}guide/developing/tools/adb.html">Android Debug Bridge</a>
-                </li>
-            </ol>
-    </div>
-</div>
-<p>
-    This document describes how to create and run tests directly from the command line.
-    You can use the techniques described here if you are developing in an IDE other than Eclipse
-    or if you prefer to work from the command line. This document assumes that you already know how
-    to create a Android application in your programming environment. Before you start this
-    document, you should read the topic
-    <a href="{@docRoot}guide/topics/testing/testing_android.html">Testing Fundamentals</a>,
-    which provides an overview of Android testing.
-</p>
-<p>
-    If you are developing in Eclipse with ADT, you can set up and run your tests
-    directly in Eclipse. For more information, please read
-    <a href="{@docRoot}guide/developing/testing/testing_eclipse.html">
-    Testing from Eclipse with ADT</a>.
-</p>
-<h2 id="CreateTestProjectCommand">Working with Test Projects</h2>
-<p>
-    You use the <code>android</code> tool to create test projects.
-    You also use <code>android</code> to convert existing test code into an Android test project,
-    or to add the <code>run-tests</code> Ant target to an existing Android test project.
-    These operations are described in more detail in the section <a href="#UpdateTestProject">
-    Updating a test project</a>. The <code>run-tests</code> target is described in
-    <a href="#RunTestsAnt">Quick build and run with Ant</a>.
-</p>
-<h3 id="CreateTestProject">Creating a test project</h3>
-<p>
-    To create a test project with the <code>android</code> tool, enter:
-</p>
-<pre>
-android create test-project -m &lt;main_path&gt; -n &lt;project_name&gt; -p &lt;test_path&gt;
-</pre>
-<p>
-    You must supply all the flags. The following table explains them in detail:
-</p>
-<table>
-    <tr>
-        <th>Flag</th>
-        <th>Value</th>
-        <th>Description</th>
-    </tr>
-    <tr>
-        <td><code>-m, --main</code></td>
-        <td>
-            Path to the project of the application under test, relative to the test package
-            directory.
-        </td>
-        <td>
-            For example, if the application under test is in <code>source/HelloAndroid</code>, and
-            you want to create the test project in <code>source/HelloAndroidTest</code>, then the
-            value of <code>--main</code> should be <code>../HelloAndroid</code>.
-        <p>
-            To learn more about choosing the location of test projects, please read
-            <a href="{@docRoot}guide/topics/testing/testing_android.html#TestProjects">
-            Testing Fundamentals</a>.
-        </p>
-        </td>
-    </tr>
-    <tr>
-        <td><code>-n, --name</code></td>
-        <td>Name that you want to give the test project.</td>
-        <td>&nbsp;</td>
-    </tr>
-    <tr>
-        <td><code>-p, --path</code></td>
-        <td>Directory in which you want to create the new test project.</td>
-        <td>
-            The <code>android</code> tool creates the test project files and directory structure
-            in this directory. If the directory does not exist, <code>android</code> creates it.
-        </td>
-    </tr>
-</table>
-<p>
-    If the operation is successful, <code>android</code> lists to STDOUT the names of the files
-    and directories it has created.
-</p>
-<p>
-    This creates a new test project with the appropriate directories and build files. The directory
-    structure and build file contents are identical to those in a regular Android application
-    project. They are described in detail in the topic
-    <a href="{@docRoot}guide/developing/projects/index.html">Managing Projects</a>.
-</p>
-<p>
-    The operation also creates an <code>AndroidManifest.xml</code> file with instrumentation
-    information. When you run the test, Android uses this information to load the application you
-    are testing and control it with instrumentation.
-</p>
-<p>
-    For example, suppose you create the <a href="{@docRoot}resources/tutorials/hello-world.html">
-    Hello, World</a> tutorial application in the directory <code>~/source/HelloAndroid</code>.
-    In the tutorial, this application uses the package name <code>com.example.helloandroid</code>
-    and the activity name <code>HelloAndroid</code>. You can to create the test for this in
-    <code>~/source/HelloAndroidTest</code>. To do so, you enter:
-</p>
-<pre>
-$ cd ~/source
-$ android create test-project -m ../HelloAndroid -n HelloAndroidTest -p HelloAndroidTest
-</pre>
-<p>
-    This creates a directory called <code>~/src/HelloAndroidTest</code>. In the new directory you
-    see the file <code>AndroidManifest.xml</code>. This file contains the following
-    instrumentation-related elements and attributes:
-</p>
-<ul>
-    <li>
-        <code>&lt;application&gt;</code>: to contain the
-        <code>&lt;uses-library&gt;</code> element.
-    </li>
-    <li>
-        <code>&lt;uses-library android:name=&quot;android.test.runner&quot;</code>:
-        specifies this testing application uses the <code>android.test.runner</code> library.
-    </li>
-    <li>
-        <code>&lt;instrumentation&gt;</code>: contains attributes that control Android
-        instrumentation. The attributes are:
-        <ul>
-            <li>
-                <code>android:name=&quot;android.test.InstrumentationTestRunner&quot;</code>:
-                {@link android.test.InstrumentationTestRunner} runs test cases. It extends both
-                JUnit test case runner classes and Android instrumentation classes.
-            </li>
-            <li>
-                <code>android:targetPackage=&quot;com.example.helloandroid&quot;</code>: specifies
-                that the tests in HelloAndroidTest should be run against the application with the
-                <em>Android</em> package name <code>com.example.helloandroid</code>. This is the
-                package name of the <a
-                href="{@docRoot}resources/tutorials/hello-world.html">Hello, World</a>
-                tutorial application.
-            </li>
-            <li>
-                <code>android:label=&quot;Tests for .HelloAndroid&quot;</code>: specifies a
-                user-readable label for the instrumentation class. By default,
-                the <code>android</code> tool gives it the value &quot;Tests for &quot; plus
-                the name of the main Activity of the application under test.
-            </li>
-        </ul>
-    </li>
-</ul>
-<h3 id="UpdateTestProject">Updating a test project</h3>
-<p>
-    You use the <code>android</code> tool when you need to change the path to the
-    project of the application under test. If you are changing an existing test project created in
-    Eclipse with ADT so that you can also build and run it from the command line, you must use the
-    "create" operation. See the section <a href="#CreateTestProject">Creating a test project</a>.
-</p>
-<p class="note">
-    <strong>Note:</strong> If you change the Android package name of the application under test,
-    you must <em>manually</em> change the value of the <code>&lt;android:targetPackage&gt;</code>
-    attribute within the <code>AndroidManifest.xml</code> file of the test package.
-    Running <code>android update test-project</code> does not do this.
-</p>
-<p>
-  To update a test project with the <code>android</code> tool, enter:
-</p>
-<pre>android update test-project -m &lt;main_path&gt; -p &lt;test_path&gt;</pre>
-
-<table>
-    <tr>
-        <th>Flag</th>
-        <th>Value</th>
-        <th>Description</th>
-    </tr>
-    <tr>
-        <td><code>-m, --main</code></td>
-        <td>The path to the project of the application under test, relative to the test project</td>
-        <td>
-            For example, if the application under test is in <code>source/HelloAndroid</code>, and
-            the test project is in <code>source/HelloAndroidTest</code>, then the value for
-            <code>--main</code> is <code>../HelloAndroid</code>.
-        </td>
-    </tr>
-    <tr>
-        <td><code>-p, --path</code></td>
-        <td>The of the test project.</td>
-        <td>
-            For example, if the test project is in <code>source/HelloAndroidTest</code>, then the
-            value for <code>--path</code> is <code>HelloAndroidTest</code>.
-        </td>
-    </tr>
-</table>
-<p>
-    If the operation is successful, <code>android</code> lists to STDOUT the names of the files
-    and directories it has created.
-</p>
-<h2 id="CreateTestApp">Creating a Test Package</h2>
-<p>
-    Once you have created a test project, you populate it with a test package.
-    The application does not require an {@link android.app.Activity Activity},
-    although you can define one if you wish. Although your test package can
-    combine Activities, Android test class extensions, JUnit extensions, or
-    ordinary classes, you should extend one of the Android test classes or JUnit classes,
-    because these provide the best testing features.
-</p>
-<p>
-    If you run your tests with {@link android.test.InstrumentationTestRunner}
-    (or a related test runner), then it will run all the methods in each class. You can modify
-    this behavior by using the {@link junit.framework.TestSuite TestSuite} class.
-</p>
-
-<p>
-    To create a test package, start with one of Android's test classes in the Java package
-    {@link android.test android.test}. These extend the JUnit
-    {@link junit.framework.TestCase TestCase} class. With a few exceptions, the Android test
-    classes also provide instrumentation for testing.
-</p>
-<p>
-    For test classes that extend {@link junit.framework.TestCase TestCase}, you probably want to
-    override the <code>setUp()</code> and <code>tearDown()</code> methods:
-</p>
-<ul>
-    <li>
-        <code>setUp()</code>: This method is invoked before any of the test methods in the class.
-        Use it to set up the environment for the test. You can use <code>setUp()</code>
-        to instantiate a new <code>Intent</code> object with the action <code>ACTION_MAIN</code>.
-        You can then use this intent to start the Activity under test.
-        <p class="note">
-            <strong>Note:</strong> If you override this method, call
-            <code>super.setUp()</code> as the first statement in your code.
-        </p>
-    </li>
-    <li>
-        <code>tearDown()</code>: This method is invoked after all the test methods in the class. Use
-        it to do garbage collection and re-setting before moving on to the next set of tests.
-        <p class="note"><strong>Note:</strong> If you override this method, you must call
-        <code>super.tearDown()</code> as the <em>last</em> statement in your code.</p>
-    </li>
-</ul>
-<p>
-    Another useful convention is to add the method <code>testPreConditions()</code> to your test
-    class. Use this method to test that the application under test is initialized correctly. If this
-    test fails, you know that that the initial conditions were in error. When this happens, further
-    test results are suspect, regardless of whether or not the tests succeeded.
-</p>
-<p>
-    To learn more about creating test packages, see the topic <a
-    href="{@docRoot}guide/topics/testing/testing_android.html">Testing Fundamentals</a>,
-    which provides an overview of Android testing. If you prefer to follow a tutorial,
-    try the <a href="{@docRoot}resources/tutorials/testing/activity_test.html">Activity Testing</a>
-    tutorial, which leads you through the creation of tests for an actual Android application.
-</p>
-<h2 id="RunTestsCommand">Running Tests</h2>
-<p>
-    You run tests from the command line, either with Ant or with an
-    <a href="{@docRoot}guide/developing/tools/adb.html">
-    Android Debug Bridge (adb)</a> shell.
-</p>
-<h3 id="RunTestsAnt">Quick build and run with Ant</h3>
-<p>
-    You can use Ant to run all the tests in your test project, using the target
-    <code>run-tests</code>, which is created automatically when you create a test project with
-    the <code>android</code> tool.
-</p>
-<p>
-    This target re-builds your main project and test project if necessary, installs the test
-    application to the current AVD or device, and then runs all the test classes in the test
-    application. The results are directed to <code>STDOUT</code>.
-</p>
-<p>
-    You can update an existing test project to use this feature. To do this, use the
-    <code>android</code> tool with the <code>update test-project</code> option. This is described
-    in the section <a href="#UpdateTestProject">Updating a test project</a>.
-</p>
-<h3 id="RunTestsDevice">Running tests on a device or emulator</h3>
-<p>
-    When you run tests from the command line with
-    <a href="{@docRoot}guide/developing/tools/adb.html">
-    Android Debug Bridge (adb)</a>, you get more options for choosing the tests
-    to run than with any other method. You can select individual test methods, filter tests
-    according to their annotation, or specify testing options. Since the test run is controlled
-    entirely from a command line, you can customize your testing with shell scripts in various ways.
-</p>
-<p>
-    To run a test from the command line, you run <code>adb shell</code> to start a command-line
-    shell on your device or emulator, and then in the shell run the <code>am instrument</code>
-    command. You control <code>am</code> and your tests with command-line flags.
-</p>
-<p>
-    As a shortcut, you can start an <code>adb</code> shell, call <code>am instrument</code>, and
-    specify command-line flags all on one input line. The shell opens on the device or emulator,
-    runs your tests, produces output, and then returns to the command line on your computer.
-</p>
-<p>
-    To run a test with <code>am instrument</code>:
-</p>
-<ol>
-    <li>
-        If necessary, rebuild your main application and test package.
-    </li>
-    <li>
-        Install your test package and main application Android package files
-        (<code>.apk</code> files) to your current Android device or emulator</li>
-    <li>
-        At the command line, enter:
-<pre>
-$ adb shell am instrument -w &lt;test_package_name&gt;/&lt;runner_class&gt;
-</pre>
-        <p>
-            where <code>&lt;test_package_name&gt;</code> is the Android package name of your test
-            application, and <code>&lt;runner_class&gt;</code> is the name of the Android test
-            runner class you are using. The Android package name is the value of the
-            <code>package</code> attribute of the <code>manifest</code> element in the manifest file
-            (<code>AndroidManifest.xml</code>) of your test package. The Android test runner
-            class is usually {@link android.test.InstrumentationTestRunner}.
-        </p>
-        <p>
-            Your test results appear in <code>STDOUT</code>.
-        </p>
-    </li>
-</ol>
-<p>
-    This operation starts an <code>adb</code> shell, then runs <code>am instrument</code>
-    with the specified parameters. This particular form of the command will run all of the tests
-    in your test package. You can control this behavior with flags that you pass to
-    <code>am instrument</code>. These flags are described in the next section.
-</p>
-<h2 id="AMSyntax">Using the am instrument Command</h2>
-<p>
-    The general syntax of the <code>am instrument</code> command is:
-</p>
-<pre>
-    am instrument [flags] &lt;test_package&gt;/&lt;runner_class&gt;
-</pre>
-<p>
-    The main input parameters to <code>am instrument</code> are described in the following table:
-</p>
-<table>
-    <tr>
-        <th>
-            Parameter
-        </th>
-        <th>
-            Value
-        </th>
-        <th>
-            Description
-        </th>
-    </tr>
-    <tr>
-        <td>
-            <code>&lt;test_package&gt;</code>
-        </td>
-        <td>
-            The Android package name of the test package.
-        </td>
-        <td>
-            The value of the <code>package</code> attribute of the <code>manifest</code>
-            element in the test package's manifest file.
-        </td>
-    </tr>
-    <tr>
-        <td>
-            <code>&lt;runner_class&gt;</code>
-        </td>
-        <td>
-            The class name of the instrumented test runner you are using.
-        </td>
-        <td>
-            This is usually {@link android.test.InstrumentationTestRunner}.
-        </td>
-    </tr>
-</table>
-<p>
-    The flags for <code>am instrument</code> are described in the following table:
-</p>
-<table>
-    <tr>
-        <th>
-            Flag
-        </th>
-        <th>
-            Value
-        </th>
-        <th>
-            Description
-        </th>
-    </tr>
-    <tr>
-        <td>
-            <code>-w</code>
-        </td>
-        <td>
-            (none)
-        </td>
-        <td>
-            Forces <code>am instrument</code> to wait until the instrumentation terminates
-            before terminating itself. The net effect is to keep the shell open until the tests
-            have finished. This flag is not required, but if you do not use it, you will not
-            see the results of your tests.
-        </td>
-    </tr>
-    <tr>
-        <td>
-            <code>-r</code>
-        </td>
-        <td>
-            (none)
-        </td>
-        <td>
-            Outputs results in raw format. Use this flag when you want to collect
-            performance measurements, so that they are not formatted as test results. This flag is
-            designed for use with the flag <code>-e perf true</code> (documented in the section
-            <a href="#AMOptionsSyntax">Instrument options</a>).
-        </td>
-    </tr>
-    <tr>
-        <td>
-            <code>-e</code>
-        </td>
-        <td>
-             &lt;test_options&gt;
-        </td>
-        <td>
-            Provides testing options as key-value pairs. The
-            <code>am instrument</code> tool passes these to the specified instrumentation class
-            via its <code>onCreate()</code> method. You can specify multiple occurrences of
-            <code>-e &lt;test_options&gt;</code>. The keys and values are described in the
-            section <a href="#AMOptionsSyntax">am instrument options</a>.
-            <p>
-                The only instrumentation class that uses these key-value pairs is
-                {@link android.test.InstrumentationTestRunner} (or a subclass). Using them with
-                any other class has no effect.
-            </p>
-        </td>
-    </tr>
-</table>
-
-<h3 id="AMOptionsSyntax">am instrument options</h3>
-<p>
-    The <code>am instrument</code> tool passes testing options to
-    <code>InstrumentationTestRunner</code> or a subclass in the form of key-value pairs,
-    using the <code>-e</code> flag, with this syntax:
-</p>
-<pre>
-    -e &lt;key&gt; &lt;value&gt;
-</pre>
-<p>
-    Some keys accept multiple values. You specify multiple values in a comma-separated list.
-    For example, this invocation of <code>InstrumentationTestRunner</code> provides multiple
-    values for the <code>package</code> key:
-</p>
-<pre>
-$ adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \
-&gt; com.android.test/android.test.InstrumentationTestRunner
-</pre>
-<p>
-    The following table describes the key-value pairs and their result. Please review the
-    <strong>Usage Notes</strong> following the table.
-</p>
-<table>
-    <tr>
-        <th>Key</th>
-        <th>Value</th>
-        <th>Description</th>
-    </tr>
-    <tr>
-        <td>
-            <code>package</code>
-        </td>
-        <td>
-            &lt;Java_package_name&gt;
-        </td>
-        <td>
-            The fully-qualified <em>Java</em> package name for one of the packages in the test
-            application. Any test case class that uses this package name is executed. Notice that
-            this is not an <em>Android</em> package name; a test package has a single
-            Android package name but may have several Java packages within it.
-        </td>
-    </tr>
-    <tr>
-        <td rowspan="2"><code>class</code></td>
-        <td>&lt;class_name&gt;</td>
-        <td>
-            The fully-qualified Java class name for one of the test case classes. Only this test
-            case class is executed.
-        </td>
-    </tr>
-    <tr>
-        <td>&lt;class_name&gt;<strong>#</strong>method name</td>
-        <td>
-            A fully-qualified test case class name, and one of its methods. Only this method is
-            executed. Note the hash mark (#) between the class name and the method name.
-        </td>
-    </tr>
-    <tr>
-        <td><code>func</code></td>
-        <td><code>true</code></td>
-        <td>
-            Runs all test classes that extend {@link android.test.InstrumentationTestCase}.
-        </td>
-    </tr>
-    <tr>
-        <td><code>unit</code></td>
-        <td><code>true</code></td>
-        <td>
-            Runs all test classes that do <em>not</em> extend either
-            {@link android.test.InstrumentationTestCase} or
-            {@link android.test.PerformanceTestCase}.
-        </td>
-    </tr>
-    <tr>
-        <td><code>size</code></td>
-        <td>
-            [<code>small</code> | <code>medium</code> | <code>large</code>]
-        </td>
-        <td>
-            Runs a test method annotated by size. The  annotations are <code>@SmallTest</code>,
-            <code>@MediumTest</code>, and <code>@LargeTest</code>.
-        </td>
-    </tr>
-    <tr>
-        <td><code>perf</code></td>
-        <td><code>true</code></td>
-        <td>
-            Runs all test classes that implement {@link android.test.PerformanceTestCase}.
-            When you use this option, also specify the <code>-r</code> flag for
-            <code>am instrument</code>, so that the output is kept in raw format and not
-            re-formatted as test results.
-        </td>
-    </tr>
-    <tr>
-        <td><code>debug</code></td>
-        <td><code>true</code></td>
-        <td>
-            Runs tests in debug mode.
-        </td>
-    </tr>
-    <tr>
-        <td><code>log</code></td>
-        <td><code>true</code></td>
-        <td>
-            Loads and logs all specified tests, but does not run them. The test
-            information appears in <code>STDOUT</code>. Use this to verify combinations of other
-            filters and test specifications.
-        </td>
-    </tr>
-    <tr>
-        <td><code>emma</code></td>
-        <td><code>true</code></td>
-        <td>
-            Runs an EMMA code coverage analysis and writes the output to
-            <code>/data//coverage.ec</code> on the device. To override the file location, use the
-            <code>coverageFile</code> key that is described in the following entry.
-            <p class="note">
-                <strong>Note:</strong> This option requires an EMMA-instrumented build of the test
-                application, which you can generate with the <code>coverage</code> target.
-            </p>
-        </td>
-    </tr>
-    <tr>
-        <td><code>coverageFile</code></td>
-        <td><code>&lt;filename&gt;</code></td>
-        <td>
-            Overrides the default location of the EMMA coverage file on the device. Specify this
-            value as a path and filename in UNIX format. The default filename is described in the
-            entry for the <code>emma</code> key.
-        </td>
-    </tr>
-</table>
-<strong><code>-e</code> Flag Usage Notes</strong>
-<ul>
-    <li>
-        <code>am instrument</code> invokes
-        {@link android.test.InstrumentationTestRunner#onCreate(Bundle)}
-        with a {@link android.os.Bundle} containing the key-value pairs.
-    </li>
-    <li>
-        The <code>package</code> key takes precedence over the <code>class</code> key. If you
-        specifiy a package, and then separately specify a class within that package, Android
-        will run all the tests in the package and ignore the <code>class</code> key.
-    </li>
-    <li>
-        The <code>func</code> key and <code>unit</code> key are mutually exclusive.
-    </li>
-</ul>
-<h3 id="RunTestExamples">Usage examples</h3>
-<p>
-The following sections provide examples of using <code>am instrument</code> to run tests.
-They are based on the following structure:</p>
-<ul>
-    <li>
-        The test package has the Android package name <code>com.android.demo.app.tests</code>
-    </li>
-    <li>
-        There are three test classes:
-        <ul>
-            <li>
-                <code>UnitTests</code>, which contains the methods
-                <code>testPermissions</code> and <code>testSaveState</code>.
-            </li>
-            <li>
-                <code>FunctionTests</code>, which contains the methods
-                <code>testCamera</code>, <code>testXVGA</code>, and <code>testHardKeyboard</code>.
-            </li>
-            <li>
-                <code>IntegrationTests</code>,
-                which contains the method <code>testActivityProvider</code>.
-            </li>
-        </ul>
-    </li>
-    <li>
-        The test runner is {@link android.test.InstrumentationTestRunner}.
-    </li>
-</ul>
-<h4>Running the entire test package</h4>
-<p>
-    To run all of the test classes in the test package, enter:
-</p>
-<pre>
-$ adb shell am instrument -w com.android.demo.app.tests/android.test.InstrumentationTestRunner
-</pre>
-<h4>Running all tests in a test case class</h4>
-<p>
-    To run all of the tests in the class <code>UnitTests</code>, enter:
-</p>
-<pre>
-$ adb shell am instrument -w  \
-&gt; -e class com.android.demo.app.tests.UnitTests \
-&gt; com.android.demo.app.tests/android.test.InstrumentationTestRunner
-</pre>
-<p>
-  <code>am instrument</code> gets the value of the <code>-e</code> flag, detects the
-  <code>class</code> keyword, and runs all the methods in the <code>UnitTests</code> class.
-</p>
-<h4>Selecting a subset of tests</h4>
-<p>
-    To run all of the tests in <code>UnitTests</code>, and the <code>testCamera</code> method in
-    <code>FunctionTests</code>, enter:
-</p>
-<pre>
-$ adb shell am instrument -w \
-&gt; -e class com.android.demo.app.tests.UnitTests,com.android.demo.app.tests.FunctionTests#testCamera \
-&gt; com.android.demo.app.tests/android.test.InstrumentationTestRunner
-</pre>
-<p>
-    You can find more examples of the command in the documentation for
-    {@link android.test.InstrumentationTestRunner}.
-</p>
diff --git a/docs/html/guide/developing/tools/MonkeyDevice.jd b/docs/html/guide/developing/tools/MonkeyDevice.jd
deleted file mode 100644
index abcf8fd..0000000
--- a/docs/html/guide/developing/tools/MonkeyDevice.jd
+++ /dev/null
@@ -1,1355 +0,0 @@
-page.title=MonkeyDevice
-parent.title=monkeyrunner
-parent.link=index.html
-@jd:body
-<style>
-    h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>
-    A monkeyrunner class that represents a device or emulator accessible by the workstation running
-<code><a href="{@docRoot}guide/developing/tools/monkeyrunner_concepts.html">monkeyrunner</a></code>.
-</p>
-<p>
-    This class is used to control an Android device or emulator. The methods send UI events,
-    retrieve information, install and remove applications, and run applications.
-</p>
-<p>
-    You normally do not have to create an instance of <code>MonkeyDevice</code>. Instead, you
-    use
-<code><a href="{@docRoot}guide/developing/tools/MonkeyRunner.html#waitForConnection">
-MonkeyRunner.waitForConnection()</a></code> to create a new object from a connection to a device or
-emulator. For example, instead of
-using:</p>
-<pre>
-newdevice = MonkeyDevice()
-</pre>
-<p>
-    you would use:
-</p>
-<pre>
-newdevice = MonkeyRunner.waitForConnection()
-</pre>
-<h2>Summary</h2>
-    <table id="constants" class="jd-sumtable" style="background-color: white;">
-       <tr>
-            <th colspan="12" style="background-color: #E2E2E2">Constants</th>
-       </tr>
-        <tr class="api" style="background-color: white;">
-            <td class="jd-typecol"><em>string</em></td>
-            <td class="jd-linkcol"><a href="#ACTION_DOWN">DOWN</a></td>
-            <td class="jd-descrcol" width="100%">
-                Use this with the <code>type</code> argument of
-                <code><a href="#press">press()</a></code> or <code><a href="#touch">touch()</a>
-                </code>
-                to send a DOWN event.
-            </td>
-        </tr>
-        <tr class="api" style="background-color: white;">
-            <td class="jd-typecol"><em>string</em></td>
-            <td class="jd-linkcol"><a href="#ACTION_UP">UP</a></td>
-            <td class="jd-descrcol" width="100%">
-                Use this with the <code>type</code> argument of
-                <code><a href="#press">press()</a></code> or <code><a href="#touch">touch()</a>
-                </code>
-                to send an UP event.
-            </td>
-        </tr>
-        <tr class="api" style="background-color: white;">
-            <td class="jd-typecol"><em>string</em></td>
-            <td class="jd-linkcol"><a href="#ACTION_DOWN_AND_UP">DOWN_AND_UP</a></td>
-            <td class="jd-descrcol" width="100%">
-                Use this with the <code>type</code> argument of
-                <code><a href="#press">press()</a></code> or <code><a href="#touch">touch()</a>
-                </code>
-                to send a DOWN event immediately followed by an UP event.
-            </td>
-        </tr>
-    </table>
-<table id="pubmethods" class="jd-sumtable">
-    <tr>
-        <th colspan="12" style="background-color: #E2E2E2">Methods</th>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#broadcastIntent">broadcastIntent</a>
-                </span>
-                (<em>string</em> uri,
-                <em>string</em> action,
-                <em>string</em> data,
-                <em>string</em> mimetype,
-                <em>iterable</em> categories
-                <em>dictionary</em> extras,
-                <em>component</em> component,
-                <em>iterable</em> flags)
-            </nobr>
-            <div class="jd-descrdiv">
-                Broadcasts an Intent to this device, as if the Intent were coming from an
-                application.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#drag">drag</a>
-                </span>
-                (<em>tuple</em> start,
-                <em>tuple</em> end,
-                <em>float</em> duration,
-                <em>integer</em> steps)
-            </nobr>
-            <div class="jd-descrdiv">
-                Simulates a drag gesture (touch, hold, and move) on this device's screen.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>object</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#getProperty">getProperty</a>
-                </span>
-                (<em>string</em> key)
-            </nobr>
-            <div class="jd-descrdiv">
-                Given the name of a system environment variable, returns its value for this device.
-                The available variable names are listed in the <a href="#getProperty">
-                detailed description</a> of this method.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>object</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#getSystemProperty">getSystemProperty</a>
-                </span>
-                (<em>string</em> key)
-            </nobr>
-            <div class="jd-descrdiv">
-.               The API equivalent of <code>adb shell getprop &lt;key&gt;. This is provided for use
-                by platform developers.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#installPackage">installPackage</a>
-                </span>
-                (<em>string</em> path)
-            </nobr>
-            <div class="jd-descrdiv">
-                Installs the Android application or test package contained in packageFile onto this
-                device. If the application or test package is already installed, it is replaced.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>dictionary</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#instrument">instrument</a>
-                </span>
-                (<em>string</em> className,
-                <em>dictionary</em> args)
-            </nobr>
-            <div class="jd-descrdiv">
-                Runs the specified component under Android instrumentation, and returns the results
-                in a dictionary whose exact format is dictated by the component being run. The
-                component must already be present on this device.
-            </div>
-        </td>
-    </tr>
-    <tr class="api">
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#press">press</a>
-                </span>
-                (<em>string</em> name,
-                <em>dictionary</em> type)
-            </nobr>
-            <div class="jd-descrdiv">
-                Sends the key event specified by type to the key specified by
-                keycode.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#reboot">reboot</a>
-                </span>
-                (<em>string</em> into)
-            </nobr>
-            <div class="jd-descrdiv">
-                Reboots this device into the bootloader specified by bootloadType.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#removePackage">removePackage</a>
-                </span>
-                (<em>string</em> package)
-            </nobr>
-            <div class="jd-descrdiv">
-                Deletes the specified package from this device, including its data and cache.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>object</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#shell">shell</a>
-                </span>
-                (<em>string</em> cmd)
-            </nobr>
-            <div class="jd-descrdiv">
-                Executes an <code>adb</code> shell command and returns the result, if any.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#startActivity">startActivity</a>
-                </span>
-                (<em>string</em> uri,
-                <em>string</em> action,
-                <em>string</em> data,
-                <em>string</em> mimetype,
-                <em>iterable</em> categories
-                <em>dictionary</em> extras,
-                <em>component</em> component,
-                <em>flags</em>)
-            </nobr>
-            <div class="jd-descrdiv">
-                Starts an Activity on this device by sending an Intent constructed from the
-                supplied arguments.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <code>
-                <a href="{@docRoot}guide/developing/tools/MonkeyImage.html">
-                        MonkeyImage
-                    </a>
-                </code>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#takeSnapshot">takeSnapshot</a>()
-                </span>
-            </nobr>
-            <div class="jd-descrdiv">
-                Captures the entire screen buffer of this device, yielding a
-                <code>
-                <a href="{@docRoot}guide/developing/tools/MonkeyImage.html">
-                        MonkeyImage
-                </a>
-                </code> object containing a screen capture of the current display.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#touch">touch</a>
-                </span>
-               (<em>integer</em> x,
-                 <em>integer</em> y,
-                 <em>integer</em> type)
-            </nobr>
-            <div class="jd-descrdiv">
-                Sends a touch event specified by type to the screen location specified
-                by x and y.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#touch">type</a>
-                </span>
-                   (<em>string</em> message)
-            </nobr>
-            <div class="jd-descrdiv">
-                Sends the characters contained in message to this device, as if they
-                had been typed on the device's keyboard. This is equivalent to calling
-                <code><a href="#press">press()</a></code> for each keycode in <code>message</code>
-                using the key event type <code><a href="#ACTION_DOWN_AND_UP"></a>DOWN_AND_UP</code>.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#touch">wake</a>
-                </span>
-                   ()
-            </nobr>
-            <div class="jd-descrdiv">
-                Wakes the screen of this device.
-            </div>
-        </td>
-    </tr>
-</table>
-<!-- ========= ENUM CONSTANTS DETAIL ======== -->
-<h2>Constants</h2>
-<A NAME="ACTION_DOWN"></a>
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-        <span class="normal">
-            <em>string</em>
-        </span>
-            DOWN
-    </h4>
-    <div class="jd-details-descr">
-        <div class="jd-tagdata jd-tagdescr">
-            <p>
-                <code><a href="#press">press()</a></code> or
-                <code><a href="#press">touch()</a></code> value.
-                Specifies that a DOWN event type should be sent to the device, corresponding to
-                pressing down on a key or touching the screen.
-            </p>
-        </div>
-    </div>
-</div>
-<A NAME="ACTION_UP"></A>
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-        <span class="normal">
-            <em>string</em>
-        </span>
-            UP
-    </h4>
-    <div class="jd-details-descr">
-        <div class="jd-tagdata jd-tagdescr">
-            <p>
-                <code><a href="#press">press()</a></code> or
-                <code><a href="#press">touch()</a></code> value.
-                Specifies that an UP event type should be sent to the device, corresponding to
-                releasing a key or lifting up from the screen.
-            </p>
-        </div>
-    </div>
-</div>
-<A NAME="ACTION_DOWN_AND_UP"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-        <span class="normal">
-            <em>string</em>
-        </span>
-            DOWN_AND_UP
-    </h4>
-    <div class="jd-details-descr">
-        <div class="jd-tagdata jd-tagdescr">
-            <p>
-                <code><a href="#press">press()</a></code>,
-                <code><a href="#press">touch()</a></code> or
-                <code><a href="#type">type()</a></code> value.
-                Specifies that a DOWN event type followed by an UP event type should be sent to the
-                device, corresponding to typing a key or clicking the screen.
-            </p>
-        </div>
-    </div>
-</div>
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methods -->
-<h2>Public Methods</h2>
-<A NAME="broadcastIntent"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">broadcastIntent</span>
-      <span class="normal">
-      (
-            <em>string</em> uri,
-            <em>string</em> action,
-            <em>string</em> data,
-            <em>string</em> mimetype,
-            <em>iterable</em> categories
-            <em>dictionary</em> extras,
-            <em>component</em> component,
-            <em>iterable</em> flags)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Broadcasts an Intent to this device, as if the Intent were coming from an
-            application. See {@link android.content.Intent Intent} for more information about the
-            arguments.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>uri</th>
-            <td>
-                The URI for the Intent.
-                (see {@link android.content.Intent#setData(android.net.Uri) Intent.setData()}).
-            </td>
-        </tr>
-        <tr>
-            <th>action</th>
-            <td>
-                The action for this Intent
-                (see {@link android.content.Intent#setAction(java.lang.String) Intent.setAction()}).
-            </td>
-        </tr>
-        <tr>
-            <th>data</th>
-            <td>
-                The data URI for this Intent
-                (see {@link android.content.Intent#setData(android.net.Uri) Intent.setData()}).
-            </td>
-        </tr>
-        <tr>
-            <th>mimetype</th>
-            <td>
-                The MIME type for the Intent
-                (see {@link android.content.Intent#setType(java.lang.String) Intent.setType()}).
-            </td>
-        </tr>
-        <tr>
-            <th>categories</th>
-            <td>
-                An iterable data structure containing strings that define categories for this
-                Intent
-                (see
-                {@link android.content.Intent#addCategory(java.lang.String) Intent.addCategory()}).
-            </td>
-        </tr>
-        <tr>
-            <th>extras</th>
-            <td>
-                A dictionary of extra data for this Intent
-                (see {@link android.content.Intent#putExtra(java.lang.String,java.lang.String)
-                Intent.putExtra()}
-                for an example).
-                <p>
-                    The key for each dictionary item should be a <em>string</em>. The item's value
-                    can be any simple or structured data type.
-                </p>
-            </td>
-        </tr>
-        <tr>
-            <th>component</th>
-            <td>
-                The component for this Intent (see {@link android.content.ComponentName}).
-                Using this argument will direct the Intent to a specific class within a specific
-                Android package.
-            </td>
-        </tr>
-        <tr>
-            <th>flags</th>
-            <td>
-                An iterable data structure containing flags that control how the Intent is handled
-                (see {@link android.content.Intent#setFlags(int) Intent.setFlags()}).
-            </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="drag"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">drag</span>
-      <span class="normal">
-      (
-            <em>tuple</em> start,
-            <em>tuple</em> end,
-            <em>float</em> duration,
-            <em>integer</em> steps)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Simulates a drag gesture (touch, hold, and move) on this device's screen.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>start</th>
-          <td>
-            The starting point of the drag gesture, in the form of a <em>tuple</em>
-            (x,y) where x and y are <em>integers</em>.
-          </td>
-        </tr>
-        <tr>
-          <th>end</th>
-          <td>
-            The end point of the drag gesture, in the form of a <em>tuple</em> (x,y)
-            where x and y are <em>integers</em>.
-          </td>
-        </tr>
-        <tr>
-            <th>duration</th>
-            <td>The duration of the drag gesture in seconds. The default is 1.0 seconds.</td>
-        </tr>
-        <tr>
-            <th>steps</th>
-            <td>The number of steps to take when interpolating points. The default is 10.</td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="getProperty"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>object</em>
-      </span>
-      <span class="sympad">getProperty</span>
-      <span class="normal">
-        (<em>string</em> key)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Given the name of a system environment variable, returns its value for this device.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>key</th>
-          <td>
-            The name of the system environment variable. The available variable names are listed in
-            <a href="#table1">Table 1. Property variable names</a> at the end of this topic.
-          </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            The value of the variable. The data format varies according to the variable requested.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="getSystemProperty"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>object</em>
-      </span>
-      <span class="sympad">getSystemProperty</span>
-      <span class="normal">
-      (<em>string</em> key)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Synonym for <code><a href="#getProperty">getProperty()</a></code>.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>key</th>
-          <td>
-            The name of the system environment variable. The available variable names are listed in
-            <a href="#table1">Table 1. Property Variable Names</a>.
-          </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            The value of the variable. The data format varies according to the variable requested.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="installPackage"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">installPackage</span>
-      <span class="normal">
-      (<em>string</em> path)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Installs the Android application or test package contained in packageFile
-            onto this device. If the application or test package is already installed, it is
-            replaced.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>path</th>
-          <td>
-            The fully-qualified path and filename of the <code>.apk</code> file to install.
-          </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="instrument"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>dictionary</em>
-      </span>
-      <span class="sympad">instrument</span>
-      <span class="normal">
-      (
-            <em>string</em> className,
-            <em>dictionary</em> args)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Runs the specified component with Android instrumentation, and returns the results
-            in a dictionary whose exact format is dictated by the component being run. The
-            component must already be present on this device.
-        </p>
-        <p>
-            Use this method to start a test case that uses one of Android's test case classes.
-            See <a href="{@docRoot}guide/topics/testing/testing_android.html">Testing
-            Fundamentals</a> to learn more about unit testing with the Android testing
-            framework.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>className</th>
-          <td>
-            The name of an Android component that is already installed on this device, in the
-            standard form packagename/classname, where packagename is the
-            Android package name of a <code>.apk</code> file on this device, and
-            classname is the class name of an Android component (Activity,
-            ContentProvider, Service, or BroadcastReceiver) in that file. Both
-            packagename and classname must be fully qualified. See
-            {@link android.content.ComponentName} for more details.
-          </td>
-        </tr>
-        <tr>
-          <th>args</th>
-          <td>
-            A dictionary containing flags and their values. These are passed to the component as it
-            is started. If the flag does not take a value, set its dictionary value to an empty
-            string.
-          </td>
-        </tr>
-      </table>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-        <ul class="nolist">
-            <li>
-                <p>
-                    A dictionary containing the component's output. The contents of the dictionary
-                    are defined by the component itself.
-                </p>
-                <p>
-                    If you use {@link android.test.InstrumentationTestRunner} as the class name in
-                    the componentName argument, then the result dictionary contains
-                    the single key "stream". The value of "stream" is a <em>string</em> containing
-                    the test output, as if <code>InstrumentationTestRunner</code> was run from the
-                    command line. The format of this output is described in
-                    <a href="{@docRoot}guide/developing/testing/testing_otheride.html">
-                    Testing in Other IDEs</a>.
-                </p>
-            </li>
-        </ul>
-    </div>
-    </div>
-  </div>
-</div>
-<A NAME="press"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">press</span>
-      <span class="normal">
-      (<em>string</em> name,
-      <em>integer</em> type)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Sends the key event specified by <code>type</code> to the key specified by
-            <code>keycode</code>.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>name</th>
-          <td>
-            The name of the keycode to send. See {@link android.view.KeyEvent} for a list of
-            keycode names. Use the keycode name, not its integer value.
-          </td>
-        </tr>
-        <tr>
-          <th>type</th>
-          <td>
-            The type of key event to send. The allowed values are <code><a href="#ACTION_DOWN">
-            DOWN</a></code>, <code><a href="#ACTION_UP">UP</a></code>, and
-            <code><a href="#ACTION_DOWN_AND_UP">DOWN_AND_UP</a></code>.
-          </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="reboot"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">reboot</span>
-      <span class="normal">
-      (<em>string</em> bootloadType)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-                Reboots this device into the bootloader specified by <code>bootloadType</code>.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>into</th>
-          <td>
-            The type of bootloader to reboot into. The allowed values are
-            "bootloader", "recovery", or "None".
-          </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="removePackage"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">removePackage</span>
-      <span class="normal">
-      (<em>string</em> package)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Deletes the specified package from this device, including its data and cache.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>package</th>
-          <td>
-            The Android package name of an <code>.apk</code> file on this device.
-          </td>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="shell"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>object</em>
-      </span>
-      <span class="sympad">shell</span>
-      <span class="normal">
-      (<em>string</em> cmd)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Executes an <code>adb</code> shell command and returns the result, if any.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>cmd</th>
-          <td>
-            The command to execute in the <code>adb</code> shell. The form of these commands is
-            described in the topic <a href="{@docRoot}guide/developing/tools/adb.html">Android
-            Debug Bridge</a>.
-          </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            The results of the command, if any. The format of the results is determined by the
-            command.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="startActivity"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">startActivity</span>
-      <span class="normal">
-      (
-            <em>string</em> uri,
-            <em>string</em> action,
-            <em>string</em> data,
-            <em>string</em> mimetype,
-            <em>iterable</em> categories
-            <em>dictionary</em> extras,
-            <em>component</em> component,
-            <em>iterable</em> flags)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-           Starts an Activity on this device by sending an Intent constructed from the
-           supplied arguments.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>uri</th>
-          <td>
-            The URI for the Intent.
-            (see {@link android.content.Intent#setData(android.net.Uri) Intent.setData()}).
-          </td>
-        </tr>
-        <tr>
-            <th>action</th>
-            <td>
-                The action for the Intent
-                (see {@link android.content.Intent#setAction(java.lang.String) Intent.setAction()}).
-            </td>
-        </tr>
-        <tr>
-            <th>data</th>
-            <td>
-                The data URI for the Intent
-                (see {@link android.content.Intent#setData(android.net.Uri) Intent.setData()}).
-            </td>
-        </tr>
-        <tr>
-            <th>mimetype</th>
-            <td>
-                The MIME type for the Intent
-                (see {@link android.content.Intent#setType(java.lang.String) Intent.setType()}).
-            </td>
-        </tr>
-        <tr>
-            <th>categories</th>
-            <td>
-                An iterable data structure containing strings that define categories for the
-                Intent
-                (see
-                {@link android.content.Intent#addCategory(java.lang.String) Intent.addCategory()}).
-            </td>
-        </tr>
-        <tr>
-            <th>extras</th>
-            <td>
-                A dictionary of extra data for the Intent
-                (see
-                {@link android.content.Intent#putExtra(java.lang.String,java.lang.String)
-                Intent.putExtra()}
-                for an example).
-                <p>
-                    The key for each dictionary item should be a <em>string</em>. The item's value
-                    can be any simple or structured data type.
-                </p>
-            </td>
-        </tr>
-        <tr>
-            <th>component</th>
-            <td>
-                The component for the Intent
-                (see {@link android.content.ComponentName}). Using this argument will direct the
-                Intent to a specific class within a specific Android package.
-            </td>
-        </tr>
-        <tr>
-            <th>flags</th>
-            <td>
-                An iterable data structure containing flags that control how the Intent is handled
-                (see {@link android.content.Intent#setFlags(int) Intent.setFlags()}).
-            </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="takeSnapshot"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <code>
-            <a href="{@docRoot}guide/developing/tools/MonkeyImage.html">
-                MonkeyImage
-            </a>
-        </code>
-      </span>
-      <span class="sympad">takeSnapshot</span>
-      <span class="normal">
-      ()
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Captures the entire screen buffer of this device, yielding a
-            screen capture of the current display.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            A <a href="{@docRoot}guide/developing/tools/MonkeyImage.html">
-            MonkeyImage</a> object containing the image of the current display.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="touch"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">touch</span>
-      <span class="normal">
-      (
-            <em>integer</em> x,
-            <em>integer</em> y,
-            <em>string</em> type)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Sends a touch event specified by type to the screen location specified
-            by x and y.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>x</th>
-          <td>
-            The horizontal position of the touch in actual device pixels, starting from the left of
-            the screen in its current orientation.
-          </td>
-        </tr>
-        <tr>
-          <th>y</th>
-          <td>
-            The vertical position of the touch in actual device pixels, starting from the top of
-            the screen in its current orientation.
-          </td>
-        </tr>
-        <tr>
-            <th>type</th>
-            <td>
-                The type of key event to send. The allowed values are <code><a href="#ACTION_DOWN">
-                DOWN</a></code>, <code><a href="#ACTION_UP">UP</a></code>, and
-                <code><a href="#ACTION_DOWN_AND_UP">DOWN_AND_UP</a></code>.
-            </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="type"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">type</span>
-      <span class="normal">
-      (<em>string</em> message)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Sends the characters contained in message to this device, as if they
-            had been typed on the device's keyboard. This is equivalent to calling
-            <code><a href="#press">press()</a></code> for each keycode in <code>message</code>
-            using the key event type <code><a href="#ACTION_DOWN_AND_UP">DOWN_AND_UP</a></code>.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>message</th>
-          <td>
-              A string containing the characters to send.
-          </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="wake"></A>
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">wake</span>
-      <span class="normal">
-      ()
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Wakes the screen of this device.
-        </p>
-    </div>
-  </div>
-</div>
-<hr></hr>
-<h2>Appendix</h2>
-    <p class="table-caption" id="table1">
-        <strong>Table 1.</strong>Property variable names used with
-        <span class="sympad"><a href="#getProperty">getProperty()</a></span> and
-        <span class="sympad"><a href="#getSystemProperty">getSystemProperty()</a></span>.
-    </p>
-    <table>
-        <tr>
-            <th>
-                Property Group
-            </th>
-            <th>
-                Property
-            </th>
-            <th>
-                Description
-            </th>
-            <th>
-                Notes
-            </th>
-        </tr>
-        <tr>
-            <td rowspan="17"><code>build</code></td>
-            <td><code>board</code></td>
-            <td>Code name for the device's system board</td>
-            <td rowspan="17">
-                See {@link android.os.Build}
-            </td>
-        </tr>
-        <tr>
-            <td><code>brand</code></td>
-            <td>The carrier or provider for which the OS is customized.</td>
-        </tr>
-            <tr>
-            <td><code>device</code></td>
-            <td>The device design name.</td>
-        </tr>
-            <tr>
-            <td><code>fingerprint</code></td>
-            <td>A unique identifier for the currently-running build.</td>
-        </tr>
-            <tr>
-            <td><code>host</code></td>
-            <td></td>
-        </tr>
-            <tr>
-            <td><code>ID</code></td>
-            <td>A changelist number or label.</td>
-        </tr>
-            <tr>
-            <td><code>model</code></td>
-            <td>The end-user-visible name for the device.</td>
-        </tr>
-            <tr>
-            <td><code>product</code></td>
-            <td>The overall product name.</td>
-        </tr>
-            <tr>
-            <td><code>tags</code></td>
-            <td>Comma-separated tags that describe the build, such as "unsigned" and "debug".</td>
-        </tr>
-            <tr>
-            <td><code>type</code></td>
-            <td>The build type, such as "user" or "eng".</td>
-        </tr>
-        <tr>
-            <td><code>user</code></td>
-            <td></td>
-        </tr>
-        <tr>
-            <td><code>CPU_ABI</code></td>
-            <td>
-                The name of the native code instruction set, in the form CPU type plus
-                ABI convention.
-            </td>
-        </tr>
-        <tr>
-            <td><code>manufacturer</code></td>
-            <td>The product/hardware manufacturer.</td>
-        </tr>
-        <tr>
-            <td><code>version.incremental</code></td>
-            <td>
-                The internal code used by the source control system to represent this version
-                of the software.
-            </td>
-        </tr>
-        <tr>
-            <td><code>version.release</code></td>
-            <td>The user-visible name of this version of the software.</td>
-        </tr>
-        <tr>
-            <td><code>version.sdk</code></td>
-            <td>The user-visible SDK version associated with this version of the OS.</td>
-        </tr>
-        <tr>
-            <td><code>version.codename</code></td>
-            <td>
-                The current development codename, or "REL" if this version of the software has been
-                released.
-            </td>
-        </tr>
-        <tr>
-            <td rowspan="3"><code>display</code></td>
-            <td><code>width</code></td>
-            <td>The device's display width in pixels.</td>
-            <td rowspan="3">
-                See
-                {@link android.util.DisplayMetrics} for details.
-            </td>
-        </tr>
-        <tr>
-            <td><code>height</code></td>
-            <td>The device's display height in pixels.</td>
-        </tr>
-        <tr>
-            <td><code>density</code></td>
-            <td>
-                The logical density of the display. This is a factor that scales
-                DIP (Density-Independent Pixel) units to the device's resolution. DIP is adjusted so
-                that 1 DIP is equivalent to one pixel on a 160 pixel-per-inch display. For example,
-                on a 160-dpi screen, density = 1.0, while on a 120-dpi screen, density = .75.
-                <p>
-                    The value does not exactly follow the real screen size, but is adjusted to
-                    conform to large changes in the display DPI. See
-                    {@link android.util.DisplayMetrics#density} for more details.
-                </p>
-            </td>
-        </tr>
-        <tr>
-            <td rowspan="6"><code>am.current</code></td>
-            <td><code>package</code></td>
-            <td>The Android package name of the currently running package.</td>
-            <td rowspan="6">
-                The <code>am.current</code> keys return information about the currently-running
-                Activity.
-            </td>
-        </tr>
-        <tr>
-            <td><code>action</code></td>
-            <td>
-                The current activity's action. This has the same format as the <code>name</code>
-                attribute of the <code>action</code> element in a package manifest.
-            </td>
-        </tr>
-        <tr>
-            <td><code>comp.class</code></td>
-            <td>
-                The class name of the component that started the current Activity. See
-                <code><a href="#comppackage">comp.package</a></code> for more details.</td>
-        </tr>
-        <tr>
-            <td><a name="comppackage"><code>comp.package</code></a></td>
-            <td>
-                The package name of the component that started the current Activity. A component
-                is specified by a package name and the name of class that the package contains.
-            </td>
-        </tr>
-        <tr>
-            <td><code>data</code></td>
-            <td>The data (if any) contained in the Intent that started the current Activity.</td>
-        </tr>
-        <tr>
-            <td><code>categories</code></td>
-            <td>The categories specified by the Intent that started the current Activity.</td>
-        </tr>
-        <tr>
-            <td rowspan="3"><code>clock</code></td>
-            <td><code>realtime</code></td>
-            <td>
-                The number of milliseconds since the device rebooted, including deep-sleep
-                time.
-            </td>
-            <td rowspan="3">
-                See {@link android.os.SystemClock} for more information.
-            </td>
-        </tr>
-        <tr>
-            <td><code>uptime</code></td>
-            <td>
-                The number of milliseconds since the device rebooted, <em>not</em> including
-                deep-sleep time
-            </td>
-        </tr>
-        <tr>
-            <td><code>millis</code></td>
-            <td>current time since the UNIX epoch, in milliseconds.</td>
-        </tr>
-    </table>
diff --git a/docs/html/guide/developing/tools/MonkeyImage.jd b/docs/html/guide/developing/tools/MonkeyImage.jd
deleted file mode 100644
index 2efc373..0000000
--- a/docs/html/guide/developing/tools/MonkeyImage.jd
+++ /dev/null
@@ -1,437 +0,0 @@
-page.title=MonkeyImage
-parent.title=monkeyrunner
-parent.link=index.html
-@jd:body
-<style>
-    h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-
-<p>
-    A monkeyrunner class to hold an image of the device or emulator's screen. The image is
-    copied from the screen buffer during a screenshot. This object's methods allow you to
-    convert the image into various storage formats, write the image to a file, copy parts of
-    the image, and compare this object to other <code>MonkeyImage</code> objects.
-</p>
-<p>
-    You do not need to create new instances of <code>MonkeyImage</code>. Instead, use
-<code><a href="{@docRoot}guide/developing/tools/MonkeyDevice.html#takeSnapshot">
-MonkeyDevice.takeSnapshot()</a></code> to create a new instance from a screenshot. For example, use:
-</p>
-<pre>
-newimage = MonkeyDevice.takeSnapshot()
-</pre>
-<h2>Summary</h2>
-<table id="pubmethods" class="jd-sumtable">
-    <tr>
-        <th colspan="12" style="background-color: #E2E2E2">Methods</th>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>string</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#convertToBytes">convertToBytes</a>
-                </span>
-                (<em>string</em> format)
-            </nobr>
-            <div class="jd-descrdiv">
-                Converts the current image to a particular format and returns it as a
-                <em>string</em> that you can then access as an <em>iterable</em> of binary bytes.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>tuple</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#getRawPixel">getRawPixel</a>
-                </span>
-                (<em>integer</em> x,
-                <em>integer</em> y)
-            </nobr>
-            <div class="jd-descrdiv">
-                Returns the single pixel at the image location (x,y), as an
-                a <em>tuple</em> of <em>integer</em>, in the form (a,r,g,b).
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>integer</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#getRawPixelInt">getRawPixelInt</a>
-                </span>
-                (<em>integer</em> x,
-                 <em>integer</em> y)
-            </nobr>
-            <div class="jd-descrdiv">
-                Returns the single pixel at the image location (x,y), as
-                a 32-bit <em>integer</em>.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <code>
-                    <a href="{@docRoot}guide/developing/tools/MonkeyImage.html">MonkeyImage</a>
-                </code>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#getSubImage">getSubImage</a>
-                </span>
-                (<em>tuple</em> rect)
-            </nobr>
-            <div class="jd-descrdiv">
-                Creates a new <code>MonkeyImage</code> object from a rectangular selection of the
-                current image.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>boolean</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#sameAs">sameAs</a>
-                </span>
-         (<code><a href="{@docRoot}guide/developing/tools/MonkeyImage.html">MonkeyImage</a></code>
-            other,
-            <em>float</em> percent)
-            </nobr>
-            <div class="jd-descrdiv">
-                Compares this <code>MonkeyImage</code> object to another and returns the result of
-                the comparison. The <code>percent</code> argument specifies the percentage
-                difference that is allowed for the two images to be "equal".
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>void</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#writeToFile">writeToFile</a>
-                </span>
-                (<em>string</em> path,
-                <em>string</em> format)
-            </nobr>
-            <div class="jd-descrdiv">
-                Writes the current image to the file specified by <code>filename</code>, in the
-                format specified by <code>format</code>.
-            </div>
-        </td>
-    </tr>
-</table>
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methods -->
-<h2>Public Methods</h2>
-<A NAME="convertToBytes"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>string</em>
-      </span>
-      <span class="sympad">convertToBytes</span>
-      <span class="normal">
-      (
-            <em>string</em> format)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Converts the current image to a particular format and returns it as a <em>string</em>
-            that you can then access as an <em>iterable</em> of binary bytes.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>format</th>
-            <td>
-                The desired output format. All of the common raster output formats are supported.
-                The default value is "png" (Portable Network Graphics).
-            </td>
-        </tr>
-        </table>
-    </div>
-</div>
-</div>
-<A NAME="getRawPixel"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>tuple</em>
-      </span>
-      <span class="sympad">getRawPixel</span>
-      <span class="normal">
-        (<em>integer</em> x,
-         <em>integer</em> y)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Returns the single pixel at the image location (x,y), as an
-            a <em>tuple</em> of <em>integer</em>, in the form (a,r,g,b).
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>x</th>
-          <td>
-            The horizontal position of the pixel, starting with 0 at the left of the screen in the
-            orientation it had when the screenshot was taken.
-          </td>
-        </tr>
-        <tr>
-          <th>y</th>
-          <td>
-            The vertical position of the pixel, starting with 0 at the top of the screen in the
-            orientation it had when the screenshot was taken.
-          </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            A tuple of integers representing the pixel, in the form (a,r,g,b) where
-            a is the alpha channel value, and r, g, and b are the red, green, and blue values,
-            respectively.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="getRawPixelInt"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>tuple</em>
-      </span>
-      <span class="sympad">getRawPixelInt</span>
-      <span class="normal">
-        (<em>integer</em> x,
-         <em>integer</em> y)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Returns the single pixel at the image location (x,y), as an
-            an <em>integer</em>. Use this method to economize on memory.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>x</th>
-          <td>
-            The horizontal position of the pixel, starting with 0 at the left of the screen in the
-            orientation it had when the screenshot was taken.
-          </td>
-        </tr>
-        <tr>
-          <th>y</th>
-          <td>
-            The vertical position of the pixel, starting with 0 at the top of the screen in the
-            orientation it had when the screenshot was taken.
-          </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            The a,r,g, and b values of the pixel as 8-bit values combined into a 32-bit
-            integer, with a as the leftmost 8 bits, r the next rightmost, and so forth.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="getSubImage"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-          <code>
-              <a href="{@docRoot}guide/developing/tools/MonkeyImage.html">MonkeyImage</a>
-          </code>
-      </span>
-      <span class="sympad">getSubImage</span>
-      <span class="normal">
-        (<em>tuple</em> rect)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-           Creates a new <code>MonkeyImage</code> object from a rectangular selection of the
-           current image.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>rect</th>
-          <td>
-            A tuple (x, y, w, h) specifying the selection. x and y specify the 0-based pixel
-            position of the upper left-hand corner of the selection. w specifies the width of the
-            region, and h specifies its height, both in units of pixels.
-            <p>
-                The image's orientation is the same as the screen orientation at the time the
-                screenshot was made.
-            </p>
-          </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            A new <code>MonkeyImage</code> object containing the selection.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="sameAs"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>boolean</em>
-      </span>
-      <span class="sympad">sameAs</span>
-      <span class="normal">
-      (
-       <code>
-           <a href="{@docRoot}guide/developing/tools/MonkeyImage.html">MonkeyImage</a>
-       </code> otherImage,
-       <em>float</em> percent
-      )
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-           Compares this <code>MonkeyImage</code> object to another and returns the result of
-           the comparison. The <code>percent</code> argument specifies the percentage
-           difference that is allowed for the two images to be "equal".
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>other</th>
-          <td>
-            Another <code>MonkeyImage</code> object to compare to this one.
-          </td>
-        </tr>
-        <tr>
-          <th>
-            percent
-          </th>
-          <td>
-            A float in the range 0.0 to 1.0, inclusive, indicating
-            the percentage of pixels that need to be the same for the method to return
-            <code>true</code>. The default is 1.0, indicating that all the pixels
-            must match.
-          </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            Boolean <code>true</code> if the images match, or boolean <code>false</code> otherwise.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="writeToFile"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">writeToFile</span>
-      <span class="normal">
-      (<em>string</em> filename,
-       <em>string</em> format)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-           Writes the current image to the file specified by <code>filename</code>, in the
-           format specified by <code>format</code>.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>path</th>
-          <td>
-            The fully-qualified filename and extension of the output file.
-          </td>
-        </tr>
-        <tr>
-            <th>
-                format
-            </th>
-            <td>
-                The output format to use for the file. If no format is provided, then the
-                method tries to guess the format from the filename's extension. If no
-                extension is provided and no format is specified, then the default format of
-                "png" (Portable Network Graphics) is used.
-            </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
diff --git a/docs/html/guide/developing/tools/MonkeyRunner.jd b/docs/html/guide/developing/tools/MonkeyRunner.jd
deleted file mode 100644
index ea8d69e..0000000
--- a/docs/html/guide/developing/tools/MonkeyRunner.jd
+++ /dev/null
@@ -1,448 +0,0 @@
-page.title=MonkeyRunner
-parent.title=monkeyrunner
-parent.link=index.html
-@jd:body
-
-<style>
-    h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>
-    A monkeyrunner class that contains static utility methods.
-</p>
-<h2>Summary</h2>
-<table id="pubmethods" class="jd-sumtable">
-    <tr>
-        <th colspan="12" style="background-color: #E2E2E2">Methods</th>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#alert">alert</a>
-                </span>
-                (<em>string</em> message,
-                 <em>string</em> title,
-                 <em>string</em> okTitle)
-            </nobr>
-            <div class="jd-descrdiv">
-                Displays an alert dialog to the process running the current
-                program.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>integer</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#choice">choice</a>
-                </span>
-                (<em>string</em> message,
-                 <em>iterable</em> choices,
-                 <em>string</em> title)
-            </nobr>
-            <div class="jd-descrdiv">
-                Displays a dialog with a list of choices to the process running the current program.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#help">help</a>
-                </span>
-                (<em>string</em> format)
-            </nobr>
-            <div class="jd-descrdiv">
-                Displays the monkeyrunner API reference in a style similar to that of Python's
-                <code>pydoc</code> tool, using the specified format.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>string</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#input">input</a>
-                </span>
-                (<em>string</em> message,
-                 <em>string</em> initialValue,
-                 <em>string</em> title,
-                 <em>string</em> okTitle,
-                 <em>string</em> cancelTitle)
-            </nobr>
-            <div class="jd-descrdiv">
-                Displays a dialog that accepts input.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#sleep">sleep</a>
-                </span>
-                (<em>float</em> seconds)
-            </nobr>
-            <div class="jd-descrdiv">
-                Pauses the current program for the specified number of seconds.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <code>
-                    <a href="{@docRoot}guide/developing/tools/MonkeyDevice.html">MonkeyDevice</a>
-                </code>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#waitForConnection">waitForConnection</a>
-                </span>
-                (<em>float</em> timeout,
-                <em>string</em> deviceId)
-            </nobr>
-            <div class="jd-descrdiv">
-                Tries to make a connection between the <code>monkeyrunner</code> backend and the
-                specified device or emulator.
-            </div>
-        </td>
-    </tr>
-</table>
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methods -->
-<h2>Public Methods</h2>
-<A NAME="alert"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>string</em>
-      </span>
-      <span class="sympad">alert</span>
-      <span class="normal">
-      (
-            <em>string</em> message,
-            <em>string</em> title,
-            <em>string</em> okTitle)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Displays an alert dialog to the process running the current
-            program. The dialog is modal, so the program pauses until the user clicks the dialog's
-            button.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>message</th>
-            <td>
-                The message to display in the dialog.
-            </td>
-        </tr>
-        <tr>
-            <th>title</th>
-            <td>
-                The dialog's title. The default value is "Alert".
-            </td>
-        </tr>
-        <tr>
-            <th>okTitle</th>
-            <td>
-                The text displayed in the dialog button. The default value is "OK".
-            </td>
-        </tr>
-        </table>
-    </div>
-</div>
-</div>
-<A NAME="choice"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>integer</em>
-      </span>
-      <span class="sympad">choice</span>
-      <span class="normal">
-        (<em>string</em> message,
-         <em>iterable</em> choices,
-         <em>string</em> title)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Displays a dialog with a list of choices to the process running the current program. The
-            dialog is modal, so the program pauses until the user clicks one of the dialog's
-            buttons.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>message</th>
-          <td>
-            The prompt message displayed in the dialog.
-          </td>
-        </tr>
-        <tr>
-          <th>choices</th>
-          <td>
-            A Python iterable containing one or more objects that are displayed as strings. The
-            recommended form is an array of strings.
-          </td>
-        </tr>
-        <tr>
-            <th>
-                title
-            </th>
-            <td>
-               The dialog's title. The default is "Input".
-            </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            If the user makes a selection and clicks the "OK" button, the method returns
-            the 0-based index of the selection within the iterable.
-            If the user clicks the "Cancel" button, the method returns -1.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="help"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">help</span>
-      <span class="normal">
-        (<em>string</em> format)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Displays the monkeyrunner API reference in a style similar to that of Python's
-            <code>pydoc</code> tool, using the specified format.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>format</th>
-          <td>
-            The markup format to use in the output. The possible values are "text" for plain text
-            or "html" for HTML.
-          </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="input"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>string</em>
-      </span>
-      <span class="sympad">input</span>
-      <span class="normal">
-        (<em>string</em> message
-         <em>string</em> initialValue,
-         <em>string</em> title,
-         <em>string</em> okTitle,
-         <em>string</em> cancelTitle)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Displays a dialog that accepts input and returns it to the program. The dialog is
-            modal, so the program pauses until the user clicks one of the dialog's buttons.
-        </p>
-        <p>
-            The dialog contains two buttons, one of which displays the okTitle value
-            and the other the cancelTitle value. If the user clicks the okTitle button,
-            the current value of the input box is returned. If the user clicks the cancelTitle
-            button, an empty string is returned.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>message</th>
-          <td>
-            The prompt message displayed in the dialog.
-          </td>
-        </tr>
-        <tr>
-          <th>initialValue</th>
-          <td>
-            The initial value to display in the dialog. The default is an empty string.
-          </td>
-        </tr>
-        <tr>
-          <th>title</th>
-          <td>
-            The dialog's title. The default is "Input".
-          </td>
-        </tr>
-        <tr>
-          <th>okTitle</th>
-          <td>
-            The text displayed in the okTitle button. The default is "OK".
-          </td>
-        </tr>
-        <tr>
-          <th>cancelTitle</th>
-          <td>
-            The text displayed in the cancelTitle button. The default is "Cancel".
-          </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            If the user clicks the okTitle button, then the method returns the current value of
-            the dialog's input box. If the user clicks the cancelTitle button, the method returns
-            an empty string.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="sleep"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">sleep</span>
-      <span class="normal">
-      (
-       <em>float</em> seconds
-      )
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Pauses the current program for the specified number of seconds.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>seconds</th>
-          <td>
-            The number of seconds to pause.
-          </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="waitForConnection"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-          <code>
-              <a href="{@docRoot}guide/developing/tools/MonkeyDevice.html">MonkeyDevice</a>
-          </code>
-      </span>
-      <span class="sympad">waitForConnection</span>
-      <span class="normal">
-      (<em>float</em> timeout,
-       <em>string</em> deviceId)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Tries to make a connection between the <code>monkeyrunner</code> backend and the
-            specified device or emulator.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>timeout</th>
-          <td>
-            The number of seconds to wait for a connection. The default is to wait forever.
-          </td>
-        </tr>
-        <tr>
-            <th>
-                deviceId
-            </th>
-            <td>
-                A regular expression that specifies the serial number of the device or emulator. See
-                the topic
-                <a href="{@docRoot}guide/developing/tools/adb.html">Android Debug Bridge</a>
-                for a description of device and emulator serial numbers.
-            </td>
-        </tr>
-      </table>
-    </div>
-        <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-          A <code><a href="{@docRoot}guide/developing/tools/MonkeyDevice.html">MonkeyDevice</a></code>
-          instance for the device or emulator. Use this object to control and communicate with the
-          device or emulator.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
diff --git a/docs/html/guide/developing/tools/aapt.html b/docs/html/guide/developing/tools/aapt.html
deleted file mode 100644
index e66a201..0000000
--- a/docs/html/guide/developing/tools/aapt.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/guide/developing/building/index.html#detailed-build">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/guide/developing/building/index.html#detailed-build">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/developing/tools/adb.jd b/docs/html/guide/developing/tools/adb.jd
deleted file mode 100644
index 50c7236..0000000
--- a/docs/html/guide/developing/tools/adb.jd
+++ /dev/null
@@ -1,669 +0,0 @@
-page.title=Android Debug Bridge
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>ADB quickview</h2>
-  <ul>
-<li>Manage the state of an emulator or device</li>
-<li>Run shell commands on a device</li>
-<li>Manage port forwarding on an emulator or device</li>
-<li>Copy files to/from an emulator or device</li>
-  </ul>
-
-  <h2>In this document</h2>
-  <ol>
-<li><a href="#issuingcommands">Issuing ADB Commands</a></li>
-<li><a href="#devicestatus">Querying for Emulator/Device Instances</a></li>
-<li><a href="#directingcommands">Directing Commands to a Specific Emulator/Device Instance</a></li>
-<li><a href="#move">Installing an Application</a></li>
-<li><a href="#forwardports">Forwarding Ports</a></li>
-<li><a href="#copyfiles">Copying Files to or from an Emulator/Device Instance</a></li>
-<li><a href="#commandsummary">Listing of adb Commands </a></li>
-<li><a href="#shellcommands">Issuing Shell Commands</a></li>
-<li><a href="#logcat">Enabling logcat Logging</a></li>
-<li><a href="#stopping">Stopping the adb Server</a></li>
-  </ol>
-
-  <h2>See also</h2>
-  <ol>
-    <li><a href="emulator.html">Emulator</a></li>
-  </ol>
-
-</div>
-</div>
-
-<p>Android Debug Bridge (adb) is a versatile command line tool that lets you communicate with an
-emulator instance or connected Android-powered device. It is a client-server program that includes
-three components: </p>
-
-<ul>
-  <li>A client, which runs on your development machine. You can invoke a client from a shell by issuing an adb command. Other Android tools such as the ADT plugin and DDMS also create adb clients. </li>
-  <li>A server, which runs as a background process on your development machine. The server manages communication between the client and the adb daemon running on an emulator or device. </li>
-  <li>A daemon, which runs as a background process on each emulator or device instance. </li>
-</ul>
-
-<p>You can find the {@code adb} tool in {@code &lt;sdk&gt;/platform-tools/}.</p>
-
-<p>When you start an adb client, the client first checks whether there is an adb server process already running. If there isn't, it starts the server process. When the server starts, it binds to local TCP port 5037 and listens for commands sent from adb clients&mdash;all adb clients use port 5037 to communicate with the adb server. </p>
-
-<p>The server then sets up connections to all running emulator/device instances. It locates emulator/device instances by scanning odd-numbered ports in the range 5555 to 5585, the range used by emulators/devices. Where the server finds an adb daemon, it sets up a connection to that port. Note that each emulator/device instance acquires a pair of sequential ports &mdash; an even-numbered port for console connections and an odd-numbered port for adb connections. For example: </p>
-
-<p style="margin-left:2em">
-Emulator 1, console: 5554<br/>
-Emulator 1, adb: 5555<br>
-Emulator 2, console: 5556<br>
-Emulator 2, adb: 5557 ...
-</p>
-
-<p>As shown, the emulator instance connected to adb on port 5555 is the same as the instance whose console listens on port 5554. </p>
-
-<p>Once the server has set up connections to all emulator instances, you can use adb commands to control and access those instances. Because the server manages connections to emulator/device instances and handles commands from multiple adb clients, you can control any emulator/device instance from any client (or from a script).</p>
-
-<p>The sections below describe the commands that you can use to access adb capabilities and manage the state of an emulator/device. Note that if you are developing Android applications in Eclipse and have installed the ADT plugin, you do not need to access adb from the command line. The ADT plugin provides a transparent integration of adb into the Eclipse IDE. However, you can still use adb directly as necessary, such as for debugging.</p>
-
-<a name="issuingcommands"></a>
-
-<h2>Issuing adb Commands</h2>
-
-<p>You can issue adb commands from a command line on your development machine or from a script. The usage is: </p>
-
-    <pre>adb [-d|-e|-s &lt;serialNumber&gt;] &lt;command&gt; </pre>
-
-<p>When you issue a command, the program invokes an adb client. The client is not specifically associated with any emulator instance, so if multiple emulators/devices are running, you need to use the <code>-d</code> option to specify the target instance to which the command should be directed. For more information about using this option, see <a href="#directingcommands">Directing Commands to a Specific Emulator/Device Instance</a>. </p>
-
-<a name="devicestatus"></a>
-
-<h2>Querying for Emulator/Device Instances</h2>
-
-<p>Before issuing adb commands, it is helpful to know what emulator/device instances are connected to the adb server. You can generate a list of attached emulators/devices using the <code>devices</code> command: </p>
-
-	<pre>adb devices</pre>
-
-<p>In response, adb prints this status information for each instance:</p>
-
-<ul>
-	<li>Serial number &mdash; A string created by adb to uniquely identify an emulator/device instance by its 
-        console port number. The format of the serial number is <code>&lt;type&gt;-&lt;consolePort&gt;</code>. 
-        Here's an example serial number: <code>emulator-5554</code></li>
-	<li>State &mdash; The connection state of the instance. Three states are supported: 
-		<ul>
-		<li><code>offline</code> &mdash; the instance is not connected to adb or is not responding.</li>
-		<li><code>device</code> &mdash; the instance is now connected to the adb server. Note that this state does not 
-                    imply that the Android system is fully booted and operational, since the instance connects to adb 
-                    while the system is still booting. However, after boot-up, this is the normal operational state of 
-                    an emulator/device instance.</li>
-		</ul>
-	</li>
-</ul>
-
-<p>The output for each instance is formatted like this: </p>
-
-	<pre>[serialNumber] [state]</pre>
-
-<p>Here's an example showing the <code>devices</code> command and its output:</p>
-
-	<pre>$ adb devices
-List of devices attached 
-emulator-5554&nbsp;&nbsp;device
-emulator-5556&nbsp;&nbsp;device
-emulator-5558&nbsp;&nbsp;device</pre>
-
-<p>If there is no emulator/device running, adb returns <code>no device</code>.</p>
-
-
-<a name="directingcommands"></a>
-
-<h2>Directing Commands to a Specific Emulator/Device Instance</h2>
-
-<p>If multiple emulator/device instances are running, you need to specify a target instance when issuing adb commands. To so so, use the <code>-s</code> option in the commands. The usage for the <code>-s</code> option is:</p>
-
-    <pre>adb -s &lt;serialNumber&gt; &lt;command&gt; </pre>
-	
-<p>As shown, you specify the target instance for a command using its adb-assigned serial number. You can use the <code>devices</code> command to obtain the serial numbers of running emulator/device instances. </p>
-
-<p>Here is an example: </p>
-
-	<pre>adb -s emulator-5556 install helloWorld.apk</pre>
-
-<p>Note that, if you issue a command without specifying a target emulator/device instance using <code>-s</code>, adb generates an error. 
-
-<a name="move"></a>
-
-<h2>Installing an Application</h2>
-<p>You can use adb to copy an application from your development computer and install it on an emulator/device instance. To do so, use the <code>install</code> command. With the command, you must specify the path to the .apk file that you want to install:</p>
-
-<pre>adb install &lt;path_to_apk&gt;</pre>
-
-<p>For more information about how to create an .apk file that you can install on an emulator/device
-instance, see <a href="{@docRoot}guide/developing/building/index.html">Building and Running</a></p>
-
-<p>Note that, if you are using the Eclipse IDE and have the ADT plugin installed, you do not need to use adb (or aapt) directly to install your application on the emulator/device. Instead, the ADT plugin handles the packaging and installation of the application for you. </p>
-
-
-<a name="forwardports"></a>
-
-<h2>Forwarding Ports</h2>
-
-    <p>You can use the <code>forward</code> command to set up arbitrary port forwarding &mdash; forwarding of requests on a specific host port to a different port on an emulator/device instance. Here's how you would set up forwarding of host port 6100 to emulator/device port 7100:</p>
-<pre>adb forward tcp:6100 tcp:7100</pre>
-    <p>You can also use adb to set up forwarding to named abstract UNIX domain sockets, as illustrated here:</p>
-<pre>adb forward tcp:6100 local:logd </pre>
-
-<a name="copyfiles"></a>
-
-<h2>Copying Files to or from an Emulator/Device Instance</h2>
-
-<p>You can use the adb commands <code>pull</code> and <code>push</code> to copy files to and from an emulator/device instance's data file. Unlike the <code>install</code> command, which only copies an .apk file to a specific location, the <code>pull</code> and <code>push</code> commands let you copy arbitrary directories and files to any location in an emulator/device instance. </p>
-
-<p>To copy a file or directory (recursively) <em>from</em> the emulator or device, use</p>
-<pre>adb pull &lt;remote&gt; &lt;local&gt;</pre> 
-
-<p>To copy a file or directory (recursively) <em>to</em> the emulator or device, use</p>
-    <pre>adb push &lt;local&gt; &lt;remote&gt;</pre> 
-
-<p>In the commands, <code>&lt;local&gt;</code> and <code>&lt;remote&gt;</code> refer to the paths to the target files/directory on your development machine (local) and on the emulator/device instance (remote).</p>
-
-<p>Here's an example: </p>
-<pre>adb push foo.txt /sdcard/foo.txt</pre>
-
-<a name="commandsummary"></a>
-
-<h2>Listing of adb Commands</h2>
-
-<p>The table below lists all of the supported adb commands and explains their meaning and usage. </p>
-
-
-<table>
-<tr>
-	<th>Category</th>
-	<th>Command</th>
-	<th>Description</th>
-	<th>Comments</th>
-</tr>
-
-<tr>
-<td rowspan="3">Options</td>
-<td><code>-d</code></td>
-<td>Direct an adb command to the only attached USB device.</td>
-<td>Returns an error if more than one USB device is attached.</td>
-</tr>
-
-<tr>
-<td><code>-e</code></td>
-<td>Direct an adb command to the only running emulator instance.</td>
-<td>Returns an error if more than one emulator instance is running. </td>
-</tr>
-
-<tr>
-<td><code>-s&nbsp;&lt;serialNumber&gt;</code></td>
-<td>Direct an adb command a specific emulator/device instance, referred to by its adb-assigned serial number (such as "emulator-5556").</td>
-<td>If not specified, adb generates an error.</td>
-</tr>
-
-<tr>
-<td rowspan="3">General</td>
-<td><code>devices</code></td>
-<td>Prints a list of all attached emulator/device instances.</td>
-<td>See <a href="#devicestatus">Querying for Emulator/Device Instances</a> for more information.</td>
-</tr>
-
-<tr>
-<td><code>help</code></td>
-<td>Prints a list of supported adb commands.</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><code>version</code></td>
-<td>Prints the adb version number. </td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td rowspan="3">Debug</td>
-<td ><code>logcat&nbsp;[&lt;option&gt;] [&lt;filter-specs&gt;]</code></td>
-<td>Prints log data to the screen. </td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><code>bugreport</code></td>
-<td>Prints <code>dumpsys</code>, <code>dumpstate</code>, and <code>logcat</code> data to the screen, for the purposes of bug reporting. </td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><code>jdwp</code></td>
-<td>Prints a list of available JDWP processes on a given device. </td>
-<td>You can use the <code>forward jdwp:&lt;pid&gt;</code> port-forwarding specification to connect to a specific JDWP process. For example: <br>
-    <code>adb forward tcp:8000 jdwp:472</code><br>
-    <code>jdb -attach localhost:8000</code></p>
- </td>
-</tr>
-
-<tr>
-<td rowspan=3">Data</td>
-<td><code>install&nbsp;&lt;path-to-apk&gt;</code></td>
-<td>Pushes an Android application (specified as a full path to an .apk file) to the data file of an emulator/device. </td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><code>pull&nbsp;&lt;remote&gt;&nbsp;&lt;local&gt;</code></td>
-<td>Copies a specified file from an emulator/device instance to your development computer. </td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><code>push&nbsp;&lt;local&gt;&nbsp;&lt;remote&gt;</code></td>
-<td>Copies a specified file from your development computer to an emulator/device instance. </td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td rowspan="2">Ports and Networking</td>
-<td><code>forward&nbsp;&lt;local&gt;&nbsp;&lt;remote&gt;</code></td>
-<td>Forwards socket connections from a specified local port to a specified remote port on the emulator/device instance. </td>
-<td>Port specifications can use these schemes: 
-<ul><li><code>tcp:&lt;portnum&gt;</code></li>
-<li><code>local:&lt;UNIX domain socket name&gt;</code></li>
-<li><code>dev:&lt;character device name&gt;</code></li>
-<li><code>jdwp:&lt;pid&gt;</code></li></ul>
-</td>
-</tr>
-
-<tr>
-<td><code>ppp&nbsp;&lt;tty&gt;&nbsp;[parm]...</code></td>
-<td>Run PPP over USB.
-<ul>
-<li><code>&lt;tty&gt;</code> &mdash; the tty for PPP stream. For example <code>dev:/dev/omap_csmi_ttyl</code>. </li>
-<li><code>[parm]... </code> &mdash; zero or more PPP/PPPD options, such as <code>defaultroute</code>, <code>local</code>, <code>notty</code>, etc.</li></ul>
-
-<p>Note that you should not automatically start a PPP connection. </p></td>
-<td></td>
-</tr>
-
-<tr>
-<td rowspan="3">Scripting</td>
-<td><code>get-serialno</code></td>
-<td>Prints the adb instance serial number string.</td>
-<td rowspan="2">See <a href="#devicestatus">Querying for Emulator/Device Instances</a> for more information. </td>
-</tr>
-
-<tr>
-<td><code>get-state</code></td>
-<td>Prints the adb state of an emulator/device instance.</td>
-</td>
-</tr>
-
-<tr>
-<td><code>wait-for-device</code></td>
-<td>Blocks execution until the device is online &mdash; that is, until the instance state is <code>device</code>.</td>
-<td>You can prepend this command to other adb commands, in which case adb will wait until the emulator/device instance is connected before issuing the other commands. Here's an example: 
-<pre>adb wait-for-device shell getprop</pre>
-
-Note that this command does <em>not</em> cause adb to wait until the entire system is fully booted. For that reason, you should not prepend it to other commands that require a fully booted system. As an example, the <code>install</code> requires the Android package manager, which is available only after the system is fully booted. A command such as 
-
-<pre>adb wait-for-device install &lt;app&gt;.apk</pre>
-
-would issue the <code>install</code> command as soon as the emulator or device instance connected to the adb server, but before the Android system was fully booted, so it would result in an error. </td>
-</tr>
-
-
-
-<tr>
-<td rowspan="2">Server</td>
-<td><code>start-server</code></td>
-<td>Checks whether the adb server process is running and starts it, if not.</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><code>kill-server</code></td>
-<td>Terminates the adb server process.</td>
-<td>&nbsp;</td>
-</tr>
-
-
-
-<tr>
-<td rowspan="2">Shell</td>
-<td><code>shell</code></td>
-<td>Starts a remote shell in the target emulator/device instance.</td>
-<td rowspan="2">See <a href="#shellcommands">Issuing Shell Commands</a> for more information. </td>
-</tr>
-
-<tr>
-<td><code>shell&nbsp;[&lt;shellCommand&gt;]</code></td>
-<td>Issues a shell command in the target emulator/device instance and then exits the remote shell.</td>
-</tr>
-
-</table>
-
-
-<a name="shellcommands"></a>
-
-<h2>Issuing Shell Commands</h2>
-
-<p>Adb provides an ash shell that you can use to run a variety of commands on an emulator 
-or device. The command binaries are stored in the file system of the emulator or device, 
-in this location: </p>
-
-<pre>/system/bin/...</pre>
-
-<p>You can use the <code>shell</code> command to issue commands, with or without entering the adb remote shell on the emulator/device. </p>
-
-<p>To issue a single command without entering a remote shell, use the <code>shell</code> command like this: </p>
-
-	<pre>adb [-d|-e|-s {&lt;serialNumber&gt;}] shell &lt;shellCommand&gt;</pre>
-	
-<p>To drop into a remote shell on a emulator/device instance, use the <code>shell</code> command like this:</p>
-
-	<pre>adb [-d|-e|-s {&lt;serialNumber&gt;}] shell</pre>
-
-<p>When you are ready to exit the remote shell, use <code>CTRL+D</code> or <code>exit</code> to end the shell session. </p>
-
-<p>The sections below provide more information about shell commands that you can use.</p>
-      
-<a name="sqlite" id="sqlite"></a>
-
-<h3>Examining sqlite3 Databases from a Remote Shell</h3>
-
-<p>From an adb remote shell, you can use the 
-<a href="http://www.sqlite.org/sqlite.html">sqlite3</a> command-line program to 
-manage SQLite databases created by Android applications. The 
-<code>sqlite3</code> tool includes many useful commands, such as 
-<code>.dump</code> to print out the contents of a table and 
-<code>.schema</code> to print the SQL CREATE statement for an existing table. 
-The tool also gives you the ability to execute SQLite commands on the fly.</p>
-
-<p>To use <code>sqlite3</code>, enter a remote shell on the emulator instance, as described above, then invoke the tool using the <code>sqlite3</code> command. Optionally, when invoking <code>sqlite3</code> you can specify the full path to the database you want to explore. Emulator/device instances store SQLite3 databases in the folder <code><span chatdir="1"><span chatindex="259474B4B070F261">/data/data/<em>&lt;package_name&gt;</em>/databases</span></span>/</code>. </p>
-
-<p>Here's an example: </p>
-
-<pre>$ adb -s emulator-5554 shell
-# sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.db
-SQLite version 3.3.12
-Enter &quot;.help&quot; for instructions
-<em>.... enter commands, then quit...</em>
-sqlite&gt; .exit </pre>
-
-<p>Once you've invoked <code>sqlite3</code>, you can issue <code>sqlite3</code> commands in the shell. To exit and return to the adb remote shell, use <code>exit</code> or <code>CTRL+D</code>.
-
-
-<a name="monkey"></a>
-
-<h3>UI/Application Exerciser Monkey</h3>
-
-<p>The Monkey is a program that runs on your emulator or device and generates pseudo-random
-streams of user events such as clicks, touches, or gestures, as well as a number of system-level 
-events.  You can use the Monkey to stress-test applications that you are developing,
-in a random yet repeatable manner.</p>
-
-<p>The simplest way to use the monkey is with the following command, which will launch your
-application and send 500 pseudo-random events to it.</p>
-
-<pre>$ adb shell monkey -v -p your.package.name 500</pre>
-
-<p>For more information about command options for Monkey, see the complete 
-<a href="{@docRoot}guide/developing/tools/monkey.html" title="monkey">UI/Application Exerciser Monkey</a> documentation page.</p>
-
-
-<a name="othershellcommands"></a>
-
-<h3>Other Shell Commands</h3>
-
-<p>The table below lists several of the adb shell commands available. For a complete list of commands and programs, start an emulator instance and use the <code>adb -help</code> command. </p>
-
-<pre>adb shell ls /system/bin</pre>
-
-<p>Help is available for most of the commands. </p>
-
-<table>
-<tr>
-	<th>Shell Command</th>
-	<th>Description</th>
-	<th>Comments</th>
-</tr>
-
-<tr>
-<td><code>dumpsys</code></td>
-<td>Dumps system data to the screen.</td>
-<td rowspan=4">The <a href="{@docRoot}guide/developing/debugging/ddms.html">Dalvik Debug Monitor Server</a> 
-(DDMS) tool offers integrated debug environment that you may find easier to use.</td>
-</tr>
-
-<tr>
-<td><code>dumpstate</code></td>
-<td>Dumps state to a file.</td>
-</tr>
-
-<tr>
-<td><code>logcat&nbsp;[&lt;option&gt;]...&nbsp;[&lt;filter-spec&gt;]...</code></td>
-<td>Enables radio logging and prints output to the screen. </td>
-</tr>
-
-<tr>
-<td><code>dmesg</code></td>
-<td>Prints kernel debugging messages to the screen. </td>
-</tr>
-
-<tr>
-<td><code>start</code></td>
-<td>Starts (restarts) an emulator/device instance.</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><code>stop</code></td>
-<td>Stops execution of an emulator/device instance.</td>
-<td>&nbsp;</td>
-</tr>
-
-</table>
-
-<a name="logcat"></a>
-
-<h2>Enabling logcat Logging</h2>
-
-<p>The Android logging system provides a mechanism for collecting and viewing system debug output. Logs from various applications and portions of the system are collected in a series of circular buffers, which then can be viewed and filtered by the <code>logcat</code> command.</p>
-
-<a name="usinglogcat"></a>
-
-<h3>Using logcat Commands</h3>
-
-<p>You can use the <code>logcat</code> command to view and follow the contents of the system's log buffers. The general usage is:</p>
-
-<pre>[adb] logcat [&lt;option&gt;] ... [&lt;filter-spec&gt;] ...</pre>
-
-<p>The sections below explain filter specifications and the command options. See <a href="#logcatoptions">Listing of logcat Command Options</a> for a summary of options. </p>
-
-<p>You can use the <code>logcat</code> command from your development computer  or from a remote adb shell in an emulator/device instance. To view log output in your development computer, you use</p>
-
-<pre>$ adb logcat</pre>
-
-<p>and from a remote adb shell you use</p>
-
-<pre># logcat</pre>
-
-<a name="filteringoutput"></a>
-
-<h3>Filtering Log Output</h3>
-
-<p>Every Android log message has a <em>tag</em> and a <em>priority</em> associated with it. </p>
-
-<ul>
-<li>The tag of a log message is a short string indicating the system component from which the message originates (for example, "View" for the view system). </li>
-
-<li>The priority is one of the following character values, ordered from lowest to highest priority:</li>
-
-<ul>
-    <li><code>V</code> &mdash; Verbose (lowest priority)</li>
-	<li><code>D</code> &mdash; Debug</li>
-	<li><code>I</code> &mdash; Info (default priority)</li>
-	<li><code>W</code> &mdash; Warning</li>
-	<li><code>E</code> &mdash; Error</li>
-	<li><code>F</code> &mdash; Fatal</li>
-	<li><code>S</code> &mdash; Silent (highest priority, on which nothing is ever printed)</li>
-</ul>
-</ul>
-
-<p>You can obtain a list of tags used in the system, together with priorities, by running <code>logcat</code> and observing the first two columns 
-of each message, given as <code>&lt;priority&gt;/&lt;tag&gt;</code>. </p>
-
-<p>Here's an example of logcat output that shows that the message relates to priority level "I" and tag "ActivityManager":</p>
-
-<pre>I/ActivityManager(  585): Starting activity: Intent { action=android.intent.action...}</pre>
-
-<p>To reduce the log output to a manageable level, you can restrict log output using <em>filter expressions</em>. Filter expressions let you indicate to the system the tags-priority combinations that you are interested in &mdash; the system suppresses other messages for the specified tags. </p>
-
-<p>A filter expression follows this format <code>tag:priority ...</code>, where <code>tag</code> indicates the tag of interest and <code>priority</code> indicates the <em>minimum</em> level of priority to report for that tag.  Messages for that tag at or above the specified priority are written to the log. You can supply any number of <code>tag:priority</code> specifications in a single filter expression. The series of specifications is whitespace-delimited. The default output is to show all log messages with the Info priority (*:I).</p>
-
-<p>Here's an example of a filter expression that suppresses all log messages except those with the tag "ActivityManager", at priority "Info" or above, and all log messages with tag "MyApp", with priority "Debug" or above:</p>
-
-<pre>adb logcat ActivityManager:I MyApp:D *:S</pre>
-
-<p>The final element in the above expression, <code>*:S</code>, sets the priority level for all tags to "silent", thus ensuring only log messages with "View" and "MyApp" are displayed. Using <code>*:S</code> is an excellent way to ensure that log output is restricted to the filters that you have explicitly specified &mdash; it lets your filters serve as a "whitelist" for log output.</p>
-
-<p>The following filter expression displays all log messages with priority level "warning" and higher, on all tags:</p>
-
-<pre>adb logcat *:W</pre>
-
-<p>If you're running <code>logcat</code> from your development computer (versus running it on a remote adb shell), you can also set a default filter expression by exporting a value for the environment variable <code>ANDROID_LOG_TAGS</code>:</p>
-
-<pre>export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"</pre>
-
-<p>Note that <code>ANDROID_LOG_TAGS</code> filter is not exported to the emulator/device instance, if you are running <code>logcat</code> from a remote shell or using <code>adb shell logcat</code>.</p>
-
-
-<a name="outputformat"></a>
-
-<h3>Controlling Log Output Format</h3>
-
-<p>Log messages contain a number of metadata fields, in addition to the tag and priority. You can modify the output format for messages so that they display a specific metadata field. To do so, you use the <code>-v</code> option and specify one of the supported output formats listed below. </p>
-
-<ul>
-    <li><code>brief</code> &mdash; Display priority/tag and the PID of process issuing the message (the default format).</li>
-	<li><code>process</code> &mdash; Display PID only.</li>
-	<li><code>tag</code> &mdash; Display the priority/tag only. </li>
-	<li><code>raw</code> &mdash; Display the raw log message, with no other metadata fields.</li>
-	<li><code>time</code> &mdash; Display the date, invocation time, priority/tag, and PID of the process issuing the message.</li>
-	<li><code>threadtime</code> &mdash; Display the date, invocation time, priority, tag, and the PID and TID of the thread issuing the message.</li>
-	<li><code>long</code> &mdash; Display all metadata fields and separate messages with a blank lines.</li>
-</ul>
-
-<p>When starting <code>logcat</code>, you can specify the output format you want by using the <code>-v</code> option:</p>
-
-<pre>[adb] logcat [-v &lt;format&gt;]</pre>
-
-<p>Here's an example that shows how to generate messages in <code>thread</code> output format: </p>
-
-<pre>adb logcat -v thread</pre>
-
-<p>Note that you can only specify one output format with the <code>-v</code> option. </p>
-
-<a name="alternativebuffers"></a>
-
-<h3>Viewing Alternative Log Buffers </h3>
-
-<p>The Android logging system keeps multiple circular buffers for log messages, and not all of the log messages are sent to the default circular buffer. To see additional log messages, you can start <code>logcat</code> with the <code>-b</code> option, to request viewing of an alternate circular buffer. You can view any of these alternate buffers: </p>
-
-<ul>
-<li><code>radio</code> &mdash; View the buffer that contains radio/telephony related messages.</li>
-<li><code>events</code> &mdash; View the buffer containing events-related messages.</li>
-<li><code>main</code> &mdash; View the main log buffer (default)</li>
-</ul>
-
-<p>The usage of the <code>-b</code> option is:</p>
-
-<pre>[adb] logcat [-b &lt;buffer&gt;]</pre>
-
-<p>Here's an example of how to view a log buffer containing radio and telephony messages: </p>
-
-<pre>adb logcat -b radio</b></pre>
-
-<a name="stdout"></a>
-
-<h3>Viewing stdout and stderr</h3>
-
-<p>By default, the Android system sends <code>stdout</code> and <code>stderr</code> (<code>System.out</code> and <code>System.err</code>) output to <code>/dev/null</code>. In
-processes that run the Dalvik VM, you can have the system write a copy of the output to the log file. In this case, the system writes the messages to the log using the log tags <code>stdout</code> and <code>stderr</code>, both with priority <code>I</code>. </p>
-
-<p>To route the output in this way, you stop a running emulator/device instance and then use the shell command <code>setprop</code> to enable the redirection of output. Here's how you do it: </p>
-
-<pre>$ adb shell stop
-$ adb shell setprop log.redirect-stdio true
-$ adb shell start</pre>
-
-<p>The system retains this setting until you terminate the emulator/device instance. To use the setting as a default on the emulator/device instance, you can add an entry to <code>/data/local.prop</code>
-on the device.</p>
-
-<a name="logcatoptions"></a>
-
-<h3>Listing of logcat Command Options</h3>
-
-<table>
-<tr>
-	<th>Option</th>
-	<th>Description</th>
-</tr>
-
-<tr>
-<td><code>-b&nbsp;&lt;buffer&gt;</code></td>
-<td>Loads an alternate log buffer for viewing, such as <code>event</code> or <code>radio</code>. The <code>main</code> buffer is used by default. See <a href="#alternativebuffers">Viewing Alternative Log Buffers</a>.</td>
-</tr>
-
-<tr>
-<td><code>-c</code></td>
-<td>Clears (flushes) the entire log and exits. </td>
-</tr>
-
-<tr>
-<td><code>-d</code></td>
-<td>Dumps the log to the screen and exits.</td>
-</tr>
-
-<tr>
-<td><code>-f&nbsp;&lt;filename&gt;</code></td>
-<td>Writes log message output to <code>&lt;filename&gt;</code>. The default is <code>stdout</code>.</td>
-</tr>
-
-<tr>
-<td><code>-g</code></td>
-<td>Prints the size of the specified log buffer and exits. </td>
-</tr>
-
-<tr>
-<td><code>-n&nbsp;&lt;count&gt;</code></td>
-<td>Sets the maximum number of rotated logs to <code>&lt;count&gt;</code>. The default value is 4.  Requires the <code>-r</code> option.  </td>
-</tr>
-
-<tr>
-<td><code>-r&nbsp;&lt;kbytes&gt;</code></td>
-<td>Rotates the log file every <code>&lt;kbytes&gt;</code> of output. The default value is 16.  Requires the <code>-f</code> option.  </td>
-</tr>
-
-<tr>
-<td><code>-s</code></td>
-<td>Sets the default filter spec to silent. </td>
-</tr>
-
-<tr>
-<td><code>-v&nbsp;&lt;format&gt;</code></td>
-<td>Sets the output format for log messages. The default is <code>brief</code> format. For a list of supported formats, see <a href="#outputformat">Controlling Log Output Format</a>.</td>
-</tr>
-
-</table>
-
-<a name="stopping"></a>
-
-<h2>Stopping the adb Server</h2>
-
-<p>In some cases, you might need to terminate the adb server process and then restart it. For example, if adb does not respond to a command, you can terminate the server and restart it and that may resolve the problem. </p>
-
-<p>To stop the adb server, use the <code>kill-server</code>. You can then restart the server by issuing any adb command. </p>
-
-
diff --git a/docs/html/guide/developing/tools/adt.jd b/docs/html/guide/developing/tools/adt.jd
deleted file mode 100644
index d473e85..0000000
--- a/docs/html/guide/developing/tools/adt.jd
+++ /dev/null
@@ -1,527 +0,0 @@
-page.title=Android Developer Tools
-@jd:body
-
-  <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#tools">SDK Tools Integration</a></li>
-
-        <li><a href="#editors">Code Editors</a>
-          <ol>
-            <li><a href="#resource-linking">Resource linking enhancements</a></li>
-          </ol>
-        </li>
-
-        <li><a href="#graphical-editor">Graphical Layout Editor</a>
-          <ol>
-            <li><a href="#canvas">Canvas and outline view</a></li>
-            <li><a href="#palette">Palette</a></li>
-            <li><a href="#config-chooser">Configuration chooser</a></li>
-          </ol>
-        </li>
-
-        <li><a href="#refactoring">Layout Factoring Support</a></li>
-
-      </ol>
-
-      <h2>Related videos</h2>
-
-      <ol>
-        <li><a href="{@docRoot}videos/index.html#v=Oq05KqjXTvs">Android Developer Tools
-            Google I/O Session</a>
-        </li>
-      </ol>
-
-      <h2>See also</h2>
-
-      <ol>
-        <li><a href="http://tools.android.com/recent">Android Tools change blog</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>ADT (Android Developer Tools) is a plugin for Eclipse that provides a suite of
-  tools that are integrated with the Eclipse IDE. It offers you access to many features that help
-  you develop Android applications quickly. ADT
-  provides GUI access to many of the command line SDK tools as well as a UI design tool for rapid
-  prototyping, designing, and building of your application's user interface.</p>
-
-  <p>Because ADT is a plugin for Eclipse, you get the functionality of a well-established IDE,
-  along with Android-specific features that are bundled with ADT. The following
-  describes important features of Eclipse and ADT:</p>
-
-  <dl>
-    <dt><strong>Integrated Android project creation, building, packaging, installation, and
-    debugging</strong></dt>
-
-    <dd>ADT integrates many development workflow tasks into Eclipse, making it easy for you to
-    rapidly develop and test your Android applications.</dd>
-
-    <dt><strong>SDK Tools integration</strong></dt>
-
-    <dd>Many of the <a href="#tools">SDK tools</a> are integrated into Eclipse's menus,
-    perspectives, or as a part of background processes ran by ADT.</dd>
-
-    <dt><strong>Java programming language and XML editors</strong></dt>
-
-    <dd>The Java programming language editor contains common IDE features such as compile time
-    syntax checking, auto-completion, and integrated documentation for the Android framework APIs.
-    ADT also provides custom XML editors that let you
-    edit Android-specific XML files in a form-based UI. A graphical layout editor lets you design
-    user interfaces with a drag and drop interface.</dd>
-
-    <dt><strong>Integrated documentation for Android framework APIs</strong></dt>
-    <dd>You can access documentation by hovering over classes, methods, or variables.</dd>
-  </dl>
-
-  <p>You can find the most up-to-date and more detailed information about changes and new features
-on the <a  href="http://tools.android.com/recent">Recent Changes</a> page at the Android  Tools
-Project site.</p>
-
-  <h2 id="tools">SDK Tools Integration</h2>
-
-  <div class="sidebox-wrapper">
-    <div class="sidebox">
-      <h2>Need help designing icons?</h2>
-  <p>The <a href="http://android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html">Android
-      Asset Studio</a> is a web-based tool that lets you generate icons from existing images,
-    clipart, or text. It also generates the icons with different DPIs for different screen sizes and
-    types.</p>
-
-    </div>
-  </div>
-
-  <p>Many of the tools that you can start or run from the command line are integrated into ADT.
-  They include:</p>
-
-  <ul>
-    <li><a href="{@docRoot}guide/developing/debugging/debugging-tracing.html">Traceview</a>:
-    Allows you to profile your program's execution
-    (<strong>Window &gt; Open Perspective &gt; Traceview</strong>). </li>
-
-    <li><a href="{@docRoot}guide/developing/tools/android.html">android</a>: Provides access to
-    the Android SDK Manager and AVD Manager. Other <code>android</code> features such as creating or
-    updating projects (application and library) are integrated throughout the Eclipse IDE. </li>
-
-    <li><a href="{@docRoot}guide/developing/debugging/debugging-ui.html#HierarchyViewer">Hierarchy
-    Viewer</a>: Allows you to visualize your application's view hierarchy to find inefficiencies
-    (<strong>Window &gt; Open Perspective &gt; Hierarchy Viewer</strong>).</li>
-
-    <li><a href="{@docRoot}guide/developing/debugging/debugging-ui.html#pixelperfect">Pixel
-    Perfect</a>: Allows you to closely examine your UI to help with designing and building.
-    (<strong>Window &gt; Open Perspective &gt; Pixel Perfect</strong>).</li>
-
-    <li><a href="{@docRoot}guide/developing/debugging/ddms.html">DDMS</a>: Provides
-    debugging features including: screen capturing, thread and heap information, and logcat
-    (<strong>Window &gt; Open Perspective &gt; DDMS</strong>).</li>
-
-    <li><a href="{@docRoot}guide/developing/tools/adb.html">adb</a>: Provides access to
-      a device from your development system. Some features of
-    <code>adb</code> are integrated into ADT such as project installation (Eclipse run menu),
-    file transfer, device enumeration, and logcat (DDMS). You must access the more advanced
-    features of <code>adb</code>, such as shell commands, from the command line.</li>
-
-    <li><a href="{@docRoot}guide/developing/tools/proguard.html">ProGuard</a>: Allows code obfuscation,
-    shrinking, and optimization. ADT integrates ProGuard as part of the build, if you <a href=
-    "{@docRoot}guide/developing/tools/proguard.html#enabling">enable it</a>.</li>
-  </ul>
-
-<h2 id="editors">Code Editors</h2>
-
-  <p>In addition to Eclipse's standard editor features, ADT provides custom XML editors to help
-  you create and edit Android manifests, resources, menus, and layouts in a form-based or graphical
-  mode. Double-clicking on an XML file in Eclipse's package explorer opens the
-  appropriate XML editor.
-
-    <div class="sidebox-wrapper">
-    <div class="sidebox">
-      <h2>Google I/O Session Video</h2>
-      <p>View the segment on the <a href=
-      "http://www.youtube.com/watch?v=Oq05KqjXTvs#t=30m50s">XML editors</a> for more
-      information.</p>
-    </div>
-  </div>
-
-  <p class="note"><strong>Note:</strong> You can edit Android-specific XML files (such as a layout
-or manifest) in both a graphical mode and also an XML markup mode. You can switch between
-these modes with the pair of tabs at the bottom of each custom XML editor.</p>
-
-  <p>In addition, some special file types that don't have custom editors, such as drawables, animations,
-  and color files offer editing enhancements such as XML tag completion.</p>
-
-<p>ADT provides the following custom, form-based XML editors:</p>
-
-  <dl>
-
-    <dt><strong>Graphical Layout Editor</strong></dt>
-
-    <dd>Edit and design your XML layout files with a drag and drop interface. The layout editor
-    renders your interface as well, offering you a preview as you design your layouts. This editor
-    is invoked when you open an XML file with a view declared (usually declared in
-    <code>res/layout</code>. For more information, see <a href="#graphical-editor">Graphical Layout
-    Editor</a>.</dd>
-
-    <dt><strong>Android Manifest Editor</strong></dt>
-
-    <dd>Edit Android manifests with a simple graphical interface. This editor is invoked
-    when you open an <code>AndroidManifest.xml</code> file.</dd>
-
-    <dt><strong>Menu Editor</strong></dt>
-
-    <dd>Edit menu groups and items with a simple graphical interface. This editor is
-    invoked when you open an XML file with a <code>&lt;menu&gt;</code> declared (usually located in
-    the <code>res/menu</code> folder).</dd>
-
-    <dt><strong>Resources Editor</strong></dt>
-
-    <dd>Edit resources with a simple graphical interface. This editor is invoked when
-    you open an XML file with a <code>&lt;resources&gt;</code> tag declared.</dd>
-
-    <dt><strong>XML Resources Editor</strong></dt>
-
-    <dd>Edit XML resources with a simple graphical interface. This editor is invoked
-    when you open an XML file.</dd>
-  </dl>
-
-
-  <h3 id="resource-linking">Resource linking enhancements</h3>
-  <p>In addition to the normal code editing features of Eclipse, ADT provides enhancements to the Android
-  development experience that allow you to quickly jump to declarations of various types of resources such
-  as strings or layout files. You can access these enhancements by holding down the control key and
-  clicking on the following items:
-
-      <ul>
-
-        <li>A resource identifier, such as <code>R.id.button1</code>, jumps
-        to the XML definition of the view.</li>
-
-        <li>A declaration in the <code>R.java</code> file, such as <code>public
-        static final int Button01=0x7f050000"</code>, jumps to the corresponding XML definition.</li>
-
-        <li>An activity or service definition in your manifest, such as
-        <code>&lt;activity android:name=".TestActivity"&gt;</code>, jumps to the corresponding Java class. You can
-        jump from an activity definition (or service definition) into the corresponding Java class.</li>
-
-        <li>You can jump to any value definition (e.g. <code>@string:foo</code>), regardless of
-which XML file
-        "foo" is defined in.</li>
-
-        <li>Any file-based declaration, such as <code>@layout/bar</code>, opens the file.</li>
-
-        <li>Non-XML resources, such as <code>@drawable/icon</code>, launches
-        Eclipse's default application for the given file type, which in this case is an
-        image.</li>
-
-        <li><code>@android</code> namespace resources opens the resources found in
-        the SDK install area.</li>
-
-        <li>Custom views in XML layouts, such as <code>&lt;foo.bar.MyView&gt;&lt;/foo.bar.MyView&gt;</code>,
-        or <code>&lt;view class="foo.bar.MyView"&gt;</code>) jump to the corresponding custom view classes.</li>
-
-        <li>An XML attribute such as <code>@android:string/ok</code> or <code>android.R.string.id</code> in Java code
-        opens the file that declares the strings. The XML tab opens when doing this, not
-        the form-based editor.</li>
-
-      </ul>
-
-  <h2 id="graphical-editor">Graphical Layout Editor</h2>
-
-  <p>ADT provides many features to allow you to design and build your application's user interface.
-  Many of these features are in the graphical layout editor, which you can access by opening one of
-  your application's XML layout files in Eclipse.
-  </p>
-
-  <p>The graphical layout editor is the main screen that you use to visually design and build your
-  UI. It is split up into the following parts:</p>
-
-  <dl>
-    <dt><strong>Canvas</strong></dt>
-
-    <dd>In the middle of the editor is the canvas. It provides the rendered view of your
-    layout and supports dragging and dropping of UI widgets
-    directly from the palette. You can select the platform version used to render the items in
-    the canvas. Each platform version has its own look and feel, which might be the similar to or
-    radically different from another platform version. The canvas renders the appropriate look
-    and feel for the currently selected platform version.
-    This platform version does not need to be the same as the version that your
-    application targets.
-
-    <p>The canvas also provides
-    context-sensitive actions in the layout actions bar, such as adjusting layout margins and
-orientation.
-    The layout actions bar displays available actions depending on the selected UI element in the
-    canvas.</p>
-    </dd>
-
-    <dt><strong>Outline</strong></dt>
-
-    <dd>On the right side of the editor is the outline view. It displays a hierarchical
-    view of your layout where you can do things such as reorder of views. The outline
-    view exposes similar functionality as the canvas but displays your layout in an ordered
-    list instead of a rendered preview.</dd>
-
-    <dt><strong>Palette</strong></dt>
-
-    <dd>On the left side of the editor is the palette. It provides a set of widgets that
-    you can drag onto the canvas. The palette shows rendered previews of the
-    widgets for easy lookup of desired UI widgets.</dd>
-
-    <dt><strong>Configuration Chooser</strong></dt>
-
-    <dd>At the top of the editor is the configuration chooser.
-    It provides options to change a layout's rendering mode or screen type.</dd>
-  </dl>
-
-  <img src="{@docRoot}images/layout_editor.png" alt="graphical layout editor screenshot"
-  height="500" id="layout-editor" name="layout-editor">
-
-  <p class="img-caption"><strong>Figure 1.</strong> Graphical layout editor</p>
-
-  <h3 id="canvas">Canvas and outline view</h3>
-
-  <div class="sidebox-wrapper">
-    <div class="sidebox">
-      <h2>Google I/O Session Video</h2>
-
-      <p>View the segment on the <a href=
-      "http://www.youtube.com/watch?v=Oq05KqjXTvs#t=7m16s">canvas and outline view</a> and the
-      <a href="http://www.youtube.com/watch?v=Oq05KqjXTvs#t=11m43s">layout actions bar</a>
-      for more information.
-      </p>
-    </div>
-  </div>
-
-  <p>The canvas is the area where you can drag and drop UI widgets from the palette to design your
-  layout. The canvas offers a rendered preview of your layout depending on factors such as the
-  selected platform version, screen orientation, and currently selected theme that you specify in
-  the <a href="#configuration-chooser">configuration chooser</a>. You can also drag and drop
-  items into the outline view, which displays your layout in a hierarchical list. The outline view
-  exposes much of the same functionality as the canvas but offers another method of organization
-  that is beneficial for ordering and quickly selecting items. When you right-click a specific item
-  in the canvas or outline view, you can access a context-sensitive menu that lets you modify the
-  following attributes of the layout or view:</p>
-
-  <dl>
-    <dt><strong>View and layout properties</strong></dt>
-
-    <dd>
-      When you right-click a view or layout in the canvas or outline view, it brings up a
-      context-sensitive menu that lets you set things such as:
-
-      <ul>
-        <li>ID of the view or layout</li>
-
-        <li>Text of the view</li>
-
-        <li>Layout width</li>
-
-        <li>Layout height</li>
-
-        <li>Properties such as alpha or clickable</li>
-      </ul>
-    </dd>
-
-    <dt><strong>Animation preview and creation</strong></dt>
-
-    <dd>
-      If your layout or view is animated, you can preview the animation directly in the canvas
-      (when you select Android 3.0 or later as the platform version in the configuration chooser).
-      Right-click an item in the canvas and select <strong>Play Animation</strong>. If
-      animation is not associated with item, an option is available in the menu to create one.
-
-      <p>View the segment on the <a href=
-      "http://www.youtube.com/watch?v=Oq05KqjXTvs#t=28m30s">animation features</a> for more
-      information.</p>
-    </dd>
-
-    <dt><strong>Extract as Include</strong></dt>
-
-    <dd>You can extract parts of a current layout into its own layout file,
-    which you can then include in any layout with a single line of XML. See <a href=
-    "#extract-as-include">Layout Refactoring Support</a> for more information.</dd>
-  </dl>
-
-  <h4>Other canvas features</h4>
-
-  <p>The canvas has additional features not available in the outline view:</p>
-
-  <ul>
-
-    <li>Edit views with the layout actions bar: The context-sensitive layout actions bar allows you to
-    edit how a view is laid out in your UI. The available actions depend on the currently
-    selected view and its parent layout. Some common actions include
-    toggling the fill mode of the view and specifying margins. For instance, if you select a
-    {@link android.widget.Button}
-    in a {@link android.widget.LinearLayout}, you see actions related to the {@link
-android.widget.LinearLayout}, such as a toggle to switch
-    between horizontal and vertical layout, and a toggle to control whether its children are
-    aligned along their text baseline. You will also see toolbar actions to control the individual
-    layout attributes of the child, such as whether the child should stretch out to match its
-    parent's width and height, a dropdown action to set the child's layout gravity, a button to open
-    a margin editor, and a layout weight editor.</li>
-
-    <li>Edit a nested layout in its current context: If you are editing a layout
-    that includes another layout, you can edit the included layout in the layout that included
-    it.</li>
-
-    <li>Preview drag and drop location: When you drag and drop a UI widget onto the canvas, ruler
-    markers appear showing you the approximate location of the UI widget depending on the
-    type of layout, such as {@link android.widget.RelativeLayout} or {@link
-    android.widget.LinearLayout}.</li>
-
-    <li>Preview animations: You can preview view and layout animations when you select Android 2.1
-    or later for the platform version in the configuration bar.</li>
-
-    <li>Render layouts in real-time: Layouts are rendered as accurately as possible according to
-    the platform version, including the appropriate system and action bars.</li>
-
-    <li>Support for fragments: Fragments can be rendered in the same screen as the layout that
-    includes the fragments.</li>
-
-  </ul>
-
-  <img src="{@docRoot}images/canvas.png" alt="screenshot of the canvas" height="553">
-
-  <p class="img-caption"><strong>Figure 2.</strong> Canvas portion of the layout editor showing
-  a rendered preview of an application</p>
-
-  <img src=
-  "{@docRoot}images/layout_outline.png" alt="screenshot of the outline view" height="185">
-
-  <p class="img-caption"><strong>Figure 3.</strong> Outline view showing current layout's structure</p>
-
-  <h3 id="palette">Palette</h3>
-
-  <div class="sidebox-wrapper">
-    <div class="sidebox">
-      <h2>Google I/O Session Video</h2>
-
-      <p>View the segment on the <a href=
-      "http://www.youtube.com/watch?v=Oq05KqjXTvs#t=7m53s">palette</a> for more information.</p>
-    </div>
-  </div>
-
-  <p>The palette contains the UI widgets that you can drag and drop onto the canvas and add to your
-  layout. The pallete categorizes the widgets and shows rendered previews
-  for easier lookup. The main features of the palette include:</p>
-
-  <ul>
-    <li>Different modes of rendered previews include: icons only, icons and text, tiny previews,
-    small previews, and previews (rendered in real size). Previews are only available for layouts
-    rendered with the latest revisions of Android 2.1 (API Level 7) or later.</li>
-
-    <li>Custom views in your project or library projects are added under custom views
-    category.</li>
-
-    <li>Arrange UI widgets alphabetically or by category.</li>
-  </ul>
-  <img src="{@docRoot}images/palette.png" alt="palette screenshot" height="566">
-
-  <p class="img-caption"><strong>Figure 4.</strong> Palette showing available UI widgets</p>
-
-  <h3 id="config-chooser">Configuration chooser</h3>
-
-  <div class="sidebox-wrapper">
-    <div class="sidebox">
-      <h2>Google I/O Session Video</h2>
-
-      <p>View the segment on the <a href=
-      "http://www.youtube.com/watch?v=Oq05KqjXTvs#t=12m51s">configuration chooser</a> for more
-      information.</p>
-    </div>
-  </div>
-
-
-  <p>The configuration chooser allows you to create and configure different configurations of
-  a layout for different situations, such as one for landscape and one for portrait mode. You can
-  set the following options for each configuration of a layout:
-  </p>
-      <ul>
-        <li>Screen type combo box: Predefined screen settings for common device configurations. You
-        can also create your own by selecting <strong>Custom...</strong>.</li>
-
-        <li>Screen orientation combo box: Portrait or Landscape screen orientation.</li>
-
-        <li>Theme combo box: Predefined themes or a custom theme that you have created.</li>
-
-        <li>Platform combo box: Platform version used to render the canvas and palette as well as
-        displaying appropriate themes.</li>
-
-        <li>Custom layout combo boxes: The locale, dock, and time of day combo boxes let you select
-        different versions of the same layout depending on the device's current state. You can
-        create a new version of a layout with the <strong>Create</strong> button.</li>
-      </ul>
-
-      <img src="{@docRoot}images/layout_bar.png" alt=
-  "configuration chooser screenshot" height="50" id="configuration-chooser" name="configuration chooser">
-
-  <p class="img-caption"><strong>Figure 5.</strong> Configuration chooser</p>
-
-  <h2 id="refactoring">Layout Refactoring Support</h2>
-
-  <div class="sidebox-wrapper">
-    <div class="sidebox">
-      <h2>Google I/O Session Video</h2>
-
-      <p>View the segment on <a href=
-      "http://www.youtube.com/watch?v=Oq05KqjXTvs#t=18m00s">refactoring features</a> for a rundown
-of the more important refactoring features.</p>
-
-    </div>
-  </div>
-
-  <p>In both the graphical and XML layout editor, there are many features that help you quickly
-  refactor your layouts. The following list describes the major refactoring support:</p>
-
-  <dl>
-
-    <dt><strong>Change layout</strong></dt>
-    <dd>This lets you change the layout on the fly and re-renders the canvas for you.
-    You can apply this refactoring to any layout and the layout is converted to the new type if
-    possible. In many cases, the opening and closing tags of the layout's XML element are changed
-    along with things such as ID attributes and their references. However, for some supported
-    types, ADT attempts to preserve the layout, such as changing a {@link
-    android.widget.LinearLayout} to a {@link android.widget.RelativeLayout}.</dd>
-
-    <dt><strong>Change widget</strong></dt>
-    <dd>This lets you select one or more widgets and converts them to a new widget type. In
-    addition to changing the element name, it also removes any
-    attributes that are not supported by the new widget type and adds in any mandatory attributes
-    required by the new widget type. If the current ID of a widget includes the
-    current widget type in its ID (such as a <code>&lt;Button&gt;</code> widget named
-    <code>"button1"</code>), then the ID is changed to match the new widget type and all
-    references are updated.</dd>
-
-    <dt id="extract-as-include"><strong>Extract as include</strong></dt>
-    <dd>This lets you extract views inside of an existing layout into their own separate layout
-    file. An <code>include</code> tag that points to the newly created layout file is inserted
-    into the existing layout file. Right-click the view or layout and select <strong>Extract as
-    Include...</strong>.</dd>
-
-    <dt><strong>Extract string</strong></dt>
-    <dd>Extract strings from either XML or Java files into their own separate resource file.</dd>
-
-    <dt><strong>Extract style</strong></dt>
-    <dd>Extract style-related attributes from a layout and define them in a new
-    <code>styles.xml</code> file. You can select multiple views and this refactoring extracts all
-    of the same styles into one style and assigns that style to all the views that use it.</dd>
-
-    <dt><strong>Wrap-in container</strong></dt>
-    <dd>This lets you select one or more sibling elements and wrap them in a new container. This
-    can be applied to the root element as well, in which case the namespace declaration attributes
-    will be transferred to the new root. This refactoring also transfers <code>layout_</code>
-    attribute references to the new root, For example, suppose you have a {@link android.widget.RelativeLayout}.
-    If other widgets have layout constraints pointing to your widget, wrapping the widget causes
-    these constraints to point to the parent instead.</dd>
-
-    <dt><strong>Quick Assistant</strong></dt>
-    <dd>Provides refactoring suggestions depending on the current context. Press
-    <strong>Ctrl-1</strong> (or <strong>Cmd-1</strong> on
-    Mac) in an editor, and Eclipse provides a list of possible refactorings depending on the
-    context. The Quick Assistant provides fast access to all of the above refactorings, where applicable.
-    For example, if you are editing an XML value and decide you want to extract it out
-    as a string, place the text cursor in the string and press Ctrl-1 to see the refactoring context
-    menu.</dd>
-  </dl>
diff --git a/docs/html/guide/developing/tools/aidl.jd b/docs/html/guide/developing/tools/aidl.jd
deleted file mode 100644
index 731aef7..0000000
--- a/docs/html/guide/developing/tools/aidl.jd
+++ /dev/null
@@ -1,465 +0,0 @@
-page.title=Android Interface Definition Language (AIDL)
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<ol>
-  <li><a href="#Defining">Defining an AIDL Interface</a>
-    <ol>
-      <li><a href="#Create">Create the .aidl file</a></li>
-      <li><a href="#Implement">Implement the interface</a></li>
-      <li><a href="#Expose">Expose the interface to clients</a></li>
-    </ol>
-  </li>
-  <li><a href="#PassingObjects">Passing Objects over IPC</a></li>
-  <li><a href="#Calling">Calling an IPC Method</a></li>
-</ol>
-
-<h2>See also</h2>
-<ol>
-  <li><a href="{@docRoot}guide/topics/fundamentals/bound-services.html">Bound Services</a></li>
-</ol>
-
-</div>
-</div>
-
-
-<p>AIDL (Android Interface Definition Language) is similar to other IDLs you might have
-worked with. It allows you to define the programming interface that both
-the client and service agree upon in order to communicate with each other using
-interprocess communication (IPC). On Android, one process cannot normally access the
-memory of another process. So to talk, they need to decompose their objects into primitives that the
-operating system can understand, and marshall the objects across that boundary for you. The code to
-do that marshalling is tedious to write, so Android handles it for you with AIDL.</p>
-
-<p class="note"><strong>Note:</strong> Using AIDL is necessary only if you allow clients from
-different applications to access your service for IPC and want to handle multithreading in your
-service. If you do not need to perform concurrent IPC across
-different applications, you should create your interface by <a
-href="{@docRoot}guide/topics/fundamentals/bound-services.html#Binder">implementing a
-Binder</a> or, if you want to perform IPC, but do <em>not</em> need to handle multithreading,
-implement your interface <a
-href="{@docRoot}guide/topics/fundamentals/bound-services.html#Messenger">using a Messenger</a>.
-Regardless, be sure that you understand <a
-href="{@docRoot}guide/topics/fundamentals/bound-services.html">Bound Services</a> before
-implementing an AIDL.</p>
-
-<p>Before you begin designing your AIDL interface, be aware that calls to an AIDL interface are
-direct function calls.  You should not make assumptions about the thread in which the call
-occurs.  What happens is different depending on whether the call is from a thread in the
-local process or a remote process. Specifically:</p>
-
-<ul>
-<li>Calls made from the local process are executed in the same thread that is making the call. If
-this is your main UI thread, that thread continues to execute in the AIDL interface.  If it is
-another thread, that is the one that executes your code in the service.  Thus, if only local
-threads are accessing the service, you can completely control which threads are executing in it (but
-if that is the case, then you shouldn't be using AIDL at all, but should instead create the
-interface by <a href="{@docRoot}guide/topics/fundamentals/bound-services.html#Binder">implementing a
-Binder</a>).</li>
-
-<li>Calls from a remote process are dispatched from a thread pool the platform maintains inside of
-your own process.  You must be prepared for incoming calls from unknown threads, with multiple calls
-happening at the same time.  In other words, an implementation of an AIDL interface must be
-completely thread-safe.</li>
-
-<li>The {@code oneway} keyword modifies the behavior of remote calls.  When used, a remote call does
-not block; it simply sends the transaction data and immediately returns.
-The implementation of the interface eventually receives this as a regular call from the {@link
-android.os.Binder} thread pool as a normal remote call. If {@code oneway} is used with a local call,
-there is no impact and the call is still synchronous.</li>
-</ul>
-
-
-<h2 id="Defining">Defining an AIDL Interface</h2>
-
-<p>You must define your AIDL interface in an {@code .aidl} file using the Java
-programming language syntax, then save it in the source code (in the {@code src/} directory) of both
-the application hosting the service and any other application that binds to the service.</p>
-
-<p>When you build each application that contains the {@code .aidl} file, the Android SDK tools
-generate an {@link android.os.IBinder} interface based on the {@code .aidl} file and save it in
-the project's {@code gen/} directory. The service must implement the {@link android.os.IBinder}
-interface as appropriate. The client applications can then bind to the service and call methods from
-the {@link android.os.IBinder} to perform IPC.</p>
-
-<p>To create a bounded service using AIDL, follow these steps:</p>
-<ol>
-    <li><a href="#CreateAidl">Create the .aidl file</a>
-      <p>This file defines the programming interface with method signatures.</p>
-    </li>
-    <li><a href="#ImplementTheInterface">Implement the interface</a>
-      <p>The Android SDK tools generate an interface in the Java programming language, based on your
-{@code .aidl} file. This interface has an inner abstract class named {@code Stub} that extends
-{@link android.os.Binder} and implements methods from your AIDL interface. You must extend the
-{@code Stub} class and implement the methods.</p>
-    </li>
-    <li><a href="#ExposeTheInterface">Expose the interface to clients</a>
-      <p>Implement a {@link android.app.Service Service} and override {@link
-android.app.Service#onBind onBind()} to return your implementation of the {@code Stub}
-class.</p>
-    </li>
-</ol>
-
-<p class="caution"><strong>Caution:</strong> Any changes that you make to your AIDL interface after
-your first release must remain backward compatible in order to avoid breaking other applications
-that use your service. That is, because your {@code .aidl} file must be copied to other applications
-in order for them to access your service's interface, you must maintain support for the original
-interface.</p>
-
-
-<h3 id="Create">1. Create the .aidl file</h3>
-
-<p>AIDL uses a simple syntax that lets you declare an interface with one or more methods that can
-take parameters and return values. The parameters and return values can be of any type, even other
-AIDL-generated interfaces.</p>
-
-<p>You must construct the {@code .aidl} file using the Java programming language. Each {@code .aidl}
-file must define a single interface and requires only the interface declaration and method
-signatures.</p>
-
-<p>By default, AIDL supports the following data types:</p>
-
-<ul>
-  <li>All primitive types in the Java programming language (such as {@code int}, {@code long},
-{@code char}, {@code boolean}, and so on)</li>
-  <li>{@link java.lang.String}</li>
-  <li>{@link java.lang.CharSequence}</li>
-  <li>{@link java.util.List}
-    <p>All elements in the {@link java.util.List} must be one of the supported data types in this
-list or one of the other AIDL-generated interfaces or parcelables you've declared. A {@link
-java.util.List} may optionally be used as a "generic" class (for example,
-<code>List&lt;String&gt;</code>).
-The actual concrete class that the other side receives is always an {@link
-java.util.ArrayList}, although the method is generated to use the {@link
-java.util.List} interface.</p>
-  </li>
-  <li>{@link java.util.Map}
-    <p>All elements in the {@link java.util.Map} must be one of the supported data types in this
-list or one of the other AIDL-generated interfaces or parcelables you've declared.  Generic maps,
-(such as those of the form
-{@code Map&lt;String,Integer&gt;} are not supported. The actual concrete class that the other side
-receives is always a {@link java.util.HashMap}, although the method is generated to
-use the {@link java.util.Map} interface.</p>
-  </li>
-</ul>
-
-<p>You must include an {@code import} statement for each additional type not listed above, even if
-they are defined in the same package as your interface.</p>
-
-<p>When defining your service interface, be aware that:</p>
-<ul>
-  <li>Methods can take zero or more parameters, and return a value or void.</li>
-  <li>All non-primitive parameters require a directional tag indicating which way the data goes.
-Either <code>in</code>, <code>out</code>, or <code>inout</code> (see the example below).
-    <p>Primitives are <code>in</code> by default, and cannot be otherwise.</p>
-    <p class="caution"><strong>Caution:</strong> You should limit the direction to what is truly
-needed, because marshalling parameters is expensive.</p></li>
-  <li>All code comments included in the {@code .aidl} file are included in the generated {@link
-android.os.IBinder} interface (except for comments before the import and package
-statements).</li>
-    <li>Only methods are supported; you cannot expose static fields in AIDL.</li>
-</ul>
-
-<p>Here is an example {@code .aidl} file:</p>
-
-<pre>
-// IRemoteService.aidl
-package com.example.android;
-
-// Declare any non-default types here with import statements
-
-/** Example service interface */
-interface IRemoteService {
-    /** Request the process ID of this service, to do evil things with it. */
-    int getPid();
-
-    /** Demonstrates some basic types that you can use as parameters
-     * and return values in AIDL.
-     */
-    void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat,
-            double aDouble, String aString);
-}
-</pre>
-
-<p>Simply save your {@code .aidl} file in your project's {@code src/} directory and when you
-build your application, the SDK tools generate the {@link android.os.IBinder} interface file in your
-project's {@code gen/} directory. The generated file name matches the {@code .aidl} file name, but
-with a {@code .java} extension (for example, {@code IRemoteService.aidl} results in {@code
-IRemoteService.java}).</p>
-
-<p>If you use Eclipse, the incremental build generates the binder class almost immediately. If you
-do not use Eclipse, then the Ant tool generates the binder class next time you build your
-application&mdash;you should build your project with <code>ant debug</code> (or <code>ant
-release</code>) as soon as you're finished writing the {@code .aidl} file, so that your code can
-link against the generated class.</p>
-
-
-<h3 id="Implement">2. Implement the interface</h3>
-
-<p>When you build your application, the Android SDK tools generate a {@code .java} interface file
-named after your {@code .aidl} file. The generated interface includes a subclass named {@code Stub}
-that is an abstract implementation of its parent interface (for example, {@code
-YourInterface.Stub}) and declares all the methods from the {@code .aidl} file.</p>
-
-<p class="note"><strong>Note:</strong> {@code Stub} also
-defines a few helper methods, most notably {@code asInterface()}, which takes an {@link
-android.os.IBinder} (usually the one passed to a client's {@link
-android.content.ServiceConnection#onServiceConnected onServiceConnected()} callback method) and
-returns an instance of the stub interface. See the section <a href="#calling">Calling an IPC
-Method</a> for more details on how to make this cast.</p>
-
-<p>To implement the interface generated from the {@code .aidl}, extend the generated {@link
-android.os.Binder} interface (for example, {@code YourInterface.Stub}) and implement the methods
-inherited from the {@code .aidl} file.</p>
-
-<p>Here is an example implementation of an interface called {@code IRemoteService} (defined by the
-{@code IRemoteService.aidl} example, above) using an anonymous instance:</p>
-  
-<pre>
-private final IRemoteService.Stub mBinder = new IRemoteService.Stub() {
-    public int getPid(){
-        return Process.myPid();
-    }
-    public void basicTypes(int anInt, long aLong, boolean aBoolean,
-        float aFloat, double aDouble, String aString) {
-        // Does nothing
-    }
-};
-</pre>
-
-<p>Now the {@code mBinder} is an instance of the {@code Stub} class (a {@link android.os.Binder}),
-which defines the RPC interface for the service. In the next step, this instance is exposed to
-clients so they can interact with the service.</p>
-
-<p>There are a few rules you should be aware of when implementing your AIDL interface: </p>
-<ul>
-    <li>Incoming calls are not guaranteed to be executed on the main thread, so you need to think
-about multithreading from the start and properly build your service to be thread-safe.</li>
-    <li>By default, RPC calls are synchronous. If you know that the service takes more than a few
-milliseconds to complete a request, you should not call it from the activity's main thread, because
-it might hang the application (Android might display an &quot;Application is Not Responding&quot;
-dialog)&mdash;you should usually call them from a separate thread in the client. </li>
-    <li>No exceptions that you throw are sent back to the caller.</li>
-</ul>
-
-
-<h3 id="Expose">3. Expose the interface to clients</h3>
-
-<p>Once you've implemented the interface for your service, you need to expose it to
-clients so they can bind to it. To expose the interface
-for your service, extend {@link android.app.Service Service} and implement {@link
-android.app.Service#onBind onBind()} to return an instance of your class that implements
-the generated {@code Stub} (as discussed in the previous section). Here's an example
-service that exposes the {@code IRemoteService} example interface to clients. </p>
-
-<pre>
-public class RemoteService extends Service {
-    &#64;Override
-    public void onCreate() {
-        super.onCreate();
-    }
-
-    &#64;Override
-    public IBinder onBind(Intent intent) {
-        // Return the interface
-        return mBinder;
-    }
-
-    private final IRemoteService.Stub mBinder = new IRemoteService.Stub() {
-        public int getPid(){
-            return Process.myPid();
-        }
-        public void basicTypes(int anInt, long aLong, boolean aBoolean,
-            float aFloat, double aDouble, String aString) {
-            // Does nothing
-        }
-    };
-}
-</pre>
-
-<p>Now, when a client (such as an activity) calls {@link android.content.Context#bindService
-bindService()} to connect to this service, the client's {@link
-android.content.ServiceConnection#onServiceConnected onServiceConnected()} callback receives the
-{@code mBinder} instance returned by the service's {@link android.app.Service#onBind onBind()}
-method.</p>
-
-<p>The client must also have access to the interface class, so if the client and service are in
-separate applications, then the client's application must have a copy of the {@code .aidl} file
-in its {@code src/} directory (which generates the {@code android.os.Binder}
-interface&mdash;providing the client access to the AIDL methods).</p>
-
-<p>When the client receives the {@link android.os.IBinder} in the {@link
-android.content.ServiceConnection#onServiceConnected onServiceConnected()} callback, it must call
-<code><em>YourServiceInterface</em>.Stub.asInterface(service)</code> to cast the returned
-parameter to <code><em>YourServiceInterface</em></code> type. For example:</p>
-
-<pre>
-IRemoteService mIRemoteService;
-private ServiceConnection mConnection = new ServiceConnection() {
-    // Called when the connection with the service is established
-    public void onServiceConnected(ComponentName className, IBinder service) {
-        // Following the example above for an AIDL interface,
-        // this gets an instance of the IRemoteInterface, which we can use to call on the service
-        mIRemoteService = IRemoteService.Stub.asInterface(service);
-    }
-
-    // Called when the connection with the service disconnects unexpectedly
-    public void onServiceDisconnected(ComponentName className) {
-        Log.e(TAG, "Service has unexpectedly disconnected");
-        mIRemoteService = null;
-    }
-};
-</pre>
-
-<p>For more sample code, see the <a
-href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html">{@code
-RemoteService.java}</a> class in <a
-href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a>.</p>
-
-
-
-
-
-
-  
-
-<h2 id="PassingObjects">Passing Objects over IPC</h2>
-
-<p>If you have a class that you would like to send from one process to another through
-an IPC interface, you can do that. However, you must ensure that the code for your class is
-available to the other side of the IPC channel and your class must support the {@link
-android.os.Parcelable} interface. Supporting the {@link android.os.Parcelable} interface is
-important because it allows the Android system to decompose objects into primitives that can be
-marshalled across processes.</p>
-
-<p>To create a class that supports the {@link android.os.Parcelable} protocol, you must do the
-following:</b>
-<ol>
-<li>Make your class implement the {@link android.os.Parcelable} interface.</li>
-<li>Implement {@link android.os.Parcelable#writeToParcel writeToParcel}, which takes the
-current state of the object and writes it to a {@link android.os.Parcel}.</li>
-<li>Add a static field called <code>CREATOR</code> to your class which is an object implementing
-the {@link android.os.Parcelable.Creator Parcelable.Creator} interface.</li>
-<li>Finally, create an {@code .aidl} file that declares your parcelable class (as shown for the
-{@code Rect.aidl} file, below).
-  <p>If you are using a custom build process, do <em>not</em> add the {@code .aidl} file to your
-build. Similar to a header file in the C language, this {@code .aidl} file isn't compiled.</p></li>
-</ol>
-
-<p>AIDL uses these methods and fields in the code it generates to marshall and unmarshall
-your objects.</p>
-
-<p>For example, here is a {@code Rect.aidl} file to create a {@code Rect} class that's
-parcelable:</p>
-
-<pre>
-package android.graphics;
-
-// Declare Rect so AIDL can find it and knows that it implements
-// the parcelable protocol.
-parcelable Rect;
-</pre>
-
-<p>And here is an example of how the {@link android.graphics.Rect} class implements the
-{@link android.os.Parcelable} protocol.</p>
-
-<pre>
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public final class Rect implements Parcelable {
-    public int left;
-    public int top;
-    public int right;
-    public int bottom;
-
-    public static final Parcelable.Creator&lt;Rect&gt; CREATOR = new
-Parcelable.Creator&lt;Rect&gt;() {
-        public Rect createFromParcel(Parcel in) {
-            return new Rect(in);
-        }
-
-        public Rect[] newArray(int size) {
-            return new Rect[size];
-        }
-    };
-
-    public Rect() {
-    }
-
-    private Rect(Parcel in) {
-        readFromParcel(in);
-    }
-
-    public void writeToParcel(Parcel out) {
-        out.writeInt(left);
-        out.writeInt(top);
-        out.writeInt(right);
-        out.writeInt(bottom);
-    }
-
-    public void readFromParcel(Parcel in) {
-        left = in.readInt();
-        top = in.readInt();
-        right = in.readInt();
-        bottom = in.readInt();
-    }
-}
-</pre>
-
-<p>The marshalling in the {@code Rect} class is pretty simple.  Take a look at the other
-methods on {@link android.os.Parcel} to see the other kinds of values you can write
-to a Parcel.</p>
-
-<p class="warning"><strong>Warning:</strong> Don't forget the security implications of receiving
-data from other processes.  In this case, the {@code Rect} reads four numbers from the {@link
-android.os.Parcel}, but it is up to you to ensure that these are within the acceptable range of
-values for whatever the caller is trying to do.  See <a
-href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a> for more
-information about how to keep your application secure from malware.</p>
-
-
-
-<h2 id="Calling">Calling an IPC Method</h2>
-
-<p>Here are the steps a calling class must take to call a remote interface defined with AIDL: </p>
-<ol>
-    <li>Include the {@code .aidl} file in the project {@code src/} directory.</li>
-    <li>Declare an instance of the {@link android.os.IBinder} interface (generated based on the
-AIDL). </li>
-    <li>Implement {@link android.content.ServiceConnection ServiceConnection}. </li>
-    <li>Call {@link
-android.content.Context#bindService(android.content.Intent,android.content.ServiceConnection,int)
-        Context.bindService()}, passing in your {@link
-android.content.ServiceConnection} implementation. </li>
-    <li>In your implementation of {@link
-android.content.ServiceConnection#onServiceConnected onServiceConnected()},
-you will receive an {@link android.os.IBinder} instance (called <code>service</code>). Call
-<code><em>YourInterfaceName</em>.Stub.asInterface((IBinder)<em>service</em>)</code> to
-        cast the returned parameter to <em>YourInterface</em> type.</li>
-    <li>Call the methods that you defined on your interface. You should always trap
-        {@link android.os.DeadObjectException} exceptions, which are thrown when
-        the connection has broken; this will be the only exception thrown by remote
-        methods.</li>
-    <li>To disconnect, call {@link
-android.content.Context#unbindService(android.content.ServiceConnection)
-        Context.unbindService()} with the instance of your interface. </li>
-</ol>
-<p>A few comments on calling an IPC service:</p>
-<ul>
-    <li>Objects are reference counted across processes. </li>
-    <li>You can send anonymous objects
-        as method arguments. </li>
-</ul>
-
-<p>For more information about binding to a service, read the <a
-href="{@docRoot}guide/topics/fundamentals/bound-services.html#Binding">Bound Services</a>
-document.</p>
-
-<p>Here is some sample code demonstrating calling an AIDL-created service, taken
-    from the Remote Service sample in the ApiDemos project.</p>
-<p>{@sample development/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.java
-    calling_a_service}</p>
diff --git a/docs/html/guide/developing/tools/android.jd b/docs/html/guide/developing/tools/android.jd
deleted file mode 100644
index 295a720..0000000
--- a/docs/html/guide/developing/tools/android.jd
+++ /dev/null
@@ -1,393 +0,0 @@
-page.title=android
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>{@code android} is an important development tool that lets you:</p>
-
-  <ul>
-    <li>Create, delete, and view Android Virtual Devices (AVDs). See <a href= 
-    "{@docRoot}guide/developing/devices/managing-avds-cmdline.html">Managing AVDs from the Command
-Line</a>.</li>
-
-    <li>Create and update Android projects. See <a href= 
-    "{@docRoot}guide/developing/projects/projects-cmdline.html">Managing Projects from
-    the Command Line</a>.</li>
-
-    <li>Update your Android SDK with new platforms, add-ons, and documentation. See <a href= 
-    "{@docRoot}sdk/adding-components.html">Adding SDK Packages</a>.</li>
-  </ul>If you are using Eclipse, the <code>android</code> tool's features are integrated
-  into ADT, so you should not need to use this tool directly.
-  
-  <p class="note"><strong>Note:</strong> The documentation of options below is not exhaustive
-and may be out of date. For the most current list of options, execute <code>android
---help</code>.</p>
-  
-  
-  
-
-  <h2>Syntax</h2>
-  <pre>android [global options] action [action options]</pre>
-
-  <h3>Global Options</h3>
-
-  <dl>
-    <dt><code>-s</code></dt>
-
-    <dd>Silent mode: only errors are printed out</dd>
-
-    <dt><code>-h</code></dt>
-
-    <dd>Usage help</dd>
-
-    <dt><code>-v</code></dt>
-
-    <dd>Verbose mode: errors, warnings and informational messages are printed.</dd>
-  </dl>
-
-  <h3>AVD actions and options</h3>
-
-  <table>
-    <tr>
-      <th width="15%">Action</th>
-
-      <th width="20%">Option</th>
-
-      <th width="30%">Description</th>
-
-      <th>Comments</th>
-    </tr>
-
-    <tr>
-      <td rowspan="6"><code>avd</code></td>
-
-      <td>None</td>
-
-      <td>Launch the AVD Manager</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td rowspan="6"><code>sdk</code></td>
-
-      <td>None</td>
-
-      <td>Launch the Android SDK Manager</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td rowspan="6"><code>create avd</code></td>
-
-      <td><code>-n &lt;name&gt;</code></td>
-
-      <td>The name for the AVD.</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-t &lt;targetID&gt;</code></td>
-
-      <td>Target ID of the system image to use with the new AVD. To obtain a list of available
-      targets, use <code>android list targets</code></td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-c &lt;path&gt;|&lt;size&gt;[K|M]</code></td>
-
-      <td>The path to the SD card image to use with this AVD or the size of a new SD card image to
-      create for this AVD. For example, <code>-c path/to/sdcard</code> or <code>-c
-      1000M</code>.</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-f</code></td>
-
-      <td>Force creation of the AVD</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-p &lt;path&gt;</code></td>
-
-      <td>Path to the location at which to create the directory for this AVD's files.</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-s &lt;name&gt;|&lt;width&gt;-&lt;height&gt;</code></td>
-
-      <td>The skin to use for this AVD, identified by name or dimensions. The <code>android</code>
-      tool scans for a matching skin by name or dimension in the <code>skins/</code> directory of
-      the target referenced in the <code>-t &lt;targetID&gt;</code> argument. For example, <code>-s
-      HVGA-L</code></td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>delete avd</code></td>
-
-      <td><code>-n &lt;name&gt;</code></td>
-
-      <td>The name of the AVD to delete</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td rowspan="3"><code>move avd</code></td>
-
-      <td><code>-n &lt;name&gt;</code></td>
-
-      <td>The name of the AVD to move</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-p &lt;path&gt;</code></td>
-
-      <td>Path to the location at which to create the directory for this AVD's files.</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-r &lt;new-name&gt;</code></td>
-
-      <td>New name of the AVD if you want to rename it</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>update avd</code></td>
-
-      <td><code>-n &lt;name&gt;</code></td>
-
-      <td>The name of the AVD to move</td>
-
-      <td>Required</td>
-    </tr>
-  </table>
-
-  <h3>Project actions and options</h3>
-
-  <table>
-    <tr>
-      <th width="15%">Action</th>
-
-      <th width="20%">Option</th>
-
-      <th width="30%">Description</th>
-
-      <th>Comments</th>
-    </tr>
-
-    <tr>
-      <td rowspan="5"><code>create project</code></td>
-
-      <td><code>-n &lt;name&gt;</code></td>
-
-      <td>The name for the project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-t &lt;targetID&gt;</code></td>
-
-      <td>Target ID of the system image to use with the new AVD. To obtain a list of available
-      targets, use <code>android list targets</code></td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-k &lt;path&gt;|&lt;size&gt;[K|M]</code></td>
-
-      <td>Package namespace</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-a</code></td>
-
-      <td>Name for the default Activity class</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-p &lt;path&gt;</code></td>
-
-      <td>Location of your project directory</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td rowspan="5"><code>update project</code></td>
-
-      <td><code>-n &lt;name&gt;</code></td>
-
-      <td>The name of the project to update</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-p &lt;path&gt;</code></td>
-
-      <td>Location path of the project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-l &lt;library path&gt;</code></td>
-
-      <td>Location path of an Android Library to add, relative to the main project</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-s &lt;subprojects&gt;</code></td>
-
-      <td>Update any projects in subfolders such as test projects</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-t &lt;targetID&gt;</code></td>
-
-      <td>Target id to set for the project</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td rowspan="3"><code>create-test-project</code></td>
-
-      <td><code>-n &lt;name&gt;</code></td>
-
-      <td>The name of the project</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-p &lt;path&gt;</code></td>
-
-      <td>Location path of the project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-m &lt;main&gt;</code></td>
-
-      <td>The name of the project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td rowspan="2"><code>update-test-project</code></td>
-
-      <td><code>-p &lt;path&gt;</code></td>
-
-      <td>Location path of the project to test, relative to the new project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-m &lt;main&gt;</code></td>
-
-      <td>The main class of the project to test</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td rowspan="4"><code>create-lib-project</code></td>
-
-      <td><code>-k &lt;packageName&gt;</code></td>
-
-      <td>(Required) Package name of the library project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-p &lt;path&gt;</code></td>
-
-      <td>Location path of the project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-t &lt;targetID&gt;</code></td>
-
-      <td>Target ID of the library project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-n &lt;name&gt;</code></td>
-
-      <td>The name of the project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td rowspan="3"><code>update-lib-project</code></td>
-
-      <td><code>-p &lt;path&gt;</code></td>
-
-      <td>Location path of the project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-l &lt;libraryPath&gt;</code></td>
-
-      <td>Location path of an Android Library to add, relative to the main project</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-t &lt;name&gt;</code></td>
-
-      <td>Target ID of the library project</td>
-
-      <td></td>
-    </tr>
-  </table>
-
-  <h3>Update actions</h3>
-  <dl>
-  <dt><code>update adb</code></dt>
-  <dd>Updates adb to support the USB devices declared in the SDK add-ons.</dd>
-   
-  <dt><code>update sdk</code></dt>
-  <dd>Updates the SDK by suggesting new platforms to install if available.</dd>
diff --git a/docs/html/guide/developing/tools/avd.html b/docs/html/guide/developing/tools/avd.html
deleted file mode 100644
index c8455db..0000000
--- a/docs/html/guide/developing/tools/avd.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/guide/developing/devices/index.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/guide/developing/devices/index.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/developing/tools/bmgr.jd b/docs/html/guide/developing/tools/bmgr.jd
deleted file mode 100644
index d63dcf2..0000000
--- a/docs/html/guide/developing/tools/bmgr.jd
+++ /dev/null
@@ -1,193 +0,0 @@
-page.title=bmgr
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<!-- quickview box content here -->
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>bmgr quickview</h2>
-<p><code>bmgr</code> lets you control the backup/restore system on an Android device.
-
-  <h2>In this document</h2>
-  <ol>
-<li><a href="#backup">Forcing a Backup Operation</a></li>
-<li><a href="#restore">Forcing a Restore Operation</a></li>
-<li><a href="#other">Other Commands</a></li>
-  </ol>
-
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}guide/topics/data/backup.html">Data Backup</a></li>
-  </ol>
-
-</div>
-</div>
-
-<!-- normal page content here -->
-
-<p><code>bmgr</code> is a shell tool you can use to interact with the Backup Manager
-on Android devices supporting API Level 8 or greater.  It provides commands to induce backup
-and restore operations so that you don't need to repeatedly wipe data or take similar
-intrusive steps in order to test your application's backup agent.  These commands are
-accessed via the <a href="{@docRoot}guide/developing/tools/adb.html">adb</a> shell.
-
-<p>For information about adding support for backup in your application, read <a
-href="{@docRoot}guide/topics/data/backup.html">Data Backup</a>, which includes a guide to testing
-your application using {@code bmgr}.</p>
-
-
-<h2 id="backup">Forcing a Backup Operation</h2>
-
-<p>Normally, your application must notify the Backup Manager when its data has changed, via {@link
-android.app.backup.BackupManager#dataChanged()}. The Backup Manager will then invoke your
-backup agent's {@link
-android.app.backup.BackupAgent#onBackup(ParcelFileDescriptor,BackupDataOutput,ParcelFileDescriptor)
-onBackup()} implementation at some time in the future. However, instead of calling {@link
-android.app.backup.BackupManager#dataChanged()}, you can invoke a backup request from the command
-line by running the <code>bmgr backup</code> command:
-
-    <pre class="no-pretty-print">adb shell bmgr backup <em>&lt;package&gt;</em></pre>
-
-<p><code><em>&lt;package&gt;</em></code> is the formal package name of the application you wish to
-schedule for
-backup. When you execute this backup command, your application's backup agent will be invoked to
-perform a backup operation at some time in the future (via your {@link
-android.app.backup.BackupAgent#onBackup(ParcelFileDescriptor,BackupDataOutput,ParcelFileDescriptor)
-onBackup()} method), though there is no guarantee when it will occur. However, you can force all
-pending backup operations to run immediately by using the <code>bmgr run</code> command:
-
-    <pre class="no-pretty-print">adb shell bmgr run</pre>
-
-<p>This causes a backup pass to execute immediately, invoking the backup agents of all applications
-that had previously called {@link android.app.backup.BackupManager#dataChanged()} since the
-last backup operation, plus any applications which had been manually scheduled for
-backup via <code>bmgr backup</code>.
-
-
-
-<h2 id="restore">Forcing a Restore Operation</h2>
-
-<p>Unlike backup operations, which are batched together and run on an occasional basis, restore
-operations execute immediately.  The Backup Manager currently provides two kinds of restore
-operations.  The first kind restores an entire device with the data that has been backed up.  This
-is typically performed only when a device is first provisioned (to replicate settings and other
-saved state from the user's previous device) and is an operation that only the system can
-perform. The second kind of restore operation restores
-a single application to its "active" data set; that is, the application will abandon its current
-data and revert to the last-known-good data that is held in the current backup image. You can
-invoke this second restore operation with the {@link
-android.app.backup.BackupManager#requestRestore(RestoreObserver) requestRestore()} method. The
-Backup Manager will then invoke your backup agent's {@link
-android.app.backup.BackupAgent#onRestore(BackupDataInput,int,ParcelFileDescriptor)
-onRestore()} implementation.
-
-<p>While testing your application, you can immediately invoke the restore operation (bypassing the
-{@link android.app.backup.BackupManager#requestRestore(RestoreObserver) requestRestore()} method)
-for your application by using the <code>bmgr restore</code> command:
-
-    <pre class="no-pretty-print">adb shell bmgr restore <em>&lt;package&gt;</em></pre>
-
-<p><code><em>&lt;package&gt;</em></code> is the formal Java-style package name of the application
-participating in the backup/restore mechanism, which you would like to restore. The Backup
-Manager will immediately instantiate the application's backup agent and invoke it for restore. This
-will happen even if your application is not currently running.
-
-
-
-
-
-<h2 id="other">Other Commands</h2>
-
-<h3>Wiping data</h3>
-
-<p>The data for a single application can be erased from the active data set on demand.  This is
-very useful while you're developing a backup agent, in case bugs lead you to write corrupt data
-or saved state information. You can wipe an application's data with the <code>bmgr wipe</code>
-command:
-
-    <pre class="no-pretty-print">adb shell bmgr wipe <em>&lt;package&gt;</em></pre>
-
-<p><code><em>&lt;package&gt;</em></code> is the formal package name of the application whose data
-you wish to
-erase.  The next backup operation that the application's agent processes will look as
-though the application had never backed anything up before.
-
-
-<h3>Enabling and disabling backup</h3>
-
-<p>You can see whether the Backup Manager is operational at all with the <code>bmgr
-enabled</code> command:
-
-    <pre class="no-pretty-print">adb shell bmgr enabled</pre>
-
-<p>This might be useful if your application's backup agent is never being invoked for backup, to
-verify whether the operating system thinks it should be performing such operations at all.</p>
-
-<p>You can also directly disable or enable the Backup Manager with this command:
-
-    <pre class="no-pretty-print">adb shell bmgr enable <em>&lt;boolean&gt;</em></pre>
-
-<p><code><em>&lt;boolean&gt;</em></code> is either <code>true</code> or <code>false</code>.
-This is equivalent to disabling or enabling backup in the device's main Settings UI.</p>
-
-<p class="warning"><strong>Warning!</strong>  When backup is disabled, the current backup transport
-will explicitly wipe
-the entire active data set from its backend storage.  This is so that when a user says
-they do <em>not</em> want their data backed up, the Backup Manager respects that wish.  No further
-data will be saved from the device, and no restore operations will be possible, unless the Backup
-Manager is re-enabled (either through Settings or through the above <code>bmgr</code> command).
-
-
-
-
-<!-- The following is not useful to applications, but may be some useful information some day...
-
-
-<h2 id="transports">Applying a Backup Transport</h2>
-
-<p>A "backup transport" is the code module responsible for moving backup and restore data
-to and from some storage location.  A device can have multipe transports installed, though only
-one is active at any given time.  Transports are identified by name.  You can see what
-transports are available on your device or emulator by running the
-<code>bmgr list transports</code> command:
-
-    <pre class="no-pretty-print">adb shell bmgr list transports</pre>
-
-<p>The output of this command is a list of the transports available on the device.  The currently
-active transport is flagged with a <code>*</code> character.  Transport names may look like
-component names (for example, <code>android/com.android.internal.backup.LocalTransport</code>),
-but they need not be, and the strings are never used as direct class references.  The use of
-a component-like naming scheme is simply for purposes of preventing name collisions.
-
-<p>You can change which transport is currently active from the command line as well:
-
-    <pre class="no-pretty-print">adb shell bmgr transport <em>&lt;name&gt;</em></pre>
-
-<p><code><em>&lt;name&gt;</em></code> is one of the names as printed by the <code>bmgr list
-transports</code>
-command.  From this point forward, backup and restore operations will be directed through the
-newly-selected transport.  Backup state tracking is managed separately for each transport, so
-switching back and forth between them will not corrupt the saved state.
-
-
-
-
-<h2 id="restoresets">Viewing Restore Sets</h2>
-
-<p>All of the application data that a device has written to its backup transport is tracked
-as a group that is collectively called a "restore set," because each data set is
-most often manipulated during a restore operation. When a device is provisioned for the first
-time, a new restore set is established.  You can get a listing of all the restore sets available to
-the current transport by running the <code>bmgr list sets</code> command:
-
-    <pre class="no-pretty-print">adb shell bmgr list sets</pre>
-
-<p>The output is a listing of available restore sets, one per line.  The first item on each line is
-a token (a hexadecimal value that identifies the restore set to the transport).  Following
-the token is a string that briefly identifies the restore set.
-Only the token is used within the backup and restore mechanism.
-
-
--->
diff --git a/docs/html/guide/developing/tools/ddms.html b/docs/html/guide/developing/tools/ddms.html
deleted file mode 100644
index 052ccc9..0000000
--- a/docs/html/guide/developing/tools/ddms.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/guide/developing/debugging/ddms.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/guide/developing/debugging/ddms.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/developing/tools/dmtracedump.jd b/docs/html/guide/developing/tools/dmtracedump.jd
deleted file mode 100644
index cb9ad26..0000000
--- a/docs/html/guide/developing/tools/dmtracedump.jd
+++ /dev/null
@@ -1,66 +0,0 @@
-page.title=dmtracedump
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-
- <p><code>dmtracedump</code> is a tool that gives you an alternate way of generating
-  graphical call-stack diagrams from trace log files (instead of using Traceview).</p>
-  
-  <p>This document is a reference to the available command line options. For more information on generating trace
-  logs, see <a href="{@docRoot}guide/developing/debugging/debugging-tracing.html">Profiling with
-  Traceview and dmtracedump</a>.</p>
-
-  <p>The usage for <code>dmtracedump</code> is:</p>
-  <pre>
-dmtracedump [-ho] [-s sortable] [-d trace-base-name] [-g outfile] &lt;trace-base-name&gt;
-</pre>
-
-  <p>The tool then loads trace log data from <code>&lt;trace-base-name&gt;.data</code> and
-  &lt;trace-base-name&gt;.key. The table below lists the options for dmtracedump.</p>
-
-  <table>
-    <tr>
-      <th>Option</th>
-
-      <th>Description</th>
-    </tr>
-
-    <tr>
-      <td><nobr><code>-d&nbsp;<em>&lt;trace-base-name&gt;</em></code></nobr></td>
-
-      <td>Diff with this trace name</td>
-    </tr>
-
-    <tr>
-      <td><code>-g&nbsp;<em>&lt;outfile&gt;</em></code></td>
-
-      <td>Generate output to &lt;outfile&gt;</td>
-    </tr>
-
-    <tr>
-      <td><code>-h</code></td>
-
-      <td>Turn on HTML output</td>
-    </tr>
-
-    <tr>
-      <td><code>-o</code></td>
-
-      <td>Dump the trace file instead of profiling</td>
-    </tr>
-
-    <tr>
-      <td><code>-d&nbsp;<em>&lt;trace-base-name&gt;</em></code></td>
-
-      <td>URL base to the location of the sortable javascript file</td>
-    </tr>
-
-    <tr>
-      <td><code>-t&nbsp;&lt;percent&gt;</code></td>
-
-      <td>Minimum threshold for including child nodes in the graph (child's inclusive time as a
-      percentage of parent inclusive time). If this option is not used, the default threshold is
-      20%.</td>
-    </tr>
-  </table>
\ No newline at end of file
diff --git a/docs/html/guide/developing/tools/draw9patch.jd b/docs/html/guide/developing/tools/draw9patch.jd
deleted file mode 100644
index 7cf0e4b..0000000
--- a/docs/html/guide/developing/tools/draw9patch.jd
+++ /dev/null
@@ -1,59 +0,0 @@
-page.title=Draw 9-patch
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>The Draw 9-patch tool allows you to easily create a 
-   {@link android.graphics.NinePatch} graphic using a WYSIWYG editor.</p>
-<p>For an introduction to Nine-patch graphics and how they work, please read 
-the section about Nine-patch in the 
-<a href="{@docRoot}guide/topics/graphics/2d-graphics.html#nine-patch">2D Graphics</a>
-document.</p>
-
-<img src="{@docRoot}images/draw9patch-norm.png" style="float:right" alt="" height="300" width="341"
-/>
-
-<p>Here's a quick guide to create a Nine-patch graphic using the Draw 9-patch tool.
-You'll need the PNG image with which you'd like to create a NinePatch.</p>
-
-<ol>
-  <li>From a terminal, launch the <code>draw9patch</code> application from your SDK 
-    <code>/tools</code> directory.
-    </li>
-  <li>Drag your PNG image into the Draw 9-patch window 
-    (or <strong>File</strong> > <strong>Open 9-patch...</strong> to locate the file).
-    Your workspace will now open.
-    <p>The left pane is your drawing area, in which you can edit the lines for the
-     stretchable patches and content area. The right 
-     pane is the preview area, where you can preview your graphic when stretched.</p>
-    </li>
-  <li>Click within the 1-pixel perimeter to draw the lines that define the stretchable 
-    patches and (optional) content area. Right-click (or hold Shift and click, on Mac) to erase 
-    previously drawn lines.
-    </li>
-  <li>When done, select <strong>File</strong> > <strong>Save 9-patch...</strong>
-    <p>Your image will be saved with the <code>.9.png</code> file name.</p>
-    </li>
-</ol>
-    <p class="note"><strong>Note:</strong> A normal PNG file (<code>*.png</code>) will be 
-     loaded with an empty one-pixel border added around the image, in which you can draw 
-     the stretchable patches and content area.
-     A previously saved 9-patch file (<code>*.9.png</code>) will be loaded as-is, 
-     with no drawing area added, because it already exists.</p>
-
-<img src="{@docRoot}images/draw9patch-bad.png" style="float:right;clear:both" alt="" height="300" width="341"
-/>
-
-<p>Optional controls include:</p>
-<ul>
-  <li><strong>Zoom</strong>: Adjust the zoom level of the graphic in the drawing area.</li>
-  <li><strong>Patch scale</strong>: Adjust the scale of the images in the preview area.</li>
-  <li><strong>Show lock</strong>: Visualize the non-drawable area of the graphic on mouse-over.</li>
-  <li><strong>Show patches</strong>: Preview the stretchable patches in the drawing area (pink is a 
-    stretchable patch).</li>
-  <li><strong>Show content</strong>: Highlight the content area in the preview images 
-    (purple is the area in which content is allowed).</li>
-  <li><strong>Show bad patches</strong>: Adds a red border around patch areas that may
-  produce artifacts in the graphic when stretched. Visual coherence of your stretched
-  image will be maintained if you eliminate all bad patches.</li>
-<ul>
diff --git a/docs/html/guide/developing/tools/emulator.jd b/docs/html/guide/developing/tools/emulator.jd
deleted file mode 100644
index 21d4263..0000000
--- a/docs/html/guide/developing/tools/emulator.jd
+++ /dev/null
@@ -1,581 +0,0 @@
-page.title=Android Emulator
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#KeyMapping">Keyboard Commands</a></li>
-    <li><a href="#startup-options">Command Line Parameters</a></li>
-  </ol>
-
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}guide/developing/devices/emulator.html">Using the Android Emulator</a></li>
-    <li><a href="{@docRoot}guide/developing/devices/index.html">Managing Virtual Devices</a></li>
-  </ol>
-
-</div>
-</div>
-
-
-<p>The Android SDK includes a mobile device emulator &mdash; a virtual mobile device
-that runs on your computer. The emulator lets you develop and test
-Android applications without using a physical device.</p>
-
-<p>This document is a reference to the available command line options and the keyboard mapping to
-device keys.
-For a complete guide to using the Android Emulator, see
-<a href="{@docRoot}guide/developing/devices/emulator.html">Using the Android Emulator</a>.
-
-
-<h2 id="KeyMapping">Keyboard Commands</h2>
-
-<p>Table 1 summarizes the mappings between the emulator keys and the keys of your keyboard.</p>
-
-<p class="table-caption"><strong>Table 1.</strong> Emulator keyboard mapping</p>
-<table  border="0" style="clear:left;">
-  <tr>
-    <th>Emulated Device Key </th>
-    <th>Keyboard Key </th>
-  </tr>
-  <tr>
-    <td>Home</td>
-    <td>HOME</td>
-  </tr>
-  <tr>
-    <td>Menu (left softkey)</td>
-    <td>F2 <em>or</em> Page-up button</td>
-  </tr>
-  <tr>
-    <td>Star (right softkey)</td>
-    <td>Shift-F2 <em>or </em>Page Down</td>
-  </tr>
-  <tr>
-    <td>Back</td>
-    <td>ESC</td>
-  </tr>
-  <tr>
-    <td>Call/dial button </td>
-    <td>F3</td>
-  </tr>
-  <tr>
-    <td>Hangup/end call button</td>
-    <td>F4</td>
-  </tr>
-  <tr>
-    <td>Search</td>
-    <td>F5 </td>
-  </tr>
-  <tr>
-    <td>Power button</td>
-    <td>F7 </td>
-  </tr>
-  <tr>
-    <td>Audio volume up button</td>
-    <td>KEYPAD_PLUS, Ctrl-F5</td>
-  </tr>
-
-  <tr>
-    <td>Audio volume down button</td>
-    <td>KEYPAD_MINUS, Ctrl-F6</td>
-  </tr>
-  <tr>
-    <td>Camera button</td>
-    <td>Ctrl-KEYPAD_5, Ctrl-F3</td>
-  </tr>
-  <tr>
-    <td>Switch to previous layout orientation (for example, portrait, landscape)</td>
-    <td>KEYPAD_7, Ctrl-F11</td>
-  </tr>
-  <tr>
-    <td>Switch to next layout orientation (for example, portrait, landscape)</td>
-    <td>KEYPAD_9, Ctrl-F12</td>
-  </tr>
-  <tr>
-    <td>Toggle cell networking on/off</td>
-    <td>F8</td>
-  </tr>
-  <tr>
-    <td>Toggle code profiling</td>
-    <td>F9 (only with <code>-trace</code> startup option)</td>
-  </tr>
-  <tr>
-    <td>Toggle fullscreen mode</td>
-    <td>Alt-Enter</td>
-  </tr>
-  <tr>
-    <td>Toggle trackball mode</td>
-    <td>F6</td>
-  </tr>
-  <tr>
-    <td>Enter trackball mode temporarily (while key is pressed)</td>
-    <td>Delete</td>
-  </tr>
-  <tr>
-    <td>DPad left/up/right/down</td>
-    <td>KEYPAD_4/8/6/2</td>
-  </tr>
-  <tr>
-    <td>DPad center click</td>
-    <td>KEYPAD_5</td>
-  </tr>
-  <tr>
-    <td>Onion alpha increase/decrease</td>
-    <td>KEYPAD_MULTIPLY(*) / KEYPAD_DIVIDE(/)</td>
-  </tr>
-</table>
-
-
-<h2 id="startup-options">Command Line Parameters</h2>
-
-<p>The emulator supports a variety of options that you can specify
-when launching the emulator, to control its appearance or behavior.
-Here's the command-line syntax of the options available to the {@code emulator} program:</p>
-
-<pre>emulator -avd &lt;avd_name&gt; [-&lt;option&gt; [&lt;value&gt;]] ... [-&lt;qemu args&gt;]</pre>
-
-<p class="table-caption"><strong>Table 2.</strong> Emulator command line parameters</p>
-<table>
-<tr>
-  <th width="10%" >Category</th>
-  <th width="20%" >Option</th>
-    <th width="30%" >Description</th>
-    <th width="40%" >Comments</th>
-</tr>
-
-<tr>
-  <td>AVD</td>
-  <td><code>-avd &lt;avd_name&gt;</code> or <br>
-      <code>@&lt;avd_name&gt;</code></td>
-  <td><strong>Required</strong>. Specifies the AVD to load for this emulator
-      instance.</td>
-  <td>You must create an AVD configuration before launching the emulator. For
-      information, see <a href="{@docRoot}guide/developing/devices/managing-avds.html">Managing
-      AVDs with AVD Manager</a>.</td>
-<tr>
-  <td rowspan="7">Disk Images</td>
-  <td><code>-cache&nbsp;&lt;filepath&gt;</code></td>
-  <td>Use &lt;filepath&gt; as the working cache partition image. </td>
-  <td>An absolute or relative path to the current working directory.
-  If no cache file is specified, the emulator's default behavior is to use a temporary file instead.
-  <p>For more information on disk images, use <code>-help-disk-images</code>.</p>
-</td></tr>
-<tr>
-  <td><code>-data&nbsp;&lt;filepath&gt;</code></td>
-  <td>Use {@code &lt;filepath&gt;} as the working user-data disk image. </td>
-  <td>Optionally, you can specify a path relative to the current working directory.
-  If <code>-data</code> is not used, the emulator looks for a file named {@code userdata-qemu.img}
-  in the storage area of the AVD being used (see <code>-avd</code>).
-</td></tr>
-<!--
-<tr>
-  <td><code>-datadir &lt;dir&gt;</code></td>
-  <td>Search for the user-data disk image specified in <code>-data</code> in &lt;dir&gt;</td>
-  <td><code>&lt;dir&gt;</code> is a path relative to the current working directory.
-
-<p>If you do not specify <code>-datadir</code>, the emulator looks for the user-data image
-in the storage area of the AVD being used (see <code>-avd</code>)</p><p>For more information
-on disk images, use <code>-help-disk-images</code>.</p>
-</td></tr>
--->
-<!--
-<tr>
-  <td><code>-image&nbsp;&lt;filepath&gt;</code></td>
-  <td>Use &lt;filepath&gt; as the system image.</td>
-  <td>Optionally, you can specify a path relative to the current working directory.
-   Default is &lt;system&gt;/system.img.</td>
-</tr>
--->
-<tr>
-  <td><code>-initdata&nbsp;&lt;filepath&gt;</code></td>
-  <td>When resetting the user-data image (through <code>-wipe-data</code>), copy the contents
-  of this file to the new user-data disk image. By default, the emulator copies the <code>&lt;system&gt;/userdata.img</code>.</td>
-  <td>Optionally, you can specify a path relative to the current working directory. See also <code>-wipe-data</code>.
-  <p>For more information on disk images, use <code>-help-disk-images</code>.</p></td>
-</tr>
-<tr>
-  <td><code>-nocache</code></td>
-  <td>Start the emulator without a cache partition.</td>
-  <td>See also <code>-cache &lt;file&gt;</code>.</td>
-</tr>
-<tr>
-  <td><code>-ramdisk&nbsp;&lt;filepath&gt;</code></td>
-  <td>Use &lt;filepath&gt; as the ramdisk image.</td>
-  <td>Default value is <code>&lt;system&gt;/ramdisk.img</code>.
-  <p>Optionally, you can specify a path relative to the current working directory.
-  For more information on disk images, use <code>-help-disk-images</code>.</p>
-</td>
-</tr>
-<tr>
-  <td><code>-sdcard&nbsp;&lt;filepath&gt;</code></td>
-  <td>Use &lt;file&gt; as the SD card image.</td>
-  <td>Default value is <code>&lt;system&gt;/sdcard.img</code>.
-  <p>Optionally, you can specify a path relative to the current working directory. For more information on disk images, use <code>-help-disk-images</code>.</p>
-</td>
-</tr>
-<!--
-<tr>
- <td><code>-system&nbsp;&lt;dirpath&gt;</code></td>
- <td>Search for system, ramdisk and user data images in &lt;dir&gt;.</td>
- <td><code>&lt;dir&gt;</code> is a directory path relative to the current
-  working directory.</td>
-</tr>
--->
-<tr>
-  <td><code>-wipe-data</code></td>
-  <td>Reset the current user-data disk image (that is, the file specified by <code>-datadir</code> and
-  <code>-data</code>, or the default file). The emulator deletes all data from the user data image file,
-  then copies the contents of the file at <code>-inidata</code> data to the image file before starting.
-  </td>
-  <td>See also <code>-initdata</code>.
-  <p>For more information on disk images, use <code>-help-disk-images</code>.</p>
-</td>
-</tr>
-<tr>
-  <td rowspan="9">Debug</td>
-  <td><code>-debug &lt;tags&gt;</code></td>
-  <td>Enable/disable debug messages for the specified debug tags.</td>
-  <td><code>&lt;tags&gt;</code> is a space/comma/column-separated list of debug component names.
-  Use <code>-help-debug-tags</code> to print a list of debug component names that you can use. </td>
-</tr>
-<tr>
-  <td><code>-debug-&lt;tag&gt;</code></td>
-  <td>Enable/disable debug messages for the specified debug tag.</td>
-  <td rowspan="2">Use <code>-help-debug-tags</code> to print a list of debug component names that you can use in <code>&lt;tag&gt;</code>. </td>
-</tr>
-<tr>
-  <td><code>-debug-no-&lt;tag&gt;</code></td>
-  <td>Disable debug messages for the specified debug tag.</td>
-</tr>
-<tr>
-  <td><code>-logcat &lt;logtags&gt;</code></td>
-  <td>Enable logcat output with given tags.</td>
-  <td>If the environment variable ANDROID_LOG_TAGS is defined and not
-    empty, its value will be used to enable logcat output by default.</td>
-</tr>
-<tr>
-  <td><code>-shell</code></td>
-  <td>Create a root shell console on the current terminal.</td>
-  <td>You can use this command even if the adb daemon in the emulated system is broken.
-  Pressing Ctrl-c from the shell stops the emulator instead of the shell.</td>
-</tr>
-<tr>
-  <td><code>-shell-serial&nbsp;&lt;device&gt;</code></td>
-  <td>Enable the root shell (as in <code>-shell</code> and specify the QEMU character
-  device to use for communication with the shell.</td>
-  <td>&lt;device&gt; must be a QEMU device type. See the documentation for '-serial <em>dev</em>' at
-  <a href="http://wiki.qemu.org/download/qemu-doc.html">http://wiki.qemu.org/download/qemu-doc.html</a>
-  for a list of device types.
-
-<p>Here are some examples: </p>
-<ul>
-  <li><code>-shell-serial stdio</code> is identical to <code>-shell</code></li>
-  <li><code>-shell-serial tcp::4444,server,nowait</code> lets you communicate with the shell over TCP port 4444</li>
-  <li><code>-shell-serial fdpair:3:6</code> lets a parent process communicate with the shell using fds 3 (in) and 6 (out)</li>
-  <li><code>-shell-serial fdpair:0:1</code> uses the normal stdin and stdout fds, except that QEMU won't tty-cook the data.</li>
-  </ul>
-</td>
-</tr>
-<tr>
-  <td><code>-show-kernel &lt;name&gt;</code></td>
-  <td>Display kernel messages.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-trace &lt;name&gt;</code></td>
-  <td>Enable code profiling (press F9 to start), written to a specified file.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-verbose</code></td>
-  <td>Enable verbose output.</td>
-  <td>Equivalent to <code>-debug-init</code>.
-<p>You can define the default verbose output options used by emulator instances in the Android environment variable
-ANDROID_VERBOSE. Define the options you want to use in a comma-delimited list, specifying only the stem of each option:
-<code>-debug-&lt;tags&gt;.</code> </p>
-<p>Here's an example showing ANDROID_VERBOSE defined with the <code>-debug-init</code> and <code>-debug-modem</code> options:
-<p><code>ANDROID_VERBOSE=init,modem</code></p>
-<p>For more information about debug tags, use <code>&lt;-help-debug-tags&gt;</code>.</p>
-</td>
-</tr>
-<tr>
-  <td rowspan="6">Media</td>
-  <td><code>-audio &lt;backend&gt;</code></td>
-  <td>Use the specified audio backend.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-audio-in &lt;backend&gt;</code></td>
-  <td>Use the specified audio-input backend.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-audio-out &lt;backend&gt;</code></td>
-  <td>Use the specified audio-output backend.</td>
-  <td>&nbsp;</td>
-</tr>
-<!--<tr>
-  <td><code>-mic &lt;device or file&gt;</code></td>
-  <td>Use device or WAV file for audio input.</td>
-  <td>&nbsp;</td>
-</tr>
--->
-<tr>
-  <td><code>-noaudio</code></td>
-  <td>Disable audio support in the current emulator instance.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-radio &lt;device&gt;</code></td>
-  <td>Redirect radio modem interface to a host character device.</td>
-  <td>&nbsp;</td></tr>
-<tr>
-  <td><code>-useaudio</code></td>
-  <td>Enable audio support in the current emulator instance.</td>
-  <td>Enabled by default. </td>
-</tr>
-
-<tr>
-  <td rowspan="7">Network</td>
-  <td><code>-dns-server &lt;servers&gt;</code></td>
-  <td>Use the specified DNS server(s). </td>
-  <td>The value of <code>&lt;servers&gt;</code> must be a comma-separated list of up to 4 DNS server names or
-  IP addresses.</td>
-</tr>
-<tr>
-  <td><code>-http-proxy &lt;proxy&gt;</code></td>
-  <td>Make all TCP connections through a specified HTTP/HTTPS proxy</td>
-  <td>The value of <code>&lt;proxy&gt;</code> can be one of the following:<br>
-     <code>http://&lt;server&gt;:&lt;port&gt;</code><br>
-     <code>http://&lt;username&gt;:&lt;password&gt;@&lt;server&gt;:&lt;port&gt;</code>
-  <p>The <code>http://</code> prefix can be omitted. If the <code>-http-proxy &lt;proxy&gt;</code> command is not supplied,
-  the emulator looks up the <code>http_proxy</code> environment variable and automatically uses any value matching
-  the <code>&lt;proxy&gt;</code> format described above.</p></td>
-</tr>
-<tr>
-  <td><code>-netdelay &lt;delay&gt;</code></td>
-  <td>Set network latency emulation to &lt;delay&gt;.</td>
-  <td>Default value is <code>none</code>. See the table in
-    <a href="{@docRoot}guide/developing/devices/emulator.html#netdelay">Network Delay Emulation</a>
-    for supported <code>&lt;delay&gt;</code> values. </td>
-</tr>
-<tr>
-  <td><code>-netfast</code></td>
-  <td>Shortcut for <code>-netspeed full -netdelay none</code></td>
-  <td>&nbsp;</td></tr>
-<tr>
-  <td><code>-netspeed &lt;speed&gt;</code></td>
-  <td>Set network speed emulation to &lt;speed&gt;.</td>
-  <td>Default value is <code>full</code>. See the table in
-    <a href="{@docRoot}guide/developing/devices/emulator.html#netspeed">Network Speed Emulation</a> for
-  supported <code>&lt;speed&gt;</code> values. </td>
-</tr>
-<tr>
-  <td><code>-port &lt;port&gt;</code></td>
-  <td>Set the console port number for this emulator instance to <code>&lt;port&gt;</code>.</td>
-  <td>The console port number must be an even integer between 5554 and 5584, inclusive. <code>&lt;port&gt;</code>+1
-  must also be free and will be reserved for ADB.</td>
-</tr>
-<tr>
-  <td><code>-report-console &lt;socket&gt;</code></td>
-  <td>Report the assigned console port for this emulator instance to a remote third party
-  before starting the emulation. </td>
-  <td><code>&lt;socket&gt;</code> must use one of these formats:
-
-<p><code>tcp:&lt;port&gt;[,server][,max=&lt;seconds&gt;]</code></br>
-<code>unix:&lt;port&gt;[,server][,max=&lt;seconds&gt;]</code></p>
-
-<p>Use <code>-help-report-console</code></p> to view more information about this topic. </td>
-</tr>
-<tr>
-  <td rowspan="10">System</td>
-  <td><code>-cpu-delay &lt;delay&gt;</code></td>
-  <td>Slow down emulated CPU speed by &lt;delay&gt; </td>
-  <td>Supported values for &lt;delay&gt; are integers between 0 and 1000.
-
-<p>Note that the &lt;delay&gt; does not correlate to clock speed or other absolute metrics
-&mdash; it simply represents an abstract, relative delay factor applied non-deterministically
-in the emulator. Effective performance does not always
-scale in direct relationship with &lt;delay&gt; values.</p>
-</td>
-</tr>
-<tr>
-  <td><code>-gps &lt;device&gt;</code></td>
-  <td>Redirect NMEA GPS to character device.</td>
-  <td>Use this command to emulate an NMEA-compatible GPS unit connected to
-  an external character device or socket. The format of <code>&lt;device&gt;</code> must be QEMU-specific
-  serial device specification. See the documentation for 'serial -dev' at
-  <a href="http://wiki.qemu.org/download/qemu-doc.html">http://wiki.qemu.org/download/qemu-doc.html</a>.
-</td>
-</tr>
-<tr>
-  <td><code>-nojni</code></td>
-  <td>Disable JNI checks in the Dalvik runtime.</td><td>&nbsp;</td></tr>
-<tr>
-  <td><code>-qemu</code></td>
-  <td>Pass arguments to the qemu emulator software.</td>
-  <td><p class="caution"><strong>Important:</strong> When using this option, make sure it is the
-  <em>last option</em> specified, since all options after it are interpretted as qemu-specific
-  options.</p></td></tr>
-<tr>
-  <td><code>-qemu -enable-kvm</code></td>
-  <td>Enable KVM acceleration of the emulator virtual machine.</td>
-  <td>This option is only effective when your system is set up to use
-  <a href="{@docRoot}guide/developing/devices/emulator.html#vm-linux">KVM-based VM acceleration</a>.
-  You can optionally specify a memory size ({@code -m &lt;size&gt;}) for the VM, which should match
-  your emulator's memory size:</p>
-  {@code -qemu -m 512 -enable-kvm}<br>
-  {@code -qemu -m 1024 -enable-kvm}
-  </td></tr>
-<tr>
-  <td><code>-qemu -h</code></td>
-  <td>Display qemu help.</td>
-  <td></td></tr>
-<tr>
-  <td><code>-gpu on</code></td>
-  <td>Turn on graphics acceleration for the emulator.</td>
-  <td>This option is only available for emulators using a system image with API Level 15, revision 3
-  and higher. For more information, see
-  <a href="{@docRoot}guide/developing/devices/emulator.html#accel-graphics">Using the Android
-  Emulator</a>.</td></tr>
-<tr>
-  <td><code>-radio &lt;device&gt;</code></td>
-  <td>Redirect radio mode to the specified character device.</td>
-  <td>The format of <code>&lt;device&gt;</code> must be QEMU-specific
-  serial device specification. See the documentation for 'serial -dev' at
-<a href="http://wiki.qemu.org/download/qemu-doc.html">http://wiki.qemu.org/download/qemu-doc.html</a>.
-</td>
-</tr>
-<tr>
- <td><code>-timezone &lt;timezone&gt;</code></td>
- <td>Set the timezone for the emulated device to &lt;timezone&gt;, instead of the host's timezone.</td>
- <td><code>&lt;timezone&gt;</code> must be specified in zoneinfo format. For example:
-<p>"America/Los_Angeles"<br>
-"Europe/Paris"</p>
-</td>
-</tr>
-<tr>
- <td><code>-version</code></td>
- <td>Display the emulator's version number.</td>
- <td>&nbsp;</td>
-</tr>
-<tr>
-  <td rowspan="12">UI</td>
-  <td><code>-dpi-device &lt;dpi&gt;</code></td>
-  <td>Scale the resolution of the emulator to match the screen size
-  of a physical device.</td>
-  <td>The default value is 165. See also <code>-scale</code>.</td>
-</tr>
-<tr>
-  <td><code>-no-boot-anim</code></td>
-  <td>Disable the boot animation during emulator startup.</td>
-  <td>Disabling the boot animation can speed the startup time for the emulator.</td>
-</tr>
-<tr>
-  <td><code>-no-window</code></td>
-  <td>Disable the emulator's graphical window display.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-scale &lt;scale&gt;</code></td>
-  <td>Scale the emulator window. </td>
-  <td><code>&lt;scale&gt;</code> is a number between 0.1 and 3 that represents the desired scaling factor. You can
-  also specify scale as a DPI value if you add the suffix "dpi" to the scale value. A value of "auto"
-  tells the emulator to select the best window size.</td>
-</tr>
-<tr>
-  <td><code>-raw-keys</code></td>
-  <td>Disable Unicode keyboard reverse-mapping.</td>
-  <td>&nbsp;</td></tr>
-<tr>
-  <td><code>-noskin</code></td>
-  <td>Don't use any emulator skin.</td>
-  <td>&nbsp;</td></tr>
-<tr>
-  <td><code>-keyset &lt;file&gt;</code></td>
-  <td>Use the specified keyset file instead of the default.</td>
-  <td>The keyset file defines the list of key bindings between the emulator and the host keyboard.
-  For more information, use <code>-help-keyset</code> to print information about this topic.
-</td>
-</tr>
-<tr>
-  <td><code>-onion &lt;image&gt;</code></td>
-  <td>Use overlay image over screen.</td>
-  <td>No support for JPEG. Only PNG is supported.</td></tr>
-<tr>
-  <td><code>-onion-alpha &lt;percent&gt;</code></td>
-  <td>Specify onion skin translucency  value (as percent).
-  <td>Default is 50.</td>
-</tr>
-<tr>
-  <td><code>-onion-rotation &lt;position&gt;</code></td>
-  <td>Specify onion skin rotation.
-  <td><code>&lt;position&gt;</code> must be one of the values 0, 1, 2, 3.</td>
-</tr>
-<tr>
-  <td><code>-skin &lt;skinID&gt;</code></td>
-  <td>This emulator option is deprecated. </td>
-  <td>Please set skin options using AVDs, rather than by using this emulator
-option. Using this option may yield unexpected and in some cases misleading
-results, since the density with which to render the skin may not be defined.
-AVDs let you associate each skin with a default density and override the default
-as needed. For more information, see <a
-href="{@docRoot}guide/developing/devices/managing-avds.html">Managing Virtual Devices
-with AVD Manager</a>.
-</td>
-</tr>
-<tr>
-  <td><code>-skindir &lt;dir&gt;</code></td>
-  <td>This emulator option is deprecated. </td>
-  <td>See comments for <code>-skin</code>, above.</td>
-</tr>
-<tr>
-  <td rowspan="9">Help</td>
-  <td><code>-help</code></td>
-  <td>Print a list of all emulator options.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-help-all</code></td>
-  <td>Print help for all startup options.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-help-&lt;option&gt;</code></td>
-  <td>Print help for a specific startup option.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-help-debug-tags</code></td>
-  <td>Print a list of all tags for <code>-debug &lt;tags&gt;</code>.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-help-disk-images</code></td>
-  <td>Print help for using emulator disk images.</td>
-  <td>&nbsp;</td>
- </tr>
-<tr>
-  <td><code>-help-environment</code></td>
-  <td>Print help for emulator environment variables.</td>
-  <td>&nbsp;</td>s
-</tr><tr>
-  <td><code>-help-keys</code></td>
-  <td>Print the current mapping of keys.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-help-keyset-file</code></td>
-  <td>Print help for defining a custom key mappings file.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-help-virtual-device</code></td>
-  <td>Print help for Android Virtual Device usage.</td>
-  <td>&nbsp;</td>
-</tr>
-</table>
diff --git a/docs/html/guide/developing/tools/etc1tool.jd b/docs/html/guide/developing/tools/etc1tool.jd
deleted file mode 100644
index a7f76f5..0000000
--- a/docs/html/guide/developing/tools/etc1tool.jd
+++ /dev/null
@@ -1,68 +0,0 @@
-page.title=etc1tool
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-
- <p><code>etc1tool</code> is a command line utility that lets you encode PNG
- images to the ETC1 compression standard and decode ETC1 compressed images back to PNG.</p>
-
-  <p>The usage for <code>etc1tool</code> is:</p>
-<pre>etc1tool infile [--help | --encode | --encodeNoHeader | --decode] [--showDifference
-diff-file] [-o outfile]</pre>
-
-  <table>
-    <tr>
-      <th>Option</th>
-
-      <th>Description</th>
-    </tr>
-
-    <tr>
-      <td><code>infile</code></td>
-
-      <td>The input file to compress</td>
-    </tr>
-
-    <tr>
-      <td><code>--help</code></td>
-
-      <td>Print usage information</td>
-    </tr>
-
-    <tr>
-      <td><code>--encode</code></td>
-
-      <td>Create an ETC1 file from a PNG file.
-      This is the default mode for the tool if nothing is specified.</td>
-    </tr>
-
-    <tr>
-      <td><code>--encodeNoHeader</code></td>
-
-      <td>Create a raw ETC1 data file (without a header) from a PNG file.</td>
-    </tr>
-
-    <tr>
-      <td><code>--decode</code></td>
-
-      <td>Create a PNG file from an ETC1 file</td>
-    </tr>
-
-    <tr>
-      <td><code>--showDifference <em>diff-file</em></code></td>
-
-      <td>Write the difference between the original and encoded image to
-      <code><em>diff-file</em></code> (only valid when encoding).</td>
-    </tr>
-
-    <tr>
-      <td><code>-o <em>outfile</em></code></td>
-
-      <td>Specify the name of the output file.
-      If <code><em>outfile</em></code> is not specified, the output file is constructed
-      from the input filename with the appropriate suffix (<code>.pkm</code> or <code>.png</code>).
-      </td>
-    </tr>
-
-  </table>
\ No newline at end of file
diff --git a/docs/html/guide/developing/tools/hierarchy-viewer.jd b/docs/html/guide/developing/tools/hierarchy-viewer.jd
deleted file mode 100644
index 3d3191b..0000000
--- a/docs/html/guide/developing/tools/hierarchy-viewer.jd
+++ /dev/null
@@ -1,18 +0,0 @@
-page.title=Hierarchy Viewer
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>Hierarchy Viewer allows you to debug and optimize your user 
-interface. It provides a visual representation of the layout's View hierarchy 
-(the Layout View) and a magnified inspector of the display (the Pixel Perfect View). 
-</p>
-
-<p>To start Hierarchy Viewer, enter the following command from the SDK <code>tools/</code> directory:</p>
-  <pre>hierarchyviewer</pre>
-</ol>
-
-<p>For more information on how to use Hierarchy Viewer, see 
-<a href="{@docRoot}guide/developing/debugging/debugging-ui.html">Debugging and Profiling UIs</a>
-</p>
-
diff --git a/docs/html/guide/developing/tools/hprof-conv.jd b/docs/html/guide/developing/tools/hprof-conv.jd
deleted file mode 100644
index f96def2..0000000
--- a/docs/html/guide/developing/tools/hprof-conv.jd
+++ /dev/null
@@ -1,16 +0,0 @@
-page.title=HPROF Converter
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>
-The <code>hprof-conv</code> tool converts the HPROF file that is
-generated by the Android SDK tools to a standard format so you
-can view the file in a profiling tool of your choice. </p>
-
-<pre> hprof-conv &lt;infile&gt; &lt;outfile&gt;</pre>
-
-<p>
-You can use "-" for <code>&lt;infile&gt;</code> or <code>&lt;outfile&gt;</code>
-to specify stdin or stdout.
-</p>
diff --git a/docs/html/guide/developing/tools/index.jd b/docs/html/guide/developing/tools/index.jd
deleted file mode 100644
index 5e9f686..0000000
--- a/docs/html/guide/developing/tools/index.jd
+++ /dev/null
@@ -1,85 +0,0 @@
-page.title=Tools
-@jd:body
-
-<img src="{@docRoot}assets/images/android_wrench.png" alt="" align="right">
-
-<p>The Android SDK includes a variety of tools that help you develop mobile
-applications for the Android platform. The tools are classified into two groups: SDK tools
-and platform tools. SDK tools are platform independent and are required no matter which
-Android platform you are developing on. Platform tools are customized to support the features of the
-latest Android platform.</p>
-
-<h2 id="tools-sdk">SDK Tools</h2>
-<p>The SDK tools are installed with the SDK starter package and are periodically updated.
-The SDK tools are required if you are developing Android applications. The most important SDK tools
-include the Android SDK Manager (<code>android sdk</code>), the AVD Manager (<code>android
-avd</code>) the emulator (<code>emulator</code>), and the Dalvik Debug Monitor Server
-(<code>ddms</code>). A short summary of some frequently-used SDK tools is provided below.</p>
-
-<dl>
-  <dt><a href="android.html">android</a></dt>
-    <dd>Lets you manage AVDs, projects, and the installed components of the SDK.</dd>
-  <dt><a href="{@docRoot}guide/developing/debugging/ddms.html">Dalvik Debug Monitor
-Server (ddms)</a></dt>
-    <dd>Lets you debug Android applications.</dd>
-  <dt><a href="dmtracedump.html">dmtracedump</a></dt>
-    <dd>Generates graphical call-stack diagrams from trace log files. The tool uses the
-Graphviz Dot utility to create the graphical output, so you need to install Graphviz before
-running <code>dmtracedump</code>. For more information on using <code>dmtracedump</code>, see <a
-href="{@docRoot}guide/developing/debugging/debugging-tracing.html#dmtracedump">Profiling
-with Traceview and dmtracedump</a></dd>
-  <dt><a href="draw9patch.html">Draw 9-patch</a></dt>
-    <dd>Allows you to easily create a {@link android.graphics.NinePatch} graphic using a
-WYSIWYG editor. It also previews stretched versions of the image, and highlights the area in which
-content is allowed.</dd>
-  <dt><a href="emulator.html">Android Emulator (emulator)</a></dt>
-    <dd>A QEMU-based device-emulation tool that you can use to design, debug, and test
-your applications in an actual Android run-time environment.</dd>
-  <dt><a href="hierarchy-viewer.html">Hierarchy Viewer (hierarchyviewer)</a></dt>
-    <dd>Lets you debug and optimize an Android application's user interface.</dd>
-  <dt><a href="hprof-conv.html">hprof-conv</a></dt>
-    <dd>Converts the HPROF file that is generated by the Android SDK tools to a standard format so
-you can view the file in a profiling tool of your choice.</dd>
-  <dt><a href="layoutopt.html">layoutopt</a></dt>
-    <dd>Lets you quickly analyze your application's layouts in order to optimize them for
-efficiency.</dd>
-  <dt><a href="mksdcard.html">mksdcard</a></dt>
-    <dd>Helps you create a disk image that you can use with the emulator, to simulate the presence
-of an external storage card (such as an SD card).</dd>
-  <dt><a href="monkey.html">Monkey</a></dt>
-    <dd>Runs on your emulator or device and generates pseudo-random streams of user events such
-as clicks, touches, or gestures, as well as a number of  system-level events. You can use the Monkey
-to stress-test applications that you are developing, in a random yet repeatable manner.</dd>
-  <dt><a href="monkeyrunner_concepts.html">monkeyrunner</a></dt>
-    <dd>Provides an API for writing programs that control an Android device or emulator from
-outside of Android code.</dd>
-  <dt><a href="proguard.html">ProGuard</a></dt>
-    <dd>Shrinks, optimizes, and obfuscates your code by removing unused code and renaming
-classes, fields, and methods with semantically obscure names.</dd>
-  <dt><a href="sqlite3.html">sqlite3</a></dt>
-    <dd>Lets you access the SQLite data files created and used by Android applications.</dd>
-  <dt><a href="traceview.html">traceview</a></dt>
-    <dd>Provides a graphical viewer for execution logs saved by your application.</dd>
-  <dt><a href="zipalign.html">zipalign</a></dt>
-    <dd>Optimizes <code>.apk</code> files by ensuring that all uncompressed data starts with a
-particular alignment relative to the start of the file. This should always be used to align .apk
-files after they have been signed.</dd>
- </dl>
-
-<h2 id="tools-platform">Platform Tools</h2>
-
-<p>The platform tools are typically updated every time you install a new SDK platform. Each update
-of the platform tools is backward compatible with older platforms. Usually, you directly use only
-one of the platform tools&mdash;the <a href="adb.html">Android Debug Bridge (<code>adb</code>)</a>.
-Android Debug Bridge is a versatile tool that lets you manage the state of an emulator instance or
-Android-powered device. You can also use it to install an Android application (.apk) file on a
-device.</p>
-
-<p>The other platform tools, such as <a href="{@docRoot}guide/developing/tools/aidl.html">aidl</a>,
-<code>aapt</code>, <code>dexdump</code>, and <code>dx</code>, are typically called by the Android
-build tools or Android Development Tools (ADT), so you rarely need to invoke these tools directly.
-As a general rule, you should rely on the build tools or the ADT plugin to call them as needed.</p>
-
-<p class="note"><strong>Note:</strong> The Android SDK provides additional shell tools that can
-be accessed through <code>adb</code>, such as <a href="bmgr.html">bmgr</a> and
-<a href="logcat.html">logcat</a>.</p>
\ No newline at end of file
diff --git a/docs/html/guide/developing/tools/layoutopt.jd b/docs/html/guide/developing/tools/layoutopt.jd
deleted file mode 100644
index cb0b505..0000000
--- a/docs/html/guide/developing/tools/layoutopt.jd
+++ /dev/null
@@ -1,24 +0,0 @@
-page.title=layoutopt
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p><code>layoutopt</code> is a command-line tool that helps you optimize the
-layouts and layout hierarchies of your applications.<p>
-
-<p>This document is a reference to the available command line options. For more information and sample
-output of the tool, see <a
-href="{@docRoot}guide/developing/debugging/debugging-ui.html#layoutopt">Optimizing layouts with
-layoutopt</a>.</p>
-
-<h3>Usage</h3>
-
-<p>To run <code>layoutopt</code> against a given list of layout resources:</p>
-
-<pre>layoutopt &lt;file_or_directory&gt; ...</pre>
-
-<p>For example:</p>
-
-<pre>$ layoutopt res/layout-land</pre>
-<pre>$ layoutopt res/layout/main.xml res/layout-land/main.xml</pre>
-
diff --git a/docs/html/guide/developing/tools/logcat.jd b/docs/html/guide/developing/tools/logcat.jd
deleted file mode 100644
index 546e3ea..0000000
--- a/docs/html/guide/developing/tools/logcat.jd
+++ /dev/null
@@ -1,106 +0,0 @@
-page.title=logcat
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-  <p>The Android logging system provides a mechanism for collecting and viewing system debug
-  output. Logs from various applications and portions of the system are collected in a series of
-  circular buffers, which then can be viewed and filtered by the <code>logcat</code> command. You can use 
-  <code>logcat</code> from an ADB shell to view the log messages.</p>
-
-  <p>This document is a reference to the available command line options. For more information on <code>logcat</code>, see
-  <a href="{@docRoot}guide/developing/debugging/debugging-log.html">Reading and Writing Logs</a>.
-For more
-  information on accessing <code>logcat</code> from DDMS, instead of the command line, see the documentation for the
-  <a href="{@docRoot}guide/developing/debugging/ddms.html">Dalvik Debug Monitor Server</a>.
-  </p>
-
-  <h3>Syntax</h3>
-  <pre>
-[adb] logcat [&lt;option&gt;] ... [&lt;filter-spec&gt;] ...
-</pre>
-
-  <p>You can run <code>logcat</code> as an adb command or directly in a shell prompt
-  of your emulator or connected device. To view log output using adb, navigate to your SDK
-  <code>platform-tools/</code> directory and execute:</p>
-  <pre>
-$ adb logcat
-</pre>
-
-  <p>You can create a shell connection to a device and execute:</p>
-  <pre>
-$ adb shell
-# logcat
-</pre>
-
-  <h3>Options</h3>
-  <p>The following table describes the command line options of <code>logcat</code>.</p>
-  
-  <table>
-    <tr>
-      <th>Option</th>
-
-      <th>Description</th>
-    </tr>
-
-    <tr>
-      <td><code>-b&nbsp;&lt;buffer&gt;</code></td>
-
-      <td>Loads an alternate log buffer for viewing, such as <code>event</code> or
-      <code>radio</code>. The <code>main</code> buffer is used by default. See <a href= 
-      "#alternativebuffers">Viewing Alternative Log Buffers</a>.</td>
-    </tr>
-
-    <tr>
-      <td><code>-c</code></td>
-
-      <td>Clears (flushes) the entire log and exits.</td>
-    </tr>
-
-    <tr>
-      <td><code>-d</code></td>
-
-      <td>Dumps the log to the screen and exits.</td>
-    </tr>
-
-    <tr>
-      <td><code>-f&nbsp;&lt;filename&gt;</code></td>
-
-      <td>Writes log message output to <code>&lt;filename&gt;</code>. The default is
-      <code>stdout</code>.</td>
-    </tr>
-
-    <tr>
-      <td><code>-g</code></td>
-
-      <td>Prints the size of the specified log buffer and exits.</td>
-    </tr>
-
-    <tr>
-      <td><code>-n&nbsp;&lt;count&gt;</code></td>
-
-      <td>Sets the maximum number of rotated logs to <code>&lt;count&gt;</code>. The default value
-      is 4. Requires the <code>-r</code> option.</td>
-    </tr>
-
-    <tr>
-      <td><code>-r&nbsp;&lt;kbytes&gt;</code></td>
-
-      <td>Rotates the log file every <code>&lt;kbytes&gt;</code> of output. The default value is
-      16. Requires the <code>-f</code> option.</td>
-    </tr>
-
-    <tr>
-      <td><code>-s</code></td>
-
-      <td>Sets the default filter spec to silent.</td>
-    </tr>
-
-    <tr>
-      <td><code>-v&nbsp;&lt;format&gt;</code></td>
-
-      <td>Sets the output format for log messages. The default is <code>brief</code> format. For a
-      list of supported formats, see <a href="#outputformat">Controlling Log Output
-      Format</a>.</td>
-    </tr>
-  </table>
diff --git a/docs/html/guide/developing/tools/mksdcard.jd b/docs/html/guide/developing/tools/mksdcard.jd
deleted file mode 100644
index 0a80454..0000000
--- a/docs/html/guide/developing/tools/mksdcard.jd
+++ /dev/null
@@ -1,55 +0,0 @@
-page.title=mksdcard
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
- <p>The <code>mksdcard</code> tool lets you quickly create a FAT32 disk image that you can load in the
-  emulator, to simulate the presence of an SD card in the device. Because you can specify an SD
-  card while creating an AVD in the AVD Manager, you usually use that feature to create an SD card.
-  This tool creates an SD card that is not bundled with an AVD, so it is useful for situations
-  where you need to share a virtual SD card between multiple emulators.</p>
-
-  <h3>Usage</h3>
-  <pre>
-mksdcard -l &lt;label&gt; &lt;size&gt; &lt;file&gt;
-</pre>
-
-  <h3>Options</h3>
-  <p>The following table describes the command-line options of <code>mksdcard</code></p>
-  <table>
-    <tr>
-      <th>Option</th>
-      
-      <th>Description</th>
-    </tr>
-    
-    <tr>
-      <td><code>-l</code></td>
-
-      <td>A volume label for the disk image to create.</td>
-    </tr>
-
-    <tr>
-      <td><code>size</code></td>
-
-      <td>An integer that specifies the size (in bytes) of disk image to create. You can also
-      specify size in kilobytes or megabytes, by appending a "K" or "M" to &lt;size&gt;. For
-      example, <code>1048576K</code>, <code>1024M</code>.</td>
-    </tr>
-
-    <tr>
-      <td><code>file</code></td>
-
-      <td>The path/filename of the disk image to create.</td>
-    </tr>
-  </table>
-
-  <p>Once you have created the disk image file, you can load it in the emulator at startup using
-  the emulator's <code>-sdcard</code> option. For more information, see <a href= 
-  "{@docRoot}guide/developing/tools/emulator.html">Android Emulator</a>.</p>
-  
-  <p>The usage for the <code>-sdcard</code> option is as follows:</p>
-  <pre>emulator -sdcard &lt;file&gt;</pre>
-
-<h3>Example</h3>
-<pre>mksdcard -l mySdCard 1024M mySdCardFile.img</pre>
\ No newline at end of file
diff --git a/docs/html/guide/developing/tools/monkey.jd b/docs/html/guide/developing/tools/monkey.jd
deleted file mode 100644
index a7e539c..0000000
--- a/docs/html/guide/developing/tools/monkey.jd
+++ /dev/null
@@ -1,242 +0,0 @@
-page.title=UI/Application Exerciser Monkey
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>The Monkey is a program that runs on your 
-<a href="{@docRoot}guide/developing/tools/emulator.html">emulator</a> or device and generates pseudo-random
-streams of user events such as clicks, touches, or gestures, as well as a number of system-level 
-events.  You can use the Monkey to stress-test applications that you are developing, in a random 
-yet repeatable manner.</p>
-
-<a name="overview"></a>
-<h2>Overview</h2>
-
-<p>The Monkey is a command-line tool that that you can run on any emulator
-instance or on a device.  It sends a pseudo-random stream of 
-user events into the system, which acts as a stress test on the application software you are 
-developing.</p>
-
-<p>The Monkey includes a number of options, but they break down into four primary
-categories:</p>
-
-<ul>
-  <li>Basic configuration options, such as setting the number of events to attempt.</li>
-  <li>Operational constraints, such as restricting the test to a single package.</li>
-  <li>Event types and frequencies.</li>
-  <li>Debugging options.</li>
-</ul>
-
-<p>When the Monkey runs, it generates events and sends them to the system.  It also <i>watches</i>
-the system under test and looks for three conditions, which it treats specially:</p>
-
-<ul>
-  <li>If you have constrained the Monkey to run in one or more specific packages, it 
-  watches for attempts to navigate to any other packages, and blocks them.</li>
-  <li>If your application crashes or receives any sort of unhandled exception, the Monkey
-  will stop and report the error.</li>
-  <li>If your application generates an <i>application not responding</i> error, the Monkey
-  will stop and report the error.</li>
-</ul>
-
-<p>Depending on the verbosity level you have selected, you will also see reports on the progress
-of the Monkey and the events being generated.</p>
-
-<a name="basics"></a>
-<h2>Basic Use of the Monkey</h2>
-
-<p>You can launch the Monkey using a command line on your development machine or from a script. 
-Because the Monkey runs in the emulator/device environment, you must launch it from a shell in 
-that environment.  You can do this by prefacing <code>adb shell</code> to each command, 
-or by entering the shell and entering Monkey commands directly.</p>
-<p>The basic syntax is: </p>
-
-<pre>$ adb shell monkey [options] &lt;event-count&gt;</pre>
-    
-<p>With no options specified, the Monkey will launch in a quiet (non-verbose) mode, and will send 
-events to any (and all) packages installed on your target.  Here is a more typical command line,
-which will launch your application and send 500 pseudo-random events to it:</p>
-
-<pre>$ adb shell monkey -p your.package.name -v 500</pre>
-
-<a name="reference"></a>
-<h2>Command Options Reference</h2>
-
-<p>The table below lists all options you can include on the Monkey command line.</p>
-
-<table>
-<tr>
-  <th>Category</th>
-  <th>Option</th>
-  <th>Description</th>
-</tr>
-
-<tr>
-<td rowspan="2">General</td>
-<td><code>--help</code></td>
-<td>Prints a simple usage guide.</td>
-</tr>
-
-<tr>
-<td><code>-v</code></td>
-<td>Each -v on the command line will increment the verbosity level.  
-Level 0 (the default) provides little information beyond startup notification, test completion, and
-final results.  
-Level 1 provides more details about the test as it runs, such as individual events being sent to 
-your activities.  
-Level 2 provides more detailed setup information such as activities selected or not selected for 
-testing.</td>
-</tr>
-
-<tr>
-<td rowspan="10">Events</td>
-<td><code>-s &lt;seed&gt;</code></td>
-<td>Seed value for pseudo-random number generator.  If you re-run the Monkey with the same seed 
-value, it will generate the same sequence of events.</td>
-</tr>
-
-<tr>
-<td><code>--throttle &lt;milliseconds&gt;</code></td>
-<td>Inserts a fixed delay between events.  You can use this option to slow down the Monkey.  
-If not specified, there is no delay and the events are generated as rapidly as possible.</td>
-</tr>
-
-<tr>
-<td><code>--pct-touch &lt;percent&gt;</code></td>
-<td>Adjust percentage of touch events.  
-(Touch events are a down-up event in a single place on the screen.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-motion &lt;percent&gt;</code></td>
-<td>Adjust percentage of motion events.
-(Motion events consist of a down event somewhere on the screen, a series of pseudo-random
-movements, and an up event.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-trackball &lt;percent&gt;</code></td>
-<td>Adjust percentage of trackball events.
-(Trackball events consist of one or more random movements, sometimes followed by a click.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-nav &lt;percent&gt;</code></td>
-<td>Adjust percentage of "basic" navigation events.
-(Navigation events consist of up/down/left/right, as input from a directional input device.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-majornav &lt;percent&gt;</code></td>
-<td>Adjust percentage of "major" navigation events.
-(These are navigation events that will typically cause actions within your UI, such as
-the center button in a 5-way pad, the back key, or the menu key.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-syskeys &lt;percent&gt;</code></td>
-<td>Adjust percentage of "system" key events.
-(These are keys that are generally reserved for use by the system, such as Home, Back, Start Call,
-End Call, or Volume controls.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-appswitch &lt;percent&gt;</code></td>
-<td>Adjust percentage of activity launches.  At random intervals, the Monkey will issue a startActivity() call, as a way of maximizing
-coverage of all activities within your package.</td>
-</tr>
-
-<tr>
-<td><code>--pct-anyevent &lt;percent&gt;</code></td>
-<td>Adjust percentage of other types of events.  This is a catch-all for all other types of events such as keypresses, other less-used
-buttons on the device, and so forth.</td>
-</tr>
-
-<tr>
-<td rowspan="2">Constraints</td>
-<td><code>-p &lt;allowed-package-name&gt;</code></td>
-<td>If you specify one or more packages this way, the Monkey will <i>only</i> allow the system
-to visit activities within those packages.  If your application requires access to activities in
-other packages (e.g. to select a contact) you'll need to specify those packages as well.
-If you don't specify any packages, the Monkey will allow the system to launch activities
-in all packages.  To specify multiple packages, use the -p option multiple times &mdash; one -p 
-option per package.</td>
-</tr>
-
-<tr>
-<td><code>-c &lt;main-category&gt;</code></td>
-<td>If you specify one or more categories this way, the Monkey will <i>only</i> allow the 
-system to visit activities that are listed with one of the specified categories.  
-If you don't specify any categories, the Monkey will select activities listed with the category
-Intent.CATEGORY_LAUNCHER or Intent.CATEGORY_MONKEY.  To specify multiple categories, use the -c
-option multiple times &mdash; one -c option per category.</td>
-</tr>
-
-<tr>
-<td rowspan="8">Debugging</td>
-<td><code>--dbg-no-events</code></td>
-<td>When specified, the Monkey will perform the initial launch into a test activity, but
-will not generate any further events.
-For best results, combine with -v, one or more package constraints, and a non-zero throttle to keep the Monkey
-running for 30 seconds or more.  This provides an environment in which you can monitor package
-transitions invoked by your application.</td>
-</tr>
-
-<tr>
-<td><code>--hprof</code></td>
-<td>If set, this option will generate profiling reports immediately before and after
-the Monkey event sequence.
-This will generate large (~5Mb) files in data/misc, so use with care.  See 
-<a href="{@docRoot}guide/developing/debugging/debugging-tracing.html" title="traceview">Traceview</a> for more information
-on trace files.</td>
-</tr>
-
-<tr>
-<td><code>--ignore-crashes</code></td>
-<td>Normally, the Monkey will stop when the application crashes or experiences any type of 
-unhandled exception.  If you specify this option, the Monkey will continue to send events to
-the system, until the count is completed.</td>
-</tr>
-
-<tr>
-<td><code>--ignore-timeouts</code></td>
-<td>Normally, the Monkey will stop when the application experiences any type of timeout error such
-as a "Application Not Responding" dialog.  If you specify this option, the Monkey will continue to 
-send events to the system, until the count is completed.</td>
-</tr>
-
-<tr>
-<td><code>--ignore-security-exceptions</code></td>
-<td>Normally, the Monkey will stop when the application experiences any type of permissions error,
-for example if it attempts to launch an activity that requires certain permissions.  If you specify
-this option, the Monkey will continue to send events to the system, until the count is 
-completed.</td>
-</tr>
-
-<tr>
-<td><code>--kill-process-after-error</code></td>
-<td>Normally, when the Monkey stops due to an error, the application that failed will be left
-running.  When this option is set, it will signal the system to stop the process in which the error
-occurred.
-Note, under a normal (successful) completion, the launched process(es) are not stopped, and
-the device is simply left in the last state after the final event.</td>
-</tr>
-
-<tr>
-<td><code>--monitor-native-crashes</code></td>
-<td>Watches for and reports crashes occurring in the Android system native code. If --kill-process-after-error is set, the system will stop.</td>
-</tr>
-
-<tr>
-<td><code>--wait-dbg</code></td>
-<td>Stops the Monkey from executing until a debugger is attached to it.</td>
-</tr>
-
-</table>
-
-<!-- TODO: add a section called "debugging" that covers ways to use it, 
-need to clear data, use of the seed, etc. -->
-
-<!-- TODO: add a section that lays down a contract for Monkey output so it can be
-scripted safely. -->
-
diff --git a/docs/html/guide/developing/tools/monkeyrunner_concepts.jd b/docs/html/guide/developing/tools/monkeyrunner_concepts.jd
deleted file mode 100644
index 346a0c6..0000000
--- a/docs/html/guide/developing/tools/monkeyrunner_concepts.jd
+++ /dev/null
@@ -1,319 +0,0 @@
-page.title=monkeyrunner
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li>
-        <a href="#SampleProgram">A Simple monkeyrunner Program</a>
-    </li>
-    <li>
-        <a href="#APIClasses">The monkeyrunner API</a>
-    </li>
-    <li>
-        <a href="#RunningMonkeyRunner">Running monkeyrunner</a>
-    </li>
-    <li>
-        <a href="#Help">monkeyrunner Built-in Help</a>
-    </li>
-    <li>
-        <a href="#Plugins">Extending monkeyrunner with Plugins</a>
-    </li>
-  </ol>
-  <h2>See Also</h2>
-      <ol>
-        <li>
-            <a href="{@docRoot}guide/topics/testing/testing_android.html">Testing Fundamentals</a>
-        </li>
-      </ol>
-  </div>
-</div>
-<p>
-    The monkeyrunner tool provides an API for writing programs that control an Android device
-    or emulator from outside of Android code. With monkeyrunner, you can write a Python program
-    that installs an Android application or test package, runs it, sends keystrokes to it,
-    takes screenshots of its user interface, and stores screenshots on the workstation. The
-    monkeyrunner tool is primarily designed to test applications and devices at the
-    functional/framework level and for running unit test suites, but you are free to use it for
-    other purposes.
-</p>
-<p>
-    The monkeyrunner tool is not related to the
-    <a href="{@docRoot}guide/developing/tools/monkey.html">UI/Application Exerciser Monkey</a>,
-    also known as the <code>monkey</code> tool. The <code>monkey</code> tool runs in an
-    <code><a href="{@docRoot}guide/developing/tools/adb.html">adb</a></code> shell directly on the
-    device or emulator and generates pseudo-random streams of user and system events. In comparison,
-    the monkeyrunner tool controls devices and emulators from a workstation by sending specific
-    commands and events from an API.
-</p>
-<p>
-    The monkeyrunner tool provides these unique features for Android testing:
-</p>
-<ul>
-    <li>
-        Multiple device control: The monkeyrunner API can apply one or more
-        test suites across multiple devices or emulators. You can physically attach all the devices
-        or start up all the emulators (or both) at once, connect to each one in turn
-        programmatically, and then run one or more tests. You can also start up an emulator
-        configuration programmatically, run one or more tests, and then shut down the emulator.
-    </li>
-    <li>
-        Functional testing: monkeyrunner can run an automated start-to-finish test of an Android
-        application. You provide input values with keystrokes or touch events, and view the results
-        as screenshots.
-    </li>
-    <li>
-        Regression testing - monkeyrunner can test application stability by running an application
-        and comparing its output screenshots to a set of screenshots that are known to be correct.
-    </li>
-    <li>
-        Extensible automation - Since monkeyrunner is an API toolkit, you can develop an entire
-        system of Python-based modules and programs for controlling Android devices. Besides using
-        the monkeyrunner API itself, you can use the standard Python
-        <code><a href="http://docs.python.org/library/os.html">os</a></code> and
-        <code><a href="http://docs.python.org/library/subprocess.html">subprocess</a></code>
-        modules to call Android tools such as
-        <a href="{@docRoot}guide/developing/tools/adb.html">Android Debug Bridge</a>.
-        <p>
-            You can also add your own classes to the monkeyrunner API. This is described
-            in more detail in the section
-            <a href="#Plugins">Extending monkeyrunner with plugins</a>.
-        </p>
-    </li>
-</ul>
-<p>
-    The monkeyrunner tool uses <a href="http://www.jython.org/">Jython</a>, a
-    implementation of Python that uses the Java programming language. Jython allows the
-    monkeyrunner API to interact easily with the Android framework. With Jython you can
-    use Python syntax to access the constants, classes, and methods of the API.
-</p>
-
-<h2 id="SampleProgram">A Simple monkeyrunner Program</h2>
-<p>
-    Here is a simple monkeyrunner program that connects to a device, creating a
-    <code><a href="{@docRoot}guide/developing/tools/MonkeyDevice.html">MonkeyDevice</a></code>
-    object. Using the <code>MonkeyDevice</code> object, the program installs an Android application
-    package, runs one of its activities, and sends key events to the activity.
-    The program then takes a screenshot of the result, creating a
-    <code><a href="{@docRoot}guide/developing/tools/MonkeyImage.html">MonkeyImage</a></code> object.
-    From this object, the program writes out a <code>.png</code> file containing the screenshot.
-</p>
-<pre>
-# Imports the monkeyrunner modules used by this program
-from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
-
-# Connects to the current device, returning a MonkeyDevice object
-device = MonkeyRunner.waitForConnection()
-
-# Installs the Android package. Notice that this method returns a boolean, so you can test
-# to see if the installation worked.
-device.installPackage('myproject/bin/MyApplication.apk')
-
-# sets a variable with the package's internal name
-package = 'com.example.android.myapplication'
-
-# sets a variable with the name of an Activity in the package
-activity = 'com.example.android.myapplication.MainActivity'
-
-# sets the name of the component to start
-runComponent = package + '/' + activity
-
-# Runs the component
-device.startActivity(component=runComponent)
-
-# Presses the Menu button
-device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP)
-
-# Takes a screenshot
-result = device.takeSnapshot()
-
-# Writes the screenshot to a file
-result.writeToFile('myproject/shot1.png','png')
-</pre>
-
-<h2 id="APIClasses">The monkeyrunner API</h2>
-<p>
-    The monkeyrunner API is contained in three modules in the package
-    <code>com.android.monkeyrunner</code>:
-</p>
-<ul>
-    <li>
-        <code><a href="{@docRoot}guide/developing/tools/MonkeyRunner.html">MonkeyRunner</a></code>:
-        A class of utility methods for monkeyrunner programs. This class provides a method for
-        connecting monkeyrunner to a device or emulator. It also provides methods for
-        creating UIs for a monkeyrunner program and for displaying the built-in help.
-    </li>
-    <li>
-        <code><a href="{@docRoot}guide/developing/tools/MonkeyDevice.html">MonkeyDevice</a></code>:
-        Represents a device or emulator. This class provides methods for installing and
-        uninstalling packages, starting an Activity, and sending keyboard or touch events to an
-        application. You also use this class to run test packages.
-    </li>
-    <li>
-        <code><a href="{@docRoot}guide/developing/tools/MonkeyImage.html">MonkeyImage</a></code>:
-        Represents a screen capture image. This class provides methods for capturing screens,
-        converting bitmap images to various formats, comparing two MonkeyImage objects, and
-        writing an image to a file.
-    </li>
-</ul>
-<p>
-    In a Python program, you access each class as a Python module. The monkeyrunner tool
-    does not import these modules automatically. To import a module, use the
-    Python <code>from</code> statement:
-</p>
-<pre>
-from com.android.monkeyrunner import &lt;module&gt;
-</pre>
-<p>
-    where <code>&lt;module&gt;</code> is the class name you want to import. You can import more
-    than one module in the same <code>from</code> statement by separating the module names with
-    commas.
-</p>
-<h2 id="RunningMonkeyRunner">Running monkeyrunner</h2>
-<p>
-    You can either run monkeyrunner programs from a file, or enter monkeyrunner statements in
-    an interactive session. You do both by invoking the <code>monkeyrunner</code> command
-    which is found in the <code>tools/</code> subdirectory of your SDK directory.
-    If you provide a filename as an argument, the <code>monkeyrunner</code> command
-    runs the file's contents as a Python program; otherwise, it starts an interactive session.
-</p>
-<p>
-    The syntax of the <code>monkeyrunner</code> command is
-</p>
-<pre>
-monkeyrunner -plugin &lt;plugin_jar&gt; &lt;program_filename&gt; &lt;program_options&gt;
-</pre>
-<p>
-Table 1 explains the flags and arguments.
-</p>
-<p class="table-caption" id="table1">
-  <strong>Table 1.</strong> <code>monkeyrunner</code> flags and arguments.</p>
-
-<table>
-    <tr>
-        <th>Argument</th>
-        <th>Description</th>
-    </tr>
-    <tr>
-        <td>
-            <nobr>
-                <code>-plugin &lt;plugin_jar&gt;</code>
-            </nobr>
-        </td>
-        <td>
-            (Optional) Specifies a <code>.jar</code> file containing a plugin for monkeyrunner.
-            To learn more about monkeyrunner plugins, see
-            <a href="#Plugins">Extending monkeyrunner with plugins</a>. To specify more than one
-            file, include the argument multiple times.
-        </td>
-    </tr>
-    <tr>
-        <td>
-            <nobr>
-                <code>&lt;program_filename&gt;</code>
-            </nobr>
-        </td>
-        <td>
-            If you provide this argument, the <code>monkeyrunner</code> command runs the contents
-            of the file as a Python program. If the argument is not provided, the command starts an
-            interactive session.
-        </td>
-    </tr>
-    <tr>
-        <td>
-            <code>&lt;program_options&gt;</code>
-        </td>
-        <td>
-            (Optional) Flags and arguments for the program in &lt;program_file&gt;.
-        </td>
-    </tr>
-</table>
-<h2 id="Help">monkeyrunner Built-in Help</h2>
-<p>
-    You can generate an API reference for monkeyrunner by running:
-</p>
-<pre>
-monkeyrunner help.py &lt;format&gt; &lt;outfile&gt;
-</pre>
-<p>
-The arguments are:
-</p>
-    <ul>
-        <li>
-            <code>&lt;format&gt;</code> is either <code>text</code> for plain text output
-            or <code>html</code> for HTML output.
-        </li>
-        <li>
-            <code>&lt;outfile&gt;</code> is a path-qualified name for the output file.
-        </li>
-    </ul>
-<h2 id="Plugins">Extending monkeyrunner with Plugins</h2>
-<p>
-    You can extend the monkeyrunner API with classes you write in the Java programming language
-    and build into one or more <code>.jar</code> files. You can use this feature to extend the
-    monkeyrunner API with your own classes or to extend the existing classes. You can also use this
-    feature to initialize the monkeyrunner environment.
-</p>
-<p>
-    To provide a plugin to monkeyrunner, invoke the <code>monkeyrunner</code> command with the
-    <code>-plugin &lt;plugin_jar&gt;</code> argument described in
-    <a href="#table1">table 1</a>.
-</p>
-<p>
-    In your plugin code, you can import and extend the the main monkeyrunner classes
-    <code>MonkeyDevice</code>, <code>MonkeyImage</code>, and <code>MonkeyRunner</code> in
-    <code>com.android.monkeyrunner</code> (see <a href="#APIClasses">The monkeyrunner API</a>).
-</p>
-<p>
-    Note that plugins do not give you access to the Android SDK. You can't import packages
-    such as <code>com.android.app</code>. This is because monkeyrunner interacts with the
-    device or emulator below the level of the framework APIs.
-</p>
-<h3>The plugin startup class</h3>
-<p>
-    The <code>.jar</code> file for a plugin can specify a class that is instantiated before
-    script processing starts. To specify this class, add the key
-    <code>MonkeyRunnerStartupRunner</code> to the <code>.jar</code> file's
-    manifest. The value should be the name of the class to run at startup. The following
-    snippet shows how you would do this within an <code>ant</code> build script:
-</p>
-<pre>
-&lt;jar jarfile=&quot;myplugin&quot; basedir="&#36;&#123;build.dir&#125;&quot;&gt;
-&lt;manifest&gt;
-&lt;attribute name=&quot;MonkeyRunnerStartupRunner&quot; value=&quot;com.myapp.myplugin&quot;/&gt;
-&lt;/manifest&gt;
-&lt;/jar&gt;
-
-
-</pre>
-<p>
-    To get access to monkeyrunner's runtime environment, the startup class can implement
-    <code>com.google.common.base.Predicate&lt;PythonInterpreter&gt;</code>. For example, this
-    class sets up some variables in the default namespace:
-</p>
-<pre>
-package com.android.example;
-
-import com.google.common.base.Predicate;
-import org.python.util.PythonInterpreter;
-
-public class Main implements Predicate&lt;PythonInterpreter&gt; {
-    &#64;Override
-    public boolean apply(PythonInterpreter anInterpreter) {
-
-        /*
-        * Examples of creating and initializing variables in the monkeyrunner environment's
-        * namespace. During execution, the monkeyrunner program can refer to the variables "newtest"
-        * and "use_emulator"
-        *
-        */
-        anInterpreter.set("newtest", "enabled");
-        anInterpreter.set("use_emulator", 1);
-
-        return true;
-    }
-}
-</pre>
diff --git a/docs/html/guide/developing/tools/othertools.html b/docs/html/guide/developing/tools/othertools.html
deleted file mode 100644
index a074f33..0000000
--- a/docs/html/guide/developing/tools/othertools.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/guide/developing/tools/index.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/guide/developing/tools/index.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/developing/tools/proguard.jd b/docs/html/guide/developing/tools/proguard.jd
deleted file mode 100644
index ea8a1ea..0000000
--- a/docs/html/guide/developing/tools/proguard.jd
+++ /dev/null
@@ -1,189 +0,0 @@
-page.title=ProGuard
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#enabling">Enabling ProGuard</a></li>
-
-        <li><a href="#configuring">Configuring ProGuard</a></li>
-
-        <li>
-          <a href="#decoding">Decoding Obfuscated Stack Traces</a>
-
-          <ol>
-            <li><a href="#considerations">Debugging considerations for published
-            applications</a></li>
-          </ol>
-        </li>
-      </ol>
-
-      <h2>See also</h2>
-
-      <ol>
-        <li><a href="http://proguard.sourceforge.net/manual/introduction.html">ProGuard
-        Manual &raquo;</a></li>
-
-        <li><a href="http://proguard.sourceforge.net/manual/retrace/introduction.html">ProGuard
-        ReTrace Manual &raquo;</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>The ProGuard tool shrinks, optimizes, and obfuscates your code by removing unused code and
-  renaming classes, fields, and methods with semantically obscure names. The result is a smaller
-  sized <code>.apk</code> file that is more difficult to reverse engineer. Because ProGuard makes your
-  application harder to reverse engineer, it is important that you use it
-  when your application utilizes features that are sensitive to security like when you are
-  <a href="{@docRoot}guide/market/licensing/index.html">Licensing Your Applications</a>.</p>
-
-  <p>ProGuard is integrated into the Android build system, so you do not have to invoke it
-  manually. ProGuard runs only when you build your application in release mode, so you do not 
-  have to deal with obfuscated code when you build your application in debug mode. 
-  Having ProGuard run is completely optional, but highly recommended.</p>
-  
-  <p>This document describes how to enable and configure ProGuard as well as use the
-  <code>retrace</code> tool to decode obfuscated stack traces.</p>
-
-  <h2 id="enabling">Enabling ProGuard</h2>
-
-  <p>When you create an Android project, a <code>proguard.cfg</code> file is automatically
-  generated in the root directory of the project. This file defines how ProGuard optimizes and
-  obfuscates your code, so it is very important that you understand how to customize it for your
-  needs. The default configuration file only covers general cases, so you most likely have to edit
-  it for your own needs. See the following section about <a href="#configuring">Configuring ProGuard</a> for information on 
-  customizing the ProGuard configuration file.</p>
-
-  <p>To enable ProGuard so that it runs as part of an Ant or Eclipse build, set the
-  <code>proguard.config</code> property in the <code>&lt;project_root&gt;/project.properties</code>
-  file. The path can be an absolute path or a path relative to the project's root.</p>
-<p>If you left the <code>proguard.cfg</code> file in its default location (the project's root directory),
-you can specify its location like this:</p>
-<pre class="no-pretty-print">
-proguard.config=proguard.cfg
-</pre>
-<p>
-You can also move the the file to anywhere you want, and specify the absolute path to it:
-</p>
-<pre class="no-pretty-print">
-proguard.config=/path/to/proguard.cfg
-</pre>
-
-
-  <p>When you build your application in release mode, either by running <code>ant release</code> or
-  by using the <em>Export Wizard</em> in Eclipse, the build system automatically checks to see if
-  the <code>proguard.config</code> property is set. If it is, ProGuard automatically processes
-  the application's bytecode before packaging everything into an <code>.apk</code> file. Building in debug mode
-  does not invoke ProGuard, because it makes debugging more cumbersome.</p>
-
-  <p>ProGuard outputs the following files after it runs:</p>
-
-  <dl>
-    <dt><code>dump.txt</code></dt>
-    <dd>Describes the internal structure of all the class files in the <code>.apk</code> file</dd>
-
-    <dt><code>mapping.txt</code></dt>
-    <dd>Lists the mapping between the original and obfuscated class, method, and field names. 
-    This file is important when you receive a bug report from a release build, because it 
-    translates the obfuscated stack trace back to the original class, method, and member names.
-    See <a href="#decoding">Decoding Obfuscated Stack Traces</a> for more information.</dd>
-
-    <dt><code>seeds.txt</code></dt>
-    <dd>Lists the classes and members that are not obfuscated</dd>
-
-    <dt><code>usage.txt</code></dt>
-    <dd>Lists the code that was stripped from the <code>.apk</code></dd>
-  </ul>
-
-  <p>These files are located in the following directories:</p>
-
-  <ul>
-    <li><code>&lt;project_root&gt;/bin/proguard</code> if you are using Ant.</li>
-
-    <li><code>&lt;project_root&gt;/proguard</code> if you are using Eclipse.</li>
-  </ul>
-
-  
-  <p class="caution"><strong>Caution:</strong> Every time you run a build in release mode, these files are
-  overwritten with the latest files generated by ProGuard. Save a copy of them each time you release your
-  application in order to de-obfuscate bug reports from your release builds. 
-  For more information on why saving these files is important, see 
-  <a href="#considerations">Debugging considerations for published applications</a>.
-  </p>
-
-  <h2 id="configuring">Configuring ProGuard</h2>
-
-  <p>For some situations, the default configurations in the <code>proguard.cfg</code> file will
-  suffice. However, many situations are hard for ProGuard to analyze correctly and it might remove code
-  that it thinks is not used, but your application actually needs. Some examples include:</p>
-
-  <ul>
-    <li>a class that is referenced only in the <code>AndroidManifest.xml</code> file</li>
-
-    <li>a method called from JNI</li>
-
-    <li>dynamically referenced fields and methods</li>
-  </ul>
-
-  <p>The default <code>proguard.cfg</code> file tries to cover general cases, but you might
-  encounter exceptions such as <code>ClassNotFoundException</code>, which happens when ProGuard
-  strips away an entire class that your application calls.</p>
-
-  <p>You can fix errors when ProGuard strips away your code by adding a <code>-keep</code> line in
-  the <code>proguard.cfg</code> file. For example:</p>
-  <pre>
--keep public class &lt;MyClass&gt;
-</pre>
-
-  <p>There are many options and considerations when using the <code>-keep</code> option, so it is
-  highly recommended that you read the <a href="http://proguard.sourceforge.net/manual/introduction.html">ProGuard
-  Manual</a> for more information about customizing your configuration file. The <a href=
-  "http://proguard.sourceforge.net/manual/usage.html#keepoverview">Overview of Keep options</a> and
-  <a href="http://proguard.sourceforge.net/index.html#/manual/examples.html">Examples section</a>
-  are particularly helpful. The <a href=
-  "http://proguard.sourceforge.net/manual/troubleshooting.html">Troubleshooting</a> section of the
-  ProGuard Manual outlines other common problems you might encounter when your code gets stripped
-  away.</p>
-
-  <h2 id="decoding">Decoding Obfuscated Stack Traces</h2>
-
-  <p>When your obfuscated code outputs a stack trace, the method names are obfuscated, which makes
-  debugging hard, if not impossible. Fortunately, whenever ProGuard runs, it outputs a
-  <code>&lt;project_root&gt;/bin/proguard/mapping.txt</code> file, which shows you the original
-  class, method, and field names mapped to their obfuscated names.</p>
-
-  <p>The <code>retrace.bat</code> script on Windows or the <code>retrace.sh</code> script on Linux
-  or Mac OS X can convert an obfuscated stack trace to a readable one. It is located in the
-  <code>&lt;sdk_root&gt;/tools/proguard/</code> directory. The syntax for executing the 
-  <code>retrace</code> tool is:</p>
-  <pre>retrace.bat|retrace.sh [-verbose] mapping.txt [&lt;stacktrace_file&gt;]</pre>
-  <p>For example:</p>
-  
-  <pre>retrace.bat -verbose mapping.txt obfuscated_trace.txt</pre>
-  
-  <p>If you do not specify a value for <em>&lt;stacktrace_file&gt;</em>, the <code>retrace</code> tool reads
-  from standard input.</p>
-
-  <h3 id="considerations">Debugging considerations for published applications</h3>
-
-  <p>Save the <code>mapping.txt</code> file for every release that you publish to your users. 
-  By retaining a copy of the <code>mapping.txt</code> file for each release build, 
-  you ensure that you can debug a problem if a user encounters a bug and submits an obfuscated stack trace.
-  A project's <code>mapping.txt</code> file is overwritten every time you do a release build, so you must be
-  careful about saving the versions that you need.</p>
-
-  <p>For example, say you publish an application and continue developing new features of
-  the application for a new version. You then do a release build using ProGuard soon after. The
-  build overwrites the previous <code>mapping.txt</code> file. A user submits a bug report
-  containing a stack trace from the application that is currently published. You no longer have a way 
-  of debugging the user's stack trace, because the <code>mapping.txt</code> file associated with the version
-  on the user's device is gone. There are other situations where your <code>mapping.txt</code> file can be overwritten, so
-  ensure that you save a copy for every release that you anticipate you have to debug.</p>
-
-  <p>How you save the <code>mapping.txt</code> file is your decision. For example, you can rename them to
-  include a version or build number, or you can version control them along with your source
-  code.</p>
\ No newline at end of file
diff --git a/docs/html/guide/developing/tools/sqlite3.jd b/docs/html/guide/developing/tools/sqlite3.jd
deleted file mode 100644
index 9cc7e98..0000000
--- a/docs/html/guide/developing/tools/sqlite3.jd
+++ /dev/null
@@ -1,59 +0,0 @@
-page.title=sqlite3
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
- <p>From a remote shell to your device or from your host machine, you can use the <a href= 
-  "http://www.sqlite.org/sqlite.html">sqlite3</a> command-line program to manage SQLite databases
-  created by Android applications. The <code>sqlite3</code> tool includes many useful commands,
-  such as <code>.dump</code> to print out the contents of a table and <code>.schema</code> to print
-  the SQL CREATE statement for an existing table. The tool also gives you the ability to execute
-  SQLite commands on the fly.</p>
-
-  <p>To use <code>sqlite3</code> from a remote shell:</p>
-
-  <ol>
-    <li>Enter a remote shell by entering the following command:
-      <pre>adb [-d|-e|-s {&lt;serialNumber&gt;}] shell</pre>
-    </li>
-
-    <li>From a remote shell, start the <code>sqlite3</code> tool by entering the following command:
-      <pre>sqlite3</pre>
-
-      <p>You can also optionally specify a full path to a database that you want to explore.
-      Emulator/device instances store SQLite3 databases in the directory 
-      <code>/data/data/&lt;package_name&gt;/databases/</code>.</p>
-    </li>
-
-    <li>Once you invoke <code>sqlite3</code>, you can issue <code>sqlite3</code> commands in the
-    shell. To exit and return to the adb remote shell, enter <code>exit</code> or press
-    <code>CTRL+D</code>.</li>
-  </ol>
-  
-  
-      <p>Here's an example:</p>
-      <pre>$ adb -s emulator-5554 shell
-# sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.db
-SQLite version 3.3.12
-Enter ".help" for instructions
-<em>.... enter commands, then quit...</em>
-# sqlite&gt; .exit 
-</pre>
-
-  <p>To use <code>sqlite3</code> locally, instead of within a shell, 
-  pull the database file from the device and start {@code sqlite3}:</p>
-
-  <ol>
-    <li>Copy a database file from your device to your host machine:
-      <pre>
-adb pull &lt;database-file-on-device&gt;
-</pre>
-    </li>
-
-    <li>Start the sqlite3 tool from the <code>/tools</code> directory, specifying the database
-    file:
-      <pre>
-sqlite3 &lt;database-file-on-host&gt;
-</pre>
-    </li>
-  </ol>
\ No newline at end of file
diff --git a/docs/html/guide/developing/tools/traceview.jd b/docs/html/guide/developing/tools/traceview.jd
deleted file mode 100644
index aa37481..0000000
--- a/docs/html/guide/developing/tools/traceview.jd
+++ /dev/null
@@ -1,16 +0,0 @@
-page.title=Traceview
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>Traceview is a graphical viewer for execution logs saved by your application. 
-Traceview can help you debug your application and profile its performance.</p>
-
-<p>To start Traceview, enter the following command from the SDK <code>tools/</code> directory:</p>
-  <pre>traceview</pre>
-</ol>
-
-<p>For more information on how to use Traceview, see 
-<a href="{@docRoot}guide/developing/debugging/debugging-tracing.html">Profiling with Traceview and dmtracedump</a>
-</p>
-
diff --git a/docs/html/guide/developing/tools/zipalign.jd b/docs/html/guide/developing/tools/zipalign.jd
deleted file mode 100644
index 3216080..0000000
--- a/docs/html/guide/developing/tools/zipalign.jd
+++ /dev/null
@@ -1,67 +0,0 @@
-page.title=zipalign
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>zipalign is an archive alignment tool that provides important
-optimization to Android application (.apk) files. 
-The purpose is to ensure that all uncompressed data starts
-with a particular alignment relative to the start of the file.  Specifically,
-it causes all uncompressed data within the .apk, such as images or raw files,
-to be aligned on 4-byte boundaries. This
-allows all portions to be accessed directly with {@code mmap()} even if they
-contain binary data with alignment restrictions. 
-The benefit is a reduction in the amount of RAM consumed 
-when running the application.</p>
-
-<p>This tool should always be used to align your .apk file before 
-distributing it to end-users. The Android build tools can handle
-this for you. When using Eclipse with the ADT plugin, the Export Wizard
-will automatically zipalign your .apk after it signs it with your private key. 
-The build scripts used
-when compiling your application with Ant will also zipalign your .apk,
-as long as you have provided the path to your keystore and the key alias in
-your project {@code ant.properties} file, so that the build tools 
-can sign the package first.</p>
-
-<p class="caution"><strong>Caution:</strong> zipalign must only be performed
-<strong>after</strong> the .apk file has been signed with your private key.
-If you perform zipalign before signing, then the signing procedure will undo
-the alignment. Also, do not make alterations to the aligned package.
-Alterations to the archive, such as renaming or deleting entries, will
-potentially disrupt the alignment of the modified entry and all later
-entries. And any files added to an "aligned" archive will not be aligned.</p>
-
-<p>The adjustment is made by altering the size of
-the "extra" field in the zip Local File Header sections.  Existing data
-in the "extra" fields may be altered by this process.</p>
-
-<p>For more information about how to use zipalign when building your 
-application, please read <a href="{@docRoot}guide/publishing/app-signing.html">Signing
-Your Application</a>.</p>
-
-
-<h3>Usage</h3>
-
-<p>To align {@code infile.apk} and save it as {@code outfile.apk}:</p>
-
-<pre>zipalign [-f] [-v] &lt;alignment> infile.apk outfile.apk</pre>
-
-<p>To confirm the alignment of {@code existing.apk}:</p>
-
-<pre>zipalign -c -v &lt;alignment> existing.apk</pre>
-
-<p>The {@code &lt;alignment>} is an integer that defines the byte-alignment boundaries. 
-This must always be 4 (which provides 32-bit alignment) or else it effectively 
-does nothing.</p>
-
-<p>Flags:</p>
-
-<ul>
-  <li>{@code -f} : overwrite existing outfile.zip</li>
-  <li>{@code -v} : verbose output</li>
-  <li>{@code -c} : confirm the alignment of the given file</li>
-</ul>
-
-
-
diff --git a/docs/html/guide/google/index.jd b/docs/html/guide/google/index.jd
new file mode 100644
index 0000000..95c2816
--- /dev/null
+++ b/docs/html/guide/google/index.jd
@@ -0,0 +1,97 @@
+page.title=Google Services
+footer.hide=1
+@jd:body
+
+    
+   <p>Google offers a variety of services that help you build new revenue streams, enhance your app's capabilities, manage distribution and payloads, and track usage and installs. Many of the services use static libraries that you download through the Android SDK Manager and build into your app. Others are configurable directly from Google Play Android Developer Console.</p>
+   
+   <p>The sections below highlight some of the Google Services and link you to more information about how to use them in your Android app. </p>
+  
+
+<h2 id="monetization">Monetize Your App</h2>
+
+<div class="vspace size-1">&nbsp;</div>
+<div class="layout-content-row">
+
+  <div class="layout-content-col span-4">
+	  <h4>In-App Billing</h4>
+  		<p>Keep your users engaged by offering in-app purchases and subscriptions directly in your app.
+  		</p>
+   		<a href="{@docRoot}guide/google/play/billing/index.html">Learn more &raquo;</a>
+  </div>
+
+  <div class="layout-content-col span-4">
+		<h4>Google AdMob Ads</h4>
+		<p>Generate more revenue from your app by
+		displaying ads from multiple ad networks.</p>
+   	<a href="https://developers.google.com/mobile-ads-sdk/docs/android/fundamentals">Learn more &raquo;</a>
+  </div>
+  
+  <div class="layout-content-col span-4">
+			<h4>Application Licensing</h4>
+			<p>Protect your revenue streams and integrate policies for usage into your app.</p>
+			<a href="{@docRoot}guide/google/play/licensing/index.html">Learn more &raquo;</a>
+  </div>
+
+</div>
+
+<h2 id="integration">Manage App Distribution</h2>
+
+<div class="vspace size-1">&nbsp;</div>
+
+<div class="layout-content-row">
+
+<div class="layout-content-col span-4">
+
+<h4>Google Play Filters</h4>
+<p>Make sure your app gets to the right users by
+declaring the hardware and software features needed by your app.</p>
+<a href="{@docRoot}guide/google/play/filters.html">Learn more &raquo;</a>
+</div>
+
+  <div class="layout-content-col span-4">
+<h4>Multiple APK Support</h4>
+<p>Distribute different APKs based on a variety of properties such as platform version, screen size, and GLES texture compression support.</p>
+<a href="{@docRoot}guide/google/play/publishing/multiple-apks.html">Learn more &raquo;</a>
+</div>
+
+  <div class="layout-content-col span-4">
+
+<h4>APK Expansion files</h4>
+<p>Take load off of your servers and utilize APK expansion files
+to deliver up to 4 GB of assets for your Android app, free.</p>
+ 
+<a href="{@docRoot}guide/google/play/expansion-files.html">Learn more &raquo;</a>
+</div>
+
+</div>
+
+<h2 id="integration">Enhance Your App's Capabilities</h2>
+
+<div class="vspace size-1">&nbsp;</div>
+
+<div class="layout-content-row">
+
+<div class="layout-content-col span-4">
+  <h4>Android Cloud-to-Device Messaging </h4>
+  <p>Notify your apps of events with push messages that are lightweight
+   and battery-saving.</p>
+  <a href="https://developers.google.com/android/c2dm/">Learn more &raquo;</a>
+</div>
+
+<div class="layout-content-col span-4">
+	<h4>Google Maps</h4>
+  <p> The Google Maps library for Android lets you add powerful mapping and geo-location capabilities to your app.</p>
+  <a href="https://developers.google.com/maps/documentation/android/">Learn more &raquo;</a>
+</div>
+</div>
+
+
+<h2 id="integration">Track Performance with Analytics</h2>
+<p>Google Analytics gives you powerful insights into how users find your apps
+	and how they use them. <br />Start integrating analytics to measure
+	your app's success.</p>
+	
+	
+<div style="margin-bottom:1.5em;"><a href="https://developers.google.com/analytics/devguides/collection/android/">Learn more &raquo;</a></div>
+   
\ No newline at end of file
diff --git a/docs/html/guide/google/play/billing/billing_about.html b/docs/html/guide/google/play/billing/billing_about.html
new file mode 100644
index 0000000..9f41fa62
--- /dev/null
+++ b/docs/html/guide/google/play/billing/billing_about.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+<meta http-equiv="refresh"
+content="0;url=http://developer.android.com/guide/google/play/billing/index.html">
+<title>Redirecting...</title>
+</head>
+<body>
+<p>You should be redirected. Please <a
+href="http://developer.android.com/guide/google/play/billing/index.html">click
+here</a>.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/html/guide/market/billing/billing_admin.jd b/docs/html/guide/google/play/billing/billing_admin.jd
similarity index 89%
rename from docs/html/guide/market/billing/billing_admin.jd
rename to docs/html/guide/google/play/billing/billing_admin.jd
index 0f869ab..cb288a5 100755
--- a/docs/html/guide/market/billing/billing_admin.jd
+++ b/docs/html/guide/google/play/billing/billing_admin.jd
@@ -15,20 +15,20 @@
   </ol>
   <h2>Downloads</h2>
   <ol>
-    <li><a href="{@docRoot}guide/market/billing/billing_integrate.html#billing-download">Sample
+    <li><a href="{@docRoot}guide/google/play/billing/billing_integrate.html#billing-download">Sample
     Application</a></li>
   </ol>
   <h2>See also</h2>
   <ol>
-    <li><a href="{@docRoot}guide/market/billing/billing_overview.html">Overview of In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_overview.html">Overview of In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_integrate.html">Implementing In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_integrate.html">Implementing In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_best_practices.html">Security and
+    <li><a href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and
     Design</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_testing.html">Testing In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_testing.html">Testing In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_reference.html">In-app Billing
+    <li><a href="{@docRoot}guide/google/play/billing/billing_reference.html">In-app Billing
     Reference</a></li>
   </ol>
 </div>
@@ -39,13 +39,13 @@
 site, registering test accounts, and handling refunds when necessary.</p>
 
 <p>You must have a Google Play publisher account to register test accounts. And you must have a
-Google Checkout merchant account to create a product list and issue refunds to your users. If you
+Google Wallet merchant account to create a product list and issue refunds to your users. If you
 already have a publisher account on Google Play, you can use your existing account. You do not
 need to register for a new account to support in-app billing. If you do not have a publisher
 account, you can register as a Google Play developer and set up a publisher account at the
 Google Play <a href="http://play.google.com/apps/publish">publisher site</a>. If you do not have a
-Google Checkout merchant account, you can register for one at the <a
-href="http://checkout.google.com">Google Checkout site</a>.</p>
+Google Wallet merchant account, you can register for one at the <a
+href="http://checkout.google.com">Google Wallet site</a>.</p>
 
 <h2 id="billing-list-setup">Creating a Product List</h2>
 
@@ -56,7 +56,7 @@
 
 <p>You can access an application's product list by clicking the <strong>In-App Products</strong>
 link that appears under each of the applications that are listed for your publisher account (see
-figure 1). The <strong>In-App Products</strong> link appears only if you have a Google Checkout
+figure 1). The <strong>In-App Products</strong> link appears only if you have a Google Wallet
 merchant account and an application's manifest includes the <code>com.android.vending.BILLING</code>
 permission.</p>
 
@@ -66,7 +66,8 @@
   <strong>In-App Products</strong> link.
 </p>
 
-<p>A product list contains information about the items you are selling, such as a product id,
+<p>A product list specifies items you are selling in an application &mdash; in-app products,
+subscriptions, or a combination of both. For each item, the product list contains information such as a product id,
 product description, and price (see figure 2). The product list stores only metadata about the items
 you are selling in your application. It does not store any digital content. You are responsible for
 storing and delivering the digital content that you sell in your applications.</p>
@@ -77,17 +78,17 @@
 </p>
 
 <p>You can create a product list for any published application or any draft application that's been
-uploaded and saved to the Google Play site. However, you must have a Google Checkout merchant
+uploaded and saved to the Google Play site. However, you must have a Google Wallet merchant
 account and the application's manifest must include the <code>com.android.vending.BILLING</code>
 permission. If an application's manifest does not include this permission, you will be able to edit
 existing items in the product list but you will not be able to add new items to the list. For more
 information about this permission, see
-<a href="{@docRoot}guide/market/billing/billing_integrate.html#billing-permission">Updating Your
+<a href="{@docRoot}guide/google/play/billing/billing_integrate.html#billing-permission">Updating Your
 Application's Manifest</a>.</p>
 
 <p>In addition, an application package can have only one product list. If you create a product
 list for an application, and you use the <a
-href="{@docRoot}guide/market/publishing/multiple-apks.html">multiple APK feature</a> to distribute
+href="{@docRoot}guide/google/play/publishing/multiple-apks.html">multiple APK feature</a> to distribute
 more than one APK for that application, the product list applies to all APK versions that are
 associated with the application listing. You cannot create individual product lists for each APK if
 you are using the multiple APK feature.</p>
@@ -99,6 +100,8 @@
 product list for testing purposes. The CSV file method is useful if your application has a large
 number of in-app items.</p>
 
+<p class="note"><strong>Note:</strong> Batch upload of product lists containing subscriptions is not yet supported.</p>
+
 <h3 id="billing-form-add">Adding items one at a time to a product list</h3>
 
 <p>To add an item to a product list using the In-app Products UI, follow these steps:</p>
@@ -129,8 +132,8 @@
     a product ID.</p>
   </li>
   <li><strong>Purchase Type</strong>
-    <p>The purchase type can be <strong>Managed per user account</strong> or <strong>
-    Unmanaged</strong>. You can never change an item's purchase type after you set it. For more
+    <p>The purchase type can be <strong>Managed per user account</strong>, <strong>Unmanaged</strong>,
+    or <strong>Subscription</strong>. You can never change an item's purchase type after you set it. For more
     information, see <a href="#billing-purchase-type">Choosing a purchase type</a> later in this
     document.</p>
   </li>
@@ -140,7 +143,7 @@
     <strong>Published</strong> and the item's application must be published on Google Play.</p>
     <p class="note"><strong>Note:</strong> This is not true for test accounts. An item is visible to
     a test account if the application is not published and the item is published. See <a
-    href="{@docRoot}guide/market/billing/billing_testing.html#billing-testing-real">Testing In-app
+    href="{@docRoot}guide/google/play/billing/billing_testing.html#billing-testing-real">Testing In-app
     Billing</a> for more information.</p>
   </li>
   <li><strong>Language</strong>
@@ -171,6 +174,7 @@
     <p>To specify prices in other currencies, you can manually enter the price for each
     currency or you can click <strong>Auto Fill</strong> and let Google Play do a one-time
     conversion from your home currency to the currencies you are targeting (see figure 4).</p>
+    <p>For subscription items, note that you can not change the item's price once you have published it. </p>
   </li>
 </ul>
 <img src="{@docRoot}images/billing_list_form_2.png" height="1226" id="figure4" />
@@ -193,7 +197,16 @@
 <p>To add a batch of items to a product list using a CSV file, you first need to create your CSV
 file. The data values that you specify in the CSV file represent the same data values you specify
 manually through the In-app Products UI (see <a href="#billing-form-add">Adding items one at a time
-to a product list</a>). The CSV file uses commas (,) and semi-colons (;) to separate data values.
+to a product list</a>). 
+
+<p>If you are importing and exporting CSV files with in-app products, please
+keep tax-inclusive pricing in mind. If you use auto-fill, you can provide a
+tax-exclusive default price and tax-inclusive prices will be auto-filled. If you
+do not use auto-fill, prices you provide must include tax.</p>
+
+<p class="note"><strong>Note:</strong> Batch upload of product lists containing subscriptions is not yet supported.</p>
+
+The CSV file uses commas (,) and semi-colons (;) to separate data values.
 Commas are used to separate primary data values, and semi-colons are used to separate subvalues. For
 example, the syntax for the CSV file is as follows:</p>
 
@@ -419,17 +432,17 @@
 
 <p>In-app billing does not allow users to send a refund request to Google Play. Refunds for
 in-app purchases must be directed to you (the application developer). You can then process the
-refund through your Google Checkout merchant account. When you do this, Google Play receives a
-refund notification from Google Checkout, and Google Play sends a refund message to your
+refund through your Google Wallet merchant account. When you do this, Google Play receives a
+refund notification from Google Wallet, and Google Play sends a refund message to your
 application. For more information, see <a
-href="{@docRoot}guide/market/billing/billing_overview.html#billing-action-notify">Handling
+href="{@docRoot}guide/google/play/billing/billing_overview.html#billing-action-notify">Handling
 IN_APP_NOTIFY messages</a> and <a
 href="http://www.google.com/support/androidmarket/bin/answer.py?answer=1153485">In-app Billing
 Pricing</a>.</p>
 
-<p class="caution"><strong>Important:</strong> You cannot use the Google Checkout API to issue
+<p class="caution"><strong>Important:</strong> You cannot use the Google Wallet API to issue
 refunds or cancel in-app billing transactions. You must do this manually through your Google
-Checkout merchant account. However, you can use the Google Checkout API to retrieve order
+Wallet merchant account. However, you can use the Google Wallet API to retrieve order
 information.</p>
 
 <h2 id="billing-testing-setup">Setting Up Test Accounts</h2>
diff --git a/docs/html/guide/market/billing/billing_best_practices.jd b/docs/html/guide/google/play/billing/billing_best_practices.jd
similarity index 88%
rename from docs/html/guide/market/billing/billing_best_practices.jd
rename to docs/html/guide/google/play/billing/billing_best_practices.jd
index e100ce5..49d2a29 100755
--- a/docs/html/guide/market/billing/billing_best_practices.jd
+++ b/docs/html/guide/google/play/billing/billing_best_practices.jd
@@ -11,20 +11,20 @@
   </ol>
   <h2>Downloads</h2>
   <ol>
-    <li><a href="{@docRoot}guide/market/billing/billing_integrate.html#billing-download">Sample
+    <li><a href="{@docRoot}guide/google/play/billing/billing_integrate.html#billing-download">Sample
     Application</a></li>
   </ol>
   <h2>See also</h2>
   <ol>
-    <li><a href="{@docRoot}guide/market/billing/billing_overview.html">Overview of In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_overview.html">Overview of In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_integrate.html">Implementing In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_integrate.html">Implementing In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_testing.html">Testing In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_testing.html">Testing In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_admin.html">Administering In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_admin.html">Administering In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_reference.html">In-app Billing
+    <li><a href="{@docRoot}guide/google/play/billing/billing_reference.html">In-app Billing
     Reference</a></li>
   </ol>
 </div>
@@ -58,7 +58,7 @@
 <p>You should obfuscate your in-app billing code so it is difficult for an attacker to reverse
 engineer security protocols and other application components. At a minimum, we recommend that you
 run an  obfuscation tool like <a
-href="http://developer.android.com/guide/developing/tools/proguard.html">Proguard</a> on your
+href="http://developer.android.com/tools/proguard.html">Proguard</a> on your
 code.</p>
 <p>In addition to running an obfuscation program, we recommend that you use the following techniques
 to obfuscate your in-app billing code.</p>
diff --git a/docs/html/guide/market/billing/billing_integrate.jd b/docs/html/guide/google/play/billing/billing_integrate.jd
similarity index 93%
rename from docs/html/guide/market/billing/billing_integrate.jd
rename to docs/html/guide/google/play/billing/billing_integrate.jd
index 4b3650f..2d1582e 100755
--- a/docs/html/guide/market/billing/billing_integrate.jd
+++ b/docs/html/guide/google/play/billing/billing_integrate.jd
@@ -21,15 +21,15 @@
   </ol>
   <h2>See also</h2>
   <ol>
-    <li><a href="{@docRoot}guide/market/billing/billing_overview.html">Overview of In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_overview.html">Overview of In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_best_practices.html">Security and
+    <li><a href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and
     Design</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_testing.html">Testing In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_testing.html">Testing In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_admin.html">Administering In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_admin.html">Administering In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_reference.html">In-app Billing
+    <li><a href="{@docRoot}guide/google/play/billing/billing_reference.html">In-app Billing
     Reference</a></li>
   </ol>
 </div>
@@ -41,8 +41,8 @@
 billing sample application as an example.</p>
 
 <p>Before you implement in-app billing in your own application, be sure that you read <a
-href="{@docRoot}guide/market/billing/billing_overview.html">Overview of In-app Billing</a> and <a
-href="{@docRoot}guide/market/billing/billing_best_practices.html">Security and Design</a>. These
+href="{@docRoot}guide/google/play/billing/billing_overview.html">Overview of In-app Billing</a> and <a
+href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and Design</a>. These
 documents provide background information that will make it easier for you to implement in-app
 billing.</p>
 
@@ -214,7 +214,7 @@
   </li>
   <li><strong>Build the sample application in release mode and sign it.</strong>
     <p>To learn how to build and sign applications, see <a
-    href="{@docRoot}guide/developing/building/index.html">Building and Running</a>.</p>
+    href="{@docRoot}tools/building/index.html">Building and Running</a>.</p>
   </li>
 </ol>
 
@@ -238,11 +238,11 @@
     your product list so that <code>sword_001</code> has a purchase type of "Managed per user
     account" and <code>potion_001</code> has a purchase type of "Unmanaged" so you can see how these
     two purchase types behave. To learn how to set up a product list, see <a
-    href="{@docRoot}guide/market/billing/billing_admin.html#billing-list-setup">Creating a Product
+    href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-list-setup">Creating a Product
     List</a>.</p>
     <p class="note"><strong>Note:</strong> You must publish the items in your product
     list (<code>sword_001</code> and <code>potion_001</code>) even though you are not publishing the
-    sample application. Also, you must have a Google Checkout Merchant account to add items to the
+    sample application. Also, you must have a Google Wallet Merchant account to add items to the
     sample application's product list.</p>
   </li>
 </ol>
@@ -255,10 +255,10 @@
 <ol>
   <li><strong>Make sure you have at least one test account registered under your Google Play
   publisher account.</strong>
-    <p>You cannot purchase items from yourself (Google Checkout prohibits this), so you need to
+    <p>You cannot purchase items from yourself (Google Wallet prohibits this), so you need to
     create at least one test account that you can use to purchase items in the sample application.
     To learn how to set up a test account, see <a
-    href="{@docRoot}guide/market/billing/billing_testing.html#billing-testing-setup">Setting up Test
+    href="{@docRoot}guide/google/play/billing/billing_testing.html#billing-testing-setup">Setting up Test
     Accounts</a>.</p>
   </li>
   <li><strong>Verify that your device is running a supported version of the Google Play
@@ -274,12 +274,12 @@
     <p>Even though you uploaded the application to Google Play, the application is not published,
     so you cannot download it from Google Play to a device. Instead, you must install the
     application onto your device. To learn how to install an application onto a device, see <a
-    href="{@docRoot}guide/developing/building/building-cmdline.html#RunningOnDevice">Running on a
+    href="{@docRoot}tools/building/building-cmdline.html#RunningOnDevice">Running on a
     device</a>.</p>
  </li>
  <li><strong>Make one of your test accounts the primary account on your device.</strong>
     <p>The primary account on your device must be one of the <a
-    href="{@docRoot}guide/market/billing/billing_admin.html#billing-testing-setup">test accounts</a>
+    href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-testing-setup">test accounts</a>
     that you registered on the Google Play publisher site. If the primary account on your device is not a
     test account, you must do a factory reset of the device and then sign in with one of your test
     accounts. To perform a factory reset, do the following:</p>
@@ -294,7 +294,7 @@
   </li>
   <li><strong>Run the application and purchase the sword or the potion.</strong>
     <p>When you use a test account to purchase items, the test account is billed through Google
-    Checkout and your Google Checkout Merchant account receives a payout for the purchase.
+    Wallet and your Google Wallet Merchant account receives a payout for the purchase.
     Therefore, you may want to refund purchases that are made with test accounts, otherwise the
     purchases will show up as actual payouts to your merchant account.</p>
 </ol>
@@ -466,7 +466,7 @@
 code. However, this is not the complete purchase response; the complete response is delivered with
 an asynchronous broadcast intent. For more information about the various Bundle keys that are
 supported by the <code>MarketBillingService</code>, see <a
-href="{@docRoot}guide/market/billing/billing_reference.html#billing-interface">In-app Billing
+href="{@docRoot}guide/google/play/billing/billing_reference.html#billing-interface">In-app Billing
 Service Interface</a>.</p>
 
 <p>You can use the <code>sendBillingRequest()</code> method to send five types of billing requests.
@@ -475,14 +475,14 @@
 
 <ul>
   <li><code>CHECK_BILLING_SUPPORTED</code>&mdash;verifies that the Google Play application
-  supports in-app billing.</li>
+  supports in-app billing and the version of the In-app Billing API available.</li>
   <li><code>REQUEST_PURCHASE</code>&mdash;sends a purchase request for an in-app item.</li>
   <li><code>GET_PURCHASE_INFORMATION</code>&mdash;retrieves transaction information for a purchase
   or refund.</li>
   <li><code>CONFIRM_NOTIFICATIONS</code>&mdash;acknowledges that you received the transaction
   information for a purchase or refund.</li>
   <li><code>RESTORE_TRANSACTIONS</code>&mdash;retrieves a user's transaction history for <a
-  href="{@docRoot}guide/market/billing/billing_admin.html#billing-purchase-type">managed
+  href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-purchase-type">managed
   purchases</a>.</li>
 </ul>
 
@@ -511,8 +511,8 @@
 <h4>Verifying that in-app billing is supported (CHECK_BILLING_SUPPPORTED)</h4>
 
 <p>The following code sample shows how to verify whether the Google Play application supports
-in-app billing. In the sample, <code>mService</code> is an instance of the
-<code>MarketBillingService</code> interface.</p>
+in-app billing and confirm what version of the API it supports. In the sample, <code>mService</code>
+is an instance of the <code>MarketBillingService</code> interface.</p>
 
 <pre>
 /**
@@ -523,13 +523,19 @@
   // Do something with this response.
 }
 </pre>
+
 <p>The <code>makeRequestBundle()</code> method constructs an initial Bundle, which contains the
 three keys that are required for all requests: <code>BILLING_REQUEST</code>,
-<code>API_VERSION</code>, and <code>PACKAGE_NAME</code>. The request returns a synchronous {@link
+<code>API_VERSION</code>, and <code>PACKAGE_NAME</code>. If you are offering subscriptions in
+your app, set the API_VERSION key to a value of "2", to confirm that In-app Billing v2 is
+available. For an examnple, see
+<a href="{@docRoot}guide/google/play/billing/billing_subscriptions.html#version">Subscriptions</a>.</p>
+
+<p>The <code>CHECK_BILLING_SUPPORTED</code> request returns a synchronous {@link
 android.os.Bundle} response, which contains only a single key: <code>RESPONSE_CODE</code>. The
 <code>RESPONSE_CODE</code> key can have the following values:</p>
 <ul>
-  <li><code>RESULT_OK</code>&mdash;in-app billing is supported.</li>
+  <li><code>RESULT_OK</code>&mdash;the spedified version of in-app billing is supported.</li>
   <li><code>RESULT_BILLING_UNAVAILABLE</code>&mdash;in-app billing is not available because the API
   version you specified is not recognized or the user is not eligible to make in-app purchases (for
   example, the user resides in a country that prohibits in-app purchases).</li>
@@ -571,7 +577,7 @@
 <p>You must specify four keys in the request {@link android.os.Bundle}. The following code sample
 shows how to set these keys and make a purchase request for a single in-app item. In the sample,
 <code>mProductId</code> is the Google Play product ID of an in-app item (which is listed in the
-application's <a href="{@docRoot}guide/market/billing/billing_admin.html#billing-list-setup">product
+application's <a href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-list-setup">product
 list</a>), and <code>mService</code> is an instance of the <code>MarketBillingService</code>
 interface.</p>
 
@@ -581,6 +587,8 @@
 */
   Bundle request = makeRequestBundle("REQUEST_PURCHASE");
   request.putString(ITEM_ID, mProductId);
+  // Request is for a standard in-app product
+  request.putString(ITEM_TYPE, "inapp");
   // Note that the developer payload is optional.
   if (mDeveloperPayload != null) {
     request.putString(DEVELOPER_PAYLOAD, mDeveloperPayload);
@@ -664,7 +672,7 @@
 
 <p class="note"><strong>Note:</strong> The Google Play application also sends
 an <code>IN_APP_NOTIFY</code> for refunds. For more information, see <a
-href="{@docRoot}guide/market/billing/billing_overview.html#billing-action-notify">Handling
+href="{@docRoot}guide/google/play/billing/billing_overview.html#billing-action-notify">Handling
 IN_APP_NOTIFY messages</a>.</p>
 
 <p>Because the purchase process is not instantaneous and can take several seconds (or more), you
@@ -847,7 +855,7 @@
 messages, see the <code>BillingReceiver.java</code> and <code>BillingService.java</code> files in
 the sample application. You can use these samples as a basis for your own implementation. However,
 if you use any of the code from the sample application, be sure you follow the guidelines in <a
-href="{@docRoot}guide/market/billing/billing_best_practices.html">Security and Design</a>.</p>
+href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and Design</a>.</p>
 
 <h2 id="billing-broadcast-receiver">Creating a BroadcastReceiver</h2>
 
@@ -860,19 +868,19 @@
   <p>This broadcast intent contains a Google Play response code, and is sent after you make an
   in-app billing request. For more information about the response codes that are sent with this
   response, see <a
-  href="{@docRoot}guide/market/billing/billing_reference.html#billing-codes">Google Play Response
+  href="{@docRoot}guide/google/play/billing/billing_reference.html#billing-codes">Google Play Response
   Codes for In-app Billing</a>.</p>
   </li>
   <li>com.android.vending.billing.IN_APP_NOTIFY
   <p>This response indicates that a purchase has changed state, which means a purchase succeeded,
   was canceled, or was refunded. For more information about notification messages, see <a
-  href="{@docRoot}guide/market/billing/billing_reference.html#billing-intents">In-app Billing
+  href="{@docRoot}guide/google/play/billing/billing_reference.html#billing-intents">In-app Billing
   Broadcast Intents</a></p>
   </li>
   <li>com.android.vending.billing.PURCHASE_STATE_CHANGED
   <p>This broadcast intent contains detailed information about one or more transactions. For more
   information about purchase state messages, see <a
-  href="{@docRoot}guide/market/billing/billing_reference.html#billing-intents">In-app Billing
+  href="{@docRoot}guide/google/play/billing/billing_reference.html#billing-intents">In-app Billing
   Broadcast Intents</a></p>
   </li>
 </ul>
@@ -981,7 +989,7 @@
 sample application shows you how to do this. You can use this sample as a basis for your own {@link
 android.content.BroadcastReceiver}. However, if you use any of the code from the sample application,
 be sure you follow the guidelines that are discussed in <a
-href="{@docRoot}guide/market/billing/billing_best_practices.html">Security and Design </a>.</p>
+href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and Design </a>.</p>
 
 <h2 id="billing-signatures">Verifying Signatures and Nonces</h2>
 
@@ -1020,7 +1028,7 @@
 <code>PURCHASE_STATE_CHANGED</code> broadcast intent. The <code>Security.java</code> file in the
 sample application shows you how to do this. If you use this file as a basis for your own security
 implementation, be sure to follow the guidelines in <a
-href="{@docRoot}guide/market/billing/billing_best_practices.html">Security and Design</a> and
+href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and Design</a> and
 obfuscate your code.</p>
 
 <p>You will need to use your Google Play public key to perform the signature verification. The
@@ -1067,7 +1075,7 @@
 database has been simplified for clarity and does not exhibit the security best practices that we
 recommend. If you have a remote server, we recommend that you store purchase information on your
 server instead of in a local database on a device. For more information about security best
-practices, see <a href="{@docRoot}guide/market/billing/billing_best_practices.html">Security and
+practices, see <a href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and
 Design</a>.</p>
 
 <p class="note"><strong>Note</strong>: If you store any purchase information on a device, be sure to
diff --git a/docs/html/guide/market/billing/billing_overview.jd b/docs/html/guide/google/play/billing/billing_overview.jd
similarity index 74%
rename from docs/html/guide/market/billing/billing_overview.jd
rename to docs/html/guide/google/play/billing/billing_overview.jd
index b593811..280b3cf 100755
--- a/docs/html/guide/market/billing/billing_overview.jd
+++ b/docs/html/guide/google/play/billing/billing_overview.jd
@@ -7,6 +7,7 @@
 <div id="qv">
   <h2>In this document</h2>
   <ol>
+    <li><a href="#billing-types">Product and Purchase Types</a></li>
     <li><a href="#billing-arch">In-app Billing Architecture</a></li>
     <li><a href="#billing-msgs">In-app Billing Messages</a></li>
     <ol>
@@ -20,19 +21,19 @@
   </ol>
   <h2>Downloads</h2>
   <ol>
-    <li><a href="{@docRoot}guide/market/billing/billing_integrate.html#billing-download">Sample
+    <li><a href="{@docRoot}guide/google/play/billing/billing_integrate.html#billing-download">Sample
     Application</a></li>
   </ol>
   <h2>See also</h2>
   <ol>
-    <li><a href="{@docRoot}guide/market/billing/billing_integrate.html">Implementing In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_integrate.html">Implementing In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_best_practices.html">Security and
+    <li><a href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and
     Design</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_testing.html">Testing In-app Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_admin.html">Administering In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_testing.html">Testing In-app Billing</a></li>
+    <li><a href="{@docRoot}guide/google/play/billing/billing_admin.html">Administering In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_reference.html">In-app Billing
+    <li><a href="{@docRoot}guide/google/play/billing/billing_reference.html">In-app Billing
     Reference</a></li>
   </ol>
 </div>
@@ -47,15 +48,57 @@
 handle any financial transactions; that role is provided by Google Play's in-app billing
 service.</p>
 
+<h2 id="billing-types">Product and Purchase Types</h2>
+
+<p>In-app Billing supports different product types and purchase types to give you flexibility in how you monetize your app. In all cases, you define your products using the Google Play Developer Console, including product type, purchase type, SKU, price, description, and so on. For more information, see <a href="billing_admin.html">Administering In-app Billing</a>.</p>
+
+<h3 id="producttypes">Product Types</h3>
+
+<p>With In-app Billing, you can sell two types of products &mdash; <em>in-app products</em> and <em>subscriptions</em>. The billing characteristics of the two types are very different, but the In-app Billing API lets you handle the two product types in your app using the same communication model, data structures, and user interactions, as described later in this document.</p>
+
+<ul>
+<li><em>In-app products</em> &mdash; Items that a user would purchase one-at-a-time. For example, typical in-app products would let users purchase digital content, unlock functionality in an app, pay for one-time charges, or add almost anything to the application experience. Unlike with priced applications, once the user has purchased an in-app product there is no refund window. Users desiring refunds must contact the developer directly.
+
+<p>In-app products can be sold using either the "managed per user account" or "unmanaged" purchase type. In-app products are always explicitly associated with one and only one app. That is, one app cannot purchase an in-app product published for another app, even if they are from the same developer. In-app products are supported in all versions of In-app Billing.</p></li>
+
+<li><em>Subscriptions</em> &mdash; Items that are sold with a developer-specified, recurring billing interval. When a user purchases a subscription, Google Play and its payment processor automatically bill the user's account at the specified interval and price, charging the amount to the original payment method. Once the user purchases a subscription, Google Play continues billing the account indefinitely, without requiring approval or action from the user. The user can cancel the subscription at any time. 
+
+<p>Subscriptions can only be sold using the "managed per user account" purchase type. As with in-app products, once the user has purchased an in-app product there is no refund window. Users desiring refunds must contact the developer directly. For more information about subscriptions and how to sell them in your apps, see the <a href="billing-subscriptions.html">Subscriptions</a> document.</p></li>
+</ul>
+
+<h3 id="purchasetypes">Purchase Types</h3>
+
+<p>In-app Billing offers two purchase types that you can use when selling in-app products, "managed per user account" and "unmanaged". The purchase type controls how Google Play handles and tracks purchases for the products. </p>
+
+<ul>
+<li><em>Managed per user account</em> &mdash; Items that can be purchased only once per user account on Google Play. When a user purchases an item that uses the "managed per user account" purchase type, Google Play permanently stores the transaction information for each item on a per-user basis. This enables you to later query Google Play to restore the state of the items a specific user has purchased. If a user attempts to purchase a managed item that has already been purchased, Google Play prevents the user from purchasing the item again and displays an "Item already purchased" error.
+
+<p>The "managed per user account" purchase type is useful if you are selling items such as game levels or application features. These items are not transient and usually need to be restored whenever a user reinstalls your application, wipes the data on their device, or installs your application on a new device.</p>
+
+<li><em>Unmanaged</em> &mdash; Items that do not have their transaction information stored on Google Play. This means that you cannot later query Google Play to retrieve transaction information for those items. For "unmanaged" purchases, you are responsible for managing the transaction information. Also, Google Play does not attempt to prevent the user from purchasing an item multiple times if it uses the "unmanaged" purchase type. It's up to you to control how many times an unmanaged item can be purchased.</p>
+
+<p>The "unmanaged" purchase type is useful if you are selling consumable items, such as fuel or magic spells. These items are consumed within your application and are usually purchased multiple times.</p></li>
+</ul>
+
 <h2 id="billing-arch">In-app Billing Architecture</h2>
 
-<p>In-app billing uses an asynchronous message loop to convey billing requests and billing responses
-between your application and the Google Play server. In practice, your application never directly
-communicates with the Google Play server (see figure 1). Instead, your application sends billing
-requests to the Google Play application over interprocess communication (IPC) and receives
-purchase responses from the Google Play application in the form of asynchronous broadcast
-intents. Your application does not manage any network connections between itself and the Google
-Play server or use any special APIs from the Android platform.</p>
+<p>Your app accesses the In-app Billing service using an API that is exposed by
+the Google Play app installed on the device. The Google Play app then uses an
+asynchronous message loop to convey billing requests and responses between your
+application and the Google Play server. In practice, your application never
+directly communicates with the Google Play server (see figure 1). Instead, your
+application sends billing requests to the Google Play application over
+interprocess communication (IPC) and receives purchase responses from the Google
+Play application in the form of asynchronous broadcast intents. Your application
+does not manage any network connections between itself and the Google Play
+server or use any special APIs from the Android platform.</p>
+
+<div class="figure" style="width:440px">
+<img src="{@docRoot}images/billing_arch.png" alt="" height="582" />
+<p class="img-caption">
+  <strong>Figure 1.</strong> Your application sends and receives billing messages through the
+  Google Play application, which handles all communication with the Google Play server.</p>
+</div>
 
 <p>Some in-app billing implementations may also use a private remote server to deliver content or
 validate transactions, but a remote server is not required to implement in-app billing. A remote
@@ -66,13 +109,6 @@
 those tasks on a remote server is recommended because it helps make your application less vulnerable
 to security attacks.</p>
 
-<div class="figure" style="width:440px">
-<img src="{@docRoot}images/billing_arch.png" alt="" height="582" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> Your application sends and receives billing messages through the
-  Google Play application, which handles all communication with the Google Play server.</p>
-</div>
-
 <p>A typical in-app billing implementation relies on three components:</p>
 <ul>
   <li>A {@link android.app.Service} (named <code>BillingService</code> in the sample application),
@@ -118,17 +154,17 @@
 <p>Your application sends in-app billing requests by invoking a single IPC method
 (<code>sendBillingRequest()</code>), which is exposed by the <code>MarketBillingService</code>
 interface. This interface is defined in an <a
-href="{@docRoot}guide/developing/tools/aidl.html">Android Interface Definition Language</a> file
+href="{@docRoot}tools/aidl.html">Android Interface Definition Language</a> file
 (<code>IMarketBillingService.aidl</code>). You can <a
-href="{@docRoot}guide/market/billing/billing_integrate.html#billing-download">download</a> this AIDL
+href="{@docRoot}guide/google/play/billing/billing_integrate.html#billing-download">download</a> this AIDL
 file with the in-app billing sample application.</p>
 
 <p>The <code>sendBillingRequest()</code> method has a single {@link android.os.Bundle} parameter.
 The Bundle that you deliver must include several key-value pairs that specify various parameters for
-the request, such as the type of billing request you are making, the item that is being purchased,
-and the application that is making the request. For more information about the Bundle keys that are
-sent with a request, see <a
-href="{@docRoot}guide/market/billing/billing_reference.html#billing-interface">In-app Billing
+the request, such as the type of billing request you are making, the item that is being purchased and
+its type, and the application that is making the request. For more information about the Bundle keys
+that are sent with a request, see <a
+href="{@docRoot}guide/google/play/billing/billing_reference.html#billing-interface">In-app Billing
 Service Interface</a>.
 
 <p>One of the most important keys that every request Bundle must have is the
@@ -162,8 +198,10 @@
   </li>
   <li><code>RESTORE_TRANSACTIONS</code>
     <p>This request retrieves a user's transaction status for <a
-    href="{@docRoot}guide/market/billing/billing_admin.html#billing-purchase-type">managed
-    purchases</a>. You should send this request only when you need to retrieve a user's transaction
+    href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-purchase-type">managed
+    purchases</a> and <a
+    href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-purchase-type">subscriptions</a>.
+    You should send this request only when you need to retrieve a user's transaction
     status, which is usually only when your application is reinstalled or installed for the first
     time on a device.</p>
   </li>
@@ -202,7 +240,7 @@
     request. This response is <em>not</em> used to report any purchase state changes (such as refund
     or purchase information). For more information about the response codes that are sent with this
     response, see <a
-    href="{@docRoot}guide/market/billing/billing_reference.html#billing-codes">Server Response Codes
+    href="{@docRoot}guide/google/play/billing/billing_reference.html#billing-codes">Server Response Codes
     for In-app Billing</a>.</p>
   </li>
   <li><code>com.android.vending.billing.IN_APP_NOTIFY</code>
@@ -223,22 +261,22 @@
 
 <p>The JSON string that is returned with the <code>PURCHASE_STATE_CHANGED</code> intent provides
 your application with the details of one or more billing transactions. An example of this JSON
-string is shown below:</p>
-<pre class="no-pretty-print" style="color:black">
-{ "nonce" : 1836535032137741465,
+string for a subscription item is shown below:</p>
+<pre class="no-pretty-print" style="color:black">{ "nonce" : 1836535032137741465,
   "orders" :
-    { "notificationId" : "android.test.purchased",
-      "orderId" : "transactionId.android.test.purchased",
-      "packageName" : "com.example.dungeons",
-      "productId" : "android.test.purchased",
-      "developerPayload" : "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
-      "purchaseTime" : 1290114783411,
-      "purchaseState" : 0 }
+    [{ "notificationId" : "android.test.purchased",
+       "orderId" : "transactionId.android.test.purchased",
+       "packageName" : "com.example.dungeons",
+       "productId" : "android.test.purchased",
+       "developerPayload" : "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
+       "purchaseTime" : 1290114783411,
+       "purchaseState" : 0,
+       "purchaseToken" : "rojeslcdyyiapnqcynkjyyjh" }]
 }
 </pre>
 
 <p>For more information about the fields in this JSON string, see <a
-href="{@docRoot}guide/market/billing/billing_reference.html#billing-intents">In-app Billing
+href="{@docRoot}guide/google/play/billing/billing_reference.html#billing-intents">In-app Billing
 Broadcast Intents</a>.</p>
 
 <h3 id="billing-message-sequence">Messaging sequence</h3>
@@ -396,11 +434,11 @@
 application-initiated <code>REQUEST_PURCHASE</code> message, so that ultimately your application
 receives a <code>PURCHASE_STATE_CHANGED</code> broadcast intent message that includes information
 about the item that has been purchased. This applies only to items that have their <a
-href="{@docRoot}guide/market/billing/billing_admin.html#billing-purchase-type">purchase type</a> set
+href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-purchase-type">purchase type</a> set
 to "managed per user account."</p>
 
 <p>In the second case, your application can receive an <code>IN_APP_NOTIFY</code> broadcast intent
-when Google Play receives a refund notification from Google Checkout. In this case, Google
+when Google Play receives a refund notification from Google Wallet. In this case, Google
 Play sends an <code>IN_APP_NOTIFY</code> message to your application. Your application can handle
 this message the same way it handles responses from an application-initiated
 <code>REQUEST_PURCHASE</code> message so that ultimately your application receives a
@@ -409,9 +447,9 @@
 <code>PURCHASE_STATE_CHANGED</code> broadcast intent. Also, the <code>purchaseState</code> field in
 the JSON string is set to 2.</p>
 
-<p class="caution"><strong>Important:</strong> You cannot use the Google Checkout API to
+<p class="caution"><strong>Important:</strong> You cannot use the Google Wallet API to
 issue refunds or cancel in-app billing transactions. You must do this manually through your
-Google Checkout merchant account. However, you can use the Google Checkout API to retrieve order
+Google Wallet merchant account. However, you can use the Google Wallet API to retrieve order
 information.</p>
 
 <h2 id="billing-security">Security Controls</h2>
@@ -439,7 +477,7 @@
 the signature of the JSON string.</p>
 
 <p>For more information about best practices for security and design, see <a
-href="{@docRoot}guide/market/billing/billing_best_practices.html">Security and Design</a>.</p>
+href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and Design</a>.</p>
 
 <h2 id="billing-limitations">In-app Billing Requirements and Limitations</h2>
 
@@ -449,10 +487,10 @@
 <ul>
   <li>In-app billing can be implemented only in applications that you publish through Google
   Play.</li>
-  <li>You must have a Google Checkout Merchant account to use Google Play In-app Billing.</li>
-  <li>If your device is running Android 3.0, in-app billing requires version 5.0.12 (or higher) of
-  the MyApps application. If your device is running any other version of Android, in-app billing
-  requires version 2.3.4 (or higher) of the Google Play application.</li>
+  <li>You must have a Google Wallet Merchant account to use Google Play In-app Billing.</li>
+  <li>In-app billing requires version 2.3.4 (or higher) of the Android Market application.
+  To support subscriptions, version 3.5 or higher of the Google Play app is required. On devices
+  running Android 3.0, version 5.0.12 (or higher) of the MyApps application is required.</li>
   <li>An application can use in-app billing only if the device is running Android 1.6 (API level 4)
   or higher.</li>
   <li>You can use in-app billing to sell only digital content. You cannot use in-app billing to sell
@@ -465,5 +503,5 @@
 </ul>
 
 <p>For more information about in-app billing requirements, see <a
-href="http://market.android.com/support/bin/answer.py?answer=1153481">In-App Billing Availability
-and Policies</a>.</p>
+href="https://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=1153481">In-App
+Billing Availability and Policies</a>.</p>
diff --git a/docs/html/guide/market/billing/billing_reference.jd b/docs/html/guide/google/play/billing/billing_reference.jd
similarity index 78%
rename from docs/html/guide/market/billing/billing_reference.jd
rename to docs/html/guide/google/play/billing/billing_reference.jd
index e8cf2ee8..f8c6967 100755
--- a/docs/html/guide/market/billing/billing_reference.jd
+++ b/docs/html/guide/google/play/billing/billing_reference.jd
@@ -10,24 +10,25 @@
     <li><a href="#billing-codes">Server Response Codes for In-app Billing</a></li>
     <li><a href="#billing-interface">In-app Billing Service Interface</a></li>
     <li><a href="#billing-intents">In-app Billing Broadcast Intents</a></li>
-    
+    <li><a href="#other-intents">Other Broadcast Intents</a></li>
+    <li><a href="#billing-versions">In-app Billing API Versions</a></li>
   </ol>
   <h2>Downloads</h2>
   <ol>
-    <li><a href="{@docRoot}guide/market/billing/billing_integrate.html#billing-download">Sample
+    <li><a href="{@docRoot}guide/google/play/billing/billing_integrate.html#billing-download">Sample
     Application</a></li>
   </ol>
   <h2>See also</h2>
   <ol>
-    <li><a href="{@docRoot}guide/market/billing/billing_overview.html">Overview of In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_overview.html">Overview of In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_integrate.html">Implementing In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_integrate.html">Implementing In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_best_practices.html">Security and
+    <li><a href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and
     Design</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_testing.html">Testing In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_testing.html">Testing In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_admin.html">Administering In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_admin.html">Administering In-app
     Billing</a></li>
   </ol>
 </div>
@@ -39,9 +40,11 @@
   <li><a href="#billing-codes">Google Play Server Response Codes for In-app Billing</a></li>
   <li><a href="#billing-interface">In-app Billing Interface Parameters</a></li>
   <li><a href="#billing-intents">In-app Billing Broadcast Intents</a></li>
+  <li><a href="#other-intents">Other Intents</a></li>
+  <li><a href="#billing-versions">In-app Billing API Versions</a></li>
 </ul>
 
-<h2 id="billing-codes">Google Play Server Response Codes for In-app Billing</h2>
+<h2 id="billing-codes">Server Response Codes for In-app Billing</h2>
 
 <p>The following table lists all of the server response codes that are sent from Google Play to
 your application. Google Play sends these response codes asynchronously as
@@ -102,7 +105,7 @@
   <td><code>RESULT_ERROR</code></td>
   <td>6</td>
   <td>Indicates an unexpected server error. For example, this error is triggered if you try to
-purchase an item from yourself, which is not allowed by Google Checkout.</td>
+purchase an item from yourself, which is not allowed by Google Wallet.</td>
 </tr>
 </table>
 
@@ -111,7 +114,7 @@
 <p>The following section describes the interface for Google Play's in-app billing service. The
 interface is defined in the <code>IMarketBillingService.aidl</code> file, which is included with the
 in-app billing <a
-href="{@docRoot}guide/market/billing/billing_integrate.html#billing-download">sample
+href="{@docRoot}guide/google/play/billing/billing_integrate.html#billing-download">sample
 application</a>.</p>
 <p>The interface consists of a single request method <code>sendBillingRequest()</code>. This method
 takes a single {@link android.os.Bundle} parameter. The Bundle parameter includes several key-value
@@ -142,10 +145,13 @@
 <tr>
   <td><code>API_VERSION</code></td>
   <td><code>int</code></td>
-  <td>1</td>
+  <td>  <ul>
+  <li><code>"2"</code> [<a href="#version_2">details</a>]</li>
+  <li><code>"1"</code> [<a href="#version_1">details</a>]</li>
+  </ul></td>
   <td>Yes</td>
-  <td>The version of Google Play's in-app billing service you are using. The current version is
-  1.</td>
+  <td>The version of Google Play's in-app billing service you want to use. The current version is
+  2.</td>
 </tr>
 <tr>
   <td><code>PACKAGE_NAME</code></td>
@@ -227,7 +233,7 @@
   </li>
   <li><code>RESTORE_TRANSACTIONS</code>
     <p>This request retrieves a user's transaction status for managed purchases (see <a
-    href="{@docRoot}guide/market/billing/billing_admin.html#billing-purchase-type">Choosing a
+    href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-purchase-type">Choosing a
     Purchase Type</a> for more information). You should send this message only when you need to
     retrieve a user's transaction status, which is usually only when your application is reinstalled
     or installed for the first time on a device.</p>
@@ -298,7 +304,7 @@
 Play application. These broadcast intents inform your application about in-app billing actions
 that have occurred. Your application must implement a {@link android.content.BroadcastReceiver} to
 receive these broadcast intents, such as the <code>BillingReceiver</code> that's shown in the in-app
-billing <a href="{@docRoot}guide/market/billing/billing_integrate.html#billing-download">sample
+billing <a href="{@docRoot}guide/google/play/billing/billing_integrate.html#billing-download">sample
 application</a>.</p>
 
 <h4>com.android.vending.billing.RESPONSE_CODE</h4>
@@ -388,7 +394,7 @@
 </tr>
 <tr>
   <td>orderId</td>
-  <td>A unique order identifier for the transaction. This corresponds to the Google Checkout Order
+  <td>A unique order identifier for the transaction. This corresponds to the Google Wallet Order
   ID.</td>
 </tr>
 <tr>
@@ -407,8 +413,15 @@
 
 <tr>
   <td>purchaseState</td>
-  <td>The purchase state of the order. Possible values are 0 (purchased), 1 (canceled), or 2
-  (refunded).</td>
+  <td>The purchase state of the order. Possible values are 0 (purchased), 1 (canceled), 2
+  (refunded), or 3 (expired, for subscription purchases only).</td>
+</tr>
+<tr>
+  <td>purchaseToken</td>
+  <td>A token that uniquely identifies a subscription purchase for a given item and user pair.
+  You can use the token to specify the subscription when querying for subscription validity.
+  
+  <p><br><em>Supported only in In-app Billing API version 2 and higher.</em></p></td>
 </tr>
 <tr>
   <td>developerPayload</td>
@@ -416,3 +429,63 @@
   specify a value for this field when you make a <code>REQUEST_PURCHASE</code> request.</td>
 </tr>
 </table>
+
+<!--<h2 id="other-intents">Other Intents</h2> 
+
+<p>The following Intents related to In-app Billing may be useful in your
+implemention. </p> -->
+
+<h2 id="http-api">HTTP API for verification and cancelation</h2>
+
+<p>Google Play offers an HTTP-based API that you can use to remotely query the
+validity of a specific subscription at any time or cancel a subscription. The
+API is designed to be used from your backend servers as a way of securely
+managing subscriptions, as well as extending and integrating subscriptions with
+other services. See <a
+href="{@docRoot}guide/google/play/billing/billing_subscriptions.html#play-dev-api">
+Google Play Android Developer API</a> for more information.</p>
+
+<h2 id="billing-versions">In-app Billing API Versions</h2>
+
+<p>The In-app Billing API is versioned, with each version offering
+additional features to your app. At run time, your app can query the Google Play app to determine
+what version of the API it supports and what features are available. Typically, the Google Play app
+will be updated and will support the latest version of the API. For a summary of versions see
+<a href="{@docRoot}guide/google/play/billing/billing_reference.html#billing-versions">In-app Billing
+API Versions</a>.</p>
+
+<p>The sections below list the supported versions of the In-app Billing API.
+Versions are specified in the <code>API_VERSION</code> key of the Bundle object
+passed in the <code>sendBillingRequest()</code>, which is defined in the defined
+in the <code>IMarketBillingService.aidl</code> file, which is included with the
+in-app billing <a
+href="{@docRoot}guide/google/play/billing/billing_integrate.html#billing-download">
+sample application</a>. For more information, see <a
+href="#billing-interface">In-app Billing Service Interface</a>.</p>
+<h3 id="version_2">In-app Billing version 2</h3>
+
+<p><em>May 2012</em></p>
+
+<ul>
+<li>Adds support for subscriptions. 
+  <ul>
+  <li>Adds a new supported string value, "2", for the <code>API_VERSION</code> key
+  of the Bundle object passed in the <code>sendBillingRequest()</code>.</li>
+  <li>Adds a new JSON field, <code>purchaseToken</code>, to the
+  <code>orders</code> list returned in a <code>PURCHASE_STATE_CHANGED</code>
+  intent. </li> 
+  <li>Adds a new <code>purchaseState</code> value, <code>3</code> (expired), to the
+  <code>orders</code> list returned in a <code>PURCHASE_STATE_CHANGED</code>
+  intent. The value indicates that a subscription has expired and is no longer valid.</li>
+<li>Requires Google Play (Play Store) version 3.5 or higher.</li>
+</ul>
+
+<h3 id="version_1">In-app Billing version 1</h3>
+
+<p><em>March 2011</em></p>
+
+<ul>
+<li>Initial release.</li>
+<li>Requires Google Play/Android Market 2.3.4 or higher.</li>
+</ul>
+
diff --git a/docs/html/guide/google/play/billing/billing_subscriptions.jd b/docs/html/guide/google/play/billing/billing_subscriptions.jd
new file mode 100755
index 0000000..3cf9777
--- /dev/null
+++ b/docs/html/guide/google/play/billing/billing_subscriptions.jd
@@ -0,0 +1,859 @@
+page.title=Subscriptions
+parent.title=In-app Billing
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>In this document</h2>
+  <ol>
+    <li><a href="#overview">Overview of Subscriptions</a>
+    <!--<ol>
+        <li><a href="#publishing">Subscription publishing and unpublishing</a></li>
+        <li><a href="#pricing">Subscription pricing</a></li>
+        <li><a href="#user-billing">User billing</a></li>
+        <li><a href="#cancellation">Subscription cancellation</a></li>
+        <li><a href="#uninstallation">App uninstallation</a></li>
+        <li><a href="#refunds">Refunds</a></li>
+        <li><a href="#payment">Payment processing and policies</a></li>
+        <li><a href="#requirements">System requirements for subscriptions</a></li>
+        <li><a href="#compatibility">Compatibility considerations</a></li>
+      </ol> -->
+    </li>
+    <li><a href="#implementing">Implementing Subscriptions</a>
+      <!-- <ol>
+        <li><a href="#sample">Sample application</a></li>
+        <li><a href="#model">Application model</a></li>
+        <li><a href="#token">Purchase token</a></li>
+        <li><a href="#version">Checking the In-app Billing API version</a></li>
+        <li><a href="purchase">Requesting purchase of a subscription</a></li>
+        <li><a href="#restore">Restoring transactions</a></li>
+        <li><a href="#validity">Checking subscription validity</a></li>
+        <li><a href="#viewstatus">Launching your product page to let the user cancel or view status</a></li>
+        <li><a href="#purchase-state-changes">Recurring billing and changes in purchase state</a></li>
+        <li><a href="modifying">Modifying your app for subscriptions</a></li>
+      </ol> -->
+    </li>
+    <li><a href="#administering">Administering Subscriptions</a></li>
+    
+    <li><a href="#play-dev-api">Google Play Android Developer API</a>
+      <!-- <ol>
+        <li><a href="#using">Using the API</a></li>
+        <li><a href="#quota">Quota</a></li>
+        <li><a href="#auth">Authorization</a></li>
+        <li><a href="#practices">Using the API efficiently</a></li>
+      </ol> -->
+    </li>
+</ol>
+  <h2>Downloads</h2>
+  <ol>
+    <li><a href="{@docRoot}guide/google/play/billing/billing_integrate.html#billing-download">Sample Application</a></li>
+  </ol>
+  <h2>See also</h2>
+  <ol>
+    <li><a href="{@docRoot}guide/google/play/billing/billing_overview.html">Overview of In-app
+    Billing</a></li>
+    <li><a href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and
+    Design</a></li>
+    <li><a href="{@docRoot}guide/google/play/billing/billing_testing.html">Testing In-app
+    Billing</a></li>
+    <li><a href="{@docRoot}guide/google/play/billing/billing_admin.html">Administering In-app
+    Billing</a></li>
+    <li><a href="{@docRoot}guide/google/play/billing/billing_reference.html">In-app Billing
+    Reference</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Subscriptions let you sell content, services, or features in your app with
+automated, recurring billing. Adding support for subscriptions is
+straightforward and you can easily adapt an existing In-app Billing
+implementation to sell subscriptions. </p>
+
+<p>If you have already implemented In-app Billing for one-time purchase
+products, you will find that you can add support for subscriptions with minimal
+impact on your code. If you are new to In-app Billing, you can implement
+subscriptions using the standard communication model, data structures, and user
+interactions as for other in-app products.subscriptions. Because the
+implementation of subscriptions follows the same path as for other in-app
+products, details are provided outside of this document, starting with the <a
+href="{@docRoot}guide/google/play/billing/billing_overview.html">In-app Billing
+Overview</a>. </p>
+
+<p>This document is focused on highlighting implementation details that are
+specific to subscriptions, along with some strategies for the associated billing
+and business models.</p>
+
+<h2 id="overview">Overview of Subscriptions</h2>
+
+<p>A <em>subscription</em> is a new product type offered in In-app Billing that lets you
+sell content, services, or features to users from inside your app with recurring
+monthly or annual billing. You can sell subscriptions to almost any type of
+digital content, from any type of app or game.</p>
+
+<p>As with other in-app products, you configure and publish subscriptions using
+the Developer Console and then sell them from inside apps installed on an
+Android-powered devices. In the Developer console, you create subscription
+products and add them to a product list, setting a price for each, choosing a
+billing interval of monthly or annually, and then publishing. In your apps, it’s
+straightforward to add support for subscription purchases. The implementation
+extends the standard In-app Billing API to support a new product type but uses
+the same communication model, data structures, and user interactions as for
+other in-app products.</p>
+
+<p>When users purchase subscriptions in your apps, Google Play handles all
+checkout details so your apps never have to directly process any financial
+transactions. Google Play processes all payments for subscriptions through
+Google Wallet, just as it does for standard in-app products and app purchases.
+This ensures a consistent and familiar purchase flow for your users.</p>
+
+<img src="{@docRoot}images/billing_subscription_flow.png" style="border:4px solid ddd;">
+
+
+<p>After users have purchase subscriptions, they can view the subscriptions and
+cancel them, if necessary, from the My Apps screen in the Play Store app or
+from the app's product details page in the Play Store app.</p>
+
+<!--<img src="{@docRoot}images/billing_subscription_cancel.png" style="border:4px solid ddd;">-->
+
+<p>Once users have purchased a subscription through In-app Billing, you can
+easily give them extended access to additional content on your web site (or
+other service) through the use of a server-side API provided for In-app Billing.
+The server-side API lets you validate the status of a subscription when users
+sign into your other services. For more information about the API, see <a
+href="#play-dev-api">Google Play Android Developer API</a>, below. </p>
+
+<p>You can also build on your existing external subscriber base from inside your
+Android apps. If you sell subscriptions on a web site, for example, you can add
+your own business logic to your Android app to determine whether the user has
+already purchased a subscription elsewhere, then allow access to your content if
+so or offer a subscription purchase from Google Play if not.</p>
+
+<p>With the flexibility of In-app Billing, you can even implement your own
+solution for sharing subscriptions across as many different apps or products as
+you want. For example, you could sell a subscription that gives a subscriber
+access to an entire collection of apps, games, or other content for a monthly or
+annual fee. To implement this solution, you could add your own business logic to
+your app to determine whether the user has already purchased a given
+subscription and if so, allow access to your content. </p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h2>Subscriptions at a glance</h2>
+  <ul>
+    <li>Subscriptions let you sell products with automated, recurring billing</li>
+    <li>You can set up subscriptions with either monthly or annual billing</li>
+    <li>You can sell multiple subscription items in an app with various billing
+    intervals or prices, such as for promotions</li>
+    <li>Users purchase your subscriptions from inside your apps, rather than
+    directly from Google Play</li>
+    <li>Users manage their purchased subscriptions from the My Apps screen in
+    the Play Store app</li>
+    <li>Google Play uses the original form of payment for recurring billing</li>
+    <li>If a user cancels a subscription, Google Play considers the subscription valid
+    until the end of the current billing cycle. The user continues to enjoy the content
+    for the rest of the cycle and is not granted a refund.</li>
+  </ul>
+</div>
+</div>
+
+<p>In general the same basic policies and terms apply to subscriptions as to
+standard in-app products, however there are some differences. For complete
+information about the current policies and terms, please read the <a
+href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en
+&answer=140504">policies document</a>.</p>
+
+
+<h3 id="publishing">Subscription publishing and unpublishing</h3>
+
+<p>To sell a subscription in an app, you use the tools in the Developer Console
+to set up a product list for the app and then create and configure a new
+subscription. In the subscription, you set the price and billing interval and
+define a subscription ID, title, and description. When you are ready, you can
+then publish the subscription in the app product list.</p>
+
+<p>In the product list, you can add subscriptions, in-app products, or both. You
+can add multiple subscriptions that give access to different content or
+services, or you can add multiple subscriptions that give access to the same
+content but for different intervals or different prices, such as for a
+promotion. For example, a news outlet might decide to offer both monthly and
+annual subscriptions to the same content, with annual having a discount. You can
+also offer in-app purchase equivalents for subscription products, to ensure that
+your content is available to users of older devices that do not support
+subscriptions.</p>
+
+<p>After you add a subscription or in-app product to the product list, you must
+publish the product before Google Play can make it available for purchase. Note
+that you must also publish the app itself before Google Play will make the
+products available for purchase inside the app. </p>
+
+<p class="caution"><strong>Important:</strong> At this time, the capability to
+unpublish a subscription is not available. Support for unpublishing a
+subscription is coming to the Developer Console in the weeks ahead, so this is a
+temporary limitation. In the short term, instead of unpublishing,
+you can remove the subscription product from the product list offered in your
+app to prevent users from seeing or purchasing it.</p>
+
+<h3 id="pricing">Subscription pricing</h3>
+
+<p>When you create a subscription in the Developer Console, you can set a price
+for it in any available currencies. Each subscription must have a non-zero
+price. You can price multiple subscriptions for the same content differently
+&mdash; for example you could offer a discount on an annual subscription
+relative to the monthly equivalent. </p>
+
+<p class="caution"><strong>Important:</strong> At this time, once you publish a
+subscription product, you cannot change its price in any currency. Support for
+changing the price of published subscriptions is coming to the Developer Console
+in the weeks ahead. In the short term, you can work around this limitation by
+publishing a new subscription product ID at a new price, then offer it in your
+app instead of the original product. Users who have already purchased will
+continue to be charged at the original price, but new users will be charged at
+the new price.</p>
+
+<h3 id="user-billing">User billing</h3>
+
+<p>You can sell subscription products with automated recurring billing at
+either of two intervals:</p>
+
+<ul>
+  <li>Monthly &mdash; Google Play bills the customer’s Google Wallet account at
+  the time of purchase and monthly subsequent to the purchase date (exact billing
+  intervals can vary slightly over time)</li>
+  <li>Annually &mdash; Google Play bills the customer's Google Wallet account at
+  the time of purchase and again on the same date in subsequent years.</li>
+</ul>
+
+<p>Billing continues indefinitely at the interval and price specified for the
+subscription. At each subscription renewal, Google Play charges the user account
+automatically, then notifies the user of the charges afterward by email. Billing
+cycles will always match subscription cycles, based on the purchase date.</p>
+
+<p>Over the life of a subscription, the form of payment billed remains the same
+&mdash; Google Play always bills the same form of payment (such as credit card,
+Direct Carrier Billing) that was originally used to purchase the
+subscription.</p>
+
+<p>When the subscription payment is approved by Google Wallet, Google Play
+provides a purchase token back to the purchasing app through the In-app Billing
+API. For details, see <a href="#token">Purchase token</a>, below. Your apps can
+store the token locally or pass it to your backend servers, which can then use
+it to validate or cancel the subscription remotely using the <a
+href="#play-dev-api">Google Play Android Developer API</a>.</p>
+
+<p>In the case of billing errors, such as could happen if the customer’s credit
+card becomes invalid, Google Play notifies your app of the change in purchase
+state.</p>
+
+<p>As a best practice, we recommend that your app includes business logic to
+notify your backend servers of subscription purchases, tokens, and any billing
+errors that may occur. Your backend servers can use the server-side API to query
+and update your records and follow up with customers directly, if needed.</p>
+
+<h3 id="cancellation">Subscription cancellation</h3>
+
+<p>Users can view the status of all of their subscriptions and cancel them if
+necessary from the My Apps screen in the Play Store app. Currently, the In-app
+Billing API does not provide support for canceling subscriptions direct from
+inside the purchasing app, although your app can broadcast an Intent to launch
+the Play Store app directly to the My Apps screen.</p>
+
+<p>When the user cancels a subscription, Google Play does not offer a refund for
+the current billing cycle. Instead, it allows the user to have access to the
+cancelled subscription until the end of the current billing cycle, at which time
+it terminates the subscription. For example, if a user purchases a monthly
+subscription and cancels it on the 15th day of the cycle, Google Play will
+consider the subscription valid until the end of the 30th day (or other day,
+depending on the month).</p>
+
+<p>In some cases, the user may contact you directly to request cancellation of a
+subscription. In this and similar cases, you can use the server-side API to
+query and directly cancel the user’s subscription from your servers.
+
+<p class="caution"><strong>Important:</strong> In all cases, you must continue
+to offer the content that your subscribers have purchased through their
+subscriptions, for as long any users are able to access it. That is, you must
+not remove any subscriber’s content while any user still has an active
+subscription to it, even if that subscription will terminate at the end of the
+current billing cycle. Removing content that a subscriber is entitled to access
+will result in penalties. Please see the <a
+href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=140504">policies document</a> for more information. </p>
+
+<h3 id="uninstall">App uninstallation</h3>
+
+<p>When the user uninstalls an app that includes purchased subscriptions, the Play Store app will notify the user that there are active subscriptions. If the user chooses to continue with the uninstalltion, the app is removed and the subscriptions remain active and recurring billing continues. The user can return to cancel the associated subscriptions at any time in the My Apps screen of the Play Store app. If the user chooses to cancel the uninstallation, the app and subscriptions remain as they were.</p>
+
+<h3 id="refunds">Refunds</h3>
+
+<p>As with other in-app products, Google Play does not provide a refund window
+for subscription purchases. For example, users who purchase an app can ask for a
+refund from Google Play within a 15-minute window. With subscriptions, Google
+Play does not provide a refund window, so users will need to contact you
+directly to request a refund.
+
+<p>If you receive requests for refunds, you can use the server-side API to
+cancel the subscription or verify that it is already cancelled. However, keep in
+mind that Google Play considers cancelled subscriptions valid until the end of
+their current billing cycles, so even if you grant a refund and cancel the
+subscription, the user will still have access to the content.
+
+<p class="note"><strong>Note:</strong> Partial refunds for canceled
+subscriptions are not available at this time.</p>
+
+<h3 id="payment">Payment processing and policies</h3>
+
+<p>In general, the terms of Google Play allow you to sell in-app subscriptions
+only through the standard payment processor, Google Wallet. For purchases of any
+subscription products, just as for other in-app products and apps, the
+transaction fee for subscriptions, just as for other in-app purchases, is the
+same as the transaction fee for application purchases (30%).</p>
+
+<p>Apps published on Google Play that are selling subscriptions must use In-app
+Billing to handle the transaction and may not provide links to a purchase flow
+outside of the app and Google Play (such as to a web site).</p>
+
+<p>For complete details about terms and policies, see the <a
+href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=140504">policies
+document</a>.</p>
+
+<h3 id="requirements">System requirements for subscriptions</h3>
+
+<p>In-app purchases of subscriptions are supported only on devices that meet
+these minimum requirements:</p>
+
+<ul>
+  <li>Must run Android 2.2 or higher</li>
+  <li>Google Play Store app, version 3.5 or higher, must be installed</li>
+</ul>
+
+<p>Google Play 3.5 and later versions include support for the In-app Billing
+v2 API or higher, which is needed to support handling of subscription
+products.</p>
+
+<h3 id="compatibility">Compatibility considerations</h3>
+
+<p>As noted in the previous section, support for subscriptions is available only
+on devices that meet the system requirements. Not all devices will receive or
+install Google Play 3.5, so not all users who install your apps will have access
+to the In-app Billing API and subscriptions.</p>
+
+<p>If you are targeting older devices that run Android 2.1 or earlier, we
+recommend that you offer those users an alternative way buy the content that is
+available through subscriptions. For example, you could create standard in-app
+products (one-time purchases) that give access to similar content as your
+subscriptions, possibly for a longer interval such as a year. </p>
+
+
+<h2 id="implementing">Implementing Subscriptions</h2>
+
+<p>Subscriptions are a standard In-app Billing product type. If you have already
+implemented In-app Billing for one-time purchase products, you will find that
+adding support for subscriptions is straightforward, with minimal impact on your
+code. If you are new to In-app Billing, you can implement subscriptions using
+the standard communication model, data structures, and user interactions as for
+other in-app products.subscriptions. </p>
+
+<p>The full implementation details for In-app Billing are provided outside of
+this document, starting with the <a
+href="{@docRoot}guide/google/play/billing/billing_overview.html">In-app Billing
+Overview</a>. This document is focused on highlighting implementation details
+that are specific to subscriptions, along with some strategies for the
+associated billing and business models.</p>
+
+
+<h3 id="sample">Sample application</h3>
+
+<p>To help you get started with your In-app Billing implementation and
+subscriptions, an updated version of the In-app Billing sample app is available.
+You can download the sample app from the Android SDK repository using the
+Android SDK Manager. For details, see <a
+href="{@docRoot}guide/google/play/billing/billing_integrate.html#billing-download">
+Downloading the Sample Application</a>.</p>
+
+<h3 id="model">Application model</h3>
+
+<p>With subscriptions, your app uses the standard In-app Billing application
+model, sending billing requests to the Play Store application over interprocess
+communication (IPC) and receiving purchase responses from the Play Store app in
+the form of asynchronous broadcast intents. Your application does not manage any
+network connections between itself and the Google Play server or use any special
+APIs from the Android platform.</p>
+
+<p>Your app also uses the standard In-app Billing components &mdash; a billing
+Service for sending requests, a BroadcastReceiver for receiving the responses,
+and a security component for verifying that the response was sent by Google
+Play. Also recommended are a response Handler for processing notifications,
+errors, and status messages, and an observer for sending callbacks to your
+application as needed. All of these components and their interactions are
+described in full in the <a
+href="{@docRoot}guide/google/play/billing/billing_overview.html">In-app Billing
+Overview</a> and related documents.</p>
+
+<p>To initiate different types of billing communication with Google Play, your
+app will use the standard set of in-app billing requests and receive the same
+responses. Inside the requests and responses are two new fields described below.
+</p>
+
+<h3 id="token">Purchase token</h3>
+
+<p>Central to the end-to-end architecture for subscriptions is the purchase
+token, a string value that uniquely identifies (and associates) a user ID and a
+subscription ID. Google Play generates the purchase token when the user
+completes the purchase of a subscription product (and payment is approved by
+Google Wallet) and then sends it to the purchasing app on the device through the
+In-app Billing API. </p>
+
+<p>At the conclusion of a <code>PURCHASE_REQUEST</code> message flow, your app
+can retrieve the purchase token and other transaction details by initiating a
+<code>GET_PURCHASE_INFORMATION</code> request. The Bundle returned by the call
+contains an JSON array of order objects. In the order corresponding to the
+subscription purchase, the token is available in the <code>purchaseToken</code>
+field. </p>
+
+<p>An example of a JSON order object that includes a subscription purchase token
+is shown below. </p>
+
+<pre class="no-pretty-print" style="color:black">{ "nonce" : 1836535032137741465,
+  "orders" :
+    [{ "notificationId" : "android.test.purchased",
+       "orderId" : "transactionId.android.test.purchased",
+       "packageName" : "com.example.dungeons",
+       "productId" : "android.test.purchased",
+       "developerPayload" : "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
+       "purchaseTime" : 1290114783411,
+       "purchaseState" : 0,
+       "purchaseToken" : "rojeslcdyyiapnqcynkjyyjh" }]
+}
+</pre>
+
+<p>After receiving a purchase token, your apps can store the token locally or
+pass it to your backend servers, which can then use it to query the billing
+status or cancel the subscription remotely. If your app will store the token
+locally, please read the <a
+href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and
+Design</a> document for best practices for maintaining the security of your
+data.</p>
+
+<h3 id="version">Checking the In-app Billing API version</h3>
+
+<p>Subscriptions support is available only in versions of Google Play that
+support the In-app Billing v2 API (Google Play 3.5 and higher). For your app,
+an essential first step at launch is to check whether the version of Google Play
+installed on the device supports the In-app Billing v2 API and
+subscriptions.</p>
+
+<p>To do this, create a CHECK_BILLING_SUPPORTED request Bundle that includes the
+required key-value pairs, together with</p>
+
+<ul>
+  <li>The <code>API_VERSION</code> key, assigning a value of 2.</li>
+  <li>The <code>BILLING_REQUEST_ITEM_TYPE</code> key, assigning a value of “subs”</li>
+</ul>
+
+<p>Send the request using <code>sendBillingRequest(Bundle)</code> and receive
+the response Bundle. You can extract the response from the
+<code>BILLING_RESPONSE_RESPONSE_CODE</code> key of the response. RESULT_OK
+indicates that subscriptions are supported.</p>
+
+<p>The sample app declares constants for the accepted
+<code>BILLING_REQUEST_ITEM_TYPE</code> values (from Consts.java):</p>
+
+<pre class="pretty-print">   // These are the types supported in the IAB v2
+   public static final String ITEM_TYPE_INAPP = "inapp";
+   public static final String ITEM_TYPE_SUBSCRIPTION = "subs";
+</pre>
+
+<p>It sets up a convenience method for building the request bundle (from BillingService.java):</p>
+
+<pre class="pretty-print">       protected Bundle makeRequestBundle(String method) {
+           Bundle request = new Bundle();
+           request.putString(Consts.BILLING_REQUEST_METHOD, method);
+           request.putInt(Consts.BILLING_REQUEST_<code>API_VERSION</code>, 2);
+           request.putString(Consts.BILLING_REQUEST_PACKAGE_NAME, getPackageName());
+           return request;
+       }
+</pre>
+
+<p>Here’s an example of how to test support for In-App Billing v2 and subscriptions
+(from BillingService.java):</p>
+
+<pre class="pretty-print">   /**
+    * Wrapper class that checks if in-app billing is supported.
+    */
+   class CheckBillingSupported extends BillingRequest {
+       public String mProductType = null;
+       public CheckBillingSupported() {
+           // This object is never created as a side effect of starting this
+           // service so we pass -1 as the startId to indicate that we should
+           // not stop this service after executing this request.
+           super(-1);
+       }
+
+       public CheckBillingSupported(String type) {
+           super(-1);
+           mProductType = type;
+       }
+
+       &#64;Override
+       protected long run() throws RemoteException {
+           Bundle request = makeRequestBundle("CHECK_BILLING_SUPPORTED");
+           if (mProductType != null) {
+               request.putString(Consts.<code>BILLING_REQUEST_ITEM_TYPE</code>, mProductType);
+           }
+           Bundle response = mService.sendBillingRequest(request);
+           int responseCode = response.getInt(Consts.<code>BILLING_RESPONSE_RESPONSE_CODE</code>);
+           if (Consts.DEBUG) {
+               Log.i(TAG, "CheckBillingSupported response code: " +
+                       ResponseCode.valueOf(responseCode));
+           }
+           boolean billingSupported = (responseCode == ResponseCode.RESULT_OK.ordinal());
+           ResponseHandler.checkBillingSupportedResponse(billingSupported, mProductType);
+           return Consts.BILLING_RESPONSE_INVALID_REQUEST_ID;
+       }
+   }
+</pre>
+
+<h3 id="purchase">Requesting a subscription purchase</h3>
+
+<p>Once you’ve checked the API version as described above and determined that
+subscriptions are supported, you can present subscription products to the user
+for purchase. When the user has selected a subscription product and initiated a
+purchase, your app handles the purchase just as it would for other in-app
+products &mdash; by sending a REQUEST_PURCHASE request. You can then launch
+Google Play to display the checkout user interface and handle the financial
+transaction..  
+
+<p>The REQUEST_PURCHASE includes a Bundle containing the item details, as
+described in the <a
+href="{@docRoot}guide/google/play/billing/billing_overview.html">In-app Billing
+Overview</a>. For a subscription, the Bundle must also specify:</p>
+
+<ul>
+  <li>The <code>ITEM_ID</code> key, with a value that specifies a valid, published
+  subscription product.</li>
+  <li>The <code>ITEM_TYPE</code> key, with a value of “subs”
+  (<code>ITEM_TYPE_SUBSCRIPTION</code> in the sample app). If the request does not
+  specify the subscription's <code>ITEM_TYPE</code>, Google Play attempts to
+  handle the request as a standard in-app purchase (one-time purchase).</li>
+</ul>
+
+<p>Google Play synchronously returns a response bundle that includes
+<code>RESPONSE_CODE</code>, <code>PURCHASE_INTENT</code>, and
+<code>REQUEST_ID</code>. Your app uses the <code>PURCHASE_INTENT</code> to
+launch the checkout UI and the message flow proceeds exactly as described in <a
+href="{@docRoot}guide/google/play/billing/billing_overview.html#billing-message-
+sequence">Messaging sequence</a>.</p>
+
+<p>Here’s how the sample app initiates a purchase for a subscription, where
+<code>mProductType</code> is <code>ITEM_TYPE_SUBSCRIPTION</code> (from
+BillingService.java).</p>
+
+<pre class="pretty-print">   /**
+    * Wrapper class that requests a purchase.
+    */
+   class RequestPurchase extends BillingRequest {
+       public final String mProductId;
+       public final String mDeveloperPayload;
+       public final String mProductType;
+
+. . .
+
+       &#64;Override
+       protected long run() throws RemoteException {
+           Bundle request = makeRequestBundle("REQUEST_PURCHASE");
+           request.putString(Consts.BILLING_REQUEST_ITEM_ID, mProductId);
+           request.putString(Consts.<code>BILLING_REQUEST_ITEM_TYPE</code>, mProductType);
+           // Note that the developer payload is optional.
+           if (mDeveloperPayload != null) {
+               request.putString(Consts.BILLING_REQUEST_DEVELOPER_PAYLOAD, mDeveloperPayload);
+           }
+           Bundle response = mService.sendBillingRequest(request);
+           PendingIntent pendingIntent
+                   = response.getParcelable(Consts.BILLING_RESPONSE_PURCHASE_INTENT);
+           if (pendingIntent == null) {
+               Log.e(TAG, "Error with requestPurchase");
+               return Consts.BILLING_RESPONSE_INVALID_REQUEST_ID;
+           }
+
+           Intent intent = new Intent();
+           ResponseHandler.buyPageIntentResponse(pendingIntent, intent);
+           return response.getLong(Consts.BILLING_RESPONSE_REQUEST_ID,
+                   Consts.BILLING_RESPONSE_INVALID_REQUEST_ID);
+       }
+
+       &#64;Override
+       protected void responseCodeReceived(ResponseCode responseCode) {
+           ResponseHandler.responseCodeReceived(BillingService.this, this, responseCode);
+       }
+   }
+</pre>
+
+<h3 id="restoring">Restoring transactions</h3>
+
+<p>Subscriptions always use  the <em>managed by user account</em> purchase type,
+so that you can restore a record of subscription transactions on the device when
+needed. When a user installs your app onto a new device, or when the user
+uninstalls/reinstalls the app on the original device, your app should restore
+the subscriptions that the user has purchased.</p>
+
+<p>The process for restoring subscriptions transactions is the same as described
+in <a
+href="{@docRoot}guide/google/play/billing/billing_overview.html#billing-message-
+sequence">Messaging sequence</a>. Your app sends a
+<code>RESTORE_TRANSACTIONS</code> request to Google Play. Google Play sends two
+broadcast intents as asynchronous responses &mdash; a <code>RESPONSE_CODE</code>
+intent and a <code>PURCHASE_STATE_CHANGED</code> intent.</p>
+
+<p>The <code>PURCHASE_STATE_CHANGED</code> intent contains a notification ID
+that your app can use to retrieve the purchase details, including the purchase
+token, by sending a standard <code>GET_PURCHASE_INFORMATION</code> request. The
+<code>Bundle</code> returned in the call includes an JSON array of order objects
+corresponding to subscription (and in-app product) purchases that you can
+restore locally.</p>
+
+<p>Your app can store the restored purchase state and other transaction details
+in the way that best meets your needs. Your app can use it later to check the
+subscription validity, although please read the <a
+href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and
+Design</a> document for best practices for maintaining the security of your
+data.</p>
+
+<h3 id="validity">Checking subscription validity</h3>
+
+<p>Subscriptions are time-bound purchases that require successful billing
+recurrences over time to remain valid. Your app should check the validity of
+purchased subscriptions at launch or prior to granting access to subscriber
+content.</p>
+
+<p>With In-app Billing, you validate a subscription by keeping track of its
+purchase state, such as purchased or cancelled, and then checking the state
+whenever needed. Google Play provides two ways to let you know when the purchase
+state of a subscription changes:</p>
+
+<ul>
+  <li><em>In-app Billing Notifications</em>. Google Play pushes a notification
+  to your app whenever  the purchase state of a subscription changes. Your app can
+  store the most recent purchase state for a given purchase token and then check
+  that state at run time, as needed.</li>
+  <li><em>Google Play Android Developer API</em>. You can use this HTTP-based
+  API to poll Google Play for the current purchase state of a subscription. You
+  can store the purchased state for each <code>purchaseToken</code> on your
+  backend servers. For more information, see <a href="#play-dev-api">Google Play
+  Android Developer API</a>, below.</li>
+</ul>
+
+<p>For most use-cases, especially those where backend servers are already keeping
+track of subscribed users, implementing a combination of both methods is the
+recommended approach. A typical implementation might work like this:</p>
+
+<ul>
+  <li>When the user successfully purchases a new subscription, your app notifies a
+  backend server, which stores the purchase token, user name, and other
+  information in a secure location.</li>
+  <li>Since your app cannot know the expiration date, your server can poll Google
+  Play to get the expiration and store it with the purchase token and other
+  data.</li>
+  <li>Because your server now knows the expiration date, it does not need to poll
+  Google Play again until after the expiration date, at which time it can confirm
+  that the subscription was not cancelled.</li>
+  <li>On the client side, your app can continue to update the server whenever the
+  purchase state changes, storing the state locally.</li>
+</ul>
+
+<p>If you are using both notifications and the Google Play Android Developer API to validate subscriptions, we recommend the following:</p>
+
+<ul>
+  <li>If your app wants to check validity but you can’t reach your server (or
+you don’t have a server), use the latest purchase state received by
+notification.</li>
+  <li>If you have a server and it’s reachable, always give preference to the
+purchase state obtained from your server over the state received in
+notifications.</li>
+</ul>
+
+<p>If necessary, you can also use a <code>RESTORE_TRANSACTIONS</code> request to retrieve a record of all managed and in-app products purchased by the user, which you can then store locally. However, using <code>RESTORE_TRANSACTIONS</code> on a regular basis is not recommended because of performance impacts.</p>
+
+<p>Regardless of the approach you choose, your app should check subscriptions
+and validity at launch, such as prior to accessing subscriber content, game
+levels, and so on.</p>
+
+<p class="table-caption"><strong>Table 1.</strong> Summary of purchaseState
+values for subscription purchases, as received with a
+<code>PURCHASE_STATE_CHANGED</code> intent.</p>
+
+<table>
+<tr>
+<th>State</th><th>purchaseState Value</th><th>Comments</th>
+</tr>
+<tr>
+<td>Purchased successfully</td><td><code>0</code></td><td>Sent at original purchase only (not at recurring billing cycles).</td></tr>
+<td>Cancelled</td><td><code>1</code></td><td>Sent at original purchase only if the purchase has failed for some reason. </td></tr>
+<td>Refunded</td><td><code>2</code></td><td>The purchase was refunded.</code></td></tr>
+<td>Subscription expired</td><td><code>3</code></td><td>Sent if a subscription expires because of non-payment or user cancelation.</td></tr>
+</table>
+
+
+<h3 id="viewstatus">Launching your product page to let the user cancel or view subscriptions</h3>
+
+<p>In-app Billing does not currently provide an API to let users directly view or cancel
+subscriptions from within the purchasing app. Instead, users can launch the Play
+Store app on their devices and go to the My Apps screen to manage subscriptions. In My Apps,
+users can see a list of their subscriptions organized by application. Tapping one of the
+subscriptions loads the app's product page, from which users can see active subscriptions
+and billing status and cancel subscriptions as needed.</p>
+
+<p>To make it easier for users to find and manage their subscriptions from inside your app, 
+we recommend that you offer a "View My Subscriptions" or "Manage Subscriptions" option in
+your UI that directly loads your app's product page in the Play Store app.</p>
+
+<p>To do this, create an intent with the <a 
+href="{@docRoot}reference/android/content/Intent.html#ACTION_VIEW">ACTION_VIEW</a>
+action and include the <code>market://</code> URI (rather than the <code>http://</code>
+URI) of your app's details page. Here’s an example:</p>
+
+<pre style="pretty-print">Intent intent = new Intent(Intent.ACTION_VIEW);
+intent.setData(Uri.parse("market://details?id=com.example.app"));
+startActivity(intent);</pre>
+
+<p>For more information, see 
+  <a href="{@docRoot}distribute/googleplay/promote/linking.html">Linking to Your Products</a>.</p>
+
+<h3 id="purchase-state-changes">Recurring billing and changes in purchase state</h3>
+
+<p>Google Play notifies your app when the user completes the purchase of a
+subscription, but the purchase state does not change over time, provided that
+recurring billing takes place successfully. Google Play does not notify your app
+of a purchase state change <em>until the subscription expires because of
+non-payment or user cancellation</em>. </p>
+
+<p>Over the life of a subscription, your app does not need to initiate any
+recurring billing events &mdash; those are all handled by Google Play and they
+are transparent to your application if billing is successful.</p>
+
+<h3 id="modifying">Modifying your app for subscriptions</h3>
+
+<p>For subscriptions, you make the same types of modifications to your app as
+are described in <a
+href="{@docRoot}guide/google/play/billing/billing_integrate.html#billing-implement">
+Modifying your Application Code</a>.</p>
+
+<p>Note that, in your UI that lets users view and select subscriptions for
+purchase, you should add logic to check for purchased subscriptions and validate
+them. Your UI should not present subscriptions if the user has already purchased
+them.</p>
+
+<h2 id="administering">Administering Subscriptions</h2>
+
+<p>To create and manage subscriptions, you use the tools in the Developer
+Console, just as for other in-app products.</p>
+
+<p>At the Developer Console, you can configure these attributes for each
+subscription product:</p>
+
+<ul>
+<li>Purchase Type: always set to “subscription”</li>
+<li>Subscription ID:  An identifier for the subscription</li>
+<li>Publishing State: Unpublished/Published</li>
+<li>Language: The default language for displaying the subscription</li>
+<li>Title: The title of the subscription product</li>
+<li>Description: Details that tell the user about the subscription</li>
+<li>Price: USD price of subscription per recurrence</li>
+<li>Recurrence: monthly or yearly</li>
+<li>Additional currency pricing (can be auto-filled)</li>
+</ul>
+
+<p>For details, please see <a href="{@docRoot}guide/google/play/billing/billing_admin.html">Administering
+In-app Billing</a>.</p>
+
+
+<h2 id="play-dev-api">Google Play Android Developer API</h2>
+
+<p>Google Play offers an HTTP-based API that you can use to remotely query the
+validity of a specific subscription at any time or cancel a subscription. The
+API is designed to be used from your backend servers as a way of securely
+managing subscriptions, as well as extending and integrating subscriptions with
+other services.</p>
+
+<h3 id="using">Using the API</h3>
+
+<p>To use the API, you must first register a project at the <a
+href="https://code.google.com/apis/console">Google APIs Console</a> and receive
+a Client ID and shared secret that  your app will present when calling the
+Google Play Android Developer API. All calls to the API are authenticated with
+OAuth 2.0.</p>
+
+<p>Once your app is registered, you can access the API directly, using standard
+HTTP methods to retrieve and manipulate resources, or you can use the Google
+APIs Client Libraries, which are extended to support the API.</p>
+
+<p>The Google Play Android Developer API is built on a RESTful design that uses
+HTTP and JSON, so any standard web stack can send requests and parse the
+responses. However, if you don’t want to send HTTP requests and parse responses
+manually, you can access the API using the client libraries, which provide
+better language integration, improved security, and support for making calls
+that require user authorization.</p>
+
+<p>For more information about the API and how to access it through the Google
+APIs Client Libraries, see the documentation at:</p> 
+
+<p style="margin-left:1.5em;"><a
+href="https://developers.google.com/android-publisher/v1/">https://developers.
+google.com/android-publisher/v1/</a></p>
+
+<h3 id="quota">Quota</h3>
+
+<p>Applications using the Google Play Android Developer API are limited to an
+initial courtesy usage quota of <strong>15000 requests per day</strong> (per
+application). This should provide enough access for normal
+subscription-validation needs, assuming that you follow the recommendation in
+this section.</p>
+
+<p>If you need to request a higher limit for your application, please use the
+“Request more” link in the <a
+href="https://code.google.com/apis/console/#:quotas">Google APIs Console</a>.
+Also, please read the section below on design best practices for minimizing your
+use of the API.</p>
+
+<h3 id="auth">Authorization</h3>
+
+<p>Calls to the Google Play Android Developer API require authorization. Google
+uses the OAuth 2.0 protocol to allow authorized applications to access user
+data. To learn more, see <a
+href="https://developers.google.com/android-publisher/authorization">Authorization</a>
+in the Google Play Android Developer API documentation.</p>
+
+<h3 id="practices">Using the API efficiently</h3>
+
+<p>Access to the Google Play Android Developer API is regulated to help ensure a
+high-performance environment for all applications that use it. While you can
+request a higher daily quota for your application, we highly recommend that you
+minimize your access using the technique(s) below. </p>
+
+<ul>
+  <li><em>Store subscription expiry on your servers</em> &mdash; your servers
+  should use the Google Play Android Developer API to query the expiration date
+  for new subscription tokens, then store the expiration date locally. This allows
+  you to check the status of subscriptions only at or after the expiration (see
+  below). </li>
+  <li><em>Cache expiration and purchaseState</em> &mdash; If your app contacts
+  your backend servers at runtime to verify subscription validity, your server
+  should cache the expiration and purchaseState to ensure the fastest possible
+  response (and best experience) for the user.</li>
+  <li><em>Query for subscription status only at expiration</em> &mdash; Once your
+  server has retrieved the expiration date of subscription tokens, it should not
+  query the Google Play servers for the subscription status again until the
+  subscription is reaching or has passed the expiration date. Typically, your
+  servers would run a batch query each day to check the status of
+  <em>expiring</em> subscriptions, then update the database. Note that: 
+  <ul>
+    <li>Your servers should not query all subscriptions every day</li>
+    <li>Your servers should never query subscription status dynamically, based on
+    individual requests from your Android application. </li>
+  </ul>
+  </li>
+</ul>
+
+<p>By following those general guidelines, your implementation will offer the
+best possible performance for users and minimize use of the Google Play Android
+Developer API.</p>
+
diff --git a/docs/html/guide/market/billing/billing_testing.jd b/docs/html/guide/google/play/billing/billing_testing.jd
similarity index 86%
rename from docs/html/guide/market/billing/billing_testing.jd
rename to docs/html/guide/google/play/billing/billing_testing.jd
index 77aa3ed..e2d4a01 100755
--- a/docs/html/guide/market/billing/billing_testing.jd
+++ b/docs/html/guide/google/play/billing/billing_testing.jd
@@ -13,20 +13,20 @@
   </ol>
   <h2>Downloads</h2>
   <ol>
-    <li><a href="{@docRoot}guide/market/billing/billing_integrate.html#billing-download">Sample
+    <li><a href="{@docRoot}guide/google/play/billing/billing_integrate.html#billing-download">Sample
     Application</a></li>
   </ol>
   <h2>See also</h2>
   <ol>
-    <li><a href="{@docRoot}guide/market/billing/billing_overview.html">Overview of In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_overview.html">Overview of In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_integrate.html">Implementing In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_integrate.html">Implementing In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_best_practices.html">Security and
+    <li><a href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and
     Design</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_admin.html">Administering In-app
+    <li><a href="{@docRoot}guide/google/play/billing/billing_admin.html">Administering In-app
     Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_reference.html">In-app Billing
+    <li><a href="{@docRoot}guide/google/play/billing/billing_reference.html">In-app Billing
     Reference</a></li>
   </ol>
 </div>
@@ -42,7 +42,7 @@
 the most current version of the Google Play application installed. If a device is not running the
 most current Google Play application, your application won't be able to send in-app billing
 requests to Google Play. For general information about how to set up a device for use in
-developing Android applications, see <a href="{@docRoot}guide/developing/device.html">Using Hardware
+developing Android applications, see <a href="{@docRoot}tools/device.html">Using Hardware
 Devices</a>.</p>
 
 <p>The following section shows you how to set up and use the in-app billing test tools.</p>
@@ -62,7 +62,7 @@
 
 <img src="{@docRoot}images/billing_test_flow.png" height="381" id="figure1" />
 <p class="img-caption">
-  <strong>Figure 1.</strong> Checkout flow for the special reserved item android.test.purchased.
+  <strong>Figure 1.</strong> Wallet flow for the special reserved item android.test.purchased.
 </p>
 
 <p>You do not need to list the reserved products in your application's product list. Google Play
@@ -91,10 +91,10 @@
     <p>When you make an in-app billing request with this product ID, Google Play responds as
     though the purchase was refunded. Refunds cannot be initiated through Google Play's in-app
     billing service. Refunds must be initiated by you (the merchant). After you process a refund
-    request through your Google Checkout account, a refund message is sent to your application by
-    Google Play. This occurs only when Google Play gets notification from Google Checkout that
+    request through your Google Wallet account, a refund message is sent to your application by
+    Google Play. This occurs only when Google Play gets notification from Google Wallet that
     a refund has been made. For more information about refunds, see <a
-    href="{@docRoot}guide/market/billing/billing_overview.html#billing-action-notify">Handling
+    href="{@docRoot}guide/google/play/billing/billing_overview.html#billing-action-notify">Handling
     IN_APP_NOTIFY messages</a> and <a
     href="http://www.google.com/support/androidmarket/bin/answer.py?answer=1153485">In-app Billing
     Pricing</a>.</p>
@@ -108,7 +108,7 @@
 <p>In some cases, the reserved items may return signed static responses, which lets you test
 signature verification in your application. To test signature verification with the special reserved
 product IDs, you may need to set up <a
-href="{@docRoot}guide/market/billing/billing_admin.html#billing-testing-setup">test accounts</a> or
+href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-testing-setup">test accounts</a> or
 upload your application as a unpublished draft application. Table 1 shows you the conditions under
 which static responses are signed.</p>
 
@@ -178,7 +178,7 @@
     <p>You cannot use the emulator to test in-app billing; you must install your application on a
     device to test in-app billing.</p>
     <p>To learn how to install an application on a device, see <a
-    href="{@docRoot}guide/developing/building/building-cmdline.html#RunningOnDevice">Running on a
+    href="{@docRoot}tools/building/building-cmdline.html#RunningOnDevice">Running on a
     device</a>.</p>
   </li>
   <li><strong>Sign in to your device with your developer account.</strong>
@@ -216,16 +216,16 @@
 
 <p>To test your in-app billing implementation with actual in-app purchases, you will need to
 register at least one test account on the Google Play publisher site. You cannot use your
-developer account to test the complete in-app purchase process because Google Checkout does not let
+developer account to test the complete in-app purchase process because Google Wallet does not let
 you buy items from yourself. If you have not set up test accounts before, see <a
-href="{@docRoot}guide/market/billing/billing_admin.html#billing-testing-setup">Setting up test
+href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-testing-setup">Setting up test
 accounts</a>.</p>
 
 <p>Also, a test account can purchase an item in your product list only if the item is published. The
 application does not need to be published, but the item does need to be published.</p>
 
-<p>When you use a test account to purchase items, the test account is billed through Google Checkout
-and your Google Checkout Merchant account receives a payout for the purchase. Therefore, you may
+<p>When you use a test account to purchase items, the test account is billed through Google Wallet
+and your Google Wallet Merchant account receives a payout for the purchase. Therefore, you may
 want to refund purchases that are made with test accounts, otherwise the purchases will show up as
 actual payouts to your merchant account.</p>
 
@@ -243,20 +243,20 @@
   </li>
   <li><strong>Add items to the application's product list.</strong>
     <p>Make sure that you publish the items (the application can remain unpublished). See <a
-    href="{@docRoot}guide/market/billing/billing_admin.html#billing-catalog">Creating a product
+    href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-catalog">Creating a product
     list</a> to learn how to do this.</p>
   </li>
   <li><strong>Install your application on an Android-powered device.</strong>
     <p>You cannot use the emulator to test in-app billing; you must install your application on a
     device to test in-app billing.</p>
     <p>To learn how to install an application on a device, see <a
-    href="{@docRoot}guide/developing/building/building-cmdline.html#RunningOnDevice">Running on a
+    href="{@docRoot}tools/building/building-cmdline.html#RunningOnDevice">Running on a
     device</a>.</p>
   </li>
  <li><strong>Make one of your test accounts the primary account on your device.</strong>
     <p>To perform end-to-end testing of in-app billing, the primary account on your device must be
     one of the <a
-    href="{@docRoot}guide/market/billing/billing_admin.html#billing-testing-setup">test accounts</a>
+    href="{@docRoot}guide/google/play/billing/billing_admin.html#billing-testing-setup">test accounts</a>
     that you registered on the Google Play site. If the primary account on your device is not a
     test account, you must do a factory reset of the device and then sign in with one of your test
     accounts. To perform a factory reset, do the following:</p>
@@ -286,8 +286,8 @@
 
 <p>When you are finished testing your in-app billing implementation, you are ready to
 publish your application on Google Play. You can follow the normal steps for <a
-href="{@docRoot}guide/publishing/preparing.html">preparing</a>, <a
-href="{@docRoot}guide/publishing/app-signing.html">signing</a>, and <a
-href="{@docRoot}guide/publishing/publishing.html">publishing your application</a>.
+href="{@docRoot}tools/publishing/preparing.html">preparing</a>, <a
+href="{@docRoot}tools/publishing/app-signing.html">signing</a>, and <a
+href="{@docRoot}distribute/googleplay/publish/preparing.html">publishing on Google Play</a>.
 </p>
 
diff --git a/docs/html/guide/google/play/billing/index.jd b/docs/html/guide/google/play/billing/index.jd
new file mode 100755
index 0000000..a33b199
--- /dev/null
+++ b/docs/html/guide/google/play/billing/index.jd
@@ -0,0 +1,116 @@
+page.title=In-app Billing
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>Topics</h2>
+  <ol>
+    <li><a href="{@docRoot}guide/google/play/billing/billing_overview.html">Overview of In-app
+    Billing</a></li>
+    <li><a href="{@docRoot}guide/google/play/billing/billing_integrate.html">Implementing In-app
+    Billing</a></li>
+    <li><a href="{@docRoot}guide/google/play/billing/billing_subscriptions.html">Subscriptions</a></li>
+    <li><a href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and
+    Design</a></li>    <li><a href="{@docRoot}guide/google/play/billing/billing_testing.html">Testing In-app
+    Billing</a></li>
+    <li><a href="{@docRoot}guide/google/play/billing/billing_admin.html">Administering In-app
+    Billing</a></li>
+  </ol>
+  <h2>Reference</h2>
+  <ol>
+    <li><a href="{@docRoot}guide/google/play/billing/billing_reference.html">In-app Billing
+    Reference</a></li>
+  </ol>
+  <h2>Downloads</h2>
+  <ol>
+    <li><a href="{@docRoot}guide/google/play/billing/billing_integrate.html#billing-download">Sample
+    Application</a></li>
+  </ol>  
+</div>
+</div>
+
+<p>In-app Billing is a Google Play service that lets you sell digital content from inside
+your applications. You can use the service to sell a wide range of content, including downloadable
+content such as media files or photos, virtual content such as game levels or potions, premium services 
+and features, and more. You can use In-app Billing to sell products as</p>
+
+<ul>
+<li>Standard in-app products (one-time billing), or</li>
+<li>Subscriptions, (recurring, automated billing)</li>
+</ul>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h2>Support for subscriptions <span class="new">New!</span></h2>
+  <p>In-app Billing now lets you sell subscriptions in your apps, as well as standard in-app products. 
+  For details on how to sell subscriptions to content, services, and features, see the
+  <a href="{@docRoot}guide/google/play/billing/billing_subscriptions.html">Subscriptions</a> documentation.</p>
+</div>
+</div>
+
+<p>When you use the in-app billing service to sell an item,
+whether it's an in-app product or a subscription, Google Play
+handles all checkout details so your application never has to directly process
+any financial transactions. Google Play uses the same checkout backend service as
+is used for application purchases, so your users experience a consistent and
+familiar purchase flow (see figure 1). Also, the transaction fee for in-app
+purchases is the same as the transaction fee for application purchases
+(30%).</p>
+
+<p>Any application that you publish through Google Play can implement In-app Billing. No special
+account or registration is required other than an Android Market publisher account and a Google
+Wallet Merchant account. Also, because the service uses no dedicated framework APIs, you can add
+in-app billing to any application that uses a minimum API level of 4 or higher.</p>
+
+<p>To help you integrate in-app billing into your application, the Android SDK
+provides a sample application that demonstrates how to sell standard in-app
+products and subscriptions from inside an app. The sample contains examples of
+billing-related classes you can use to implement in-app billing in your
+application. It also contains examples of the database, user interface, and
+business logic you might use to implement in-app billing.</p>
+
+<p class="caution"><strong>Important</strong>: Although the sample application is a working example
+of how you can implement in-app billing, we <em>strongly recommend</em> that you modify and
+obfuscate the sample code before you use it in a production application. For more information, see
+<a href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security and Design</a>.</p>
+
+<img src="{@docRoot}images/billing_checkout_flow.png" height="382" id="figure1" />
+<p class="img-caption">
+  <strong>Figure 1.</strong> Applications initiate in-app billing requests through their own UI
+  (first screen). Google Play responds to the request by providing the checkout user interface
+  (middle screen). When checkout is complete, the application resumes.
+</p>
+
+<p>To learn more about Google Play's in-app billing service and start integrating it into your
+applications, read the following documents:</p>
+
+<dl>
+  <dt><strong><a href="{@docRoot}guide/google/play/billing/billing_overview.html">Overview of In-app
+  Billing</a></strong></dt>
+    <dd>Learn how the service works and what a typical in-app billing implementation looks
+    like.</dd>
+  <dt><strong><a href="{@docRoot}guide/google/play/billing/billing_integrate.html">Implementing
+  In-app Billing</a></strong></dt>
+    <dd>Use this step-by-step guide to start incorporating in-app billing into your
+    application. The instructions apply to both one-time and subscription purchases.</dd>
+    
+    <dt><strong><a href="{@docRoot}guide/google/play/billing/billing_subscriptions.html">Subscriptions</a></strong></dt>
+    <dd>Learn how subscriptions work and how to implement support for them in your app.</dd>
+  <dt><strong><a href="{@docRoot}guide/google/play/billing/billing_best_practices.html">Security
+  and Design</a></strong></dt>
+    <dd>Review these best practices to help ensure that your in-app billing implementation is
+    secure and well designed.</dd>
+  <dt><strong><a href="{@docRoot}guide/google/play/billing/billing_testing.html">Testing In-app
+  Billing</a></strong></dt>
+    <dd>Understand how the in-app billing test tools work and learn how to test your in-app billing
+    implementation.</dd>
+  <dt><strong><a href="{@docRoot}guide/google/play/billing/billing_admin.html">Administering
+  In-app Billing</a></strong></dt>
+    <dd>Learn how to set up your product list, register test accounts, and handle refunds.</dd>
+  <dt><strong><a href="{@docRoot}guide/google/play/billing/billing_reference.html">In-app Billing
+  Reference</a></strong></dt>
+    <dd>Get detailed information about Google Play response codes and the in-app billing
+    interface.</dd>
+</dl>
+
diff --git a/docs/html/guide/market/expansion-files.jd b/docs/html/guide/google/play/expansion-files.jd
similarity index 97%
rename from docs/html/guide/market/expansion-files.jd
rename to docs/html/guide/google/play/expansion-files.jd
index 36b8f9c..62ca1e2 100644
--- a/docs/html/guide/market/expansion-files.jd
+++ b/docs/html/guide/google/play/expansion-files.jd
@@ -52,8 +52,8 @@
 
 <h2>See also</h2>
 <ol>
-  <li><a href="{@docRoot}guide/market/licensing/index.html">Application Licensing</a></li>
-  <li><a href="{@docRoot}guide/market/publishing/multiple-apks.html">Multiple
+  <li><a href="{@docRoot}guide/google/play/licensing/index.html">Application Licensing</a></li>
+  <li><a href="{@docRoot}guide/google/play/publishing/multiple-apks.html">Multiple
 APK Support</a></li>
 </ol>
 </div>
@@ -215,7 +215,7 @@
       <li>If yes, your app is ready to go.</li>
       <li>If no, your app must download the expansion files over HTTP from Google Play. Your app
 must send a request to the Google Play client using the Google Play's <a
-href="{@docRoot}guide/market/licensing/index.html">Application Licensing</a> service, which
+href="{@docRoot}guide/google/play/licensing/index.html">Application Licensing</a> service, which
 responds with the name, file size, and URL for each expansion file. With this information, you then
 download the files and save them to the proper <a href="#StorageLocation">storage location</a>.</li>
     </ol>
@@ -242,7 +242,7 @@
 Space is precious and you should keep your total application size as small as possible. If your app
 uses more than 50MB in order to provide multiple versions of your graphic assets for multiple screen
 densities, consider instead publishing <a
-href="{@docRoot}guide/market/publishing/multiple-apks.html">multiple APKs</a> in which each APK
+href="{@docRoot}guide/google/play/publishing/multiple-apks.html">multiple APKs</a> in which each APK
 contains only the assets required for the screens that it targets.</li>
   <li>Determine which application resources to separate from your APK and package them in a
 file to use as the main expansion file.
@@ -259,7 +259,7 @@
   </li>
   <li>Add logic to your application's main activity that checks whether the expansion files
 are on the device upon start-up. If the files are not on the device, use Google Play's <a
-href="{@docRoot}guide/market/licensing/index.html">Application Licensing</a> service to request URLs
+href="{@docRoot}guide/google/play/licensing/index.html">Application Licensing</a> service to request URLs
 for the expansion files, then download and save them.
     <p>To greatly reduce the amount of code you must write and ensure a good user experience
 during the download, we recommend you use the <a href="AboutLibraries">Downloader
@@ -292,16 +292,16 @@
 provides for each file is unique for every download and each one expires shortly after it is given
 to your application.</li>
   <li>If you update your application with a new APK or upload <a
-href="{@docRoot}guide/market/publishing/multiple-apks.html">multiple APKs</a> for the same
+href="{@docRoot}guide/google/play/publishing/multiple-apks.html">multiple APKs</a> for the same
 application, you can select expansion files that you've uploaded for a previous APK. <strong>The
 expansion file's name does not change</strong>&mdash;it retains the version received by the APK to
 which the file was originally associated.</li>
   <li>If you use expansion files in combination with <a
-href="{@docRoot}guide/market/publishing/multiple-apks.html">multiple APKs</a> in order to
+href="{@docRoot}guide/google/play/publishing/multiple-apks.html">multiple APKs</a> in order to
 provide different expansion files for different devices, you still must upload separate APKs
 for each device in order to provide a unique  <a
 href="{@docRoot}guide/topics/manifest/manifest-element.html#vcode">{@code versionCode}</a>
-value and declare different <a href="{@docRoot}guide/appendix/market-filters.html">filters</a> for
+value and declare different <a href="{@docRoot}guide/google/play/filters.html">filters</a> for
 each APK.</li>
   <li>You cannot issue an update to your application by changing the expansion files
 alone&mdash;<strong>you must upload a new APK</strong> to update your app. If your changes only
@@ -333,7 +333,7 @@
 application launches for the first time. However, in some cases your app must download the
 expansion files itself by requesting them from a URL provided to you in a response
 from Google Play's <a
-href="{@docRoot}guide/market/licensing/index.html">Application Licensing</a> service.</p>
+href="{@docRoot}guide/google/play/licensing/index.html">Application Licensing</a> service.</p>
 
 <p>The basic logic you need to download your expansion files is the following:</p>
 
@@ -346,7 +346,7 @@
       <li>If the expansion files are <em>not</em> there:
         <ol>
           <li>Perform a request using Google Play's <a
-href="{@docRoot}guide/market/licensing/index.html">Application Licensing</a> to get your
+href="{@docRoot}guide/google/play/licensing/index.html">Application Licensing</a> to get your
 app's expansion file names, sizes, and URLs.</li> 
           <li>Use the URLs provided by Google Play to download the expansion files and save
 the expansion files. You <strong>must</strong> save the files to the <a
@@ -365,7 +365,7 @@
 
 
 <p>If your application is free (not a paid app), then you probably haven't used the <a
-href="{@docRoot}guide/market/licensing/index.html">Application Licensing</a> service. It's primarily
+href="{@docRoot}guide/google/play/licensing/index.html">Application Licensing</a> service. It's primarily
 designed for you to enforce
 licensing policies for your application and ensure that the user has the right to
 use your app (he or she rightfully paid for it on Google Play). In order to facilitate the
@@ -409,7 +409,7 @@
 the library into your application.</p>
 
 <p>If you'd rather develop your own solution to download the expansion files using the Google
-Play URLs, you must follow the <a href="{@docRoot}guide/market/licensing/index.html">Application
+Play URLs, you must follow the <a href="{@docRoot}guide/google/play/licensing/index.html">Application
 Licensing</a> documentation to perform a license request, then retrieve the expansion file names,
 sizes, and URLs from the response extras. You should use the <a href="#ExpansionPolicy">{@code
 APKExpansionPolicy}</a> class (included in the License Verification Library) as your licensing
@@ -447,7 +447,7 @@
 download two packages from the SDK Manager and add the appropriate libraries to your
 application.</p>
 
-<p>First, open the <a href="{@docRoot}sdk/adding-components.html">Android SDK Manager</a>, expand
+<p>First, open the <a href="{@docRoot}sdk/exploring.html">Android SDK Manager</a>, expand
 <em>Extras</em> and download:</p>
 <ul>
   <li><em>Google Market Licensing package</em></li>
@@ -571,11 +571,11 @@
   <dt>{@code getPublicKey()}</dt>
     <dd>This must return a string that is the Base64-encoded RSA public key for your publisher
 account, available from the profile page on the Developer Console (see <a
-href="{@docRoot}guide/market/licensing/setting-up.html">Setting Up for Licensing</a>).</dd>
+href="{@docRoot}guide/google/play/licensing/setting-up.html">Setting Up for Licensing</a>).</dd>
   <dt>{@code getSALT()}</dt>
     <dd>This must return an array of random bytes that the licensing {@code Policy} uses to
 create an <a
-href="{@docRoot}guide/market/licensing/adding-licensing.html#impl-Obfuscator">{@code
+href="{@docRoot}guide/google/play/licensing/adding-licensing.html#impl-Obfuscator">{@code
 Obfuscator}</a>. The salt ensures that your obfuscated {@link android.content.SharedPreferences}
 file in which your licensing data is saved will be unique and non-discoverable.</dd>
   <dt>{@code getAlarmReceiverClassName()}</dt>
@@ -924,7 +924,7 @@
 <p>For more information about how to use the {@code APKExpansionPolicy} when you're <em>not</em>
 using the <a
 href="#AboutLibraries">Downloader Library</a>, see the documentation for <a
-href="{@docRoot}guide/market/licensing/adding-licensing.html">Adding Licensing to Your App</a>,
+href="{@docRoot}guide/google/play/licensing/adding-licensing.html">Adding Licensing to Your App</a>,
 which explains how to implement a license policy such as this one.</p>
 
 
@@ -1200,7 +1200,7 @@
 the application as a draft, such that your application is not published for Google Play users,
 but the expansion files are available for you to test the download process.</p></li>
   <li>Install the application on your test device using the Eclipse tools or <a
-href="{@docRoot}guide/developing/tools/adb.html">{@code adb}</a>.</li>
+href="{@docRoot}tools/help/adb.html">{@code adb}</a>.</li>
   <li>Launch the app.</li>
 </ol>
 
diff --git a/docs/html/guide/appendix/market-filters.jd b/docs/html/guide/google/play/filters.jd
similarity index 98%
rename from docs/html/guide/appendix/market-filters.jd
rename to docs/html/guide/google/play/filters.jd
index 3e502d7..3db9cb6 100644
--- a/docs/html/guide/appendix/market-filters.jd
+++ b/docs/html/guide/google/play/filters.jd
@@ -400,7 +400,7 @@
   <td valign="top">Native Platform</td> <td valign="top"><p>An application that includes native
     libraries that target a specific platform (ARM EABI v7 or x86, for example) are
     visible only on devices that support that platform. For details about the NDK and using
-    native libraries, see <a href="{@docRoot}sdk/ndk/index.html#overview">What is the
+    native libraries, see <a href="{@docRoot}tools/sdk/ndk/index.html#overview">What is the
       Android NDK?</a></p> </tr> <tr>
         <td valign="top">Copy-Protected Applications</td> <td valign="top"><p>To
           copy protect an application, set copy protection to "On" when you configure publishing
@@ -451,4 +451,4 @@
 version codes for each APK to ensure proper update paths for each configuration.</p>
 
 <p>If you need more information about how to publish multiple APKs on Google Play, read <a
-href="{@docRoot}guide/market/publishing/multiple-apks.html">Multiple APK Support</a>.</p>
+href="{@docRoot}guide/google/play/publishing/multiple-apks.html">Multiple APK Support</a>.</p>
diff --git a/docs/html/guide/google/play/index.jd b/docs/html/guide/google/play/index.jd
new file mode 100644
index 0000000..b11bcdc
--- /dev/null
+++ b/docs/html/guide/google/play/index.jd
@@ -0,0 +1,16 @@
+page.title=Google Play APIs
+page.landing=1
+page.landing.intro=When you ditribute your Android app using Google Play you have the opportunity to enhance your app's capabilities with services such as in-app billing and control your app distribution with advanced device filtering.
+@jd:body
+
+
+<div class="distribute-features col-13">
+  <ul>
+    <li><h5>Monetize with in-app billing</h5>Lorem ipsum dolor sit amet, soldum
+consectetur adipiscing elit. <a href="#">Learn more &raquo;</a></li>
+    <li><h5>Control your app distribution</h5>Lorem ipsum dolor sit amet, soldum consectetur
+adipiscing elit. <a href="#">Learn more &raquo;</a></li>
+    <li class="last"><h5>Protect from piracy</h5>Lorem ipsum dolor sit amet, soldum
+consectetur adipiscing elit. <a href="#">Learn more &raquo;</a></li>
+  </ul>
+</div>
\ No newline at end of file
diff --git a/docs/html/guide/market/licensing/adding-licensing.jd b/docs/html/guide/google/play/licensing/adding-licensing.jd
similarity index 97%
rename from docs/html/guide/market/licensing/adding-licensing.jd
rename to docs/html/guide/google/play/licensing/adding-licensing.jd
index d4dd008..49375c2 100644
--- a/docs/html/guide/market/licensing/adding-licensing.jd
+++ b/docs/html/guide/google/play/licensing/adding-licensing.jd
@@ -72,11 +72,11 @@
 <p>The sections below describe these tasks. When you are done with the
 integration, you should be able to compile your application successfully and you
 can begin testing, as described in <a
-href="{@docRoot}guide/market/licensing/setting-up.html#test-env">Setting Up the Test
+href="{@docRoot}guide/google/play/licensing/setting-up.html#test-env">Setting Up the Test
 Environment</a>.</p>
 
 <p>For an overview of the full set of source files included in the LVL, see <a
-href="{@docRoot}guide/market/licensing/licensing-reference.html#lvl-summary">Summary of LVL Classes
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html#lvl-summary">Summary of LVL Classes
 and Interfaces</a>.</p>
 
 
@@ -224,7 +224,7 @@
 cached response is valid, rather than making a request to the licensing server.
 Setting the response validity according to the server-provided <code>VT</code>
 extra is highly recommended. See <a
-href="{@docRoot}guide/market/licensing/licensing-reference.html#extras">Server Response Extras</a>
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html#extras">Server Response Extras</a>
 for more information.</li>
 <li>Uses an exponential backoff period, if retrying any requests the result in
 errors. Note that the Google Play client automatically retries failed
@@ -247,7 +247,7 @@
 recommended. See the ServerManagedPolicy implementation for an example of how to
 extract and use the extras. For a list of server settings and information about
 how to use them, see  <a
-href="{@docRoot}guide/market/licensing/licensing-reference.html#extras">Server Response
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html#extras">Server Response
 Extras</a>.</p>
 
 <h3 id="ServerManagedPolicy">ServerManagedPolicy</h3>
@@ -261,7 +261,7 @@
 </p>
 
 <p style="margin-top:.5em;">See <a
-href="{@docRoot}guide/market/licensing/licensing-reference.html#extras">Server Response Extras</a>
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html#extras">Server Response Extras</a>
 for
 a list of settings and <code>ServerManagedPolicy.java</code> for information
 about how a {@code Policy} can use the extras.</p>
@@ -294,7 +294,7 @@
 license response in its <code>processServerResponse()</code> method and checks
 them in its <code>allowAccess()</code> method. For a list of the server-provided
 settings used by ServerManagedPolicy, see <a
-href="{@docRoot}guide/market/licensing/licensing-reference.html#extras">Server Response
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html#extras">Server Response
 Extras</a>.</p>
 
 <p>For convenience, best performance, and the benefit of using license settings
@@ -650,8 +650,7 @@
 deep-links the user to the application's details page on Google Play, from which the
 use can purchase the application. For more information on how to set up such
 links, see <a
-href="{@docRoot}guide/publishing/publishing.html#marketintent">Linking to your apps
-on Google Play</a>. </li>
+href="{@docRoot}distribute/googleplay/promote/linking.html">Linking to Your Products</a>. </li>
 <li>Display a Toast notification that indicates that the features of the
 application are limited because it is not licensed. </li>
 </ul>
@@ -698,9 +697,9 @@
 <p>Additionally, you should implement the <code>applicationError()</code>
 method, which the LVL calls to let your application handle errors that are not
 retryable. For a list of such errors, see <a
-href="{@docRoot}guide/market/licensing/licensing-reference.html#server-response-codes">Server
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html#server-response-codes">Server
 Response Codes</a> in the <a
-href="guide/market/licensing/licensing-reference.html">Licensing Reference</a>. You can implement
+href="guide/google/play/licensing/licensing-reference.html">Licensing Reference</a>. You can implement
 the method in any way needed. In most cases, the
 method should log the error code and call <code>dontAllow()</code>.</p>
 
@@ -999,9 +998,9 @@
 
 <p>When you are finished testing your license implementation, you are ready to
 publish the application on Google Play. Follow the normal steps to <a
-href="{@docRoot}guide/publishing/preparing.html">prepare</a>, <a
-href="{@docRoot}guide/publishing/app-signing.html">sign</a>, and then <a
-href="{@docRoot}guide/publishing/publishing.html">publish the application</a>.
+href="{@docRoot}tools/publishing/preparing.html">prepare</a>, <a
+href="{@docRoot}tools/publishing/app-signing.html">sign</a>, and then <a
+href="{@docRoot}distribute/googleplay/publish/preparing.html">publish the application</a>.
 </p>
 
 <h3>Removing Copy Protection</h3>
diff --git a/docs/html/guide/market/licensing/index.jd b/docs/html/guide/google/play/licensing/index.jd
similarity index 86%
rename from docs/html/guide/market/licensing/index.jd
rename to docs/html/guide/google/play/licensing/index.jd
index 1f15303..d393738 100644
--- a/docs/html/guide/market/licensing/index.jd
+++ b/docs/html/guide/google/play/licensing/index.jd
@@ -31,25 +31,25 @@
 to initiate the download of an APK expansion file. In which case, the request that your application
 sends to the licensing service is not to check whether the user paid for the app, but to request the
 URL of the expansion files. For information about downloading expansion files for your application,
-read the guide to <a href="{@docRoot}guide/market/expansion-files.html">APK Expansion Files</a>.</p>
+read the guide to <a href="{@docRoot}guide/google/play/expansion-files.html">APK Expansion Files</a>.</p>
 
 
 <p>To learn more about Google Play's application licensing service and start integrating it into
 your applications, read the following documents:</p>
 
 <dl>
-  <dt><strong><a href="{@docRoot}guide/market/licensing/overview.html">Licensing
+  <dt><strong><a href="{@docRoot}guide/google/play/licensing/overview.html">Licensing
 Overview</a></strong></dt>
     <dd>Describes how the service works and what a typical licensing implementation looks
 like.</dd>
-  <dt><strong><a href="{@docRoot}guide/market/licensing/setting-up.html">Setting Up for
+  <dt><strong><a href="{@docRoot}guide/google/play/licensing/setting-up.html">Setting Up for
 Licensing</a></strong></dt>
     <dd>Explains how to set up your Google Play account, development environment, and
 testing environment in order to add licensing to your app.</dd>
-  <dt><strong><a href="{@docRoot}guide/market/licensing/adding-licensing.html">Adding
+  <dt><strong><a href="{@docRoot}guide/google/play/licensing/adding-licensing.html">Adding
 Licensing to Your App</a></strong></dt>
     <dd>Provides a step-by-step guide to add licensing verification to your application.</dd>
-  <dt><strong><a href="{@docRoot}guide/market/licensing/licensing-reference.html">Licensing
+  <dt><strong><a href="{@docRoot}guide/google/play/licensing/licensing-reference.html">Licensing
 Reference</a></strong></dt>
     <dd>Provides detailed information about the licensing library's classes and the service response
 codes.</dd>
diff --git a/docs/html/guide/market/licensing/licensing-reference.jd b/docs/html/guide/google/play/licensing/licensing-reference.jd
similarity index 98%
rename from docs/html/guide/market/licensing/licensing-reference.jd
rename to docs/html/guide/google/play/licensing/licensing-reference.jd
index 0a7e033..d3d5224 100644
--- a/docs/html/guide/market/licensing/licensing-reference.jd
+++ b/docs/html/guide/google/play/licensing/licensing-reference.jd
@@ -230,7 +230,7 @@
 </table>
 
 <p class="note"><strong>Note:</strong> As documented in <a
-href="{@docRoot}guide/market/licensing/setting-up.html#test-env">
+href="{@docRoot}guide/google/play/licensing/setting-up.html#test-env">
 Setting Up The Testing Environment</a>, the response code can be manually
 overridden for the application developer and any registered test users via the
 Google Play publisher site.
@@ -251,13 +251,13 @@
 period and provide other information, The licensing server includes several pieces of
 information in the license responses. Specifically, the service provides recommended values for the
 application's license validity period, retry grace period, maximum allowable retry count, and other
-settings. If your application uses <a href="{@docRoot}guide/market/expansion-files.html">APK
+settings. If your application uses <a href="{@docRoot}guide/google/play/expansion-files.html">APK
 expansion files</a>, the response also includes the file names, sizes, and URLs. The server appends
 the settings as key-value pairs in the license response "extras" field. </p>
 
 <p>Any {@code Policy} implementation can extract the extras settings from the license
 response and use them as needed. The LVL default {@code Policy} implementation, <a
-href="{@docRoot}guide/market/licensing/adding-licensing.html#ServerManagedPolicy">{@code
+href="{@docRoot}guide/google/play/licensing/adding-licensing.html#ServerManagedPolicy">{@code
 ServerManagedPolicy}</a>, serves as a working
 implementation and an illustration of how to obtain, store, and use the
 settings. </p>
diff --git a/docs/html/guide/market/licensing/overview.jd b/docs/html/guide/google/play/licensing/overview.jd
similarity index 98%
rename from docs/html/guide/market/licensing/overview.jd
rename to docs/html/guide/google/play/licensing/overview.jd
index e7e23f8..467a3a2 100644
--- a/docs/html/guide/market/licensing/overview.jd
+++ b/docs/html/guide/google/play/licensing/overview.jd
@@ -206,7 +206,7 @@
 functions when run on a device that does not offer Google Play.</li>
 <li>You can implement licensing controls for a free app, but only if you're using the service to 
 provide <a
-href="{@docRoot}guide/market/expansion-files.html">APK expansion files</a>.</li>
+href="{@docRoot}guide/google/play/expansion-files.html">APK expansion files</a>.</li>
 </ul>
 
 
@@ -237,7 +237,7 @@
 higher version of the platform.</p>
 
 <p>To begin adding application licensing to your application, continue to <a
-href="{@docRoot}guide/market/licensing/setting-up.html">Setting Up for Licensing</a>.</p>
+href="{@docRoot}guide/google/play/licensing/setting-up.html">Setting Up for Licensing</a>.</p>
 
 
 
diff --git a/docs/html/guide/market/licensing/setting-up.jd b/docs/html/guide/google/play/licensing/setting-up.jd
similarity index 95%
rename from docs/html/guide/market/licensing/setting-up.jd
rename to docs/html/guide/google/play/licensing/setting-up.jd
index 0de7819..80a4419 100644
--- a/docs/html/guide/market/licensing/setting-up.jd
+++ b/docs/html/guide/google/play/licensing/setting-up.jd
@@ -46,7 +46,7 @@
 </p>
 
 <p>For more information, see <a
-href="{@docRoot}guide/publishing/publishing.html">Publishing on Google Play</a>.</p>
+href="{@docRoot}distribute/googleplay/publish/register.html">Get Started with Publishing</a>.</p>
 
 <p>If you already have a publisher account on Google Play, use your existing
 account to set up licensing.</p>
@@ -102,7 +102,7 @@
 </ol>
 
 <p>The sections below describe these tasks. When you are done with setup,
-you can begin <a href="{@docRoot}guide/market/licensing/adding-licensing.html">Adding
+you can begin <a href="{@docRoot}guide/google/play/licensing/adding-licensing.html">Adding
 Licensing to Your App</a>.</p>
 
 <p>To get started, you need to set up a proper runtime environment on which
@@ -146,7 +146,7 @@
 
 <p>For general information about how to set up a device for use in developing
 Android applications, see <a
-href="{@docRoot}guide/developing/device.html">Using Hardware Devices</a>.</p>
+href="{@docRoot}tools/device.html">Using Hardware Devices</a>.</p>
 
 <h4 id="runtime-emulator">Running on an Android emulator</h4>
 
@@ -199,7 +199,7 @@
 </ol>
 
 <p>If you are not familiar with AVDs or how to use them, see <a
-href="{@docRoot}guide/developing/devices/index.html">Managing Virtual Devices</a>.</p>
+href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a>.</p>
 
 <h4 id="project-update">Updating your project configuration</h4>
 
@@ -266,7 +266,7 @@
 application)</p>
 
 <p>If you aren't familiar with how to download packess into your SDK, see the
-<a href="{@docRoot}sdk/adding-components.html">Adding SDK Packages</a>
+<a href="{@docRoot}sdk/exploring.html">Exploring the SDK</a>
 document. </p>
 
 
@@ -306,7 +306,7 @@
 share its code and resources across multiple applications. </p>
 
 <p style="margin-top:.5em;">If you aren't familiar with library projects or how
-to use them, see <a href="{@docRoot}guide/developing/projects/index.html#LibraryProjects">
+to use them, see <a href="{@docRoot}tools/projects/index.html#LibraryProjects">
 Managing Projects</a>.
 </p>
 </div>
@@ -345,7 +345,7 @@
 
 <p>For more information about how to create an application project or work with
 library projects in Eclipse, see <a
-href="{@docRoot}guide/developing/projects/projects-eclipse.html">Managing Projects from
+href="{@docRoot}tools/projects/projects-eclipse.html">Managing Projects from
 Eclipse with ADT</a>.</p>
 
 
@@ -358,7 +358,7 @@
 
 <p>If you add the LVL sources directly to your application, you can skip the
 next section and start working with the library, as described in <a
-href="{@docRoot}guide/market/licensing/adding-licensing.html">Adding
+href="{@docRoot}guide/google/play/licensing/adding-licensing.html">Adding
 Licensing to Your App</a>.</p>
 
 
@@ -379,7 +379,7 @@
 Select the "Android" properties group and click <strong>Add</strong>, then
 choose the LVL library project (com_android_vending_licensing) and click
 <strong>OK</strong>. For more information, see
-<a href="{@docRoot}guide/developing/projects/projects-eclipse.html#SettingUpLibraryProject">
+<a href="{@docRoot}tools/projects/projects-eclipse.html#SettingUpLibraryProject">
 Managing Projects from Eclipse with ADT</a></p>.
 
 
@@ -407,7 +407,7 @@
 </pre>
 
 <p>For more information about working with library projects,
-see <a href="{@docRoot}guide/developing/projects/projects-cmdline.html#SettingUpLibraryProject">
+see <a href="{@docRoot}tools/projects/projects-cmdline.html#SettingUpLibraryProject">
 Setting up a Library Project</a>.</p>
 
 
@@ -483,9 +483,9 @@
 <p>In general, you should make sure to test your application's licensing
 implementation with every response code available in the Test Response menu.
 For a description of the codes, see <a
-href="{@docRoot}guide/market/licensing/licensing-reference.html#server-response-codes">Server
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html#server-response-codes">Server
 Response Codes</a> in the <a
-href="{@docRoot}guide/market/licensing/licensing-reference.html">Licensing Reference</a>.</p>
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html">Licensing Reference</a>.</p>
 
 <img src="{@docRoot}images/licensing_test_response.png" alt=""/>
 <p class="img-caption"><strong>Figure 4.</strong> The Licensing
@@ -506,7 +506,7 @@
 have set up. For more information about test accounts, see the next section.</p>
 
 <p>See <a
-href="{@docRoot}guide/market/licensing/licensing-reference.html#server-response-codes">Server
+href="{@docRoot}guide/google/play/licensing/licensing-reference.html#server-response-codes">Server
 Response Codes</a> for a list of
 test responses available and their meanings. </p>
 
@@ -695,7 +695,7 @@
 emulator.</p>
 
 <p>Once you've completed the setup procedures, continue to <a
-href="{@docRoot}guide/market/licensing/adding-licensing.html">Adding Licensing to Your App</a>.</p>
+href="{@docRoot}guide/google/play/licensing/adding-licensing.html">Adding Licensing to Your App</a>.</p>
 
 
 
diff --git a/docs/html/guide/market/publishing/multiple-apks.jd b/docs/html/guide/google/play/publishing/multiple-apks.jd
similarity index 96%
rename from docs/html/guide/market/publishing/multiple-apks.jd
rename to docs/html/guide/google/play/publishing/multiple-apks.jd
index e7cfa33..e41817e 100644
--- a/docs/html/guide/market/publishing/multiple-apks.jd
+++ b/docs/html/guide/google/play/publishing/multiple-apks.jd
@@ -45,11 +45,11 @@
 
   <h2>See also</h2>
 <ol>
-  <li><a href="{@docRoot}guide/appendix/market-filters.html">Filters on Google Play</a></li>
+  <li><a href="{@docRoot}guide/google/play/filters.html">Filters on Google Play</a></li>
   <li><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></li>
-  <li><a href="{@docRoot}sdk/compatibility-library.html">Compatibility
+  <li><a href="{@docRoot}tools/extras/support-library.html">Compatibility
 Package</a></li>
-  <li><a href="{@docRoot}guide/appendix/api-levels.html">Android API Levels</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Android API Levels</a></li>
 </ol>
 
 </div>
@@ -192,7 +192,7 @@
 <h3 id="SupportedFilters">Supported filters</h3>
 
 <p>Which devices receive each APK is determined by <a
-href="{@docRoot}guide/appendix/market-filters.html">Google Play filters</a> that are specified by
+href="{@docRoot}guide/google/play/filters.html">Google Play filters</a> that are specified by
 elements in the manifest file of each APK. However, Google Play allows you to publish multiple
 APKs only when each APK uses filters to support a variation of the following
 device characteristics:</p>
@@ -286,7 +286,7 @@
 </ul>
 
 <p>Other manifest elements that enable <a
-href="{@docRoot}guide/appendix/market-filters.html">Google Play filters</a>&mdash;but are not
+href="{@docRoot}guide/google/play/filters.html">Google Play filters</a>&mdash;but are not
 listed above&mdash;are still applied for each APK as usual. However, Google Play does not allow
 you to publish multiple APKs based on variations of them. Thus, you cannot publish
 multiple APKs if the above listed filters are the same for each APK (but the APKs differ based on
@@ -402,7 +402,7 @@
 
 <p class="note"><strong>Tip:</strong> One way to avoid duplicating large portions of your
 application code is to use a <a
-href="{@docRoot}guide/developing/projects/index.html#LibraryProjects">library project</a>. A library
+href="{@docRoot}tools/projects/index.html#LibraryProjects">library project</a>. A library
 project holds shared code and resources, which you can include in your actual application
 projects.</p>
 
@@ -523,7 +523,7 @@
 be done.</p>  </li>
   <li><strong>You need to manage only a single code base.</strong>
     <p>Although you can use a <a
-href="{@docRoot}guide/developing/projects/index.html#LibraryProjects">library project</a>
+href="{@docRoot}tools/projects/index.html#LibraryProjects">library project</a>
 to share code between multiple Android projects, it's still likely that you'll reproduce some code
 across each project and this could become difficult to manage, especially when resolving
 bugs.</p></li>
@@ -600,8 +600,8 @@
 href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>.</p>
 
 <p>Additionally, you should consider using a support library from the <a
-href="{@docRoot}sdk/compatibility-library.html">Compatibility Package</a> so that you can add <a
-href="{@docRoot}guide/topics/fundamentals/fragments.html">Fragments</a> to your activity designs
+href="{@docRoot}tools/extras/support-library.html">Compatibility Package</a> so that you can add <a
+href="{@docRoot}guide/components/fragments.html">Fragments</a> to your activity designs
 when running on larger screens such as tablets.</p>
 
 
@@ -612,14 +612,14 @@
 only APIs available in the lowest reasonable version. For example, your application may not require
 APIs newer than Android 2.1 (API Level 7), which makes an application available to
 over 95% of Android-powered devices (as indicated by the <a
-href="{@docRoot}resources/dashboard/platform-versions.html">Platform Versions</a> dashboard).</p>
+href="{@docRoot}about/dashboards/index.html">Platform Versions</a> dashboard).</p>
 
 <p>By using a support library from the <a
-href="{@docRoot}sdk/compatibility-library.html">Compatibility Package</a>, you can also use APIs
+href="{@docRoot}tools/extras/support-library.html">Compatibility Package</a>, you can also use APIs
 from some of the latest versions (such as Android 3.0) while
 still supporting versions as low as Android 1.6. The support library includes APIs for <a
-href="{@docRoot}guide/topics/fundamentals/fragments.html">Fragments</a>, <a
-href="{@docRoot}guide/topics/fundamentals/loaders.html">Loaders</a>, and more. Using the fragment
+href="{@docRoot}guide/components/fragments.html">Fragments</a>, <a
+href="{@docRoot}guide/components/loaders.html">Loaders</a>, and more. Using the fragment
 APIs is particularly valuable so that you can optimize your user interface for large devices such as
 tablets.</p>
 
diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs
index 62d18ae..44b977e 100644
--- a/docs/html/guide/guide_toc.cs
+++ b/docs/html/guide/guide_toc.cs
@@ -5,236 +5,80 @@
        Below are template spans for adding localized doc titles. Please ensure that
        localized titles are added in the language order specified below.
 ?>
-<ul>
-
-  <li>
-    <span class="heading">
-      <span class="en">Android Basics</span>
-      <span class="de" style="display:none">Einführung in Android</span>
-      <span class="es" style="display:none">Información básica sobre Android</span>
-      <span class="fr" style="display:none">Présentation d'Android</span>
-      <span class="it" style="display:none">Nozioni di base su Android</span>
-      <span class="ja" style="display:none">Android の基本</span>
-      <span class="zh-CN" style="display:none">Android 基础知识</span>
-      <span class="zh-TW" style="display:none">Android 簡介</span>
-    </span>
+<ul id="nav">
+  <!--  Walkthrough for Developers -- quick overview of what it's like to develop on Android -->
+  <!--<li style="color:red">Overview</li> -->
+  
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/components/index.html">
+        <span class="en">App Components</span>
+      </a></div>
     <ul>
-      <li><a href="<?cs var:toroot ?>guide/basics/what-is-android.html">
-        <span class="en">What Is Android?</span>
-        <span class="de" style="display:none">Was ist Android?</span>
-        <span class="es" style="display:none">¿Qué es Android?</span>
-        <span class="fr" style="display:none">Qu'est-ce qu'Android&nbsp;?</span>
-        <span class="it" style="display:none">Che cos'è Android?</span>
-        <span class="ja" style="display:none">Android とは</span>
-        <span class="zh-CN" style="display:none">Android 是什么?</span>
-        <span class="zh-TW" style="display:none">什麼是 Android?</span>
-          </a></li>
-      <li><a href="<?cs var:toroot ?>guide/topics/fundamentals.html">
-        <span class="en">Application Fundamentals</span>
-        <span class="de" style="display:none">Anwendungsgrundlagen</span>
-        <span class="es" style="display:none">Fundamentos de las aplicaciones</span>
-        <span class="fr" style="display:none">Principes de base des applications</span>
-        <span class="it" style="display:none">Concetti fondamentali sulle applicazioni</span>
-        <span class="ja" style="display:none">開発の基礎</span>
-        <span class="zh-CN" style="display:none">应用程序基础</span>
-        <span class="zh-TW" style="display:none">應用程式基本原理</span>
-      </a></li>
-
-  <!--  <li><a style="color:gray;">The Android SDK</a></li> -->
-  <!--  <li><a style="color:gray;">Walkthrough for Developers</a></li> -->
-      <!-- quick overview of what it's like to develop on Android -->
-    </ul>
-  </li>
-
-  <li>
-    <span class="heading">
-      <span class="en">Framework Topics</span>
-      <span class="de" style="display:none">Framework-Themen</span>
-      <span class="es" style="display:none">Temas sobre el framework</span>
-      <span class="fr" style="display:none">Thèmes relatifs au framework</span>
-      <span class="it" style="display:none">Argomenti relativi al framework</span>
-      <span class="ja" style="display:none">フレームワーク トピック</span>
-      <span class="zh-CN" style="display:none">框架主题</span>
-      <span class="zh-TW" style="display:none">架構主題</span>
-    </span>
-    <ul>
-      <li class="toggle-list">
-        <div><a href="<?cs var:toroot ?>guide/topics/fundamentals/activities.html">
-          <span class="en">Activities</span>
-        </a></div>
+      <li><a href="<?cs var:toroot ?>guide/components/fundamentals.html">
+            <span class="en">App Fundamentals</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/components/activities.html">
+            <span class="en">Activities</span>
+          </a></div>
         <ul>
-          <li><a href="<?cs var:toroot ?>guide/topics/fundamentals/fragments.html">
-            <span class="en">Fragments</span>
-          </a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/fundamentals/loaders.html">
-            <span class="en">Loaders</span>
-          </a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/fundamentals/tasks-and-back-stack.html">
-            <span class="en">Tasks and Back Stack</span></a></li>
+          <li><a href="<?cs var:toroot ?>guide/components/fragments.html">
+              <span class="en">Fragments</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/components/loaders.html">
+              <span class="en">Loaders</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/components/tasks-and-back-stack.html">
+              <span class="en">Tasks and Back Stack</span>
+            </a></li>
         </ul>
       </li>
-      <li class="toggle-list">
-        <div><a href="<?cs var:toroot ?>guide/topics/fundamentals/services.html">
-          <span class="en">Services</span>
-        </a></div>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/components/services.html">
+            <span class="en">Services</span>
+          </a></div>
         <ul>
-          <li><a href="<?cs var:toroot ?>guide/topics/fundamentals/bound-services.html">
-            <span class="en">Bound Services</span>
-          </a></li>
+          <li><a href="<?cs var:toroot ?>guide/components/bound-services.html">
+              <span class="en">Bound Services</span>
+            </a></li>
         </ul>
       </li>
-      <li class="toggle-list">
-          <div><a href="<?cs var:toroot ?>guide/topics/providers/content-providers.html">
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/providers/content-providers.html">
             <span class="en">Content Providers</span>
           </a></div>
-          <ul>
-            <li>
-                <a href="<?cs var:toroot ?>guide/topics/providers/content-provider-basics.html">
-                    <span class="en">Content Provider Basics<span
-class="new">&nbsp;new!</span></span>
-                </a>
-            </li>
-            <li>
-                <a href="<?cs var:toroot ?>guide/topics/providers/content-provider-creating.html">
-                    <span class="en">Creating a Content Provider<span
-class="new">&nbsp;new!</span></span>
-                </a>
-            </li>
-            <li>
-                <a href="<?cs var:toroot ?>guide/topics/providers/calendar-provider.html">
-                    <span class="en">Calendar Provider<span class="new">&nbsp;new!</span></span>
-                </a>
-            </li>
-          </ul>
-      </li>
-      <li><a href="<?cs var:toroot ?>guide/topics/intents/intents-filters.html">
-            <span class="en">Intents and Intent Filters</span>
-          </a></li>
-      <li><a href="<?cs var:toroot ?>guide/topics/fundamentals/processes-and-threads.html">
-            <span class="en">Processes and Threads</span>
-          </a></li>
-    </ul>
-
-
-    <ul>
-      <li class="toggle-list">
-        <div><a href="<?cs var:toroot ?>guide/topics/ui/index.html">
-            <span class="en">User Interface</span>
-          </a></div>
         <ul>
-          <li><a href="<?cs var:toroot ?>guide/topics/ui/declaring-layout.html">
-               <span class="en">XML Layouts</span>
-              </a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/ui/ui-events.html">
-                <span class="en">Input Events</span>
-              </a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/ui/menus.html">
-               <span class="en">Menus<span class="new">&nbsp;new!</span></span>
-              </a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/ui/actionbar.html">
-               <span class="en">Action Bar</span>
-              </a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/ui/dialogs.html">
-                <span class="en">Dialogs</span>
-              </a></li>
-          <li class="toggle-list">
-            <div><a href="<?cs var:toroot ?>guide/topics/ui/notifiers/index.html">
-                <span class="en">Notifications</span>
-            </a></div>
-            <ul>
-              <li><a href="<?cs var:toroot ?>guide/topics/ui/notifiers/toasts.html">
-                <span class="en">Toast Notifications</span>
-              </a></li>
-              <li><a href="<?cs var:toroot ?>guide/topics/ui/notifiers/notifications.html">
-                <span class="en">Status Bar Notifications</span>
-              </a></li>
-            </ul>
-          </li>
-          <li><a href="<?cs var:toroot ?>guide/topics/ui/drag-drop.html">
-                <span class="en">Drag and Drop</span>
-              </a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/ui/themes.html">
-                <span class="en">Styles and Themes</span>
-              </a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/ui/custom-components.html">
-                <span class="en">Custom Components</span>
-              </a></li>
-          <li class="toggle-list">
-            <div><a href="<?cs var:toroot ?>guide/topics/ui/accessibility/index.html">
-                <span class="en">Accessibility<span class="new">&nbsp;new!</span></span>
-            </a></div>
-            <ul>
-              <li><a href="<?cs var:toroot ?>guide/topics/ui/accessibility/apps.html">
-                <span class="en">Making Applications Accessible</span>
-              </a></li>
-              <li><a href="<?cs var:toroot ?>guide/topics/ui/accessibility/services.html">
-                <span class="en">Building Accessibility Services</span>
-              </a></li>
-            </ul>
-          </li>
-          <li><a href="<?cs var:toroot ?>guide/topics/ui/binding.html">
-                <span class="en">Binding to Data with AdapterView</span>
-              </a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/ui/layout-objects.html">
-                <span class="en">Common Layout Objects</span>
-              </a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/ui/how-android-draws.html">
-                <span class="en">How Android Draws Views</span>
-              </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/providers/content-provider-basics.html">
+              <span class="en">Content Provider Basics</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/providers/content-provider-creating.html">
+              <span class="en">Creating a Content Provider</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/providers/calendar-provider.html">
+              <span class="en">Calendar Provider</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/providers/contacts-provider.html">
+              <span class="en">Contacts Provider</span>
+            </a></li>
         </ul>
-      </li><!-- end of User Interface -->
-
-      <li class="toggle-list">
-        <div><a href="<?cs var:toroot ?>guide/topics/resources/index.html">
-               <span class="en">Application Resources</span>
-             </a></div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>guide/topics/resources/providing-resources.html">
-                <span class="en">Providing Resources</span>
-              </a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/resources/accessing-resources.html">
-                <span class="en">Accessing Resources</span>
-              </a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/resources/runtime-changes.html">
-                <span class="en">Handling Runtime Changes</span>
-              </a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/resources/localization.html">
-                <span class="en">Localization</span>
-              </a></li>
-          <li class="toggle-list">
-            <div><a href="<?cs var:toroot ?>guide/topics/resources/available-resources.html">
-              <span class="en">Resource Types</span>
-            </a></div>
-            <ul>
-              <li><a href="<?cs var:toroot ?>guide/topics/resources/animation-resource.html">Animation</a></li>
-              <li><a href="<?cs var:toroot ?>guide/topics/resources/color-list-resource.html">Color State List</a></li>
-              <li><a href="<?cs var:toroot ?>guide/topics/resources/drawable-resource.html">Drawable</a></li>
-              <li><a href="<?cs var:toroot ?>guide/topics/resources/layout-resource.html">Layout</a></li>
-              <li><a href="<?cs var:toroot ?>guide/topics/resources/menu-resource.html">Menu</a></li>
-              <li><a href="<?cs var:toroot ?>guide/topics/resources/string-resource.html">String</a></li>
-              <li><a href="<?cs var:toroot ?>guide/topics/resources/style-resource.html">Style</a></li>
-              <li><a href="<?cs var:toroot ?>guide/topics/resources/more-resources.html">More Types</a></li>
-            </ul>
-          </li><!-- end of resource types -->
-        </ul>
-      </li><!-- end of app resources -->
-      <li class="toggle-list">
-        <div><a href="<?cs var:toroot ?>guide/topics/data/data-storage.html">
-            <span class="en">Data Storage</span>
-          </a></div>
-          <ul>
-            <li><a href="<?cs var:toroot ?>guide/topics/data/backup.html">
-                <span class="en">Data Backup</span>
-              </a>
-            </li>
-          </ul>
       </li>
-      <li><a href="<?cs var:toroot ?>guide/topics/security/security.html">
-            <span class="en">Security and Permissions</span>
+      <li><a href="<?cs var:toroot ?>guide/components/intents-filters.html">
+          <span class="en">Intents and Intent Filters</span>
+        </a></li>
+      <li><a href="<?cs var:toroot ?>guide/components/processes-and-threads.html">
+          <span class="en">Processes and Threads</span>
+        </a>
+      </li>
+      <li><a href="<?cs var:toroot ?>guide/topics/security/permissions.html">
+          <span class="en">Permissions</span>
+        </a>
+      </li>
+      <li><a href="<?cs var:toroot ?>guide/topics/appwidgets/index.html">
+            <span class="en">App Widgets</span>
           </a></li>
-      <li class="toggle-list">
-        <div><a href="<?cs var:toroot ?>guide/topics/manifest/manifest-intro.html">
-          <span class="en">The AndroidManifest.xml File</span>
+      <li class="nav-section">
+      <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/manifest/manifest-intro.html">
+          <span class="en">Android Manifest</span>
         </a></div>
         <ul>
           <li><a href="<?cs var:toroot ?>guide/topics/manifest/action-element.html">&lt;action&gt;</a></li>
@@ -264,86 +108,260 @@
           <li><a href="<?cs var:toroot ?>guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></li>
           <li><a href="<?cs var:toroot ?>guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</a></li>
         </ul>
-      </li><!-- end of the manifest file -->
-    </ul>
+   </li><!-- end of the manifest file -->
 
+    </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/ui/index.html">
+        <span class="en">User Interface</span>
+      </a></div>
     <ul>
-    <li class="toggle-list">
-        <div><a href="<?cs var:toroot ?>guide/topics/graphics/index.html">
-            <span class="en">Graphics</span>
+      <li><a href="<?cs var:toroot ?>guide/topics/ui/overview.html">
+          <span class="en">Overview</span>
+        </a></li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/ui/declaring-layout.html">
+            <span class="en">Layouts</span>
           </a></div>
         <ul>
-          <li><a href="<?cs var:toroot ?>guide/topics/graphics/2d-graphics.html">
-              <span class="en">Canvas and Drawables</span></a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/graphics/hardware-accel.html">
-              <span class="en">Hardware Acceleration</span></a>
-            </li>
-          <li><a href="<?cs var:toroot ?>guide/topics/graphics/opengl.html">
-              <span class="en">OpenGL</span>
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/layout/linear.html">
+              <span class="en">Linear Layout</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/layout/relative.html">
+              <span class="en">Relative Layout</span>
+            </a></li>
+       <!--
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/layout/grid.html">
+              <span class="en">Grid Layout</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/layout/tabs.html">
+              <span class="en">Tab Layout</span>
+            </a></li>
+       -->
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/layout/listview.html">
+              <span class="en">List View</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/layout/gridview.html">
+              <span class="en">Grid View</span>
             </a></li>
         </ul>
       </li>
-      <li class="toggle-list">
-        <div><a href="<?cs var:toroot ?>guide/topics/graphics/animation.html">
-            <span class="en">Animation</span>
+
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/ui/controls.html">
+            <span class="en">Input Controls</span>
           </a></div>
         <ul>
-          <li><a href="<?cs var:toroot ?>guide/topics/graphics/prop-animation.html">
-              <span class="en">Property Animation</span></a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/graphics/view-animation.html">
-              <span class="en">View Animation</span></a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/graphics/drawable-animation.html">
-              <span class="en">Drawable Animation</span></a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/controls/button.html">
+              <span class="en">Buttons</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/controls/text.html">
+              <span class="en">Text Fields</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/controls/checkbox.html">
+              <span class="en">Checkboxes</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/controls/radiobutton.html">
+              <span class="en">Radio Buttons</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/controls/togglebutton.html">
+              <span class="en">Toggle Buttons</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/controls/spinner.html">
+              <span class="en">Spinners</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/controls/pickers.html">
+              <span class="en">Pickers</span>
+            </a></li>
+<!--
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/controls/progress.html">
+              <span class="en">Seek and Progress Bars</span>
+            </a></li>
+-->
         </ul>
       </li>
-      <li class="toggle-list">
-        <div><a href="<?cs var:toroot ?>guide/topics/renderscript/index.html">
-          <span class="en">Renderscript</span></a>
-        </div>
+      <li><a href="<?cs var:toroot ?>guide/topics/ui/ui-events.html">
+          <span class="en">Input Events</span>
+        </a></li>
+      <li><a href="<?cs var:toroot ?>guide/topics/ui/menus.html">
+          <span class="en">Menus</span></span>
+          </a></li>
+      <li><a href="<?cs var:toroot ?>guide/topics/ui/dialogs.html">
+           <span class="en">Dialogs</span>
+          </a></li>
+      <li><a href="<?cs var:toroot ?>guide/topics/ui/actionbar.html">
+           <span class="en">Action Bar</span>
+          </a></li>
+      <li class="nav-section">
+          <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/ui/notifiers/index.html">
+              <span class="en">Notifications</span>
+            </a></div>
+          <ul>
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/notifiers/toasts.html">
+              <span class="en">Toast Notifications</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/notifiers/notifications.html">
+              <span class="en">Status Notifications</span>
+            </a></li>
+          </ul>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/search/index.html">
+            <span class="en">Search</span>
+          </a></div>
+          <ul>
+            <li><a href="<?cs var:toroot ?>guide/topics/search/search-dialog.html">Creating a Search Interface</a></li>
+            <li><a href="<?cs var:toroot ?>guide/topics/search/adding-recent-query-suggestions.html">Adding Recent Query Suggestions</a></li>
+            <li><a href="<?cs var:toroot ?>guide/topics/search/adding-custom-suggestions.html">Adding Custom Suggestions</a></li>
+            <li><a href="<?cs var:toroot ?>guide/topics/search/searchable-config.html">Searchable Configuration</a></li>
+          </ul>
+      </li>  
+      <li><a href="<?cs var:toroot ?>guide/topics/ui/drag-drop.html">
+          <span class="en">Drag and Drop</span>
+        </a></li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/ui/accessibility/index.html">
+            <span class="en">Accessibility</span>
+          </a></div>
         <ul>
-          <li><a href="<?cs var:toroot ?>guide/topics/renderscript/graphics.html">
-                <span class="en">Graphics</span>
-              </a>
-          </li>
-          <li><a href="<?cs var:toroot ?>guide/topics/renderscript/compute.html">
-                <span class="en">Compute</span>
-              </a>
-          </li>
-          <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference.html">
-                <span class="en">Runtime API Reference</span>
-              </a>
-          </li>
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/accessibility/apps.html">
+              <span class="en">Making Applications Accessible</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/ui/accessibility/services.html">
+              <span class="en">Building Accessibility Services</span>
+            </a></li>
         </ul>
       </li>
+      <li><a href="<?cs var:toroot ?>guide/topics/ui/themes.html">
+          <span class="en">Styles and Themes</span>
+        </a></li>
+      <li><a href="<?cs var:toroot ?>guide/topics/ui/custom-components.html">
+          <span class="en">Custom Components</span>
+        </a></li>
+    </ul>
+  </li><!-- end of User Interface -->
 
-      <li class="toggle-list">
-          <div><a href="<?cs var:toroot ?>guide/topics/media/index.html">
-            <span class="en">Multimedia and Camera</span>
+    <li class="nav-section">
+      <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/resources/index.html">
+           <span class="en">App Resources</span>
+         </a></div>
+      <ul>
+        <li><a href="<?cs var:toroot ?>guide/topics/resources/overview.html">
+            <span class="en">Overview</span>
+          </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/resources/providing-resources.html">
+            <span class="en">Providing Resources</span>
+          </a></li>
+        <li><a href="<?cs var:toroot ?>guide/topics/resources/accessing-resources.html">
+            <span class="en">Accessing Resources</span>
+          </a></li>
+        <li><a href="<?cs var:toroot ?>guide/topics/resources/runtime-changes.html">
+              <span class="en">Handling Runtime Changes</span>
+            </a></li>
+        <li><a href="<?cs var:toroot ?>guide/topics/resources/localization.html">
+            <span class="en">Localization</span>
+          </a></li>
+        <li class="nav-section">
+          <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/resources/available-resources.html">
+              <span class="en">Resource Types</span>
+            </a></div>
+          <ul>
+            <li><a href="<?cs var:toroot ?>guide/topics/resources/animation-resource.html">Animation</a></li>
+            <li><a href="<?cs var:toroot ?>guide/topics/resources/color-list-resource.html">Color State List</a></li>
+            <li><a href="<?cs var:toroot ?>guide/topics/resources/drawable-resource.html">Drawable</a></li>
+            <li><a href="<?cs var:toroot ?>guide/topics/resources/layout-resource.html">Layout</a></li>
+            <li><a href="<?cs var:toroot ?>guide/topics/resources/menu-resource.html">Menu</a></li>
+            <li><a href="<?cs var:toroot ?>guide/topics/resources/string-resource.html">String</a></li>
+            <li><a href="<?cs var:toroot ?>guide/topics/resources/style-resource.html">Style</a></li>
+            <li><a href="<?cs var:toroot ?>guide/topics/resources/more-resources.html">More Types</a></li>
+          </ul>
+        </li><!-- end of resource types -->
+      </ul>
+    </li><!-- end of app resources -->
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/graphics/index.html">
+          <span class="en">Animation and Graphics</span>
+        </a></div>
+      <ul>
+      <li class="nav-section">
+        <li><a href="<?cs var:toroot ?>guide/topics/graphics/overview.html">
+            <span class="en">Overview</span>
+          </a></li>
+        <li><a href="<?cs var:toroot ?>guide/topics/graphics/prop-animation.html">
+            <span class="en">Property Animation</span>
+          </a></li>
+        <li><a href="<?cs var:toroot ?>guide/topics/graphics/view-animation.html">
+            <span class="en">View Animation</span>
+          </a></li>
+        <li><a href="<?cs var:toroot ?>guide/topics/graphics/drawable-animation.html">
+            <span class="en">Drawable Animation</span>
+          </a></li>
+        <li><a href="<?cs var:toroot ?>guide/topics/graphics/2d-graphics.html">
+            <span class="en">Canvas and Drawables</span>
+          </a></li>
+        <li><a href="<?cs var:toroot ?>guide/topics/graphics/opengl.html">
+            <span class="en">OpenGL</span>
+          </a></li>
+        <li><a href="<?cs var:toroot ?>guide/topics/graphics/hardware-accel.html">
+            <span class="en">Hardware Acceleration</span>
+          </a></li>
+        <li class="nav-section">
+            <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/graphics/renderscript/index.html">
+              <span class="en">Renderscript</span>
+            </a></div>
+            <ul>
+              <li><a href="<?cs var:toroot ?>guide/topics/graphics/renderscript/graphics.html">
+                    <span class="en">Graphics</span></a>
+                  </li>
+              <li><a href="<?cs var:toroot ?>guide/topics/graphics/renderscript/compute.html">
+                    <span class="en">Compute</span></a>
+                  </li>
+              <li><a href="<?cs var:toroot ?>guide/topics/graphics/renderscript/reference.html">
+                    <span class="en">Runtime API Reference</span></a>
+                  </li>
+             </ul>
+          </li>
+       </ul>
+    </li><!-- end of graphics and animation-->
+
+            
+      <li class="nav-section">
+          <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/media/index.html">
+            <span class="en">Media and Camera</span>
           </a></div>
           <ul>
             <li><a href="<?cs var:toroot ?>guide/topics/media/mediaplayer.html">
                   <span class="en">Media Playback</span></a>
                 </li>
+            <li><a href="<?cs var:toroot ?>guide/appendix/media-formats.html">
+                   <span class="en">Supported Media Formats</span></a>
+                </li>
+            <li><a href="<?cs var:toroot ?>guide/topics/media/audio-capture.html">
+                  <span class="en">Audio Capture</span></a>
+                </li>
             <li><a href="<?cs var:toroot ?>guide/topics/media/jetplayer.html">
                   <span class="en">JetPlayer</span></a>
                 </li>
             <li><a href="<?cs var:toroot ?>guide/topics/media/camera.html">
                   <span class="en">Camera</span></a>
                 </li>
-            <li><a href="<?cs var:toroot ?>guide/topics/media/audio-capture.html">
-                  <span class="en">Audio Capture</span></a>
-                </li>
           </ul>
-      </li>
-      <li>
-        <a href="<?cs var:toroot ?>guide/topics/clipboard/copy-paste.html">
-            <span class="en">Copy and Paste</span>
-        </a></li>
-      <li class="toggle-list">
-        <div><a href="<?cs var:toroot ?>guide/topics/sensors/index.html">
-              <span class="en">Sensors</span>
+      </li><!-- end of media and camera -->
+
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/sensors/index.html">
+              <span class="en">Location and Sensors</span>
               </a></div>
         <ul>
+          <li><a href="<?cs var:toroot ?>guide/topics/location/index.html">
+               <span class="en">Location and Maps</span>
+             </a>
+          <li><a href="<?cs var:toroot ?>guide/topics/location/strategies.html">
+               <span class="en">Location Strategies</span>
+             </a></li>
           <li><a href="<?cs var:toroot ?>guide/topics/sensors/sensors_overview.html">
               <span class="en">Sensors Overview</span>
             </a></li>
@@ -357,415 +375,127 @@
               <span class="en">Environment Sensors</span>
             </a></li>
         </ul>
-      </li>
-      <li class="toggle-list">
-        <div><a href="<?cs var:toroot ?>guide/topics/location/index.html">
-               <span class="en">Location and Maps</span>
+      </li><!-- end of location and sensors -->
+      
+
+      
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/connectivity/index.html">
+               <span class="en">Connectivity</span>
              </a></div>
         <ul>
-          <li><a href="<?cs var:toroot ?>guide/topics/location/obtaining-user-location.html">
-                <span class="en">Obtaining User Location</span>
-              </a></li>
-        </ul>
-      </li>
-  <!--<li class="toggle-list">
-        <div><a style="color:gray;">Wireless Controls</a></div>
-          <ul>
-            <li><a style="color:gray;">Wi-Fi</a></li>
-          </ul>
-      </li> -->
-  <!--<li><a style="color:gray;">Localization</a></li>  -->
-      <li><a href="<?cs var:toroot ?>guide/topics/appwidgets/index.html">
-            <span class="en">App Widgets</span></a>
+          <li><a href="<?cs var:toroot?>guide/topics/connectivity/bluetooth.html">
+              <span class="en">Bluetooth</span>
+            </a>
           </li>
-      <li><a href="<?cs var:toroot?>guide/topics/wireless/bluetooth.html">
-            <span class="en">Bluetooth</span></a>
-          </li>
-      <li class="toggle-list">
-        <div><a href="<?cs var:toroot?>guide/topics/nfc/index.html">
-          <span class="en">Near Field Communication</span></a>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot?>guide/topics/connectivity/nfc/index.html">
+          <span class="en">NFC</span></a>
         </div>
         <ul>
-          <li><a href="<?cs var:toroot ?>guide/topics/nfc/nfc.html">NFC Basics</a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/nfc/advanced-nfc.html">Advanced NFC</a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/connectivity/nfc/nfc.html">NFC Basics</a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/connectivity/nfc/advanced-nfc.html">Advanced NFC</a></li>
         </ul>
       </li>
-      <li><a href="<?cs var:toroot?>guide/topics/wireless/wifip2p.html">
+      <li><a href="<?cs var:toroot?>guide/topics/connectivity/wifip2p.html">
             <span class="en">Wi-Fi Direct</span></a>
           </li>
-      <li class="toggle-list">
-          <div><a href="<?cs var:toroot?>guide/topics/usb/index.html">
+      <li class="nav-section">
+          <div class="nav-section-header"><a href="<?cs var:toroot?>guide/topics/connectivity/usb/index.html">
             <span class="en">USB</span></a>
           </div>
             <ul>
-              <li><a href="<?cs var:toroot ?>guide/topics/usb/accessory.html">Accessory</a></li>
-              <li><a href="<?cs var:toroot ?>guide/topics/usb/host.html">Host</a></li>
-              <li><a href="<?cs var:toroot ?>guide/topics/usb/adk.html">Open Accessory Dev Kit</a></li>
+              <li><a href="<?cs var:toroot ?>guide/topics/connectivity/usb/accessory.html">Accessory</a></li>
+              <li><a href="<?cs var:toroot ?>guide/topics/connectivity/usb/host.html">Host</a></li>
+              <li><a href="<?cs var:toroot ?>guide/topics/connectivity/usb/adk.html">Open Accessory Dev Kit</a></li>
             </ul>
-          </li>
-
-       <li><a href="<?cs var:toroot?>guide/topics/network/sip.html">
-            <span class="en">Session Initiation Protocol</span>
+     </li>
+     <li><a href="<?cs var:toroot?>guide/topics/connectivity/sip.html">
+            <span class="en">SIP</span>
+          </a>
+     </li>
+     
+    </ul>
+  </li><!-- end of connectivity -->
+  
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/text/index.html">
+            <span class="en">Text and Input</span>
+        </a></div>
+        <ul>
+          <li><a href="<?cs var:toroot ?>guide/topics/text/copy-paste.html">
+              <span class="en">Copy and Paste</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/text/creating-input-method.html">
+              <span class="en">Creating an IME</span>
+            </a></li>
+          <li><a href="<?cs var:toroot ?>guide/topics/text/spell-checker-framework.html">
+              <span class="en">Spelling Checker</span>
+            </a></li>
+        </ul>
+      </li><!-- end of text and input -->
+      
+     <li class="nav-section">
+      <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/data/index.html">
+          <span class="en">Data Storage</span>
+        </a></div>
+      <ul>
+         <li><a href="<?cs var:toroot ?>guide/topics/data/data-storage.html">
+            <span class="en">Storage Options</span>
+           </a></li>
+        <li><a href="<?cs var:toroot ?>guide/topics/data/backup.html">
+            <span class="en">Data Backup</span>
           </a></li>
-      <li class="toggle-list">
-        <div><a href="<?cs var:toroot?>guide/topics/search/index.html">
-            <span class="en">Search</span>
-          </a></div>
-          <ul>
-            <li><a href="<?cs var:toroot?>guide/topics/search/search-dialog.html">Creating a Search Interface</a></li>
-            <li><a href="<?cs var:toroot?>guide/topics/search/adding-recent-query-suggestions.html">Adding Recent Query Suggestions</a></li>
-            <li><a href="<?cs var:toroot?>guide/topics/search/adding-custom-suggestions.html">Adding Custom Suggestions</a></li>
-            <li><a href="<?cs var:toroot?>guide/topics/search/searchable-config.html">Searchable Configuration</a></li>
-          </ul>
-      </li>
-      <li><a href="<?cs var:toroot?>guide/topics/admin/device-admin.html">
-            <span class="en">Device Administration</span></a>
-      </li>
-      <li class="toggle-list">
-           <div>
-                <a href="<?cs var:toroot?>guide/topics/testing/index.html">
-                   <span class="en">Testing</span>
-               </a>
-           </div>
+        <li><a href="<?cs var:toroot ?>guide/topics/data/install-location.html">
+            <span class="en">App Install Location</span>
+          </a></li>
+      </ul>
+    </li><!-- end of data storage -->
+
+  
+  <li class="nav-section">
+           <div class="nav-section-header"><a href="<?cs var:toroot?>guide/topics/admin/index.html">
+               <span class="en">Administration</span>
+             </a></div>
            <ul>
               <li>
-                <a href="<?cs var:toroot?>guide/topics/testing/testing_android.html">
-                <span class="en">Testing Fundamentals</span></a>
+                <a href="<?cs var:toroot?>guide/topics/admin/device-admin.html">
+                <span class="en">Device Policies</span></a>
               </li>
+            <!--
               <li>
-                <a href="<?cs var:toroot?>guide/topics/testing/activity_testing.html">
-                <span class="en">Activity Testing</span></a>
+                <a href="<?cs var:toroot?>guide/topics/admin/keychain.html">
+                <span class="en">Certificate Store</span></a>
               </li>
-              <li>
-                <a href="<?cs var:toroot?>guide/topics/testing/contentprovider_testing.html">
-                <span class="en">Content Provider Testing</span></a>
-              </li>
-              <li>
-                <a href="<?cs var:toroot?>guide/topics/testing/service_testing.html">
-                <span class="en">Service Testing</span></a>
-              </li>
-              <li>
-                <a href="<?cs var:toroot ?>guide/topics/testing/what_to_test.html">
-                <span class="en">What To Test</span></a>
-              </li>
+            -->
            </ul>
-      </li>
-    </ul>
-  </li>
-
-  <li>
-    <h2>
-      <span class="en">Google Play Topics</span>
-    </h2>
+  </li><!-- end of administration -->
+  
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/webapps/index.html">
+    <span class="en">Web Apps</span>
+    </a></div>
     <ul>
-      <li><a href="<?cs var:toroot ?>guide/publishing/publishing.html">
-          <span class="en">Publishing on Google Play</span>
+      <li><a href="<?cs var:toroot ?>guide/webapps/overview.html">
+            <span class="en">Overview</span>
           </a></li>
-      <li class="toggle-list">
-        <div><a href="<?cs var:toroot ?>guide/market/licensing/index.html">
-          <span class="en">Application Licensing</span></a>
-        </div>
-        <ul>
-          <li><a href="<?cs var:toroot?>guide/market/licensing/overview.html">
-              <span class="en">Licensing Overview</span></a>
-          </li>
-          <li><a href="<?cs var:toroot?>guide/market/licensing/setting-up.html">
-              <span class="en">Setting Up for Licensing</span></a>
-          </li>
-          <li><a href="<?cs var:toroot?>guide/market/licensing/adding-licensing.html">
-              <span class="en">Adding Licensing to Your App</span></a>
-          </li>
-          <li><a href="<?cs var:toroot?>guide/market/licensing/licensing-reference.html">
-              <span class="en">Licensing Reference</span></a>
-          </li>
-        </ul>
-      </li>
-      <li class="toggle-list">
-        <div><a href="<?cs var:toroot?>guide/market/billing/index.html">
-            <span class="en">In-app Billing</span></a>
-        </div>
-        <ul>
-          <li><a href="<?cs var:toroot?>guide/market/billing/billing_overview.html">
-              <span class="en">In-app Billing Overview</span></a>
-          </li>
-          <li><a href="<?cs var:toroot?>guide/market/billing/billing_integrate.html">
-              <span class="en">Implementing In-app Billing</span></a>
-          </li>
-          <li><a href="<?cs var:toroot?>guide/market/billing/billing_best_practices.html">
-              <span class="en">Security and Design</span></a>
-          </li>
-          <li><a href="<?cs var:toroot?>guide/market/billing/billing_testing.html">
-              <span class="en">Testing In-app Billing</span></a>
-          </li>
-          <li><a href="<?cs var:toroot?>guide/market/billing/billing_admin.html">
-              <span class="en">Administering In-app Billing</span></a>
-          </li>
-          <li><a href="<?cs var:toroot?>guide/market/billing/billing_reference.html">
-              <span class="en">In-app Billing Reference</span></a>
-          </li>
-        </ul>
-      </li>
-      <li><a href="<?cs var:toroot ?>guide/appendix/market-filters.html">
-          <span class="en">Filters on Google Play</span></a>
-      </li>
-      <li><a href="<?cs var:toroot ?>guide/market/publishing/multiple-apks.html">
-          <span class="en">Multiple APK Support</span></a>
-      </li>
-      <li><a href="<?cs var:toroot ?>guide/market/expansion-files.html">
-          <span class="en">APK Expansion Files<span class="new">&nbsp;new!</span></span></a>
-      </li>
-    </ul>
-  </li>
-
-
-  <li>
-    <span class="heading">
-      <span class="en">Developing</span>
-      <span class="de" style="display:none">Entwicklung</span>
-      <span class="es" style="display:none">Desarrollo</span>
-      <span class="fr" style="display:none">Développement</span>
-      <span class="it" style="display:none">Sviluppo</span>
-      <span class="ja" style="display:none">開発</span>
-      <span class="zh-CN" style="display:none">开发</span>
-      <span class="zh-TW" style="display:none">開發</span>
-    </span>
-    <ul>
-  <!--<li><a href="">Developing for Android</a></li>
-      signing, upgrading, selecting a package name, select device profile, touch, trackball, dpad available, etc. -->
-      <li>
-        <a href="<?cs var:toroot ?>guide/developing/index.html">
-        <span class="en">Introduction</span></a>
-      </li>
-
-      <li class="toggle-list">
-        <div>
-           <a href="<?cs var:toroot ?>guide/developing/devices/index.html">
-                <span class="en">Managing Virtual Devices</span>
-            </a>
-        </div>
-        <ul>
-          <li>
-            <a href="<?cs var:toroot ?>guide/developing/devices/managing-avds.html">
-              <span class="en">With AVD Manager</span>
-            </a>
-          </li>
-          <li>
-            <a href="<?cs var:toroot ?>guide/developing/devices/managing-avds-cmdline.html">
-              <span class="en">From the Command Line</span>
-            </a>
-          </li>
-          <li>
-           <a href="<?cs var:toroot ?>guide/developing/devices/emulator.html">
-                <span class="en">Using the Android Emulator</span>
-            </a>
-          </li>
-        </ul>
-      </li>
-      <li>
-        <a href="<?cs var:toroot ?>guide/developing/device.html">
-          <span class="en">Using Hardware Devices</span>
-        </a>
-      </li>
-
-      <li class="toggle-list">
-        <div>
-          <a href="<?cs var:toroot ?>guide/developing/projects/index.html">
-            <span class="en">Managing Projects</span>
-          </a>
-        </div>
-        <ul>
-          <li>
-            <a href="<?cs var:toroot ?>guide/developing/projects/projects-eclipse.html">
-              <span class="en">From Eclipse with ADT</span>
-            </a>
-          </li>
-          <li>
-            <a href="<?cs var:toroot ?>guide/developing/projects/projects-cmdline.html">
-                <span class="en">From the Command Line</span>
-            </a>
-          </li>
-        </ul>
-      </li>
-
-      <li class="toggle-list">
-        <div>
-          <a href="<?cs var:toroot ?>guide/developing/building/index.html">
-            <span class="en">Building and Running</span>
-          </a>
-        </div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>guide/developing/building/building-eclipse.html">
-            <span class="en">From Eclipse with ADT</span>
+      <li><a href="<?cs var:toroot ?>guide/webapps/targeting.html">
+            <span class="en">Targeting Screens from Web Apps</span>
           </a></li>
-          <li><a href="<?cs var:toroot ?>guide/developing/building/building-cmdline.html">
-            <span class="en">From the Command Line</span></a></li>
-        </ul>
-      </li>
-
-      <li class="toggle-list">
-        <div>
-          <a href="<?cs var:toroot ?>guide/developing/debugging/index.html">
-            <span class="en">Debugging</span>
-          </a>
-        </div>
-        <ul>
-          <li>
-            <a href="<?cs var:toroot ?>guide/developing/debugging/debugging-projects.html">
-                <span class="en">From Eclipse with ADT</span>
-            </a>
-          </li>
-          <li>
-            <a href="<?cs var:toroot ?>guide/developing/debugging/debugging-projects-cmdline.html">
-                <span class="en">From Other IDEs</span>
-            </a>
-          </li>
-          <li>
-            <a href="<?cs var:toroot ?>guide/developing/debugging/ddms.html">
-              <span class="en">Using DDMS</span>
-            </a>
-          </li>
-          <li>
-            <a href="<?cs var:toroot ?>guide/developing/debugging/debugging-log.html">
-                <span class="en">Reading and Writing Logs</span>
-            </a>
-          </li>
-          <li>
-            <a href="<?cs var:toroot ?>guide/developing/debugging/debugging-ui.html">
-                <span class="en">Debugging and Profiling UIs</span>
-            </a>
-          </li>
-          <li>
-            <a href="<?cs var:toroot ?>guide/developing/debugging/debugging-tracing.html">
-                <span class="en">Profiling with Traceview and dmtracedump</span>
-            </a>
-          </li>
-          <li>
-            <a href="<?cs var:toroot ?>guide/developing/debugging/debugging-devtools.html">
-                <span class="en">Using the Dev Tools App</span>
-            </a>
-          </li>
-        </ul>
-      </li>
-
-      <li class="toggle-list">
-           <div>
-                <a href="<?cs var:toroot ?>guide/developing/testing/index.html">
-                   <span class="en">Testing</span>
-               </a>
-           </div>
-           <ul>
-              <li>
-                <a href="<?cs var:toroot ?>guide/developing/testing/testing_eclipse.html">
-                  <span class="en">From Eclipse with ADT</span>
-                </a>
-              </li>
-
-              <li>
-                <a href="<?cs var:toroot ?>guide/developing/testing/testing_otheride.html">
-                  <span class="en">From Other IDEs</span>
-                </a>
-              </li>
-           </ul>
-         </li>
-
-         <li class="toggle-list">
-        <div><a href="<?cs var:toroot ?>guide/developing/tools/index.html">
-            <span class="en">Tools</span>
-          </a></div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>guide/developing/tools/adb.html">adb</a></li>
-          <li><a href="<?cs var:toroot ?>guide/developing/tools/adt.html">ADT</a></li>
-          <li><a href="<?cs var:toroot ?>guide/developing/tools/android.html">android</a></li>
-          <li><a href="<?cs var:toroot ?>guide/developing/tools/bmgr.html">bmgr</a>
-          <li><a href="<?cs var:toroot ?>guide/developing/tools/dmtracedump.html">dmtracedump</a></li>
-          <li><a href="<?cs var:toroot?>guide/developing/tools/draw9patch.html">Draw
-          9-Patch</a></li>
-          <li><a href="<?cs var:toroot ?>guide/developing/tools/emulator.html">Emulator</a></li>
-          <li><a href="<?cs var:toroot ?>guide/developing/tools/etc1tool.html">etc1tool</a></li>
-          <li><a href="<?cs var:toroot ?>guide/developing/tools/hierarchy-viewer.html">Hierarchy Viewer</a></li>
-          <li><a href="<?cs var:toroot ?>guide/developing/tools/hprof-conv.html">hprof-conv</a></li>
-          <li><a href="<?cs var:toroot ?>guide/developing/tools/layoutopt.html">layoutopt</a></li>
-          <li><a href="<?cs var:toroot ?>guide/developing/tools/logcat.html">logcat</a></li>
-          <li><a href="<?cs var:toroot ?>guide/developing/tools/mksdcard.html">mksdcard</a></li>
-          <li><a href="<?cs var:toroot ?>guide/developing/tools/monkey.html">Monkey</a></li>
-          <li class="toggle-list">
-            <div><a href="<?cs var:toroot ?>guide/developing/tools/monkeyrunner_concepts.html">
-              <span class="en">monkeyrunner</span>
-            </a></div>
-            <ul>
-              <li><a href="<?cs var:toroot ?>guide/developing/tools/MonkeyDevice.html">
-                <span class="en">MonkeyDevice</span>
-                </a></li>
-              <li><a href="<?cs var:toroot ?>guide/developing/tools/MonkeyImage.html">
-                <span class="en">MonkeyImage</span>
-                </a></li>
-              <li><a href="<?cs var:toroot ?>guide/developing/tools/MonkeyRunner.html">
-                <span class="en">MonkeyRunner</span>
-                </a></li>
-            </ul>
-          </li>
-          <li><a href="<?cs var:toroot ?>guide/developing/tools/proguard.html">ProGuard</a></li>
-          <li><a href="<?cs var:toroot ?>guide/developing/tools/adb.html#sqlite">sqlite3</a></li>
-          <li><a href="<?cs var:toroot ?>guide/developing/tools/traceview.html">Traceview</a></li>
-          <li><a href="<?cs var:toroot ?>guide/developing/tools/zipalign.html">zipalign</a></li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-
-  <li>
-    <span class="heading">
-      <span class="en">Publishing</span>
-      <span class="de" style="display:none">Veröffentlichung</span>
-      <span class="es" style="display:none">Publicación</span>
-      <span class="fr" style="display:none">Publication</span>
-      <span class="it" style="display:none">Pubblicazione</span>
-      <span class="ja" style="display:none">公開</span>
-      <span class="zh-CN" style="display:none">发布</span>
-      <span class="zh-TW" style="display:none">發佈</span>
-    </span>
-    <ul>
-      <li><a href="<?cs var:toroot ?>guide/publishing/publishing_overview.html">
-            <span class="en">Publishing Overview</span>
+      <li><a href="<?cs var:toroot ?>guide/webapps/webview.html">
+            <span class="en">Building Web Apps in WebView</span>
           </a></li>
-      <li><a href="<?cs var:toroot ?>guide/publishing/preparing.html">
-            <span class="en">Preparing for Release</span>
-            <span class="de" style="display:none">Vorbereitung auf die Veröffentlichung</span>
-            <span class="es" style="display:none">Publicación de aplicaciones</span>
-            <span class="fr" style="display:none">Préparation à la publication</span>
-            <span class="it" style="display:none">Preparativi per la pubblicazione</span>
-            <span class="ja" style="display:none">公開の準備</span>
-            <span class="zh-CN" style="display:none">准备发布</span>
-            <span class="zh-TW" style="display:none">準備發佈</span>
+      <li><a href="<?cs var:toroot ?>guide/webapps/debugging.html">
+            <span class="en">Debugging Web Apps</span>
           </a></li>
-      <li><a href="<?cs var:toroot ?>guide/publishing/app-signing.html">
-            <span class="en">Signing Your Applications</span>
-            <span class="de" style="display:none">Signieren Ihrer Anwendungen</span>
-            <span class="es" style="display:none">Firma de aplicaciones</span>
-            <span class="fr" style="display:none">Attribution de votre signature <br />à vos
-applications</span>
-            <span class="it" style="display:none">Firma delle applicazioni</span>
-            <span class="ja" style="display:none">アプリケーションへの署名</span>
-            <span class="zh-CN" style="display:none">应用程序签名</span>
-            <span class="zh-TW" style="display:none">簽署應用程式</span>
-          </a></li>
-      <li><a href="<?cs var:toroot ?>guide/publishing/versioning.html">
-            <span class="en">Versioning Your Applications</span>
-            <span class="de" style="display:none">Versionsverwaltung für Ihre <br
-/>Anwendungen</span>
-            <span class="es" style="display:none">Versiones de las aplicaciones</span>
-            <span class="fr" style="display:none">Attribution d'une version à vos
-applications</span>
-            <span class="it" style="display:none">Controllo versioni delle applicazioni</span>
-            <span class="ja" style="display:none">アプリケーションのバージョニング</span>
-            <span class="zh-CN" style="display:none">应用程序版本控制</span>
-            <span class="zh-TW" style="display:none">應用程式版本設定</span>
+      <li><a href="<?cs var:toroot ?>guide/webapps/best-practices.html">
+            <span class="en">Best Practices for Web Apps</span>
           </a></li>
     </ul>
-  </li>
-
-  <li>
-    <span class="heading">
+  </li><!-- end of web apps -->
+  
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/practices/index.html">
       <span class="en">Best Practices</span>
       <span class="de" style="display:none">Bewährte Verfahren</span>
       <span class="es" style="display:none">Prácticas recomendadas</span>
@@ -774,13 +504,13 @@
       <span class="ja" style="display:none">ベスト プラクティス</span>
       <span class="zh-CN" style="display:none">最佳实践</span>
       <span class="zh-TW" style="display:none">最佳實務</span>
-    </span>
+    </div></a>
     <ul>
       <li><a href="<?cs var:toroot ?>guide/practices/compatibility.html">
             <span class="en">Compatibility</span>
           </a></li>
-      <li class="toggle-list">
-        <div><a href="<?cs var:toroot ?>guide/practices/screens_support.html">
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/practices/screens_support.html">
           <span class="en">Supporting Multiple Screens</span>
         </a></div>
         <ul>
@@ -790,21 +520,114 @@
           <li><a href="<?cs var:toroot ?>guide/practices/screen-compat-mode.html">
             <span class="en">Screen Compatibility Mode</span>
           </a></li>
-          <li><a href="<?cs var:toroot ?>guide/practices/screens-support-1.5.html">
+          <!--<li><a href="<?cs var:toroot ?>guide/practices/screens-support-1.5.html">
             <span class="en">Strategies for Android 1.5</span>
-          </a></li>
+          </a></li> -->
         </ul>
       </li>
       <li><a href="<?cs var:toroot ?>guide/practices/tablets-and-handsets.html">
             <span class="en">Supporting Tablets and Handsets</span>
           </a></li>
-      <li class="toggle-list">
-        <div><a href="<?cs var:toroot ?>guide/practices/ui_guidelines/index.html">
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/practices/performance.html">
+            <span class="en">Designing for Performance</span>
+          </a></div>
+        <ul>
+          <li><a href="<?cs var:toroot ?>guide/practices/jni.html">
+                <span class="en">JNI Tips</span>
+              </a></li>
+        </ul>
+      </li>
+      <li><a href="<?cs var:toroot ?>guide/practices/responsiveness.html">
+            <span class="en">Designing for Responsiveness</span>
+          </a></li>
+      <li><a href="<?cs var:toroot ?>guide/practices/seamlessness.html">
+            <span class="en">Designing for Seamlessness</span>
+          </a></li>
+        <li><a href="<?cs var:toroot ?>guide/practices/security.html">
+            <span class="en">Designing for Security</span>
+          </a></li>
+
+    </ul>
+  </li>
+  
+  
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/google/index.html">
+        <span class="en">Google Services</span>
+      </a></div>
+    <ul>      
+
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot?>guide/google/play/billing/index.html">
+            <span class="en">In-app Billing</span></a>
+        </div>
+        <ul>
+          <li><a href="<?cs var:toroot?>guide/google/play/billing/billing_overview.html">
+              <span class="en">In-app Billing Overview</span></a>
+          </li>
+          <li><a href="<?cs var:toroot?>guide/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing In-app Billing</span></a>
+          </li>
+          <li><a href="<?cs var:toroot?>guide/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+          </li>
+          <li><a href="<?cs var:toroot?>guide/google/play/billing/billing_best_practices.html">
+              <span class="en">Security and Design</span></a>
+          </li>
+          <li><a href="<?cs var:toroot?>guide/google/play/billing/billing_testing.html">
+              <span class="en">Testing In-app Billing</span></a>
+          </li>
+          <li><a href="<?cs var:toroot?>guide/google/play/billing/billing_admin.html">
+              <span class="en">Administering In-app Billing</span></a>
+          </li>
+          <li><a href="<?cs var:toroot?>guide/google/play/billing/billing_reference.html">
+              <span class="en">In-app Billing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="<?cs var:toroot?>guide/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="<?cs var:toroot?>guide/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="<?cs var:toroot?>guide/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="<?cs var:toroot?>guide/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>       
+      <li><a href="<?cs var:toroot ?>guide/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="<?cs var:toroot ?>guide/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="<?cs var:toroot ?>guide/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+
+    </ul>
+  </li><!-- end Google Play -->
+  
+  
+  
+      <!-- this needs to move
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/practices/ui_guidelines/index.html">
                <span class="en">UI Guidelines</span>
              </a></div>
         <ul>
-          <li class="toggle-list">
-            <div><a href="<?cs var:toroot ?>guide/practices/ui_guidelines/icon_design.html">
+          <li class="nav-section">
+            <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/practices/ui_guidelines/icon_design.html">
                    <span class="en">Icon Design</span>
                  </a></div>
             <ul>
@@ -831,94 +654,47 @@
                   </a></li>
             </ul>
           </li>
-          <li><a href="<?cs var:toroot ?>guide/practices/ui_guidelines/widget_design.html">
+          <li><div><a href="<?cs var:toroot ?>guide/practices/ui_guidelines/widget_design.html">
                 <span class="en">App Widget Design</span>
-              </a></li>
+              </a></div>
+          </li>
         </ul>
-      </li>
-      </ul>
-      <ul>
-      <li class="toggle-list">
-        <div><a href="<?cs var:toroot ?>guide/practices/design/performance.html">
-            <span class="en">Designing for Performance</span>
-          </a></div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>guide/practices/design/jni.html">
-                <span class="en">JNI Tips</span>
-              </a></li>
-        </ul>
-      </li>
-      <li><a href="<?cs var:toroot ?>guide/practices/design/responsiveness.html">
-            <span class="en">Designing for Responsiveness</span>
-          </a></li>
-      <li><a href="<?cs var:toroot ?>guide/practices/design/seamlessness.html">
-            <span class="en">Designing for Seamlessness</span>
-          </a></li>
-      <li><a href="<?cs var:toroot ?>guide/practices/security.html">
-            <span class="en">Designing for Security</span></a>
-            </li>
-    </ul>
-  </li>
-
-  <li>
-    <span class="heading">
-      <span class="en">Web Applications</span>
-    </span>
+      </li> 
+        </ul> -->
+        
+<!-- Remove
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/appendix/index.html">
+        <span class="en">Appendix</span>
+        <span class="de" style="display:none">Anhang</span>
+        <span class="es" style="display:none">Apéndice</span>
+        <span class="fr" style="display:none">Annexes</span>
+        <span class="it" style="display:none">Appendice</span>
+        <span class="ja" style="display:none">付録</span>
+        <span class="zh-CN" style="display:none">附录</span>
+        <span class="zh-TW" style="display:none">附錄</span>
+      </a></div>
     <ul>
-      <li><a href="<?cs var:toroot ?>guide/webapps/index.html">
-            <span class="en">Web Apps Overview</span>
-          </a></li>
-      <li><a href="<?cs var:toroot ?>guide/webapps/targeting.html">
-            <span class="en">Targeting Screens from Web Apps</span>
-          </a></li>
-      <li><a href="<?cs var:toroot ?>guide/webapps/webview.html">
-            <span class="en">Building Web Apps in WebView</span>
-          </a></li>
-      <li><a href="<?cs var:toroot ?>guide/webapps/debugging.html">
-            <span class="en">Debugging Web Apps</span>
-          </a></li>
-      <li><a href="<?cs var:toroot ?>guide/webapps/best-practices.html">
-            <span class="en">Best Practices for Web Apps</span>
-          </a></li>
-    </ul>
-  </li>
-
-  <li>
-    <span class="heading">
-      <span class="en">Appendix</span>
-      <span class="de" style="display:none">Anhang</span>
-      <span class="es" style="display:none">Apéndice</span>
-      <span class="fr" style="display:none">Annexes</span>
-      <span class="it" style="display:none">Appendice</span>
-      <span class="ja" style="display:none">付録</span>
-      <span class="zh-CN" style="display:none">附录</span>
-      <span class="zh-TW" style="display:none">附錄</span>
-    </span>
-    <ul>
-      <li><a href="<?cs var:toroot ?>guide/appendix/api-levels.html">
-            <span class="en">Android API Levels</span>
-          </a></li>
-      <li><a href="<?cs var:toroot ?>guide/appendix/install-location.html">
-            <span class="en">App Install Location</span>
-          </a></li>
-      <li><a href="<?cs var:toroot ?>guide/appendix/media-formats.html">
-            <span class="en">Supported Media Formats</span>
-          </a></li>
       <li><a href="<?cs var:toroot ?>guide/appendix/g-app-intents.html">
             <span class="en">Intents List: Google Apps</span>
           </a></li>
-      <li><a href="<?cs var:toroot ?>guide/developing/tools/aidl.html">AIDL</a></li>
+       
+
       <li><a href="<?cs var:toroot ?>guide/appendix/glossary.html">
             <span class="en">Glossary</span>
           </a></li>
     </ul>
   </li>
 
+</li>
+-->
 </ul>
 
+
 <script type="text/javascript">
 <!--
     buildToggleLists();
     changeNavLang(getLangPref());
 //-->
 </script>
+
diff --git a/docs/html/guide/index.jd b/docs/html/guide/index.jd
index 8378472..fea7027 100644
--- a/docs/html/guide/index.jd
+++ b/docs/html/guide/index.jd
@@ -1,88 +1,56 @@
-page.title=The Developer's Guide
+page.title=App Components
+page.landing=true
+page.landing.intro=Android's application framework lets you create extremely rich and innovative apps using a set of reusable components. This section explains how Android apps work and how you use components to build them. 
+page.landing.image=images/ui/ui_index.png
+
 @jd:body
 
-<p>
-Welcome to the <i>Android Dev Guide</i>! The Dev Guide provides 
-a practical introduction to developing applications for Android and documentation about major
-platform features. It explores the concepts behind Android, the framework for 
-constructing an application, and the tools for developing, 
-testing, and publishing software for the platform.
-</p>
+<div class="landing-docs">
 
-<p>
-The Dev Guide holds most of the documentation for the Android
-platform, except for reference material on the framework API.  
-For API specifications, go to the 
-<a href="{@docRoot}reference/packages.html">Reference</a>.
-</p>  
+  <div class="col-6">
+    <h3>Blog Articles</h3>
+    
+    <a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
+      <h4>Using DialogFragments</h4>
+      <p>In this post, I’ll show how to use DialogFragments with the v4 support library (for backward compatibility on pre-Honeycomb devices) to show a simple edit dialog and return a result to the calling Activity using an interface.</p>
+    </a>
 
-<p>
-As you can see in the panel on the left, the Dev Guide is 
-divided into several sections:
-<p>
+    <a href="http://android-developers.blogspot.com/2011/03/fragments-for-all.html">
+      <h4>Fragments For All</h4>
+      <p>Today we’ve released a static library that exposes the same Fragments API (as well as the new LoaderManager and a few other classes) so that applications compatible with Android 1.6 or later can use fragments to create tablet-compatible user interfaces. </p>
+    </a>
+    
+    <a
+href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
+      <h4>Multithreading for Performance</h4>
+      <p>A good practice in creating responsive applications is to make sure your main UI thread
+does the minimum amount of work. Any potentially long task that may hang your application should be
+handled in a different thread.</p>
+    </a>
+  </div>
 
-<dl>
-<dt><b>Android Basics</b></dt>
-<dd>An initial orientation to Android &mdash; what it is, 
-what it offers, and how your application fits in.</dd>
+  <div class="col-6">
+    <h3>Training</h3>
+    
+    <a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
+      <h4>Managing the Activity Lifecycle</h4>
+      <p>This class explains important lifecycle callback methods that each Activity
+      instance receives and how you can use them so your activity does what the user expects and does not consume system
+      resources when your activity doesn't need them.</p>
+    </a>
 
-<dt><b>Framework Topics</b></dt>
-<dd>Discussions of particular parts of the Android framework
-and API.  For an introduction to the framework, begin with
-<a href="{@docRoot}guide/topics/fundamentals.html">Application
-Fundamentals</a>.  Then explore other topics &mdash; from 
-designing a user interface and setting up resources to storing 
-data and using permissions &mdash; as needed.</dd>
+    <a href="http://developer.android.com/training/basics/fragments/index.html">
+      <h4>Building a Dynamic UI with Fragments</h4>
+      <p>This class shows you how to create a dynamic user experience with fragments and optimize
+your app's user experience for devices with different screen sizes, all while continuing to support
+devices running versions as old as Android 1.6.</p>
+    </a>
 
-<dt><b>Google Play Topics</b></dt>
-<dd>Documentation for topics that concern publishing and monetizing applications on Google Play,
-such as how to enforce licensing policies and implement in-app billing.</dd>
+    <a href="http://developer.android.com/training/sharing/index.html">
+      <h4>Sharing Content</h4>
+      <p>This class covers some common ways you can send and receive content between
+      applications using Intent APIs and the ActionProvider object.</p>
+    </a>
+  </div>
 
-<dt><b>Developing</b></dt>
-<dd>Directions for using Android's development and debugging tools, 
-and for testing the results.</dd>
-
-<dt><b>Publishing</b></dt>
-<dd>Instructions on how to prepare your application for deployment
-and how to publish it when it's ready.</dd>
-
-<dt><b>Best Practices</b></dt> 
-<dd>Recommendations on preferred techniques for writing  
-applications that perform efficiently and work well for the
-user.</dd>
-
-<dt><b>Web Applications</b></dt> 
-<dd>Documentation about how to create web applications that work seamlessly on Android-powered
-devices and create Android applications that embed web-based content.</dd>
-
-<dt><b>Appendix</b></dt>
-<dd>Reference information and specifications, as well as FAQs, 
-a glossary of terms, and other information.</dd>
-</dl>
-
-<p>
-The first step in programming for Android is downloading the SDK
-(software development kit).  For instructions and information, visit the <a
-href="{@docRoot}sdk/index.html">SDK</a> tab.
-</p>
-
-<p>
-After you have the SDK, begin by looking through the Dev Guide.
-If you want to start by getting a quick look at some code, the 
-<a href="{@docRoot}resources/tutorials/hello-world.html">Hello World</a>
-tutorial walks you through a standard "Hello, World" application to introduce some basics of an
-Android application. The 
-<a href="{@docRoot}guide/topics/fundamentals.html">Application
-Fundamentals</a> document is a good place to start learning the basics about the application
-framework.
-</p>
-
-
-<p>
-For additional help, consider joining one or more of the Android 
-discussion groups.  Go to the 
-<a href="{@docRoot}resources/community-groups.html">Developer Forums</a> page
-for more information.
-</p>
-
-<p>To return to this page later, just click the "Dev Guide" tab while any Dev Guide page is loaded. </p>
\ No newline at end of file
+</div>
\ No newline at end of file
diff --git a/docs/html/guide/market/billing/billing_about.html b/docs/html/guide/market/billing/billing_about.html
deleted file mode 100644
index d8395df..0000000
--- a/docs/html/guide/market/billing/billing_about.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh"
-content="0;url=http://developer.android.com/guide/market/billing/index.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/guide/market/billing/index.html">click
-here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/market/billing/index.jd b/docs/html/guide/market/billing/index.jd
deleted file mode 100755
index 036761f..0000000
--- a/docs/html/guide/market/billing/index.jd
+++ /dev/null
@@ -1,94 +0,0 @@
-page.title=In-app Billing
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <h2>Topics</h2>
-  <ol>
-    <li><a href="{@docRoot}guide/market/billing/billing_overview.html">Overview of In-app
-    Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_integrate.html">Implementing In-app
-    Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_best_practices.html">Security and
-    Design</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_testing.html">Testing In-app
-    Billing</a></li>
-    <li><a href="{@docRoot}guide/market/billing/billing_admin.html">Administering In-app
-    Billing</a></li>
-  </ol>
-  <h2>Reference</h2>
-  <ol>
-    <li><a href="{@docRoot}guide/market/billing/billing_reference.html">In-app Billing
-    Reference</a></li>
-  </ol>
-  <h2>Downloads</h2>
-  <ol>
-    <li><a href="{@docRoot}guide/market/billing/billing_integrate.html#billing-download">Sample
-    Application</a></li>
-  </ol>  
-</div>
-</div>
-
-<p>Google Play In-app Billing is a Google Play service that lets you sell digital content in
-your applications. You can use the service to sell a wide range of content, including downloadable
-content such as media files or photos, and virtual content such as game levels or potions.</p>
-
-<p>When you use Google Play's in-app billing service to sell an item, Google Play handles all
-checkout details so your application never has to directly process any financial transactions.
-Google Play uses the same checkout service that is used for application purchases, so your users
-experience a consistent and familiar purchase flow (see figure 1). Also, the transaction fee for
-in-app purchases is the same as the transaction fee for application purchases (30%).</p>
-
-<p>Any application that you publish through Google Play can implement in-app billing. No special
-account or registration is required other than a Google Play app publisher account and a Google
-Checkout Merchant account. Also, because the service uses no dedicated framework APIs, you can add
-in-app billing to any application that uses a minimum API level of 4 or higher.</p>
-
-<p>To help you integrate in-app billing into your application, the Android SDK provides a sample
-application that demonstrates a simple implementation of in-app billing. The sample application
-contains examples of billing-related classes you can use to implement in-app billing in your
-application. It also contains examples of the database, user interface, and business logic you might
-use to implement in-app billing.</p>
-
-<p class="caution"><strong>Important</strong>: Although the sample application is a working example
-of how you can implement in-app billing, we <em>strongly recommend</em> that you modify and
-obfuscate the sample code before you use it in a production application. For more information, see
-<a href="{@docRoot}guide/market/billing/billing_best_practices.html">Security and Design</a>.</p>
-
-<img src="{@docRoot}images/billing_checkout_flow.png" height="382" id="figure1" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> Applications initiate in-app billing requests through their own UI
-  (first screen). Google Play responds to the request by providing the checkout user interface
-  (middle screen). When checkout is complete, the application resumes.
-</p>
-
-<p>To learn more about Google Play's in-app billing service and start integrating it into your
-applications, read the following documents:</p>
-
-<dl>
-  <dt><strong><a href="{@docRoot}guide/market/billing/billing_overview.html">Overview of In-app
-  Billing</a></strong></dt>
-    <dd>Learn how the service works and what a typical in-app billing implementation looks
-    like.</dd>
-  <dt><strong><a href="{@docRoot}guide/market/billing/billing_integrate.html">Implementing
-  In-app Billing</a></strong></dt>
-    <dd>Use this step-by-step guide to start incorporating in-app billing into your
-    application.</dd>
-  <dt><strong><a href="{@docRoot}guide/market/billing/billing_best_practices.html">Security
-  and Design</a></strong></dt>
-    <dd>Review these best practices to help ensure that your in-app billing implementation is
-    secure and well designed.</dd>
-  <dt><strong><a href="{@docRoot}guide/market/billing/billing_testing.html">Testing In-app
-  Billing</a></strong></dt>
-    <dd>Understand how the in-app billing test tools work and learn how to test your in-app billing
-    implementation.</dd>
-  <dt><strong><a href="{@docRoot}guide/market/billing/billing_admin.html">Administering
-  In-app Billing</a></strong></dt>
-    <dd>Learn how to set up your product list, register test accounts, and handle refunds.</dd>
-  <dt><strong><a href="{@docRoot}guide/market/billing/billing_reference.html">In-app Billing
-  Reference</a></strong></dt>
-    <dd>Get detailed information about Google Play response codes and the in-app billing
-    interface.</dd>
-</dl>
-
diff --git a/docs/html/guide/practices/design/accessibility.html b/docs/html/guide/practices/app-design/accessibility.html
similarity index 100%
rename from docs/html/guide/practices/design/accessibility.html
rename to docs/html/guide/practices/app-design/accessibility.html
diff --git a/docs/html/guide/practices/design/index.jd b/docs/html/guide/practices/app-design/index.jd
similarity index 100%
rename from docs/html/guide/practices/design/index.jd
rename to docs/html/guide/practices/app-design/index.jd
diff --git a/docs/html/guide/practices/design/jni.jd b/docs/html/guide/practices/app-design/jni.jd
similarity index 100%
rename from docs/html/guide/practices/design/jni.jd
rename to docs/html/guide/practices/app-design/jni.jd
diff --git a/docs/html/guide/practices/design/performance.jd b/docs/html/guide/practices/app-design/performance.jd
similarity index 98%
rename from docs/html/guide/practices/design/performance.jd
rename to docs/html/guide/practices/app-design/performance.jd
index dd9b554..078999b 100644
--- a/docs/html/guide/practices/design/performance.jd
+++ b/docs/html/guide/practices/app-design/performance.jd
@@ -379,7 +379,7 @@
 that you want to port to Android, not for "speeding up" parts of a Java app.</p>
 
 <p>If you do need to use native code, you should read our
-<a href="{@docRoot}guide/practices/design/jni.html">JNI Tips</a>.</p>
+<a href="{@docRoot}guide/practices/jni.html">JNI Tips</a>.</p>
 
 <p>(See also <em>Effective Java</em> item 54.)</p>
 
@@ -402,7 +402,7 @@
 to run your own microbenchmarks.</p>
 
 <p>You may also find
-<a href="{@docRoot}guide/developing/debugging/debugging-tracing.html">Traceview</a> useful
+<a href="{@docRoot}tools/debugging/debugging-tracing.html">Traceview</a> useful
 for profiling, but it's important to realize that it currently disables the JIT,
 which may cause it to misattribute time to code that the JIT may be able to win
 back. It's especially important after making changes suggested by Traceview
diff --git a/docs/html/guide/practices/design/responsiveness.jd b/docs/html/guide/practices/app-design/responsiveness.jd
similarity index 100%
rename from docs/html/guide/practices/design/responsiveness.jd
rename to docs/html/guide/practices/app-design/responsiveness.jd
diff --git a/docs/html/guide/practices/design/seamlessness.jd b/docs/html/guide/practices/app-design/seamlessness.jd
similarity index 99%
rename from docs/html/guide/practices/design/seamlessness.jd
rename to docs/html/guide/practices/app-design/seamlessness.jd
index 6c73426..ec6b7fd 100644
--- a/docs/html/guide/practices/design/seamlessness.jd
+++ b/docs/html/guide/practices/app-design/seamlessness.jd
@@ -210,7 +210,7 @@
 network, so you'll want to change the settings on the emulator that simulate
 slower network speeds. You can do this in Eclipse, in the "Emulator Settings"
 tab of your launch configuration or via a <a
-href="{@docRoot}guide/developing/tools/emulator.html#netspeed">command-line 
+href="{@docRoot}tools/help/emulator.html#netspeed">command-line 
 option</a> when starting the emulator.</p>
 
 <h2 id="keyboard">Don't Assume Touchscreen or Keyboard</h2>
diff --git a/docs/html/guide/practices/compatibility.jd b/docs/html/guide/practices/compatibility.jd
index 5e514c4..a2284bd 100644
--- a/docs/html/guide/practices/compatibility.jd
+++ b/docs/html/guide/practices/compatibility.jd
@@ -7,7 +7,7 @@
 <h2>See also</h2>
  <ol>
 <li><a
-href="{@docRoot}guide/appendix/market-filters.html">Filtering on Google Play</a></li>
+href="{@docRoot}guide/google/play/filters.html">Filtering on Google Play</a></li>
 <li><a
 href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">Providing Alternative Resources</a></li>
 <li><a
@@ -54,7 +54,7 @@
 ability to install and correctly run an Android <code>.apk</code> file.</p>
 
 <p>There is exactly one Android API for each <a
-href="{@docRoot}guide/appendix/api-levels.html">API level</a>, and it’s the same
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API level</a>, and it’s the same
 API no matter what kind of device it’s installed on. No parts of the API are
 optional, and you never have to worry about parts of the API missing on some
 devices. Every compatible Android device your app will land on will include
@@ -119,7 +119,7 @@
 
 <p style="margin-top:1em;">For information about other filters that you can
 use to control the availability of your apps, see the 
-<a href="{@docRoot}guide/appendix/market-filters.html">Filters on Google Play</a>
+<a href="{@docRoot}guide/google/play/filters.html">Filters on Google Play</a>
 document.</p>
   </div> 
 </div>
diff --git a/docs/html/guide/practices/index.html b/docs/html/guide/practices/index.html
deleted file mode 100644
index 4881acf..0000000
--- a/docs/html/guide/practices/index.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=../index.html">
-</head>
-<body>
-<a href="../index.html">click here</a> if you are not redirected.
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/practices/index.jd b/docs/html/guide/practices/index.jd
new file mode 100644
index 0000000..e218b50
--- /dev/null
+++ b/docs/html/guide/practices/index.jd
@@ -0,0 +1,52 @@
+page.title=Best Practices
+page.landing=true
+page.landing.intro=Design and build apps the right way. Learn how to create apps that look great and perform well on as many devices as possible, from phones to tablets and more.  
+page.landing.image=
+
+@jd:body
+
+<div class="landing-docs">
+
+  <div class="col-12">
+    <h3>Blog Articles</h3>
+    
+    <a href="android-developers.blogspot.com/2010/10/improving-app-quality.html">
+      <h4>Improving App Quality</h4>
+      <p>One way of improving your app’s visibility in the ecosystem is by deploying well-targeted
+mobile advertising campaigns and cross-app promotions. However, there’s another time-tested method
+of fueling the impression-install-ranking cycle: improve the product!</p>
+    </a>
+    
+    <a href="http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html">
+      <h4>Say Goodbye to the Menu Button</h4>
+      <p>As Ice Cream Sandwich rolls out to more devices, it?s important that you begin to migrate
+your designs to the action bar in order to promote a consistent Android user experience.</p>
+    </a>
+    
+    <a href="android-developers.blogspot.com/2011/07/new-tools-for-managing-screen-sizes.html">
+      <h4>New Tools For Managing Screen Sizes</h4>
+      <p>Android 3.2 includes new tools for supporting devices with a wide range of screen sizes.
+One important result is better support for a new size of screen; what is typically called a “7-inch”
+tablet. This release also offers several new APIs to simplify developers’ work in adjusting to
+different screen sizes.</p>
+    </a>
+    
+    <a href="android-developers.blogspot.com/2011/03/identifying-app-installations.html">
+      <h4>Identifying App Installations</h4>
+      <p>It is very common, and perfectly reasonable, for a developer to want to track individual
+installations of their apps. It sounds plausible just to call TelephonyManager.getDeviceId() and use
+that value to identify the installation. There are problems with this</p>
+    </a>
+    
+    <a
+href="http://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html">
+      <h4>Making Android Games that Play Nice</h4>
+      <p>Making a game on Android is easy. Making a <em>great</em> game for a mobile, multitasking,
+often multi-core, multi-purpose system like Android is trickier. Even the best developers frequently
+make mistakes in the way they interact with the Android system and with other applications</p>
+    </a>
+    
+  </div>
+
+
+</div>
\ No newline at end of file
diff --git a/docs/html/guide/practices/design/jni.jd b/docs/html/guide/practices/jni.jd
similarity index 100%
copy from docs/html/guide/practices/design/jni.jd
copy to docs/html/guide/practices/jni.jd
diff --git a/docs/html/guide/practices/optimizing-for-3.0.jd b/docs/html/guide/practices/optimizing-for-3.0.jd
index d6c621e..65c5674 100644
--- a/docs/html/guide/practices/optimizing-for-3.0.jd
+++ b/docs/html/guide/practices/optimizing-for-3.0.jd
@@ -53,7 +53,7 @@
   <li><a href="tablets-and-handsets.html">Supporting Tablets
 and Handsets</a></li>
   <li><a
-href="{@docRoot}sdk/compatibility-library.html">Compatibility Library</a></li>
+href="{@docRoot}tools/extras/support-library.html">Compatibility Library</a></li>
   <li><a href="http://code.google.com/p/iosched/">Google I/O App source code</a></li>
 </ol>
 
@@ -108,7 +108,7 @@
 SDK starter package now</a>.)</p>
 
 <ol>
-  <li><a href="{@docRoot}sdk/adding-components.html#launching">Launch the Android SDK
+  <li><a href="{@docRoot}sdk/exploring.html#launching">Launch the Android SDK
 Manager</a> and install the following:
     <ul>
       <li>SDK Platform Android 3.0</li>
@@ -280,15 +280,15 @@
 to help you add features from Android 3.0 without requiring you to change your <a
 href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code android:minSdkVersion}</a>
 or build target, we're providing a static library called the <a
-href="{@docRoot}sdk/compatibility-library.html">Compatibility Library</a>
+href="{@docRoot}tools/extras/support-library.html">Compatibility Library</a>
 (downloadable from the Android SDK Manager).</p>
 <p>This library includes APIs for <a
-href="{@docRoot}guide/topics/fundamentals/fragments.html">fragments</a>, <a
-href="{@docRoot}guide/topics/fundamentals/loaders.html">loaders</a>, and some updated classes. By
+href="{@docRoot}guide/components/fragments.html">fragments</a>, <a
+href="{@docRoot}guide/components/loaders.html">loaders</a>, and some updated classes. By
 simply adding this library to your Android project, you can use these APIs in your application and
 remain compatible with Android 1.6. For information about how to get the library and start
 using it in your application, see the <a
-href="{@docRoot}sdk/compatibility-library.html">Compatibility Library</a> document.</p>
+href="{@docRoot}tools/extras/support-library.html">Compatibility Library</a> document.</p>
 </div>
 </div>
 
@@ -357,7 +357,7 @@
 read the article, the user can select an article and read it all within the same activity.</p>
 
 <p>For more information, read the <a
-href="{@docRoot}guide/topics/fundamentals/fragments.html">Fragments</a> document.</p>
+href="{@docRoot}guide/components/fragments.html">Fragments</a> document.</p>
 
 
 <h3>Use new animation APIs for transitions</h3>
@@ -374,7 +374,7 @@
 position, orientation, transparency and more.</p>
 
 <p>For more information, read the <a
-href="{@docRoot}guide/topics/graphics/animation.html">Property Animation</a> document.</p>
+href="{@docRoot}guide/topics/graphics/prop-animation.html">Property Animation</a> document.</p>
 
 
 <h3>Enable hardware acceleration</h3>
@@ -412,15 +412,15 @@
 new graphics engine called Renderscript, and more.</p>
 
 <p>To learn more about the APIs mentioned above and more, see the <a
-href="{@docRoot}sdk/android-3.0.html">Android 3.0 Platform</a> document.</p>
+href="{@docRoot}about/versions/android-3.0.html">Android 3.0 Platform</a> document.</p>
 
 
 <h3>Look at some samples</h3>
 
 <p>Many of the new features and APIs that are described above and in the <a
-href="{@docRoot}sdk/android-3.0.html#api">Android 3.0 Platform</a> document also have accompanying
+href="{@docRoot}about/versions/android-3.0.html#api">Android 3.0 Platform</a> document also have accompanying
 samples that allow you to preview the effects and can help you understand how to use them. To get
-the samples, download them from the SDK repository <a href="{@docRoot}sdk/adding-components.html"
+the samples, download them from the SDK repository <a href="{@docRoot}sdk/exploring.html"
 >using the Android SDK Manager</a>. After downloading the samples ("Samples for SDK API
 11"), you can find them in <code>&lt;sdk_root&gt;/samples/android-11/</code>. The following list
 provides links to the browsable source code for some of the samples:</p>
@@ -474,7 +474,7 @@
 application's layout and assets to fit the current device screen, whether the device screen is
 smaller or larger than the one for which you originally designed your application. As such, you
 should always test your application on real or <a
-href="{@docRoot}guide/developing/devices/index.html">virtual devices</a> with various screen sizes
+href="{@docRoot}tools/devices/index.html">virtual devices</a> with various screen sizes
 and densities.</p>
 
 <p>Although we recommend that you design your application to function properly on multiple
@@ -641,7 +641,7 @@
 onCreate()}) in immediate succession. You should design your activity to account for these changes
 in the lifecycle, so the activity can save and restore its state. You can learn about the
 necessary lifecycle callback methods and how to save and restore the activity state in the <a
-href="{@docRoot}guide/topics/fundamentals/activities.html#Lifecycle">Activities</a>
+href="{@docRoot}guide/components/activities.html#Lifecycle">Activities</a>
 document. If your activity state is more complex and cannot retain it using the normal
 lifecycle callback methods, you can use alternative techniques described in <a
 href="{@docRoot}guide/topics/resources/runtime-changes.html">Handling Runtime Changes</a>.</p>
diff --git a/docs/html/guide/practices/design/performance.jd b/docs/html/guide/practices/performance.jd
similarity index 98%
copy from docs/html/guide/practices/design/performance.jd
copy to docs/html/guide/practices/performance.jd
index dd9b554..078999b 100644
--- a/docs/html/guide/practices/design/performance.jd
+++ b/docs/html/guide/practices/performance.jd
@@ -379,7 +379,7 @@
 that you want to port to Android, not for "speeding up" parts of a Java app.</p>
 
 <p>If you do need to use native code, you should read our
-<a href="{@docRoot}guide/practices/design/jni.html">JNI Tips</a>.</p>
+<a href="{@docRoot}guide/practices/jni.html">JNI Tips</a>.</p>
 
 <p>(See also <em>Effective Java</em> item 54.)</p>
 
@@ -402,7 +402,7 @@
 to run your own microbenchmarks.</p>
 
 <p>You may also find
-<a href="{@docRoot}guide/developing/debugging/debugging-tracing.html">Traceview</a> useful
+<a href="{@docRoot}tools/debugging/debugging-tracing.html">Traceview</a> useful
 for profiling, but it's important to realize that it currently disables the JIT,
 which may cause it to misattribute time to code that the JIT may be able to win
 back. It's especially important after making changes suggested by Traceview
diff --git a/docs/html/guide/practices/design/responsiveness.jd b/docs/html/guide/practices/responsiveness.jd
similarity index 100%
copy from docs/html/guide/practices/design/responsiveness.jd
copy to docs/html/guide/practices/responsiveness.jd
diff --git a/docs/html/guide/practices/screens-distribution.jd b/docs/html/guide/practices/screens-distribution.jd
index a7c4a8e..90ac752 100644
--- a/docs/html/guide/practices/screens-distribution.jd
+++ b/docs/html/guide/practices/screens-distribution.jd
@@ -213,4 +213,4 @@
 <a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>.</p>
 
 <p>If you need more information about how to publish multiple APKs on Google Play, read <a
-href="{@docRoot}guide/market/publishing/multiple-apks.html">Multiple APK Support</a>.</p>
+href="{@docRoot}guide/google/play/publishing/multiple-apks.html">Multiple APK Support</a>.</p>
diff --git a/docs/html/guide/practices/screens-support-1.5.jd b/docs/html/guide/practices/screens-support-1.5.jd
index 4c6fb99..15f0695 100644
--- a/docs/html/guide/practices/screens-support-1.5.jd
+++ b/docs/html/guide/practices/screens-support-1.5.jd
@@ -59,7 +59,7 @@
 <p class="note"><strong>Note:</strong> Before you begin, you should first decide whether it's even
 necessary to support Android 1.5. To see the relative number of devices that are still running
 Android 1.5, see the <a
-href="http://developer.android.com/resources/dashboard/platform-versions.html">Platform Versions
+href="http://developer.android.com/about/dashboards/index.html">Platform Versions
 Dashboard</a>.</p>
 
 
diff --git a/docs/html/guide/practices/screens_support.jd b/docs/html/guide/practices/screens_support.jd
index a870b22..ca29589 100644
--- a/docs/html/guide/practices/screens_support.jd
+++ b/docs/html/guide/practices/screens_support.jd
@@ -57,7 +57,7 @@
 Providing Alternative Resources</a></li>
     <li><a href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">Icon Design
 Guidelines</a></li>
-    <li><a href="{@docRoot}guide/developing/devices/index.html">Managing Virtual Devices</a></li>
+    <li><a href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a></li>
   </ol>
 
 </div>
@@ -1253,7 +1253,7 @@
 to emulate some of the most common screen configurations.</p>
 
 <p>For more information about creating and using AVDs to test your application, see <a
-href="{@docRoot}guide/developing/devices/managing-avds.html">Managing AVDs with AVD
+href="{@docRoot}tools/devices/managing-avds.html">Managing AVDs with AVD
 Manager</a>.</p>
 
 
@@ -1366,5 +1366,5 @@
 between 0.1 and 3 that represents the desired scaling factor.</p>
 
 <p>For more information about creating AVDs from the command line, see <a
-href="{@docRoot}guide/developing/devices/managing-avds-cmdline.html">Managing AVDs from the
+href="{@docRoot}tools/devices/managing-avds-cmdline.html">Managing AVDs from the
 Command Line</a></p>
diff --git a/docs/html/guide/practices/design/seamlessness.jd b/docs/html/guide/practices/seamlessness.jd
similarity index 99%
copy from docs/html/guide/practices/design/seamlessness.jd
copy to docs/html/guide/practices/seamlessness.jd
index 6c73426..ec6b7fd 100644
--- a/docs/html/guide/practices/design/seamlessness.jd
+++ b/docs/html/guide/practices/seamlessness.jd
@@ -210,7 +210,7 @@
 network, so you'll want to change the settings on the emulator that simulate
 slower network speeds. You can do this in Eclipse, in the "Emulator Settings"
 tab of your launch configuration or via a <a
-href="{@docRoot}guide/developing/tools/emulator.html#netspeed">command-line 
+href="{@docRoot}tools/help/emulator.html#netspeed">command-line 
 option</a> when starting the emulator.</p>
 
 <h2 id="keyboard">Don't Assume Touchscreen or Keyboard</h2>
diff --git a/docs/html/guide/practices/security.jd b/docs/html/guide/practices/security.jd
index eeaac44..48ccdeb 100644
--- a/docs/html/guide/practices/security.jd
+++ b/docs/html/guide/practices/security.jd
@@ -20,8 +20,7 @@
 <ol>
 <li><a href="http://source.android.com/tech/security/index.html">Android
 Security Overview</a></li>
-<li><a href="{@docRoot}guide/topics/security/security.html">Android Security
-And Permissions</a></li>
+<li><a href="{@docRoot}guide/topics/security/permissions.html">Permissions</a></li>
 </ol>
 </div></div>
 <p>Android was designed so that most developers will be able to build
@@ -136,7 +135,7 @@
 <p>To provide additional protection for sensitive data, some applications
 choose to encrypt local files using a key that is not accessible to the
 application. (For example, a key can be placed in a <code><a
-href={@docRoot}reference/java/security/KeyStore.html">KeyStore</a></code> and
+href="{@docRoot}reference/java/security/KeyStore.html">KeyStore</a></code> and
 protected with a user password that is not stored on the device).  While this
 does not protect data from a root compromise that can monitor the user
 inputting the password,  it can provide protection for a lost device without <a
diff --git a/docs/html/guide/practices/tablets-and-handsets.jd b/docs/html/guide/practices/tablets-and-handsets.jd
index 8e07a08..8d6d3dd3 100644
--- a/docs/html/guide/practices/tablets-and-handsets.jd
+++ b/docs/html/guide/practices/tablets-and-handsets.jd
@@ -26,7 +26,7 @@
 
 <h2>See also</h2>
 <ol>
-  <li><a href="{@docRoot}guide/topics/fundamentals/fragments.html">Fragments</a></li>
+  <li><a href="{@docRoot}guide/components/fragments.html">Fragments</a></li>
   <li><a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a></li>
   <li><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></li>
 </ol>
@@ -85,7 +85,7 @@
 running.</p>
 
 <p>If you haven't used fragments yet, start by reading the <a
-href="{@docRoot}guide/topics/fundamentals/fragments.html">Fragments</a> developer guide.</p>
+href="{@docRoot}guide/components/fragments.html">Fragments</a> developer guide.</p>
 </li>
 
 
@@ -141,16 +141,16 @@
   <h3>Remaining backward-compatible</h3>
 <p>If you want to use fragments in your application <em>and</em> remain compatible with
 versions of Android older than 3.0, you can do so by using the Android <a
-href="{@docRoot}sdk/compatibility-library.html">Support Library</a> (downloadable from the
+href="{@docRoot}tools/extras/support-library.html">Support Library</a> (downloadable from the
 SDK Manager).</p>
 <p>The support library includes APIs for <a
-href="{@docRoot}guide/topics/fundamentals/fragments.html">fragments</a>, <a
-href="{@docRoot}guide/topics/fundamentals/loaders.html">loaders</a>, and other APIs added in newer
+href="{@docRoot}guide/components/fragments.html">fragments</a>, <a
+href="{@docRoot}guide/components/loaders.html">loaders</a>, and other APIs added in newer
 versions of Android. By simply adding this library to your Android project, you can use
 backward-compatible versions of these APIs in your application and remain compatible with Android
 1.6 (your <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code
 android:minSdkVersion}</a> value can be as low as {@code "4"}). For information about how to get the
-library and start using it, see the <a href="{@docRoot}sdk/compatibility-library.html">Support
+library and start using it, see the <a href="{@docRoot}tools/extras/support-library.html">Support
 Library</a> document.</p>
 
 <p>The support library <em>does not</em> provide APIs for the action bar, but you can use
diff --git a/docs/html/guide/practices/ui_guidelines/activity_task_design.jd b/docs/html/guide/practices/ui_guidelines/activity_task_design.jd
index 8e4528e..cb2bc37 100644
--- a/docs/html/guide/practices/ui_guidelines/activity_task_design.jd
+++ b/docs/html/guide/practices/ui_guidelines/activity_task_design.jd
@@ -19,7 +19,7 @@
 for <a href="{@docRoot}design/patterns/app-structure.html">App Structure</a> and
 <a href="{@docRoot}design/patterns/navigation.html">Navigation</a>, or the developer guide
 about <a
-href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back Stack</a>.</p>
+href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back Stack</a>.</p>
 
  <input style="margin-top:1em;padding:5px" type="button"
         value="That's nice, but I still want to read this document"
@@ -88,7 +88,7 @@
 <h2>See also</h2>
 
 <ol>
-  <li><a href="{@docRoot}guide/topics/fundamentals.html">Application Fundamentals</a></li>
+  <li><a href="{@docRoot}guide/components/fundamentals.html">Application Fundamentals</a></li>
 </ol>
 
 </div>
@@ -121,9 +121,9 @@
 <p>
   Be sure to look at the <a href="#design_tips">Design Tips</a> section
   for guidelines, tips, and things to avoid. This document is a
-  complement to the <a href="{@docRoot}guide/topics/fundamentals.html">Application
+  complement to the <a href="{@docRoot}guide/components/fundamentals.html">Application
 Fundamentals</a> documentation (particularly the <a
-href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back Stack</a>
+href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back Stack</a>
 document),
   which covers the underlying mechanics for programmers.
 </p>
@@ -189,7 +189,7 @@
 <p>
   An activity handles a particular type of content (data) and accepts a
   set of related user actions. Each activity has a 
-  <a href="{@docRoot}guide/topics/fundamentals/activities.html#Lifecycle">lifecycle</a> that is
+  <a href="{@docRoot}guide/components/activities.html#Lifecycle">lifecycle</a> that is
 independent of the other
   activities in its application or task &mdash; each activity is
   launched (started) independently, and the user or system can start,
@@ -268,7 +268,7 @@
   An activity is the most prominent of four <em>components</em> of an
   application. The other components are service, content provider and
   broadcast receiver. For more details on activities, see the
-  <a href="{@docRoot}guide/topics/fundamentals/activities.html">Activities</a> document.
+  <a href="{@docRoot}guide/components/activities.html">Activities</a> document.
 </p>
 
 
@@ -750,7 +750,7 @@
 
     <p>
       For more about intents, see <a
-href="{@docRoot}guide/topics/intents/intents-filters.html">Intents and Intent Filters</a>.
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters</a>.
     </p>
 
 
@@ -947,7 +947,7 @@
         Home screen), or from a shortcut icon on the Home screen, or
         from the task switcher.  (The mechanism for this is for the
         activity to have an 
-        <a href={@docRoot}guide/topics/intents/intents-filters.html>intent filter</a> with action
+        <a href={@docRoot}guide/components/intents-filters.html>intent filter</a> with action
 MAIN and
         category LAUNCHER.)
       </li>
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_launcher.jd b/docs/html/guide/practices/ui_guidelines/icon_design_launcher.jd
index 4b6768f..28817fd 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_launcher.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_launcher.jd
@@ -241,8 +241,8 @@
 
 <h3 id="icons_in_market">Application Icons on Google Play</h3>
 
-<p>If you are <a href="{@docRoot}guide/publishing/publishing.html">publishing your application on
-Google Play</a>, you will also need to provide a 512 x 512 pixel, high-resolution application icon
+<p>If you are publishing your app on
+Google Play, you will also need to provide a 512 x 512 pixel, high-resolution application icon
 in the <a href="http://play.google.com/apps/publish">developer console</a> at upload time. This icon
 will be used in various locations on Google Play and does not replace your launcher icon.</p>
 
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_launcher_archive.jd b/docs/html/guide/practices/ui_guidelines/icon_design_launcher_archive.jd
index 85a3cc8..f6c2247 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_launcher_archive.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_launcher_archive.jd
@@ -58,7 +58,7 @@
 
 <h2 id="market">Application Icons on Google Play</h2>
 
-<p>If you are <a href="{@docRoot}guide/publishing/publishing.html">publishing
+<p>If you are <a href="{@docRoot}tools/publishing/publishing.html">publishing
 your application on Google Play</a>, you will also need to provide a 512x512
 pixel, high-resolution application icon in the <a
 href="http://play.google.com/apps/publish">developer console</a> at upload-time.
diff --git a/docs/html/guide/practices/ui_guidelines/widget_design.jd b/docs/html/guide/practices/ui_guidelines/widget_design.jd
index d789407..616f9ae 100644
--- a/docs/html/guide/practices/ui_guidelines/widget_design.jd
+++ b/docs/html/guide/practices/ui_guidelines/widget_design.jd
@@ -229,7 +229,7 @@
 practice to define this shape using nine patches; one for each screen density (see <a
 href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a> for details).
 Nine-patches can be created with the <a
-href="{@docRoot}guide/developing/tools/draw9patch.html">draw9patch</a> tool, or simply with a
+href="{@docRoot}tools/help/draw9patch.html">draw9patch</a> tool, or simply with a
 graphics editing program such as Adobe&reg; Photoshop. This will allow the widget background shape
 to take up the entire available space. The nine-patch should be edge-to-edge with no transparent
 pixels providing extra margins, save for perhaps a few border pixels for <strong>subtle</strong>
diff --git a/docs/html/guide/publishing/app-signing.jd b/docs/html/guide/publishing/app-signing.jd
deleted file mode 100644
index 5bd9be55..0000000
--- a/docs/html/guide/publishing/app-signing.jd
+++ /dev/null
@@ -1,618 +0,0 @@
-page.title=Signing Your Applications
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Quickview</h2>
-
-<ul>
-<li>All Android apps <em>must</em> be signed</li>
-<li>You can sign with a self-signed key</li>
-<li>How you sign your apps is critical &mdash; read this document carefully</li>
-<li>Determine your signing strategy early in the development process</li>
-</ul>
-
-<h2>In this document</h2>
-
-<ol>
-<li><a href="#signing">Signing Process</a></li>
-<li><a href="#strategies">Signing Strategies</a></li>
-<li><a href="#setup">Basic Setup for Signing</a></li>
-<li><a href="#debugmode">Signing in Debug Mode</a></li>
-<li><a href="#releasemode">Signing Release Mode</a>
-    <ol>
-    <li><a href="#cert">Obtain a suitable private key</a></li>
-    <li><a href="#releasecompile">Compile the application in release mode</a></li>
-    <li><a href="#signapp">Sign your application with your private key</a></li>
-    <li><a href="#align">Align the final APK package</a></li>
-    <li><a href="#ExportWizard">Compile and sign with Eclipse ADT</a></li>
-    </ol>
-</li>
-<li><a href="#secure-key">Securing Your Private Key</a></li>
-
-</ol>
-
-<h2>See also</h2>
-
-<ol>
-<li><a href="{@docRoot}guide/publishing/versioning.html">Versioning Your Applications</a></li>
-<li><a href="{@docRoot}guide/publishing/preparing.html">Preparing to Publish</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>The Android system requires that all installed applications be digitally signed with a
-certificate whose private key is held by the application's developer. The Android system uses the
-certificate as a means of identifying the author of an application and establishing trust
-relationships between applications. The certificate is not used to control which applications the
-user can install. The certificate does not need to be signed by a certificate authority: it is
-perfectly allowable, and typical, for Android applications to use self-signed certificates.</p>
-
-<p>The important points to understand about signing Android applications are:</p>
-
-<ul>
-  <li>All applications <em>must</em> be signed. The system will not install an application
-on an emulator or a device if it is not signed.</li>
-  <li>To test and debug your application, the build tools sign your application with a special debug
-    key that is created by the Android SDK build tools.</li>
-  <li>When you are ready to release your application for end-users, you must sign it with a suitable
-    private key. You cannot publish an application that is signed with the debug key generated
-    by the SDK tools.</li>
-  <li>You can use self-signed certificates to sign your applications. No certificate authority is
-    needed.</li>
-  <li>The system tests a signer certificate's expiration date only at install time. If an
-application's signer certificate expires after the application is installed, the application
-will continue to function normally.</li>
-  <li>You can use standard tools &mdash; Keytool and Jarsigner &mdash; to generate keys and
-sign your application {@code .apk} files.</li>
-  <li>After you sign your application for release, we recommend that you use the
-    <code>zipalign</code> tool to optimize the final APK package.</li>
-</ul>
-
-<p>The Android system will not install or run an application that is not signed appropriately. This
-applies wherever the Android system is run, whether on an actual device or on the emulator.
-For this reason, you must <a href="#setup">set up signing</a> for your application before you can
-run it or debug it on an emulator or device.</p>
-
-<h2 id="signing">Signing Process</h3>
-
-<p>The Android build process signs your application differently depending on which build mode you
-use to build your application. There are two build modes: <em>debug mode</em> and <em>release
-mode</em>. You use debug mode when you are developing and testing your application. You use
-release mode when you want to build a release version of your application that you can
-distribute directly to users or publish on an application marketplace such as Google Play.</p>
-
-<p>When you build in <em>debug mode</em> the Android SDK build tools use the Keytool utility
-(included in the JDK) to create a debug key. Because the SDK build tools created the debug key,
-they know the debug key's alias and password. Each time you compile your application in debug mode,
-the build tools use the debug key along with the Jarsigner utility (also included in the JDK) to
-sign your application's <code>.apk</code> file. Because the alias and password are known to the SDK
-build tools, the tools don't need to prompt you for the debug key's alias and password each time
-you compile.</p>
-
-<p>When you build in <em>release mode</em> you use your own private key to sign your application. If
-you don't have a private key, you can use the Keytool utility to create one for you. When you
-compile your application in release mode, the build tools use your private key along with the
-Jarsigner utility to sign your application's <code>.apk</code> file. Because the certificate and
-private key you use are your own, you will have to provide the password for the keystore and key
-alias.</p>
-
-<p>The debug signing process happens automatically when you run or debug your application using
-Eclipse with the ADT plugin. Debug signing also happens automatically when you use the Ant build
-script with the <code>debug</code> option. You can automate the release signing process by using the
-Eclipse Export Wizard or by modifying the Ant build script and building with the
-<code>release</code> option.</p>
-
-<h2 id="strategies">Signing Strategies</h2>
-
-<p>Some aspects of application signing may affect how you approach the development
-of your application, especially if you are planning to release multiple
-applications. </p>
-
-<p>In general, the recommended strategy for all developers is to sign
-all of your applications with the same certificate, throughout the expected
-lifespan of your applications. There are several reasons why you should do so: </p>
-
-<ul>
-<li>Application upgrade &ndash; As you release updates to your application, you
-will want to continue to sign the updates with the same certificate or set of
-certificates, if you want users to upgrade seamlessly to the new version. When
-the system is installing an update to an application, it compares the
-certificate(s) in the new version with those in the existing version. If the
-certificates match exactly, including both the certificate data and order, then
-the system allows the update. If you sign the new version without using matching
-certificates, you will also need to assign a different package name to the
-application &mdash; in this case, the user installs the new version as a
-completely new application. </li>
-
-<li>Application modularity &ndash; The Android system allows applications that
-are signed by the same certificate to run in the same process, if the
-applications so requests, so that the system treats them as a single application.
-In this way you can deploy your application in modules, and users can update
-each of the modules independently if needed.</li>
-
-<li>Code/data sharing through permissions &ndash; The Android system provides
-signature-based permissions enforcement, so that an application can expose
-functionality to another application that is signed with a specified
-certificate. By signing multiple applications with the same certificate and
-using signature-based permissions checks, your applications can share code and
-data in a secure manner. </li>
-
-</ul>
-
-<p>Another important consideration in determining your signing strategy is
-how to set the validity period of the key that you will use to sign your
-applications.</p>
-
-<ul>
-<li>If you plan to support upgrades for a single application, you should ensure
-that your key has a validity period that exceeds the expected lifespan of
-that application. A validity period of 25 years or more is recommended.
-When your key's validity period expires, users will no longer be
-able to seamlessly upgrade to new versions of your application.</li>
-
-<li>If you will sign multiple distinct applications with the same key,
-you should ensure that your key's validity period exceeds the expected
-lifespan of <em>all versions of all of the applications</em>, including
-dependent applications that may be added to the suite in the future. </li>
-
-<li>If you plan to publish your application(s) on Google Play, the
-key you use to sign the application(s) must have a validity period
-ending after 22 October 2033. Google Play enforces this requirement
-to ensure that users can seamlessly upgrade applications when
-new versions are available. </li>
-</ul>
-
-<p>As you design your application, keep these points in mind and make sure to
-use a <a href="#cert">suitable certificate</a> to sign your applications. </p>
-
-<h2 id="setup">Basic Setup for Signing</h2>
-
-<p>Before you begin, make sure that the Keytool utility and Jarsigner utility are available to
-the SDK build tools. Both of these tools are available in the JDK. In most cases, you can tell
-the SDK build tools how to find these utilities by setting your <code>JAVA_HOME</code> environment
-variable so it references a suitable JDK. Alternatively, you can add the JDK version of Keytool and
-Jarsigner to your <code>PATH</code> variable.</p>
-
-<p>If you are developing on a version of Linux that originally came with GNU Compiler for
-Java, make sure that the system is using the JDK version of Keytool, rather than the gcj
-version. If Keytool is already in your <code>PATH</code>, it might be pointing to a symlink at
-<code>/usr/bin/keytool</code>. In this case, check the symlink target to be sure it points
-to the Keytool in the JDK.</p>
-
-<h2 id="debugmode">Signing in Debug Mode</h2>
-
-<p>The Android build tools provide a debug signing mode that makes it easier for you
-to develop and debug your application, while still meeting the Android system
-requirement for signing your APK.
-When using debug mode to build your app, the SDK tools invoke Keytool to automatically create
-a debug keystore and key. This debug key is then used to automatically sign the APK, so
-you do not need to sign the package with your own key.</p>
-
-<p>The SDK tools create the debug keystore/key with predetermined names/passwords:</p>
-<ul>
-<li>Keystore name: "debug.keystore"</li>
-<li>Keystore password: "android"</li>
-<li>Key alias: "androiddebugkey"</li>
-<li>Key password: "android"</li>
-<li>CN: "CN=Android Debug,O=Android,C=US"</li>
-</ul>
-
-<p>If necessary, you can change the location/name of the debug keystore/key or
-supply a custom debug keystore/key to use. However, any custom debug
-keystore/key must use the same keystore/key names and passwords as the default
-debug key (as described above). (To do so in Eclipse/ADT, go to
-<strong>Windows</strong> &gt; <strong>Preferences</strong> &gt;
-<strong>Android</strong> &gt; <strong>Build</strong>.) </p>
-
-<p class="caution"><strong>Caution:</strong> You <em>cannot</em> release your application
-to the public when signed with the debug certificate.</p>
-
-<h3>Eclipse Users</h3>
-
-<p>If you are developing in Eclipse/ADT (and have set up Keytool and Jarsigner as described above in
-<a href="#setup">Basic Setup for Signing</a>),
-signing in debug mode is enabled by default. When you run or debug your
-application, ADT signs the {@code .apk} file with the debug certificate, runs {@code zipalign} on
-the package, then installs it on
-the selected emulator or connected device. No specific action on your part is needed,
-provided ADT has access to Keytool.</p>
-
-<h3>Ant Users</h3>
-
-<p>If you are using Ant to build your {@code .apk} file, debug signing mode
-is enabled by using the <code>debug</code> option with the <code>ant</code> command
-(assuming that you are using a <code>build.xml</code> file generated by the
-<code>android</code> tool). When you run <code>ant debug</code> to
-compile your app, the build script generates a keystore/key and signs the APK for you.
-The script then also aligns the APK with the <code>zipalign</code> tool.
-No other action on your part is needed. Read
-<a href="{@docRoot}guide/developing/building/building-cmdline.html#DebugMode">Building and Running Apps
-on the Command Line</a> for more information.</p>
-
-
-<h3 id="debugexpiry">Expiry of the Debug Certificate</h3>
-
-<p>The self-signed certificate used to sign your application in debug mode (the default on
-Eclipse/ADT and Ant builds) will have an expiration date of 365 days from its creation date.</p>
-
-<p>When the certificate expires, you will get a build error. On Ant builds, the error
-looks like this:</p>
-
-<pre>debug:
-[echo] Packaging bin/samples-debug.apk, and signing it with a debug key...
-[exec] Debug Certificate expired on 8/4/08 3:43 PM</pre>
-
-<p>In Eclipse/ADT, you will see a similar error in the Android console.</p>
-
-<p>To fix this problem, simply delete the <code>debug.keystore</code> file.
-The default storage location for AVDs is in <code>~/.android/</code> on OS X and Linux,
-in <code>C:\Documents and Settings\&lt;user>\.android\</code> on Windows XP, and in
-<code>C:\Users\&lt;user>\.android\</code> on Windows Vista and Windows 7.</p>
-
-
-<p>The next time you build, the build tools will regenerate a new keystore and debug key.</p>
-
-<p>Note that, if your development machine is using a non-Gregorian locale, the build
-tools may erroneously generate an already-expired debug certificate, so that you get an
-error when trying to compile your application. For workaround information, see the
-troubleshooting topic <a href="{@docRoot}resources/faq/troubleshooting.html#signingcalendar">
-I&nbsp;can't&nbsp;compile my app because the build tools generated an expired debug
-certificate</a>. </p>
-
-
-<h2 id="releasemode">Signing in Release Mode</h2>
-
-<p>When your application is ready for release to other users, you must:</p>
-<ol>
-  <li><a href="#cert">Obtain a suitable private key</a></li>
-  <li><a href="#releasecompile">Compile the application in release mode</a></li>
-  <li><a href="#signapp">Sign your application with your private key</a></li>
-  <li><a href="#align">Align the final APK package</a></li>
-</ol>
-
-<p>If you are developing in Eclipse with the ADT plugin, you can use the Export Wizard
-to perform the compile, sign, and align procedures. The Export Wizard even allows you to
-generate a new keystore and private key in the process. So if you use Eclipse, you can
-skip to <a href="#ExportWizard">Compile and sign with Eclipse ADT</a>.</p>
-
-
-
-<h3 id="cert">1. Obtain a suitable private key</h3>
-
-<p>In preparation for signing your application, you must first ensure that
-you have a suitable private key with which to sign. A suitable private
-key is one that:</p>
-
-<ul>
-<li>Is in your possession</li>
-<li>Represents the personal, corporate, or organizational entity to be identified
-with the application</li>
-<li>Has a validity period that exceeds the expected lifespan of the application
-or application suite. A validity period of more than 25 years is recommended.
-<p>If you plan to publish your application(s) on Google Play, note that a
-validity period ending after 22 October 2033 is a requirement. You can not upload an
-application if it is signed with a key whose validity expires before that date.
-</p></li>
-<li>Is not the debug key generated by the Android SDK tools. </li>
-</ul>
-
-<p>The key may be self-signed. If you do not have a suitable key, you must
-generate one using Keytool. Make sure that you have Keytool available, as described
-in <a href="#setup">Basic Setup</a>.</p>
-
-<p>To generate a self-signed key with Keytool, use the <code>keytool</code>
-command and pass any of the options listed below (and any others, as
-needed). </p>
-
-<p class="warning"><strong>Warning:</strong> Keep your private key secure.
-Before you run Keytool, make sure to read
-<a href="#secure-key">Securing Your Private Key</a> for a discussion of how to keep
-your key secure and why doing so is critically important to you and to users. In
-particular, when you are generating your key, you should select strong passwords
-for both the keystore and key.</p>
-
-<table>
-<tr>
-<th>Keytool Option</th>
-<th>Description</th>
-</tr>
-<tr>
-<td><code>-genkey</code></td><td>Generate a key pair (public and private
-keys)</td>
-</tr>
-<tr>
-<td><code>-v</code></td><td>Enable verbose output.</td>
-</tr>
-<tr>
-<td><code>-alias &lt;alias_name&gt;</code></td><td>An alias for the key. Only
-the first 8 characters of the alias are used.</td>
-</tr>
-<tr>
-<td><code>-keyalg &lt;alg&gt;</code></td><td>The encryption algorithm to use
-when generating the key. Both DSA and RSA are supported.</td>
-</tr>
-<tr>
-<td><code>-keysize &lt;size&gt;</code></td><td>The size of each generated key
-(bits). If not supplied, Keytool uses a default key size of 1024 bits. In
-general, we recommend using a key size of 2048 bits or higher. </td>
-</tr>
-<tr>
-<td><code>-dname &lt;name&gt;</code></td><td><p>A Distinguished Name that describes
-who created the key. The value is used as the issuer and subject fields in the
-self-signed certificate. </p><p>Note that you do not need to specify this option
-in the command line. If not supplied, Jarsigner prompts you to enter each
-of the Distinguished Name fields (CN, OU, and so on).</p></td>
-</tr>
-<tr>
-<td><code>-keypass &lt;password&gt;</code></td><td><p>The password for the
-key.</p> <p>As a security precaution, do not include this option in your command
-line. If not supplied, Keytool prompts you to enter the password. In this way,
-your password is not stored in your shell history.</p></td>
-</tr>
-<tr>
-<td><code>-validity &lt;valdays&gt;</code></td><td><p>The validity period for the
-key, in days. </p><p><strong>Note:</strong> A value of 10000 or greater is recommended.</p></td>
-</tr>
-<tr>
-<td><code>-keystore&nbsp;&lt;keystore-name&gt;.keystore</code></td><td>A name
-for the keystore containing the private key.</td>
-</tr>
-<tr>
-<td><code>-storepass &lt;password&gt;</code></td><td><p>A password for the
-keystore.</p><p>As a security precaution, do not include this option in your
-command line. If not supplied, Keytool prompts you to enter the password. In
-this way, your password is not stored in your shell history.</p></td>
-</tr>
-</table>
-
-<p>Here's an example of a Keytool command that generates a private key:</p>
-
-<pre>$ keytool -genkey -v -keystore my-release-key.keystore
--alias alias_name -keyalg RSA -keysize 2048 -validity 10000</pre>
-
-<p>Running the example command above, Keytool prompts you to provide
-passwords for the keystore and key, and to provide the Distinguished
-Name fields for your key. It then generates the keystore as a file called
-<code>my-release-key.keystore</code>. The keystore and key are
-protected by the passwords you entered. The keystore contains
-a single key, valid for 10000 days. The alias is a name that you &mdash;
-will use later, to refer to this keystore when signing your application. </p>
-
-<p>For more information about Keytool, see the documentation at
-<a
-href="http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html">
-http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html</a></p>
-
-
-
-<h3 id="releasecompile">2. Compile the application in release mode</h3>
-
-<p>In order to release your application to users, you must compile it in release mode.
-In release mode, the compiled application is not signed by default and you will need
-to sign it with your private key.</p>
-
-<p class="caution"><strong>Caution:</strong>
-You can not release your application unsigned, or signed with the debug key.</p>
-
-<h4>With Eclipse</h4>
-
-<p>To export an <em>unsigned</em> APK from Eclipse, right-click the project in the Package
-Explorer and select <strong>Android Tools</strong> > <strong>Export Unsigned Application
-Package</strong>. Then specify the file location for the unsigned APK.
-(Alternatively, open your <code>AndroidManifest.xml</code> file in Eclipse, select
-the <strong>Manifest</strong> tab, and click <strong>Export an unsigned APK</strong>.)</p>
-
-<p>Note that you can combine the compiling and signing steps with the Export Wizard. See
-<a href="#ExportWizard">Compiling and signing with Eclipse ADT</a>.</p>
-
-<h4>With Ant</h4>
-
-<p>If you are using Ant, you can enable release mode by using the <code>release</code> option
-with the <code>ant</code> command. For example, if you are running Ant from the
-directory containing your {@code build.xml} file, the command would look like this:</p>
-
-<pre>$ ant release</pre>
-
-<p>By default, the build script compiles the application APK without signing it. The output file
-in your project {@code bin/} will be <code><em>&lt;your_project_name></em>-unsigned.apk</code>.
-Because the application APK is still unsigned, you must manually sign it with your private
-key and then align it using {@code zipalign}.</p>
-
-<p>However, the Ant build script can also perform the signing
-and aligning for you, if you have provided the path to your keystore and the name of
-your key alias in the project's {@code ant.properties} file. With this information provided,
-the build script will prompt you for your keystore and alias password when you perform
-<code>ant release</code>, it will sign the package and then align it. The final output
-file in {@code bin/} will instead be
-<code><em>&lt;your_project_name></em>-release.apk</code>. With these steps
-automated for you, you're able to skip the manual procedures below (steps 3 and 4).
-To learn how to specify your keystore and alias in the {@code ant.properties} file,
-see <a href="{@docRoot}guide/developing/building/building-cmdline.html#ReleaseMode">
-Building and Running Apps on the Command Line</a>.</p>
-
-
-
-<h3 id="signapp">3. Sign your application with your private key</h3>
-
-<p>When you have an application package that is ready to be signed, you can do sign it
-using the Jarsigner tool. Make sure that you have Jarsigner available on your
-machine, as described in <a href="#setup">Basic Setup</a>. Also, make sure that
-the keystore containing your private key is  available.</p>
-
-<p>To sign your application, you run Jarsigner, referencing both the
-application's APK and the keystore containing the private key with which to
-sign the APK. The table below shows the options you could use. </p>
-
-<table>
-<tr>
-<th>Jarsigner Option</th>
-<th>Description</th>
-</tr>
-<tr>
-<td><code>-keystore&nbsp;&lt;keystore-name&gt;.keystore</code></td><td>The name of
-the keystore containing your private key.</td>
-</tr>
-<tr>
-<td><code>-verbose</code></td><td>Enable verbose output.</td>
-</tr>
-<tr>
-<td><code>-sigalg</code></td><td>The name of the signature algorithim to use in signing the APK.
-Use the value {@code MD5withRSA}.</td>
-</tr>
-<tr>
-<td><code>-digestalg</code></td><td>The message digest algorithim to use in processing the entries
-of an APK. Use the value {@code SHA1}.</td>
-</tr>
-<tr>
-<td><code>-storepass &lt;password&gt;</code></td><td><p>The password for the
-keystore. </p><p>As a security precaution, do not include this option
-in your command line unless you are working at a secure computer.
-If not supplied, Jarsigner prompts you to enter the password. In this
-way, your password is not stored in your shell history.</p></td>
-</tr>
-<tr>
-<td><code>-keypass &lt;password&gt;</code></td><td><p>The password for the private
-key. </p><p>As a security precaution, do not include this option
-in your command line unless you are working at a secure computer.
-If not supplied, Jarsigner prompts you to enter the password. In this
-way, your password is not stored in your shell history.</p></td>
-</tr>
-</table>
-
-<p>Here's how you would use Jarsigner to sign an application package called
-<code>my_application.apk</code>, using the example keystore created above.
-</p>
-
-<pre>$ jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore my-release-key.keystore
-my_application.apk alias_name</pre>
-
-<p>Running the example command above, Jarsigner prompts you to provide
-passwords for the keystore and key. It then modifies the APK
-in-place, meaning the APK is now signed. Note that you can sign an
-APK multiple times with different keys.</p>
-
-<p class="caution"><strong>Caution:</strong> As of JDK 7, the default signing algorithim has
-changed, requiring you to specify the signature and digest algorithims ({@code -sigalg} and {@code
--digestalg}) when you sign an APK.</p>
-
-<p>To verify that your APK is signed, you can use a command like this:</p>
-
-<pre>$ jarsigner -verify my_signed.apk</pre>
-
-<p>If the APK is signed properly, Jarsigner prints "jar verified".
-If you want more details, you can try one of these commands:</p>
-
-<pre>$ jarsigner -verify -verbose my_application.apk</pre>
-
-<p>or</p>
-
-<pre>$ jarsigner -verify -verbose -certs my_application.apk</pre>
-
-<p>The command above, with the <code>-certs</code> option added, will show you the
-"CN=" line that describes who created the key.</p>
-
-<p class="note"><strong>Note:</strong> If you see "CN=Android Debug", this means the APK was
-signed with the debug key generated by the Android SDK. If you intend to release
-your application, you must sign it with your private key instead of the debug
-key.</p>
-
-<p>For more information about Jarsigner, see the documentation at
-<a href="http://docs.oracle.com/javase/6/docs/technotes/tools/windows/jarsigner.html">
-http://docs.oracle.com/javase/6/docs/technotes/tools/windows/jarsigner.html</a></p>
-
-
-<h3 id="align">4. Align the final APK package</h3>
-
-<p>Once you have signed the APK with your private key, run <code>zipalign</code> on the file.
-This tool ensures that all uncompressed data starts with a particular byte alignment,
-relative to the start of the file. Ensuring alignment at 4-byte boundaries provides
-a performance optimization when installed on a device. When aligned, the Android
-system is able to read files with {@code mmap()}, even if
-they contain binary data with alignment restrictions, rather than copying all
-of the data from the package. The benefit is a reduction in the amount of
-RAM consumed by the running application.</p>
-
-<p>The <code>zipalign</code> tool is provided with the Android SDK, inside the
-<code>tools/</code> directory. To align your signed APK, execute:</p>
-
-<pre>$ zipalign -v 4 <em>your_project_name</em>-unaligned.apk <em>your_project_name</em>.apk</pre>
-
-<p>The {@code -v} flag turns on verbose output (optional). {@code 4} is the
-byte-alignment (don't use anything other than 4). The first file argument is
-your signed {@code .apk} file (the input) and the second file is the destination {@code .apk} file
-(the output). If you're overriding an existing APK, add the {@code -f} flag.</p>
-
-<p class="caution"><strong>Caution:</strong> Your input APK must be signed with your
-private key <strong>before</strong> you optimize the package with {@code zipalign}.
-If you sign it after using {@code zipalign}, it will undo the alignment.</p>
-
-<p>For more information, read about the
-<a href="{@docRoot}guide/developing/tools/zipalign.html">zipalign</a> tool.
-
-
-<h3 id="ExportWizard">Compile and sign with Eclipse ADT</h3>
-
-<p>If you are using Eclipse with the ADT plugin, you can use the Export Wizard to
-export a <em>signed</em> APK (and even create a new keystore,
-if necessary). The Export Wizard performs all the interaction with
-the Keytool and Jarsigner for you, which allows you to sign the package using a GUI
-instead of performing the manual procedures to compile, sign,
-and align, as discussed above. Once the wizard has compiled and signed your package,
-it will also perfom package alignment with {@code zipalign}.
-Because the Export Wizard uses both Keytool and Jarsigner, you should
-ensure that they are accessible on your computer, as described above
-in the <a href="#setup">Basic Setup for Signing</a>.</p>
-
-<p>To create a signed and aligned APK in Eclipse:</p>
-
-<ol>
-  <li>Select the project in the Package
-Explorer and select <strong>File > Export</strong>.</li>
-  <li>Open the Android folder, select Export Android Application,
-  and click <strong>Next</strong>.
-  <p>The Export Android Application wizard now starts, which will
-  guide you through the process of signing your application,
-  including steps for selecting the private key with which to sign the APK
-  (or creating a new keystore and private key).</p>
-  <li>Complete the Export Wizard and your application will be compiled,
-  signed, aligned, and ready for distribution.</li>
-</ol>
-
-
-
-<h2 id="secure-key">Securing Your Private Key</h2>
-
-<p>Maintaining the security of your private key is of critical importance, both
-to you and to the user. If you allow someone to use your key, or if you leave
-your keystore and passwords in an unsecured location such that a third-party
-could find and use them, your authoring identity and the trust of the user
-are compromised. </p>
-
-<p>If a third party should manage to take your key without your knowledge or
-permission, that person could sign and distribute applications that maliciously
-replace your authentic applications or corrupt them. Such a person could also
-sign and distribute applications under your identity that attack other
-applications or the system itself, or corrupt or steal user data. </p>
-
-<p>Your reputation as a developer entity depends on your securing your private
-key properly, at all times, until the key is expired. Here are some tips for
-keeping your key secure: </p>
-
-<ul>
-<li>Select strong passwords for the keystore and key.</li>
-<li>When you generate your key with Keytool, <em>do not</em> supply the
-<code>-storepass</code> and <code>-keypass</code> options at the command line.
-If you do so, your passwords will be available in your shell history,
-which any user on your computer could access.</li>
-<li>Similarly, when signing your applications with Jarsigner,
-<em>do not</em> supply the <code>-storepass</code> and <code>-keypass</code>
-options at the command line. </li>
-<li>Do not give or lend anyone your private key, and do not let unauthorized
-persons know your keystore and key passwords.</li>
-</ul>
-
-<p>In general, if you follow common-sense precautions when generating, using,
-and storing your key, it will remain secure. </p>
\ No newline at end of file
diff --git a/docs/html/guide/publishing/licensing.html b/docs/html/guide/publishing/licensing.html
deleted file mode 100644
index 8e97f32..0000000
--- a/docs/html/guide/publishing/licensing.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh"
-content="0;url=http://developer.android.com/guide/market/licensing/index.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should have been redirected. Please <a
-href="http://developer.android.com/guide/market/licensing/index.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/publishing/preparing.jd b/docs/html/guide/publishing/preparing.jd
deleted file mode 100644
index 8e75728..0000000
--- a/docs/html/guide/publishing/preparing.jd
+++ /dev/null
@@ -1,358 +0,0 @@
-page.title=Preparing for Release
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Quickview</h2>
-    <ul>
-      <li>Learn which resources you'll need to release your app.</li>
-      <li>Find out how to configure and build your app for release.</li>
-      <li>Learn best practices for releasing your app.</li>
-    </ul>
-    <h2>In this document</h2>
-    <ol>
-      <li><a href="#publishing-intro">Introduction</a></li>
-      <li><a href="#publishing-gather">Gathering Materials and Resources</a></li>
-      <li><a href="#publishing-configure">Configuring Your Application</a></li>
-      <li><a href="#publishing-build">Building Your Application</a></li>
-      <li><a href="#publishing-resources">Preparing External Servers and Resources</a></li>
-      <li><a href="#publishing-test">Testing Your Application for Release</a></li>
-    </ol>
-    <h2>See also</h2>
-    <ol>
-      <li><a href="{@docRoot}guide/publishing/publishing_overview.html">Publishing Overview</a></li>
-      <li><a href="{@docRoot}guide/publishing/app-signing.html">Signing Your Applications</a></li>
-      <li><a href="{@docRoot}guide/publishing/publishing.html">Publishing on Google Play</a></li>
-    </ol>
-  </div>
-</div>
-
-<p>Before you distribute your Android application to users you need to prepare it for release. The
-preparation process is a required <a href="{@docRoot}guide/developing/index.html">development
-task</a> for all Android applications and is the first step in the publishing process (see figure
-1).</p>
-
-<p>When you prepare your application for release, you configure, build, and test a release
-version of your application. The configuration tasks are straightforward, involving basic code
-cleanup and code modification tasks that help optimize your application. The build process is
-similar to the debug build process and can be done using JDK and Android SDK tools. The testing
-tasks serve as a final check, ensuring that your application performs as expected under real-world
-conditions. When you are finished preparing your application for release you have a signed
-<code>.apk</code> file, which you can distribute directly to users or distribute through an
-application marketplace such as Google Play.</p>
-
-<p>This document summarizes the main tasks you need to perform to prepare your application for
-release. The tasks that are described in this document apply to all Android applications regardless
-how they are released or distributed to users. If you are releasing your application through Google
-Play, you should also read <a href="{@docRoot}guide/publishing/publishing.html">Publishing on
-Google Play</a> to be sure your release-ready application satisfies all Google Play
-requirements.</p>
-
-<p class="note"><strong>Note:</strong> As a best practice, your application should meet all of your
-release criteria for functionality, performance, and stability before you perform the tasks outlined
-in this document.</p>
-
-<img src="{@docRoot}images/publishing/publishing_overview_prep.png"
-     alt="Shows how the preparation process fits into the development process"
-     height="190"
-     id="figure1" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> Preparing for release is a required <a
-href="{@docRoot}guide/developing/index.html">development
-task</a> and is the first step in the publishing process.
-</p>
-
-<h2 id="publishing-intro">Introduction</h2>
-
-<p>To release your application to users you need to create a release-ready package that users can
-install and run on their Android-powered devices. The release-ready package contains the same
-components as the debug <code>.apk</code> file &mdash; compiled source code, resources, manifest
-file, and so on &mdash; and it is built using the same build tools. However, unlike the debug
-<code>.apk</code> file, the release-ready <code>.apk</code> file is signed with your own certificate
-and it is optimized with the zipalign tool.</p>
-
-<div class="figure" style="width:331px">
-  <img src="{@docRoot}images/publishing/publishing_preparing.png"
-       alt="Shows the five tasks you perform to prepare your app for release"
-       height="450" />
-  <p class="img-caption">
-    <strong>Figure 2.</strong> You perform five main tasks to prepare your application for
-    release.
-  </p>
-</div>
-
-<p>The signing and optimization tasks are usually seamless if you are building your application with
-Eclipse and the ADT plugin or with the Ant build script (included with the Android SDK). For
-example, you can use the Eclipse Export Wizard to compile, sign, and optimize your application all
-at once. You can also configure the Ant build script to do the same when you build from the command
-line.</p>
-
-<p>To prepare your application for release you typically perform five main tasks (see figure 2).
-Each main task may include one or more smaller tasks depending on how you are releasing your
-application. For example, if you are releasing your application through Google Play you may want
-to add special filtering rules to your manifest while you are configuring your application for
-release. Similarly, to meet Google Play publishing guidelines you may have to prepare screenshots
-and create promotional text while you are gathering materials for release.</p>
-
-<p>You usually perform the tasks listed in figure 2 after you have throroughly debugged and tested
-your application. The Android SDK contains several tools to help you test and debug your Android
-applications. For more information, see the <a
-href="{@docRoot}guide/developing/debugging/index.html">Debugging</a> and <a
-href="{@docRoot}guide/developing/testing/index.html">Testing</a> sections in the Dev Guide.</p>
-
-<h2 id="publishing-gather">Gathering Materials and Resources</h2>
-
-<p>To begin preparing your application for release you need to gather several supporting items. At a
-minimum this includes cryptographic keys for signing your application and an application icon. You
-might also want to include an end-user license agreement.</p>
-
-<h4 id="publishing-keys">Cryptographic keys</h4>
-
-<p>The Android system requires that each installed application be digitally signed with a
-certificate that is owned by the application's developer (that is, a certificate for which the
-developer holds the private key). The Android system uses the certificate as a means of identifying
-the author of an application and establishing trust relationships between applications. The
-certificate that you use for signing does not need to be signed by a certificate authority; the
-Android system allows you to sign your applications with a self-signed certificate. To learn about
-certificate requirements, see <a href="{@docRoot}guide/publishing/app-signing.html#cert">Obtain a
-suitable private key</a>.</p>
-
-<p class="caution"><strong>Important:</strong> Your application must be signed with a cryptographic
-key whose validity period ends after 22 October 2033.</p>
-
-<p>You may also have to obtain other release keys if your application accesses a service or uses a
-third-party library that requires you to use a key that is based on your private key. For example,
-if your application uses the <a
-href="http://code.google.com/android/add-ons/google-apis/reference/com/google/android/maps/MapView.html">MapView</a>
-class, which is part of the <a
-href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps external
-library</a>, you will need to register your application with the Google Maps service and obtain
-a Maps API key. For information about getting a Maps API key, see <a
-href="http://code.google.com/android/add-ons/google-apis/mapkey.html"> Obtaining a Maps API
-key</a>.</p>
-
-<h4>Application Icon</h4>
-
-<p>Be sure you have an application icon and that it meets the recommended <a
-href="{@docRoot}guide/practices/ui_guidelines/icon_design_launcher.html">icon guidelines</a>. Your
-application's icon helps users identify your application on a device's Home
-screen and in the Launcher window. It also appears in Manage Applications, My Downloads, and
-elsewhere. In addition, publishing services such as Google Play display your icon to users.</p>
-
-<p class="note"><strong>Note:</strong> If you are releasing your application on Google Play, you
-need to create a high resolution
-  version of your icon. See <a
-href="https://www.google.com/support/androidmarket/developer/bin/answer.py?answer=1078870">Graphic
-Assets for your Application</a> for more information.</p>
-
-<h4>End-user License Agreement</h4>
-
-<p>Consider preparing an End User License Agreement (EULA) for your application. A EULA can help
-protect your person, organization, and intellectual property, and we recommend that you provide one
-with your application.</p>
-
-<h4>Miscellaneous Materials</h4>
-
-<p>You might also have to prepare promotional and marketing materials to publicize your application.
-For example, if you are releasing your application on Google Play you will need to prepare some
-promotional text and you will need to create screenshots of your application. For more
-information, see
-<a href="https://www.google.com/support/androidmarket/developer/bin/answer.py?answer=1078870">
-Graphic Assets for your Application</a></p>
-
-<h2 id="publishing-configure">Configuring Your Application for Release</h2>
-
-<p>After you gather all of your supporting materials you can start configuring your application
-for release. This section provides a summary of the configuration changes we recommend that you make
-to your source code, resource files, and application manifest prior to releasing your application.
-Although most of the configuration changes listed in this section are optional, they are
-considered good coding practices and we encourage you to implement them. In some cases,
-you may have already made these configuration changes as part of your development process.</p>
-
-<h4>Choose a good package name</h4>
-
-<p>Make sure you choose a package name that is suitable over the life of your application. You
-cannot change the package name after you distribute your application to users. You can set the
-package name in application's manifest file. For more information, see the <a
-href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a> attribute
-documentation.</p>
-
-<h4>Turn off logging and debugging</h4>
-
-<p>Make sure you deactivate logging and disable the debugging option before you build your
-application for release. You can deactivate logging by removing calls to
-{@link android.util.Log} methods in your source files. You can disable debugging by removing the
-<code>android:debuggable</code> attribute from the <code>&lt;application&gt;</code> tag in your
-manifest file, or by setting the <code>android:debuggable</code> attribute to
-<code>false</code> in your manifest file. Also, remove any log files or static test files that
-were created in your project.</p>
-
-<p>Also, you should remove all {@link android.os.Debug} tracing calls that you
-added to your code, such as {@link android.os.Debug#startMethodTracing()} and
-{@link android.os.Debug#stopMethodTracing()} method calls.</p>
-
-<h4>Clean up your project directories</h4>
-
-<p>Clean up your project and make sure it conforms to the directory structure described in <a
-href="{@docRoot}guide/developing/projects/index.html#ApplicationProjects">Android Projects</a>.
-Leaving stray or orphaned files in your project can prevent your application from compiling and
-cause your application to behave unpredictably. At a minimum you should do the following cleanup
-tasks:</p>
-
-<ul>
-  <li>Review the contents of your <code>jni/</code>, <code>lib/</code>, and <code>src/</code>
-  directories.  The <code>jni/</code> directory should contain only source files associated with the
-  <a href="{@docRoot}sdk/ndk/index.html">Android NDK</a>, such as
-  <code>.c</code>, <code>.cpp</code>, <code>.h</code>, and <code>.mk</code> files. The
-  <code>lib/</code> directory should contain only third-party library files or private library
-  files, including prebuilt shared and static libraries (for example, <code>.so</code> files). The
-  <code>src/</code> directory should contain only the source files for your application
-  (<code>.java</code> and <code>.aidl</code> files). The <code>src/</code> directory should not
-  contain any <code>.jar</code> files.</li>
-  <li>Check your project for private or proprietary data files that your application does not use
-  and remove them. For example, look in your project's <code>res/</code> directory for old
-  drawable files, layout files, and values files that you are no longer using and delete them.</li>
-  <li>Check your <code>lib/</code> directory for test libraries and remove them if they are no
-  longer being used by your application.</li>
-  <li>Review the contents of your <code>assets/</code> directory and your <code>res/raw/</code>
-    directory for raw asset files and static files that you need to update or remove prior to
-    release.</li>
-</ul>
-
-<h4>Review and update your manifest settings</h4>
-
-<p>Verify that the following manifest items are set correctly:</p>
-
-<ul>
-  <li><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
-  &lt;uses-permission&gt;</a> element
-    <p>You should specify only those permissions that are relevant and required for your application.</p>
-  </li>
-  <li><code>android:icon</code> and <code>android:label</code> attributes
-    <p>You must specify values for these attributes, which are located in the
-    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a>
-    element.</p>
-  </li>
-  <li><code>android:versionCode</code> and <code>android:versionName</code> attributes.
-    <p>We recommend that you specify values for these attributes, which are located in the
-      <a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
-      element. For more information see
-      <a href="{@docRoot}guide/publishing/versioning.html">Versioning your Application</a>.</p>
-  </li>
-</ul>
-
-<p>There are several additional manifest elements that you can set if you are releasing your
-application on Google Play. For example, the <code>android:minSdkVersion</code> and
-<code>android:targetSdkVersion</code> attributes, which are located in the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"> &lt;uses-sdk&gt;</a> element. For more
-information about these and other Google Play settings, see <a
-href="{@docRoot}/guide//appendix/market-filters.html">Filters on Google Play</a>.</p>
-
-<h4>Address compatibility issues</h4>
-
-<p>Android provides several tools and techniques to make your application compatible with a wide
-range of devices. To make your application available to the largest number of users, consider
-doing the following:</p>
-
-<ul>
-  <li><strong>Add support for multiple screen configurations</strong>
-    <p>Make sure you meet the
-    <a href="{@docRoot}guide/practices/screens_support.html#screen-independence">
-    best practices for supporting multiple screens</a>. By supporting multiple screen configurations
-    you can create an application that functions properly and looks good on any of the screen sizes
-    supported by Android.</p>
-  </li>
-  <li><strong>Optimize your application for Android 3.0 devices.</strong>
-    <p>If your application is designed for devices older than Android 3.0, make it compatible
-    with Android 3.0 devices by following the guidelines and best practices described in
-    <a href="{@docRoot}guide/practices/optimizing-for-3.0.html">Optimizing Apps for Android 3.0
-    </a>.</p>
-  </li>
-  <li><strong>Consider using the Support Library</strong>
-    <p>If your application is designed for devices running Android 3.x, make your application
-    compatible with older versions of Android by adding the
-    <a href="{@docRoot}sdk/compatibility-library.html">Support Library</a> to your
-    application project. The Support Library provides static support libraries that you can add to
-    your Android application, which enables you to use APIs that are either not available on
-    older platform versions or use utility APIs that are not part of the framework APIs.</p>
-  </li>
-</ul>
-
-<h4>Update URLs for servers and services</h4>
-
-<p>If your application accesses remote servers or services, make sure you are using the production
-URL or path for the server or service and not a test URL or path.</p>
-
-<h4>Implement Licensing (if you are releasing on Google Play)</h4>
-
-<p>If you are releasing a paid application through Google Play, consider adding support for
-Google Play Licensing. Licensing lets you control access to your application based on whether the
-current user has purchased it. Using Google Play Licensing is optional even if you are
-releasing your app through Google Play.</p>
-
-<p>For more information about Google Play Licensing Service and how to use it in your
-application, see <a href="{@docRoot}guide/market/licensing/index.html">Application Licensing</a>.</p>
-
-<h2 id="publishing-build">Building Your Application for Release</h2>
-
-<p>After you finish configuring your application you can build it into a release-ready
-<code>.apk</code> fle that is signed and optimized. The JDK includes the tools for signing the
-<code>.apk</code> file (Keytool and Jarsigner); the Android SDK includes the tools for compiling and
-optimizing the <code>.apk</code> file. If you are using Eclipse with the ADT plugin or you are using
-the Ant build script from the command line, you can automate the entire build process.</p>
-
-<h3>Building with Eclipse</h3>
-
-<p>You can use the Eclipse Export Wizard to build a release-ready <code>.apk</code> file that is
-signed with your private key and optimized. To learn how to run the Export Wizard, see
-<a href="{@docRoot}guide/publishing/app-signing.html#ExportWizard">Compile and sign with Eclipse
-ADT</a>. The Export Wizard compiles your application for release, signs your application with your
-private key, and optimizes your application with the zipalign tool. The Export Wizard should run
-successfully if you have run or debugged your application from Eclipse and you have no errors in
-your application (see <a href="{@docRoot}guide/developing/building/building-eclipse.html">Building
-and Running from Eclipse with ADT</a> for more information.</p>
-
-<p>The Export Wizard assumes that you have a <a href="#billing-keys">certificate and private key</a>
-suitable for signing your application. If you do not have a suitable certificate and private key,
-the Export Wizard will help you generate one (see
-<a href="{@docRoot}guide/publishing/app-signing.html">Signing Your Applications</a> for more
-information about the signing process and signing guidelines.</p>
-
-<h3>Building with Ant</h3>
-
-<p>You can use the Ant build script (included in the Android SDK) to build a release-ready
-<code>.apk</code> file that is signed with your private key and optimized. To learn how to do this,
-see <a href="{@docRoot}guide/developing/building/building-cmdline.html#ReleaseMode">Building in
-Release Mode</a>. This build method assumes you have a <a href="#billing-keys">certificate and
-private key</a> suitable for signing your application. If you do not have a suitable certificate and
-private key, the Export Wizard will help you generate one (see
-<a href="{@docRoot}guide/publishing/app-signing.html">Signing Your Applications</a> for more
-information about the signing process and signing guidelines.</p>
-
-<h2 id="publishing-resources">Preparing External Servers and Resources</h2>
-
-<p>If your application relies on a remote server, make sure the server is secure and that it is
-configured for production use. This is particularly important if you are implementing <a
-href="{@docRoot}guide/market/billing/index.html">in-app billing</a> in your application and you are
-performing the signature verification step on a remote server.</p>
-
-<p>Also, if your application fetches content from a remote server or a real-time service (such as a
-content feed), be sure the content you are providing is up to date and production-ready.</p>
-
-<h2 id="publishing-test">Testing Your Application for Release</h2>
-
-<p>Testing the release version of your application helps ensure that your application runs properly
-under realistic device and network conditions. Ideally, you should test your application on at least
-one handset-sized device and one tablet-sized device to verify that your user interface elements are
-sized correctly and that your application's performance and battery efficiency are acceptable.</p>
-
-<p>As a starting point for testing, see
-<a href="{@docRoot}guide/topics/testing/what_to_test.html">What to Test</a>. This article provides
-a summary of common Android situations that you should consider when you are testing. When you are
-done testing and you are satisfied that the release version of your application
-behaves correctly, you can release your application to users. For more information, see
-<a href="{@docRoot}guide/publishing/publishing_overview.html#publishing-release">Releasing Your
-Application to Users</a>. If you are publishing your application on Google Play, see
-<a href="{@docRoot}guide/publishing/publishing.html">Publishing on Google Play</a>.</p>
-
-
diff --git a/docs/html/guide/publishing/publishing.jd b/docs/html/guide/publishing/publishing.jd
deleted file mode 100644
index b9513ab..0000000
--- a/docs/html/guide/publishing/publishing.jd
+++ /dev/null
@@ -1,703 +0,0 @@
-page.title=Publishing on Google Play
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Quickview</h2>
-
-<ul>
-<li>Learn how to publish and update apps on Google Play.</li>
-<li>Find out how to create links to apps that are published on Google Play.</li>
-<li>Learn about Google Play features.</li>
-</ul>
-
-
-<h2>In this document</h2>
-
-<ol>
-<li><a href="#overview">About Google Play</a>
-<li><A href="#marketpublish">Publishing Apps on Google Play</a></li>
-<li><a href="#marketupgrade">Publishing Updates on Google Play</a></li>
-<li><a href="#marketLicensing">Using Google Play Licensing Service</a></li>
-<li><a href="#marketinappbilling">Using Google Play In-app Billing</a></li>
-<li><a href="#marketintent">Linking to Your Apps on Google Play</a>
-  <ol>
-    <li><a href="#OpeningDetails">Opening an app's details page</a></li>
-    <li><a href="#PerformingSearch">Performing a search</a></li>
-    <li><a href="#BuildaButton">Build a Google Play button</a></li>
-    <li><a href="#UriSummary">Summary of URI formats</a></li>
-  </ol>
-</li>
-</ol>
-
-<h2>See also</h2>
-
-<ol>
-<li><a href="{@docRoot}guide/publishing/publishing_overview.html">Publishing Overview</a></li>
-<li><a href="{@docRoot}guide/publishing/preparing.html">Preparing for Release</a></li>
-</ol>
-
-<div id="qv-extra">
-  <img id="rule" src="{@docRoot}assets/images/grad-rule-qv.png">
-  <div id="qv-sub-rule">
-    <img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0 5px;">
-    <h2 style="color:#669999;">Already know about Google Play and want to get started?</h2>
-    <p>Go to <a href="http://play.google.com/apps/publish">Google Play</a>, create a developer
-account, and upload your application. For more information about required assets, listing details,
-and publishing options, see <a
-href="http://market.android.com/support/bin/answer.py?answer=113469">Upload
-Applications</a>.</p>
-  </div>
-</div>
-
-</div>
-</div>
-
-<p>One of the most effective ways to get your application into users' hands is to
-publish it on an application marketplace like Google Play. Publishing on Google Play is a
-straightforward process that you can do in just a few simple steps&mdash;register, configure,
-upload, and publish. Registration takes only a few minutes and needs to be done only once.
-The configuration and publishing steps can all be done through the Google Play Android Developer Console
-after you register as a Google Play developer.</p>
-
-<p>To start publishing on Google Play, first read this topic and then go to the <a
-href="https://play.google.com/apps/publish">Google Play Android Developer Console</a> and register as
-a Google Play developer.</p>
-
-
-<h2 id="overview">About Google Play</h2>
-
-<p>Google Play is a robust publishing platform that helps you publicize, sell, and distribute
-your Android applications to users around the world. When you release your applications through
-Google Play you have access to a suite of developer tools that let you analyze your sales,
-identify market trends, and control who your applications are being distributed to. You also have
-access to several revenue-enhancing features, such as <a
-href="{@docRoot}guide/market/billing/index.html">in-app billing</a> and
-<a href="{@docRoot}guide/market/licensing/index.html">application licensing</a>.</p>
-
-<p>Before you can publish applications on Google Play, you need to <a
-href="http://play.google.com/apps/publish">register</a> as a Google Play developer. During the
-registration process you will need to create a developer profile, pay a registration fee, and agree
-to the <a href="http://www.android.com/us/developer-distribution-agreement.html">Google Play
-Developer Distribution Agreement</a>. After you register you can access the Developer
-Console, where you can upload applications, configure publishing options, and monitor publishing
-data. If you want to sell your applications or use the in-app billing feature, you will also need
-to set up a Google Checkout merchant account. For more information about the registration process,
-see <a href="https://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=113468">
-Developer Registration</a>.</p>
-
-<h2 id="marketpublish">Publishing Apps on Google Play</h2>
-
-<p>Publishing your application on Google Play is a simple process that involves three basic
-tasks (see figure 1):</p>
-
-<ul>
-  <li>Creating various graphical assets that
-accompany your app on Google Play.</li>
-  <li>Using the Google Play <a
-href="http://play.google.com/apps/publish">Developer Console</a> to configure publishing options,
-specify listing details, and upload your app and graphical assets to Google Play.</li>
-  <li>Reviewing your publishing settings and changing the release
-status of your app from Unpublished to Published.</li>
-</ul>
-
-<img src="{@docRoot}images/publishing/publishing_android_market.png"
-     alt="Shows the three steps that are required to publish on Google Play"
-     height="168"
-     id="figure1" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> To publish apps on Google Play you must first <a
-href="{@docRoot}guide/publishing/preparing.html">prepare your app for release</a> and then perform
-three simple tasks.
-</p>
-
-<p class="caution"><strong>Important:</strong> You must <a
-href="{@docRoot}guide/publishing/preparing.html">prepare your application for release</a> before you
-can publish it on Google Play. When you prepare your application for release you configure it for
-release and build it in release mode. Building in release mode signs your application's {@code .apk}
-file with your private release key. You cannot publish an application on Google Play unless it is
-signed with your own private release key.</p>
-
-<h3>Preparing promotional materials</h3>
-
-<p>To fully leverage the marketing and publicity capabilities of Google Play, you need to create
-several graphical assets that accompany your app on Google Play, such as screenshots, videos,
-promotional graphics, and promotional text. At a minimum you must provide two screenshots of your
-application and a high resolution application icon. The screenshots are displayed on the details
-page for your application on Google Play, and the high resolution application icon is displayed
-in various locations throughout Google Play. The high resolution icon does not replace the
-launcher icon for your application, rather, it serves as a supplemental icon and should look
-the same as your launcher icon. Promotional video,
-graphics, and text are optional, although we strongly recommended that you prepare these for your
-app. For more information about the graphic assets that accompany your application, see <a
-href="http://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=1078870">Graphic
-Assets for your Application</a>.</p>
-
-<h3>Configuring options and uploading assets</h3>
-
-<p>Google Play lets you target your application to a worldwide pool of users and devices. To
-reach these users you can use the Developer Console to configure various publishing
-options and listing details for your app. For example, you can choose the <a
-href="http://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=138294&topic=
-2365624&ctx=topic">countries</a> you want to reach, the listing languages you want to use, and the
-<a
-href="http://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=138412&topic=
-15867&ctx=topic">price</a> you want to charge in each country. You can also configure listing
-details such as the application type, <a
-href="https://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=113475&topic=
-2365760&ctx=topic">category</a>, and <a
-href="http://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=188189&topic=
-2364761&ctx=topic">content rating</a>. In addition, if you want to sell items within your app using
-the in-app billing feature, you can use the Developer Console to <a
-href="http://grendel.sea.corp.google.com:48014/guide/market/billing/billing_admin.html#billing-list
-- setup">create a product list</a> and control which items are available for purchase in your
-app.</p>
-
-<p>When you are finished setting publishing options and listing details, you can upload your assets
-and your application to Google Play. You can also upload your application as a draft
-(unpublished) application, which lets you do final testing before you publish it for final
-release.</p>
-
-<p>To learn more about Google Play publishing settings, see the following resources:</p>
-
-<ul>
-  <li><a
-href="http://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=113469&topic=
-236562&ctx=topic">Upload Applications</a>&mdash;provides a summary of the publishing settings
-you can configure for an app.</li>
-  <li><a
-href="http://support.google.com/androidmarket/developer/bin/topic.py?hl=en&topic=15867">Selling
-Your Apps</a>&mdash;provides guidance about pricing, supported currencies, tax rates, and many
-other topics related to selling apps.</li>
-  <li><a
-href="https://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=1169947&topic=
-15867&ctx=topic">Selling Apps in Multiple Currencies</a>&mdash;provides a description of how
-pricing, payouts, and exchange rates work.</li>
-</ul>
-
-<h3>Publishing your application</h3>
-
-<p>When you are satisfied that your publishing settings are correctly configured and your uploaded
-application is ready to be released to the public, you can simply click <strong>Publish</strong> in
-the Developer Console to make your app available for download
-around the world. Keep in mind, it can take several hours for your app to appear on Google
-Play after you click <strong>Publish</strong> in the Developer Console.</p>
-
-<h3>Controlling Distribution to Devices</h3>
-
-<p>If your application targets different device configurations, you can control which Android-powered
-devices have access to your application on Google Play by
-using Google Play filters. Filtering compares device configurations that you declare in your
-app's manifest file to the configuration defined by a device. For example, if you declare the camera
-filter in your manifest, only those devices that have a camera will see your app on Google
-Play. Filters must be configured in your application's manifest file when you are <a
-href="{@docRoot}guide/publishing/preparing.html">preparing your app for release</a> (that is, before
-you upload your app to Google Play). For more information, see <a
-href="{@docRoot}guide/appendix/market-filters.html">Filters on Google Play</a>.</p>
-
-<p>You can also use the multiple APK feature to distribute different {@code .apk} files under the same
-application listing and the same package name; however, you should use this option only as a last
-resort. Android applications usually run on most compatible devices with a single APK, by supplying
-alternative resources for different configurations (for example, different layouts for different screen
-sizes) and the Android system selects the appropriate resources for the device at runtime. In a
-few cases, however, a single APK is unable to support all device configurations, because alternative
-resources make the APK file too big (greater than 50MB) or other technical challenges prevent a
-single APK from working on all devices. Although we encourage you to develop and publish a single
-APK that supports as many device configurations as possible, doing so is sometimes
-not possible. To help you publish your application for as many devices as possible, Google Play
-allows you to publish multiple APKs under the same application listing. Google Play then supplies
-each APK to the appropriate devices based on configuration support you've declared in the manifest
-file of each APK. To use this feature, you need to build your separate {@code .apk} files when you are <a
-href="{@docRoot}guide/publishing/preparing.html">preparing your app for release</a> (that is, before
-you upload your app to Google Play). For more information, see <a
-href="{@docRoot}guide/market/publishing/multiple-apks.html">Multiple APK Support</a>.</p>
-
-<h2 id="marketupgrade">Publishing Updates on Google Play</h2>
-
-<p>At any time after publishing an application on Google Play, you can upload
-and publish an update to the same application package. When you publish an
-update to an application, users who have already installed the
-application may receive a notification that an update is
-available for the application. They can then choose to update the application
-to the latest version.</p>
-
-<p>Before uploading the updated application, be sure that you have incremented
-the <code>android:versionCode</code> and <code>android:versionName</code>
-attributes in the <a
-href="{@docRoot}guide/topics/manifest/manifest-element.html"><code>&lt;manifest&gt;</code></a>
-element of the manifest file. Also, the package name must be the same as the existing version and
-the {@code .apk} file must be signed with the same private key. If the package name and signing
-certificate do <em>not</em> match those of the existing version, Google Play will
-consider it a new application, publish it as such, and will not offer it to existing users as an
-update.</p>
-
-<p>If you plan to publish your application on Google Play, you must make sure
-  that it meets the requirements listed below, which are enforced by Google Play
-  when you upload the application.</p>
-
-<h2 id="marketLicensing">Using Google Play Licensing Service</h2>
-
-<p>Google Play offers a licensing service that lets you enforce licensing
-policies for paid applications that you publish through Google Play. With
-Google Play Licensing, your applications can query Google Play at runtime
-to obtain the licensing status for the current user, then allow or disallow
-further use of the application as appropriate. Using the service, you can apply a flexible
-licensing policy on an application-by-application basis&mdash;each
-application can enforce its licensing status in the way most appropriate
-for it. </p>
-
-<p>Any application that you publish through Google Play can use the Google
-Play Licensing Service. The service uses no dedicated framework APIs, so you can
-add licensing to any application that uses a minimum API Level of 3 or
-higher.</p>
-
-<p>For complete information about Google Play Licensing Service and how to
-use it in your application, read <a
-href="{@docRoot}guide/market/licensing/index.html">Application Licensing</a>.</p>
-
-<h2 id="marketinappbilling">Using Google Play In-app Billing</h2>
-
-<p><a href="{@docRoot}guide/market/billing/billing_overview.html">Google Play In-app Billing</a>
-is a Google Play service that lets you sell digital content in your applications. You can use
-the service to sell a wide range of content, including downloadable  content such as media files or
-photos, and virtual content such as game levels or potions.</p>
-
-<p>When you use Google Play's in-app billing service to sell an item, Google Play handles all
-billing details so your application never has to directly process any financial transactions.
-Google Play uses the same checkout service that is used for application purchases, so your users
-experience a consistent and familiar purchase flow (see figure 1). Also, the transaction fee for
-in-app purchases is the same as the transaction fee for application purchases (30%).</p>
-
-<p>Any application that you publish through Google Play can implement in-app billing. No special
-account or registration is required other than a Google Play publisher account and a Google
-Checkout Merchant account. Also, because the service uses no dedicated framework APIs, you can add
-in-app billing to any application that uses a minimum API level of 4 or higher.</p>
-
-<p>To help you integrate in-app billing into your application, the Android SDK provides a <a
-href="{@docRoot}guide/market/billing/billing_integrate.html#billing-download">sample application</a>
-that demonstrates a simple implementation of in-app billing. The sample application contains
-examples of billing-related classes you can use to implement in-app billing in your application. It
-also contains examples of the database, user interface, and business logic you might use to
-implement in-app billing. For more information about the in-app billing feature, see the
-<a href="{@docRoot}guide/market/billing/index.html">In-app Billing documentation</a>.</p>
-
-<h2 id="marketintent">Linking to Your Apps on Google Play</h2>
-
-<p>To help users discover your published applications, you can use two special Google Play URIs
-that direct users to your application's details page or perform a search for all of your published
-applications on Google Play. You can use these URIs to create a button in your application or a
-link on a web page that:</p>
-
-<ul>
-  <li>Opens your application's details page in the Google Play application or web site.</li>
-  <li>Searches for all your published applications in the Google Play application or web
-site.</li>
-</ul>
-
-<p>You can launch the Google Play application or web site in the following ways:</p>
-<ul>
-  <li>Initiate an {@link android.content.Intent} from your application that launches the
-Google Play application on the user's device.</li>
-  <li>Provide a link on a web page that opens the Google Play web site (but will also
-open the Google Play application if clicked from a device).</li>
-</ul>
-
-<p>In both cases, whether you want to initiate the action from your application or from a web
-page, the URIs are quite similar. The only difference is the URI prefix.</p>
-
-<p>To open the Google Play application from your application, the prefix for the intent's data
-URI is:</p>
-
-<p style="margin-left:2em"><code>market://</code></p>
-
-<p>To open Google Play store from your web site, the prefix for the link URI is:</p>
-
-<p style="margin-left:2em"><code>http://play.google.com/store/</code></p>
-
-<p>The following sections describe how to create a complete URI for each action.</p>
-
-<p class="note"><strong>Note:</strong> If you create a link to open Google Play from your web
-site and the user selects it from an Android-powered device, the device's Google Play application will
-resolve the link so the user can use the Google Play application on the device instead of opening the web
-site. As such, you should always use {@code http://play.google.com/store/apps/...} URIs when
-creating a link on
-a web page. When pointing to your apps from within your Android app, use the
-{@code market://} URIs in an intent, so that the Google Play application always opens.</p>
-
-
-<h3 id="OpeningDetails">Opening an app's details page</h3>
-
-<p>As described above, you can open the details page for a specific application either on the
-Google Play application or the Google Play web site. The details page allows the user to see
-the application description, screenshots, reviews and more, and choose to install it.</p>
-
-<p>The format for the URI that opens the details page is:</p>
-
-<p style="margin-left:2em"><code>&lt;URI_prefix&gt;<b>apps/details?id=</b>&lt;package_name&gt;</code></p>
-
-<p>The <code>&lt;package_name&gt;</code> is a placeholder for the target application's
-fully-qualified package name, as declared in the <a
-href="{@docRoot}guide/topics/manifest/manifest-element.html#package">{@code
-package}</a> attribute of the <a href="{@docRoot}guide/topics/manifest/manifest-element.html">{@code
-&lt;manifest&gt;}</a> element.</p>
-
-<p>For example: <code>http://play.google.com/store/apps/details?id=com.example.myapp</code></p>
-
-
-<h4>Opening the app details page from your Android app</h4>
-
-<p>To open the Google Play details page from your application,
-create an intent with the {@link android.content.Intent#ACTION_VIEW} action and include a data URI
-in this format:</p>
-
-<p style="margin-left:2em"><code>market://details?id=&lt;package_name&gt;</code></p>
-
-<p>For example, here's how you can create an intent and open an application's details page in
-Google Play:</p>
-
-<pre>
-Intent intent = new Intent(Intent.ACTION_VIEW);
-intent.setData(Uri.parse("market://details?id=com.example.android"));
-startActivity(intent);
-</pre>
-
-<p>This will open the Google Play application on the device to view the {@code
-com.example.android} application.</p>
-
-
-<h4>Opening the app details page from a web site</h4>
-
-<p>To open the details page from your web site, create a link with a URI in this
-format:</p>
-
-<p style="margin-left:2em">
-  <code>http://play.google.com/store/apps/details?id=&lt;package_name&gt;</code>
-</p>
-
-<p>For example, here's a link that opens an application's details page on Google Play:</p>
-
-<pre>
-&lt;a href="http://play.google.com/store/apps/details?id=com.example.android">App Link&lt;/a>
-</pre>
-
-<p>When clicked from a desktop web browser, this opens the Google Play web site to view the
-{@code com.example.android} application. When clicked from an Android-powered device, users are
-given the option to use either their web browser or the Google Play application to view the
-application.</p>
-
-
-
-<h3 id="PerformingSearch">Performing a search</h3>
-
-<p>To initiate a search on Google Play, the format for the URI is:</p>
-
-<p style="margin-left:2em">
-  <code>&lt;URI_prefix&gt;<b>search?q=</b>&lt;query&gt;</code>
-</p>
-
-<p>The <code>&lt;query&gt;</code> is a placeholder for the search query to execute in Google
-Play. The query can be a raw text string or you can include a parameter that performs a search
-based on the publisher name:</p>
-
-<ul>
-  <li>To perform a raw text search, append the query string:
-  <p><code>&lt;URI_prefix&gt;<b>search?q=</b>&lt;search_query&gt;</code></p></li>
-
-  <li>To search based on the publisher name, use the {@code pub:} parameter in the query, followed
-by the publisher name:
-  <p><code>&lt;URI_prefix&gt;<b>search?q=pub:</b>&lt;publisher_name&gt;</code></p>
-  <p>You can use this type of search to show all of your published applications.</p></li>
-</ul>
-
-
-<h4>Searching from your Android app</h4>
-
-<p>To initiate a search on Google Play from your application, create an intent with the
-{@link android.content.Intent#ACTION_VIEW} action and include a data URI in this format:</p>
-
-<p style="margin-left:2em"><code>market://search?q=&lt;query&gt;</code></p>
-
-<p>The query may include the {@code pub:} parameter described above.</p>
-
-<p>For example, here's how you can initiate a search in the Google Play application, based on the
-publisher name:</p>
-
-<pre>
-Intent intent = new Intent(Intent.ACTION_VIEW);
-intent.setData(Uri.parse("market://search?q=pub:Your Publisher Name"));
-startActivity(intent);
-</pre>
-
-<p>This opens the Google Play application to perform the search. The search result shows all
-applications published by the publisher that are compatible with the current device.</p>
-
-
-<h4>Searching from a web site</h4>
-
-<p>To initiate a search on Google Play from your web site, create a link with a URI in this
-format:</p>
-
-<p style="margin-left:2em">
-  <code>http://play.google.com/store/search?q=&lt;query&gt;</code>
-</p>
-
-<p>The query may include the {@code pub:} parameter described above.</p>
-
-<p>For example, here's a link that initiates a search on Google Play, based on the
-publisher name:</p>
-
-<pre>
-&lt;a href="http://play.google.com/store/search?q=pub:Your Publisher Name">Search Link&lt;/a>
-</pre>
-
-<p>When clicked from a desktop web browser, this opens the Google Play web site and performs the
-search. When clicked from an Android-powered device, users are given the option to use either their
-web browser or the Google Play application to perform the search.</p>
-
-
-
-<h3 id="BuildaButton">Build a Google Play button</h3>
-
-<p>Use the following form to create a button for your web site that takes users to your application
-on Google Play. Input either your application's package name or your publisher name and the button
-will take users to Google Play to either view your application's information or view a list of your
-published apps. If users click the button while on an Android-powered device, the Google Play
-application will respond to show users your application(s).</p>
-
-<p>This form offers two styles of the official brand badge each at recommended sizes. You can pick
-between either "Get it on Google Play" or "Android app on Google Play." You should not modify the
-badge images in any way. For more usage guidelines,
-see the <a href="http://www.android.com/branding.html">Android Brand Guidelines</a>.</p>
-
-<style type="text/css">
-
-form.button-form {
-  margin-top:2em;
-}
-
-/* the label and input elements are blocks that float left in order to
-   keep the left edgets of the input aligned, and IE 6/7 do not fully support "inline-block" */
-label.block {
-  display: block;
-  float: left;
-  width: 100px;
-  padding-right: 10px;
-}
-
-input.text {
-  display: block;
-  float: left;
-  width: 250px;
-}
-
-div.button-row {
-  white-space:nowrap;
-  min-height:80px;
-}
-
-div.button-row input {
-  vertical-align:120%;
-}
-
-#jd-content div.button-row img {
-  margin: 0;
-}
-
-</style>
-
-<script type="text/javascript">
-
-// variables for creating 'try it out' demo button
-var imagePath = "http://www.android.com/images/brand/"
-var linkStart = "<a href=\"http://play.google.com/store/";
-var imageStart = "\">\n"
-        + "  <img alt=\"";
-  // leaves opening for the alt text value
-var imageSrc = "\"\n       src=\"" + imagePath;
-  // leaves opening for the image file name
-var imageEnd = ".png\" />\n</a>";
-
-// variables for creating code snippet
-var linkStartCode = "&lt;a href=\"http://play.google.com/store/";
-var imageStartCode = "\"&gt;\n"
-        + "  &lt;img alt=\"";
-  // leaves opening for the alt text value
-var imageSrcCode = "\"\n       src=\"" + imagePath;
-  // leaves opening for the image file name
-var imageEndCode = ".png\" />\n&lt;/a>";
-
-/** Generate the HTML snippet and demo based on form values */
-function buildButton(form) {
-  var selectedValue = $('form input[type=radio]:checked').val();
-  var altText = selectedValue.indexOf("get_it") != -1 ? "Get it on Google Play" : "Android app on Google Play";
-
-  if (form["package"].value != "com.example.android") {
-    $("#preview").show();
-    $("#snippet").show().html(linkStartCode + "apps/details?id=" + form["package"].value
-            + imageStartCode + altText + imageSrcCode
-            + selectedValue + imageEndCode);
-    $("#button-preview").html(linkStart + "apps/details?id=" + form["package"].value
-            + imageStart + altText + imageSrc
-            + selectedValue + imageEnd);
-  } else if (form["publisher"].value != "Example, Inc.") {
-    $("#preview").show();
-    $("#snippet").show().html(linkStartCode + "search?q=pub:" + form["publisher"].value
-            + imageStartCode + altText + imageSrcCode
-            + selectedValue + imageEndCode);
-    $("#button-preview").html(linkStart + "search?q=pub:" + form["publisher"].value
-            + imageStart + altText + imageSrc
-            + selectedValue + imageEnd);
-  } else {
-    alert("Please enter your package name or publisher name");
-  }
-  return false;
-}
-
-/** Listen for Enter key */
-function onTextEntered(event, form, me) {
-  // 13 = enter
-  if (event.keyCode == 13) {
-    buildButton(form);
-  }
-}
-
-/** When input is focused, remove example text and disable other input */
-function onInputFocus(object, example) {
-  if (object.value == example) {
-    $(object).val('').css({'color' : '#000'});
-  }
-  $('input[type="text"]:not(input[name='+object.name+'])',
-          object.parentNode).attr('disabled','true');
-  $('#'+object.name+'-clear').show();
-}
-
-/** When input is blured, restore example text if appropriate and enable other input */
-function onInputBlur(object, example) {
-  if (object.value.length < 1) {
-    $(object).attr('value',example).css({'color':'#ccc'});
-    $('input[type="text"]', object.parentNode).removeAttr('disabled');
-    $('#'+object.name+'-clear').hide();
-  }
-}
-
-/** Clear the form to start over */
-function clearLabel(id, example) {
-  $("#preview").hide();
-  $('#'+id+'').html('').attr('value',example).css({'color':'#ccc'});
-  $('input[type="text"]', $('#'+id+'').parent()).removeAttr('disabled');
-  $('#'+id+'-clear').hide();
-  return false;
-}
-
-/** When the doc is ready, find the inputs and color the input grey if the value is the example
-    text. This is necessary to handle back-navigation, which can auto-fill the form with previous
-    values (and text should not be grey) */
-$(document).ready(function() {
-  $(".button-form input.text").each(function(index) {
-    if ($(this).val() == $(this).attr("default")) {
-      $(this).css("color","#ccc");
-    } else {
-      /* This is necessary to handle back-navigation to the page after form was filled */
-      $('input[type="text"]:not(input[name='+this.name+'])',
-              this.parentNode).attr('disabled','true');
-      $('#'+this.name+'-clear').show();
-    }
-  });
-});
-
-</script>
-
-<form class="button-form">
-  <label class="block" for="package">Package name:</label>
-  <input class="text" type="text" id="package" name="package"
-         value="com.example.android"
-         default="com.example.android"
-         onfocus="onInputFocus(this, 'com.example.android')"
-         onblur="onInputBlur(this, 'com.example.android')"
-         onkeyup="return onTextEntered(event, this.parentNode, this)"/>&nbsp;
-         <a id="package-clear" style="display:none" href="#"
-            onclick="return clearLabel('package','com.example.android');">clear</a>
-  <p style="clear:both;margin:0">&nbsp;<em>or</em></p>
-  <label class="block" style="margin-top:5px" for="publisher">Publisher name:</label>
-  <input class="text" type="text" id="publisher" name="publisher"
-         value="Example, Inc."
-         default="Example, Inc."
-         onfocus="onInputFocus(this, 'Example, Inc.')"
-         onblur="onInputBlur(this, 'Example, Inc.')"
-         onkeyup="return onTextEntered(event, this.parentNode, this)"/>&nbsp;
-         <a id="publisher-clear" style="display:none" href="#"
-            onclick="return clearLabel('publisher','Example, Inc.');">clear</a>
-         <br/><br/>
-
-<div class="button-row">
-  <input type="radio" name="buttonStyle" value="get_it_on_play_logo_small" id="ns" checked="checked" />
-    <label for="ns"><img src="http://www.android.com/images/brand/get_it_on_play_logo_small.png"
-alt="Get it on Google Play (small)" /></label>
-    &nbsp;&nbsp;&nbsp;&nbsp;
-  <input type="radio" name="buttonStyle" value="get_it_on_play_logo_large" id="nm" />
-    <label for="nm"><img src="http://www.android.com/images/brand/get_it_on_play_logo_large.png"
-alt="Get it on Google Play (large)" /></label>
-</div>
-
-<div class="button-row">
-  <input type="radio" name="buttonStyle" value="android_app_on_play_logo_small" id="ws" />
-    <label for="ws"><img src="http://www.android.com/images/brand/android_app_on_play_logo_small.png"
-alt="Android app on Google Play (small)" /></label>
-    &nbsp;&nbsp;&nbsp;&nbsp;
-  <input type="radio" name="buttonStyle" value="android_app_on_play_logo_large" id="wm" />
-    <label for="wm"><img src="http://www.android.com/images/brand/android_app_on_play_logo_large.png"
-alt="Android app on Google Play (large)" /></label>
-</div>
-
-  <input type="button" onclick="return buildButton(this.parentNode)" value="Build my button"
-style="padding:5px" />
-  <br/>
-</form>
-
-<div id="preview" style="display:none">
-  <p>Copy and paste this HTML into your web site:</p>
-  <textarea id="snippet" cols="100" rows="5" onclick="this.select()"
-style="font-family:monospace;background-color:#efefef;padding:5px;display:none;margin-bottom:1em">
-  </textarea >
-
-<p>Try it out:</p>
-<div id="button-preview" style="margin-top:1em"></div>
-</div>
-
-
-
-
-
-
-<h3 id="UriSummary">Summary of URI formats</h3>
-
-<p>The table below provides a summary of the URIs currently supported by the Google Play (both on
-the web and in the Android application), as discussed in the previous sections.</p>
-
-<table>
-<tr>
-<th>For this result</th>
-<th>Use this URI in a web page link</th>
-<th>Or this URI in an {@link android.content.Intent#ACTION_VIEW} intent</th>
-</tr>
-
-<tr>
-<td>Display the details screen for a specific application</td>
-<td><code>http://play.google.com/store/apps/details?id=&lt;package_name&gt;</code>
-<td><code>market://details?id=&lt;package_name&gt;</code></td>
-</tr>
-
-<tr>
-<td>Search for applications using a general string query.</td>
-<td><code>http://play.google.com/store/search?q=&lt;query&gt;</code></td>
-<td><code>market://search?q=&lt;query&gt;</code></td>
-</tr>
-
-<tr>
-<td>Search for applications by publisher name</td>
-<td><nobr><code>http://play.google.com/store/search?q=pub:&lt;publisher_name&gt;</code></nobr></td>
-<td><nobr><code>market://search?q=pub:&lt;publisher_name&gt;</code></nobr></td>
-</tr>
-
-</table>
diff --git a/docs/html/guide/publishing/publishing_overview.jd b/docs/html/guide/publishing/publishing_overview.jd
deleted file mode 100755
index 6fb77e1..0000000
--- a/docs/html/guide/publishing/publishing_overview.jd
+++ /dev/null
@@ -1,231 +0,0 @@
-page.title=Publishing Overview
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>Quickview</h2>
-  <ul>
-    <li>Learn how to publish Android apps.</li>
-    <li>Find out how to prepare apps for release.</li>
-    <li>Learn how to release apps to users.</li>
-  </ul>
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#publishing-prepare">Preparing Your Application for Release</a></li>
-    <li><a href="#publishing-release">Releasing Your Application to Users</a>
-    <ol>
-      <li><a href="#publishing-market">Releasing on Google Play</a></li>
-      <li><a href="#publishing-website">Releasing on your own website</a></li>
-      <li><a href="#publishing-email">Releasing through email</a></li>
-    </ol>
-  </ol>
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}guide/publishing/preparing.html">Preparing for
-    Release</a></li>
-    <li><a href="{@docRoot}guide/publishing/publishing.html">Publishing on Google Play</a></li>
-  </ol>
-</div>
-</div>
-
-<p>Publishing is the process that makes your Android applications available to users. When you
-publish an Android application you perform two main tasks:</p>
-
-<ul>
-  <li>You prepare the application for release.
-    <p>During the preparation step you build a release version of your application, which users can
-      download and install on their Android-powered devices.</p>
-  </li>
-  <li>You release the application to users.
-    <p>During the release step you publicize, sell, and distribute the release version of your
-      application to users.</p>
-  </li>
-</ul>
-
-<p>Usually, you release your application through an application marketplace, such as Google Play.
-However, you can also release applications by sending them directly to users or by letting users
-download them from your own website.</p>
-
-<p>Figure 1 shows how the publishing process fits into the overall Android <a
-href="{@docRoot}guide/developing/index.html">application development process</a>.
-The publishing process is typically performed after you finish testing your application in a debug
-environment. Also, as a best practice, your application should meet all of your release criteria for
-functionality, performance, and stability before you begin the publishing process.</p>
-
-<img src="{@docRoot}images/publishing/publishing_overview.png" alt="Shows where the publishing
-       process fits into the overall development process" height="86" id="figure1" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> Publishing is the last phase of the Android <a
-href="{@docRoot}guide/developing/index.html">application development process</a>.
-</p>
-
-<h2 id="publishing-prepare">Preparing Your Application for Release</h2>
-
-<p>Preparing your application for release is a multi-step process that involves the following
-tasks:</p>
-
-<ul>
-
-  <li>Configuring your application for release.
-    <p>At a minimum you need to remove {@link android.util.Log} calls and remove the
-    <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
-    attribute from your manifest file. You should also provide values for the
-    <code>android:versionCode</code> and <code>android:versionName</code> attributes, which are
-    located in the
-    <a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
-    element. You may also have to configure several other settings to meet Google Play
-    requirements or accomodate whatever method you're using to release your application.</p>
-  </li>
-  <li>Building and signing a release version of your application.
-    <p>The Android Development Tools (ADT) plugin and the Ant build script that are provided
-    with the Android SDK tools provide everything you need to build and sign a release version of
-    your application.</p>
-  </li>
-  <li>Testing the release version of your application.
-    <p>Before you distribute your application, you should thoroughly test the release version on at
-    least one target handset device and one target tablet device.</p>
-  </li>
-  <li>Updating application resources for release.
-    <p>You need to be sure that all application resources such as multimedia files and graphics
-    are updated and included with your application or staged on the proper production servers.</p>
-  </li>
-  <li>Preparing remote servers and services that your application depends on.
-    <p>If your application depends on external servers or services, you need to be sure they
-    are secure and production ready.</p>
-  </li>
-</ul>
-
-<p>You may have to perform several other tasks as part of the preparation process. For example, you
-will need to get a private key for signing your application, and you may need to get a Maps API
-release key if you are using the <a
-href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps external
-library</a>. You will also need to create an icon for your application, and you may want to prepare
-an End User License Agreement (EULA) to protect your person, organization, and intellectual
-property.</p>
-
-<p>When you are finished preparing your application for release you will have a signed
-<code>.apk</code> file that you can distribute to users.</p>
-
-<p>To learn how to prepare your application for release, see <a
-href="{@docRoot}guide/publishing/preparing.html">Preparing for Release</a> in the Dev Guide. This
-topic provides step-by-step instructions for configuring and building a release version of your
-application.</p>
-
-<h2 id="publishing-release">Releasing Your Application to Users</h2>
-
-<p>You can release your Android applications several ways. Usually, you release applications
-through an application marketplace, such as Google Play, but you can also release applications
-on your own website or by sending an application directly to a user. Google Play is the
-recommended marketplace for Android applications and is particularly useful if you want to
-distribute your applications to a large global audience. The other two release methods&mdash;server
-distribution and email distribution&mdash;are useful if you are releasing an application to a small
-group of users (for example, a work group in an enterprise environment), or if you do not want to
-make your application available to the general public.</p>
-
-<h3 id="publishing-market">Releasing Your Applications on Google Play</h3>
-
-<p>Google Play is a robust publishing platform that helps you publicize, sell, and distribute
-your Android applications to users around the world. When you release your applications through
-Google Play you have access to a suite of developer tools that let you analyze your sales,
-identify market trends, and control who your applications are being distributed to. You also have
-access to several revenue-enhancing features that are not available anywhere else, such as <a
-href="{@docRoot}guide/market/billing/index.html">in-app billing</a> and <a
-href="{@docRoot}guide/market/licensing.html">application licensing</a>. This rich array of tools
-and features, coupled with numerous end-user community features, makes Google Play the premier
-marketplace for selling and buying Android applications.</p>
-
-<p>Releasing your application on Google Play is a simple process that involves three basic
-  steps:</p>
-
-<div class="figure" style="width:275px">
-  <img src="{@docRoot}images/publishing/publishing_unknown_sources.png"
-       alt="Screenshot showing the graphical user interface element that allows unknown sources
-       to be installed" />
-  <p class="img-caption">
-    <strong>Figure 2.</strong> The <strong>Unknown sources</strong> setting lets you install
-    applications that are not published on Google Play .
-  </p>
-</div>
-
-<ul>
-  <li>Preparing promotional materials.
-    <p>To fully leverage the marketing and publicity capabilities of Google Play, you need to
-    create promotional materials for your application, such as screenshots, videos, graphics, and
-    promotional text.</p>
-  </li>
-  <li>Configuring options and uploading assets.
-    <p>Google Play lets you target your application to a worldwide pool of users and devices.
-    By configuring various Google Play settings, you can choose the countries you want to
-    reach, the listing languages you want to use, and the price you want to charge in each
-    country. You can also configure listing details such as the application type, category, and
-    content rating. When you are done configuring options you can upload your promotional materials
-    and your application as a draft (unpublished) application.</p>
-  </li>
-  <li>Publishing the release version of your application.
-    <p>If you are satisfied that your publishing settings are correctly configured and your
-    uploaded application is ready to be released to the public, you can simply click
-    <strong>Publish</strong > in the developer console and within minutes your application will be
-    live and available for download around the world.</p>
-  </li>
-</ul>
-
-<p>For information about Google Play, see <a
-href="{@docRoot}guide/publishing/publishing.html#market">Publishing on Google Play</a>. This
-topic provides an introduction to Google Play features and provides a step-by-step guide for
-distributing your applications on Google Play.</p>
-
-<h3 id="publishing-website">Releasing your application on your own website</h3>
-
-<p>If you do not want to release your application on an application marketplace like Google Play,
-you can release your application by making it available for download on your own website or server.
-To do this, you must first prepare your application for release (that is, you must build it for
-release and sign it). Then all you need to do is host the release-ready application on your website
-and provide a download link for the application. When users browse to your website with their
-Android-powered devices and download your application, the Android system will automatically start
-installing the application on the device. However, the installation process will start automatically
-only if the user has configured their device to allow the installation of non-Google Play
-applications.</p>
-
-<div class="figure" style="width:275px">
-  <img src="{@docRoot}images/publishing/publishing_via_email.png"
-       alt="Screenshot showing the graphical user interface users see when you send them an app"
-       height="453" />
-  <p class="img-caption">
-    <strong>Figure 3.</strong> Users can simply click <strong>Install</strong> when you send them
-    an application via email.
-  </p>
-</div>
-
-<p>By default, Android-powered devices allow users to install applications only if the applications
-have been downloaded from Google Play. To allow the installation of applications from other
-sources, users need to enable the <strong>Unknown sources</strong> setting on their devices, and
-they need to make this configuration change before they download your application to their
-device (see figure 2).</p>
-
-<p class="note"><strong>Note:</strong> Some network providers do not allow users to install
-applications from unknown sources.</p>
-
-<p>Although it is relatively easy to release your application on your own website, it can be
-inefficient and cumbersome. For example, if you want to monetize your application you will
-have to process and track all financial transactions yourself and you will not be able to use
-Google Play's in-app billing feature to sell in-app products. In addition, you will not be
-able to use the licensing feature to help prevent unauthorized installation and use of your
-application.</p>
-
-<h3 id="publishing-email">Releasing your application through email</h3>
-
-<p>The easiest and quickest way to release your application is to send it to a user through
-email. To do this, you prepare your application for release and then attach it to an email
-and send it to a user. When the user opens your email message on their Android-powered device
-the Android system will recognize the <code>.apk</code> and display an <strong>Install Now</strong>
-button in the email message (see figure 3). Users can install your application by touching the
-button.</p>
-
-<p class="note"><strong>Note:</strong> The <strong>Install Now</strong> button appears only if a
-user has configured their device to allow the installation of non-Google Play applications and
-they open your email with the native Gmail application.</p>
-
-<p>Releasing applications through email is convenient if you are sending your application to
-only a few trusted users, but it provides few protections from piracy and unauthorized
-distribution; that is, anyone you send your application to can simply forward it to someone else.
-else.
diff --git a/docs/html/guide/publishing/versioning.jd b/docs/html/guide/publishing/versioning.jd
deleted file mode 100644
index da57e3e..0000000
--- a/docs/html/guide/publishing/versioning.jd
+++ /dev/null
@@ -1,174 +0,0 @@
-page.title=Versioning Your Applications
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Quickview</h2>
-
-<ul>
-<li>Your application <em>must</em> be versioned</a></li>
-<li>You set the version in the application's manifest file</li>
-<li>How you version your applications affects how users upgrade </li>
-<li>Determine your versioning strategy early in the development process, including considerations for future releases.</li>
-</ul>
-
-<h2>In this document</h2>
-
-<ol>
-<li><a href="#appversioning">Setting Application Version</a></li>
-<li><a href="#minsdkversion">Specifying Your Application's System API Requirements</a>
-</ol>
-
-
-<h2>See also</h2>
-
-<ol>
-<li><a href="{@docRoot}guide/publishing/preparing.html">Preparing to Publish Your Application</a></li>
-<li><a href="{@docRoot}guide/publishing/publishing.html#market">Publishing On Google Play</a></li>
-<li><a href="{@docRoot}guide/topics/manifest/manifest-intro.html">The AndroidManifest.xml File</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>Versioning is a critical component of your application upgrade and maintenance
-strategy. Versioning is important because:</p>
-
-<ul>
-<li>Users need to have specific information about the application version that
-is installed on their devices and the upgrade versions available for
-installation. </li>
-<li>Other applications &mdash; including other applications that you publish as
-a suite &mdash; need to query the system for your application's version, to
-determine compatibility and identify dependencies.</li>
-<li>Services through which you will publish your application(s) may also need to
-query your application for its version, so that they can display the version to
-users. A publishing service may also need to check the application version to
-determine compatibility and establish upgrade/downgrade relationships.</li>
-</ul>
-
-<p>The Android system does not use app version information to enforce
-restrictions on upgrades, downgrades, or compatibility of third-party apps. Instead, you (the
-developer) are responsible for enforcing version restrictions within your application or by
-informing users of the version restrictions and limitations. The Android system does, however,
-enforce system version compatibility as expressed by the <code>minSdkVersion</code> attribute in the
-manifest. This attribute allows an application to specify the minimum system API with which it is
-compatible. For more information see <a href="#minsdkversion">Specifying Minimum System API
-Version</a>.</p>
-
-<h2 id="appversioning">Setting Application Version</h2>
-<p>To define the version information for your application, you set attributes in
-the application's manifest file. Two attributes are available, and you should
-always define values for both of them: </p>
-
-<ul>
-<li><code>android:versionCode</code> &mdash; An integer value that represents
-the version of the application code, relative to other versions.
-
-<p>The value is an integer so that other applications can programmatically
-evaluate it, for example to check an upgrade or downgrade relationship. You can
-set the value to any integer you want, however you should make sure that each
-successive release of your application uses a greater value. The system does not
-enforce this behavior, but increasing the value with successive releases is
-normative. </p>
-
-<p>Typically, you would release the first version of your application with
-versionCode set to 1, then monotonically increase the value with each release,
-regardless whether the release constitutes a major or minor release. This means
-that the <code>android:versionCode</code> value does not necessarily have a
-strong resemblance to the application release version that is visible to the
-user (see <code>android:versionName</code>, below). Applications and publishing
-services should not display this version value to users.</p>
-</li>
-<li><code>android:versionName</code> &mdash; A string value that represents the
-release version of the application code, as it should be shown to users.
-<p>The value is a string so that you can describe the application version as a
-&lt;major&gt;.&lt;minor&gt;.&lt;point&gt; string, or as any other type of
-absolute or relative version identifier. </p>
-
-<p>As with <code>android:versionCode</code>, the system does not use this value
-for any internal purpose, other than to enable applications to display it to
-users. Publishing services may also extract the <code>android:versionName</code>
-value for display to users.</p>
-</li>
-</ul>
-
-<p>You define both of these version attributes in the
-<code>&lt;manifest&gt;</code> element of the manifest file. </p>
-
-<p>Here's an example manifest that shows the <code>android:versionCode</code>
-and <code>android:versionName</code> attributes in the
-<code>&lt;manifest&gt;</code> element. </p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-      package="com.example.package.name"
-      android:versionCode="2"
-      android:versionName="1.1"&gt;
-    &lt;application android:icon="@drawable/icon" android:label="@string/app_name"&gt;
-        ...
-    &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-<p>In this example, note that <code>android:versionCode</code> value indicates
-that the current .apk contains the second release of the application code, which
-corresponds to a minor follow-on release, as shown by the
-<code>android:versionName</code> string. </p>
-
-<p>The Android framework provides an API to let applications query the system
-for version information about your application. To obtain version information,
-applications use the
-{@link android.content.pm.PackageManager#getPackageInfo(java.lang.String, int)}
-method of {@link android.content.pm.PackageManager PackageManager}. </p>
-
-<h2 id="minsdkversion">Specifying Your Application's System API Requirements</h2>
-
-<p>If your application requires a specific minimum version of the Android
-platform, or is designed only to support a certain range of Android platform
-versions, you can specify those version requirements as API Level identifiers
-in the application's manifest file. Doing so ensures that your
-application can only be installed on devices that
-are running a compatible version of the Android system. </p>
-
-<p>To specify API Level requirements, add a <code>&lt;uses-sdk&gt;</code>
-element in the application's manifest, with one or more of these attributes: </p>
-
-<ul>
-<li><code>android:minSdkVersion</code> &mdash; The minimum version
-of the Android platform on which the application will run, specified
-by the platform's API Level identifier. </li>
-<li><code>android:targetSdkVersion</code> &mdash; Specifies the API Level
-on which the application is designed to run. In some cases, this allows the
-application to use manifest elements or behaviors defined in the target
-API Level, rather than being restricted to using only those defined
-for the minimum API Level.</li>
-<li><code>android:maxSdkVersion</code> &mdash; The maximum version
-of the Android platform on which the application is designed to run,
-specified by the platform's API Level identifier. <strong>Important:</strong> Please read the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
-documentation before using this attribute. </li>
-</ul>
-
-<p>When preparing to install your application, the system checks the value of this
-attribute and compares it to the system version. If the
-<code>android:minSdkVersion</code> value is greater than the system version, the
-system aborts the installation of the application. Similarly, the system
-installs your application only if its <code>android:maxSdkVersion</code>
-is compatible with the platform version.</p>
-
-<p>If you do not specify these attributes in your manifest, the system assumes
-that your application is compatible with all platform versions, with no
-maximum API Level. </p>
-
-<p>To specify a minimum platform version for your application, add a
-<code>&lt;uses-sdk&gt;</code> element as a child of
-<code>&lt;manifest&gt;</code>, then define the
-<code>android:minSdkVersion</code> as an attribute. </p>
-
-<p>For more information, see the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
-manifest element documentation and the <a
-href="{@docRoot}guide/appendix/api-levels.html">API Levels</a> document.</p>
diff --git a/docs/html/guide/topics/admin/index.jd b/docs/html/guide/topics/admin/index.jd
new file mode 100644
index 0000000..b2a896f8
--- /dev/null
+++ b/docs/html/guide/topics/admin/index.jd
@@ -0,0 +1,22 @@
+page.title=Administration
+page.landing=true
+page.landing.intro=If you are an enterprise administrator, you can take advantage of APIs and system capabilities to manage Android devices and control access.
+page.landing.image=
+
+@jd:body
+
+<div class="landing-docs">
+
+  <div class="col-12">
+    <h3>Blog Articles</h3>
+    <a
+href="http://android-developers.blogspot.com/2012/03/unifying-key-store-access-in-ics.html">
+      <h4>Unifying Key Store Access in ICS</h4>
+      <p>Android 4.0 (ICS) comes with a number of enhancements that make it easier for people to
+bring their personal Android devices to work. In this post, we’re going to have a look at the key
+store functionality.</p>
+    </a>
+  </div>
+
+
+</div>
\ No newline at end of file
diff --git a/docs/html/guide/topics/admin/keychain.jd b/docs/html/guide/topics/admin/keychain.jd
new file mode 100644
index 0000000..2ea2408
--- /dev/null
+++ b/docs/html/guide/topics/admin/keychain.jd
@@ -0,0 +1,4 @@
+page.title=Text and Input
+@jd:body
+
+<p>Add contnet here</p>
diff --git a/docs/html/guide/topics/appwidgets/index.jd b/docs/html/guide/topics/appwidgets/index.jd
index ba7b67c..a46f9a7 100644
--- a/docs/html/guide/topics/appwidgets/index.jd
+++ b/docs/html/guide/topics/appwidgets/index.jd
@@ -295,7 +295,7 @@
 
 <p>Creating the App Widget layout is simple if you're
 familiar with <a
-href="{@docRoot}guide/topics/ui/declaring-layout.html">XML Layouts</a>.
+href="{@docRoot}guide/topics/ui/declaring-layout.html">Layouts</a>.
 However, you must be aware that App Widget layouts are based on {@link
 android.widget.RemoteViews},
 which do not support every kind of layout or view widget.</p>
@@ -516,7 +516,7 @@
 {@link android.appwidget.AppWidgetProvider#onUpdate(Context,AppWidgetManager,int[]) onUpdate()} 
 method. From within the Service, you can perform your own updates
 to the App Widget without worrying about the AppWidgetProvider closing down due
-to an <a href="{@docRoot}guide/practices/design/responsiveness.html">Application
+to an <a href="{@docRoot}guide/practices/responsiveness.html">Application
 Not Responding</a> (ANR) error. See the <a
 href="http://code.google.com/p/wiktionary-android/source/browse/trunk/Wiktionary/src/com/example/android/wiktionary/WordWidget.java">Wiktionary sample's AppWidgetProvider</a> for an example of an App Widget running a {@link
 android.app.Service}.</p>
diff --git a/docs/html/guide/topics/wireless/bluetooth.jd b/docs/html/guide/topics/connectivity/bluetooth.jd
similarity index 99%
rename from docs/html/guide/topics/wireless/bluetooth.jd
rename to docs/html/guide/topics/connectivity/bluetooth.jd
index 0567799..832b850 100644
--- a/docs/html/guide/topics/wireless/bluetooth.jd
+++ b/docs/html/guide/topics/connectivity/bluetooth.jd
@@ -912,7 +912,7 @@
 Bluetooth headsets to be used with mobile phones. Android provides the {@link
 android.bluetooth.BluetoothHeadset} class, which is a proxy for controlling the
 Bluetooth Headset Service via interprocess communication (<a
-href="{@docRoot}guide/topics/fundamentals/processes-and-threads.html#IPC">IPC</a
+href="{@docRoot}guide/components/processes-and-threads.html#IPC">IPC</a
 >). This includes both  Bluetooth Headset and Hands-Free (v1.5) profiles. The
 {@link android.bluetooth.BluetoothHeadset} class includes support for AT commands.
 For more discussion of this topic, see <a href="#AT-Commands">Vendor-specific AT commands</a></li>
@@ -940,7 +940,7 @@
 <ol> 
 
   <li>Get the default adapter, as described in
-    <a href="{@docRoot}guide/topics/wireless/bluetooth.html#SettingUp">Setting Up
+    <a href="{@docRoot}guide/topics/connectivity/bluetooth.html#SettingUp">Setting Up
       Bluetooth</a>.</li> 
 
   <li>Use {@link
diff --git a/docs/html/guide/topics/connectivity/index.jd b/docs/html/guide/topics/connectivity/index.jd
new file mode 100644
index 0000000..322518e
--- /dev/null
+++ b/docs/html/guide/topics/connectivity/index.jd
@@ -0,0 +1,42 @@
+page.title=Connectivity
+page.landing=true
+page.landing.intro=Android provides rich APIs to let your app connect and interact with other devices over Bluetooth, NFC, Wi-Fi Direct, USB, and SIP, in addition to standard network connections.
+page.landing.image=images/develop/connectivity.png
+
+@jd:body
+
+<div class="landing-docs">
+
+  <div class="col-6">
+    <h3>Blog Articles</h3>
+    
+    <a href="http://android-developers.blogspot.com/2011/09/androids-http-clients.html">
+      <h4>Android’s HTTP Clients</h4>
+      <p>Most network-connected Android apps will use HTTP to send and receive data. Android
+includes two HTTP clients: HttpURLConnection and Apache HTTP Client. Both support HTTPS, streaming
+uploads and downloads, configurable timeouts, IPv6 and connection pooling.</p>
+    </a>
+    
+  </div>
+
+  <div class="col-6">
+    <h3>Training</h3>
+    
+    <a href="http://developer.android.com/training/efficient-downloads/index.html">
+      <h4>Transferring Data Without Draining the Battery</h4>
+      <p>This class demonstrates the best practices for scheduling and executing downloads using
+techniques such as caching, polling, and prefetching. You will learn how the power-use profile of
+the wireless radio can affect your choices on when, what, and how to transfer data in order to
+minimize impact on battery life.</p>
+    </a>
+    
+    <a href="http://developer.android.com/training/cloudsync/index.html">
+      <h4>Syncing to the Cloud</h4>
+      <p>This class covers different strategies for cloud enabled applications. It covers syncing
+data with the cloud using your own back-end web application, and backing up data using the cloud so
+that users can restore their data when installing your application on a new device.</p>
+    </a>
+    
+  </div>
+
+</div>
\ No newline at end of file
diff --git a/docs/html/guide/topics/nfc/advanced-nfc.jd b/docs/html/guide/topics/connectivity/nfc/advanced-nfc.jd
similarity index 98%
rename from docs/html/guide/topics/nfc/advanced-nfc.jd
rename to docs/html/guide/topics/connectivity/nfc/advanced-nfc.jd
index b43b559..9d6cda5 100644
--- a/docs/html/guide/topics/nfc/advanced-nfc.jd
+++ b/docs/html/guide/topics/connectivity/nfc/advanced-nfc.jd
@@ -128,12 +128,12 @@
 <ol>
   <li>Filter for an {@link android.nfc.NfcAdapter#ACTION_TECH_DISCOVERED} intent specifying the
 tag technologies that you want to handle. See <a
-href="{@docRoot}guide/topics/nfc/nfc.html#tech-disc">Filtering for NFC
+href="{@docRoot}guide/topics/connectivity/nfc/nfc.html#tech-disc">Filtering for NFC
 intents</a> for more information. In general, the tag dispatch system tries to start a {@link
 android.nfc.NfcAdapter#ACTION_TECH_DISCOVERED} intent when an NDEF message
 cannot be mapped to a MIME type or URI, or if the tag scanned did not contain NDEF data. For
 more information on how this is determined, see <a
-href="{@docRoot}guide/topics/nfc/nfc.html#tag-dispatch">The Tag Dispatch System</a>.</li>
+href="{@docRoot}guide/topics/connectivity/nfc/nfc.html#tag-dispatch">The Tag Dispatch System</a>.</li>
   <li>When your application receives the intent, obtain the {@link android.nfc.Tag} object from
 the intent:
 <pre>Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);</pre></li>
diff --git a/docs/html/guide/topics/nfc/index.jd b/docs/html/guide/topics/connectivity/nfc/index.jd
similarity index 90%
rename from docs/html/guide/topics/nfc/index.jd
rename to docs/html/guide/topics/connectivity/nfc/index.jd
index b86d72d..88c206f 100644
--- a/docs/html/guide/topics/nfc/index.jd
+++ b/docs/html/guide/topics/connectivity/nfc/index.jd
@@ -15,13 +15,13 @@
   called NDEF (NFC Data Exchange Format).</p>
 
   <dl>
-    <dt><strong><a href="{@docRoot}guide/topics/nfc/nfc.html">NFC Basics</a></strong></dt>
+    <dt><strong><a href="{@docRoot}guide/topics/connectivity/nfc/nfc.html">NFC Basics</a></strong></dt>
     <dd>This document describes how Android handles discovered NFC tags and how it notifies
 applications of data that is relevant to the application. It also goes over how to work with the
 NDEF data in your applications and gives an overview of the framework APIs that support the basic
 NFC feature set of Android.</dd>
 
-    <dt><strong><a href="{@docRoot}guide/topics/nfc/advanced-nfc.html">Advanced
+    <dt><strong><a href="{@docRoot}guide/topics/connectivity/nfc/advanced-nfc.html">Advanced
     NFC</a></strong></dt>
     <dd>This document goes over the APIs that enable use of the various tag technologies that
     Android supports. When you are not working with NDEF data, or when you are working with NDEF
diff --git a/docs/html/guide/topics/nfc/nfc.jd b/docs/html/guide/topics/connectivity/nfc/nfc.jd
similarity index 98%
rename from docs/html/guide/topics/nfc/nfc.jd
rename to docs/html/guide/topics/connectivity/nfc/nfc.jd
index 834656a..51c7bee 100644
--- a/docs/html/guide/topics/nfc/nfc.jd
+++ b/docs/html/guide/topics/connectivity/nfc/nfc.jd
@@ -39,7 +39,7 @@
 <p>This document describes the basic NFC tasks you perform in Android. It explains how to send and
 receive NFC data in the form of NDEF messages and describes the Android framework APIs that support
 these features. For more advanced topics, including a discussion of working with non-NDEF data,
-see <a href="{@docRoot}guide/topics/nfc/advanced-nfc.html">Advanced NFC</a>.</p>
+see <a href="{@docRoot}guide/topics/connectivity/nfc/advanced-nfc.html">Advanced NFC</a>.</p>
 
 
 <p>There are two major uses cases when working with NDEF data and Android:</p>
@@ -105,7 +105,7 @@
 the specification of the type of record that you want to create. Android
 also supports other types of tags that do not contain NDEF data, which you can work with by using
 the classes in the {@link android.nfc.tech} package. To learn more
-about these technologies, see the <a href="{@docRoot}guide/topics/nfc/advanced-nfc.html">Advanced
+about these technologies, see the <a href="{@docRoot}guide/topics/connectivity/nfc/advanced-nfc.html">Advanced
 NFC</a> topic. Working with these other types of tags involves
 writing your own protocol stack to communicate with the tags, so we recommend using NDEF when
 possible for ease of development and maximum support for Android-powered devices.
@@ -454,7 +454,7 @@
 
 <p>For more information about working with tag technologies and the {@link
 android.nfc.NfcAdapter#ACTION_TECH_DISCOVERED} intent, see <a
-href="{@docRoot}guide/topics/nfc/advanced-nfc.html#tag-tech">Working with Supported Tag
+href="{@docRoot}guide/topics/connectivity/nfc/advanced-nfc.html#tag-tech">Working with Supported Tag
 Technologies</a> in the Advanced NFC document.</p>
 <h3 id="tag-disc">ACTION_TAG_DISCOVERED</h3>
 <p>To filter for {@link android.nfc.NfcAdapter#ACTION_TAG_DISCOVERED} use the following intent
@@ -685,7 +685,7 @@
 </p>
 
 <p class="note"><strong>Note:</strong> You can override AARs and the intent dispatch system with the <a
-href="{@docRoot}guide/topics/nfc/advanced-nfc.html#foreground-dispatch">foreground dispatch
+href="{@docRoot}guide/topics/connectivity/nfc/advanced-nfc.html#foreground-dispatch">foreground dispatch
 system</a>, which allows a foreground activity to have priority when an NFC tag is discovered.
 With this method, the activity must be in the foreground to
 override AARs and the intent dispatch system.</p>
@@ -766,7 +766,7 @@
 
   <p class="note"><strong>Note:</strong> If your activity enables Android Beam and is
 in the foreground, the standard intent dispatch system is disabled. However, if your activity also
-enables <a href="{@docRoot}guide/topics/nfc/advanced-nfc.html#foreground-dispatch">foreground
+enables <a href="{@docRoot}guide/topics/connectivity/nfc/advanced-nfc.html#foreground-dispatch">foreground
 dispatching</a>, then it can still scan tags that match the intent filters set in the foreground
 dispatching.</p>
 
diff --git a/docs/html/guide/topics/network/sip.jd b/docs/html/guide/topics/connectivity/sip.jd
similarity index 98%
rename from docs/html/guide/topics/network/sip.jd
rename to docs/html/guide/topics/connectivity/sip.jd
index 600da78..a5f0e2e 100644
--- a/docs/html/guide/topics/network/sip.jd
+++ b/docs/html/guide/topics/connectivity/sip.jd
@@ -140,7 +140,7 @@
 <ul>
   <li><code>&lt;uses-sdk android:minSdkVersion=&quot;9&quot; /&gt;</code>. This 
  indicates that your application requires   Android 2.3 or higher. For more
-information, see <a href="{@docRoot}guide/appendix/api-levels.html">API
+information, see <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API
 Levels</a> and the documentation for the <a
 href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</a
 > element.</li>
@@ -479,9 +479,9 @@
 <li>On your device, connect to wireless (<strong>Settings > Wireless & networks
 > Wi-Fi > Wi-Fi settings</strong>)</li>
 <li>Set up your mobile device for testing, as described in <a
-href="{@docRoot}guide/developing/device.html">Developing on a Device</a>.</li>
+href="{@docRoot}tools/device.html">Developing on a Device</a>.</li>
 <li>Run your application on your mobile device, as described in <a
-href="{@docRoot}guide/developing/device.html">Developing on a Device</a>.</li>
+href="{@docRoot}tools/device.html">Developing on a Device</a>.</li>
 
 <li>If you are using Eclipse, you can view the application log output in Eclipse
 using LogCat (<strong>Window > Show View > Other > Android >
diff --git a/docs/html/guide/topics/usb/accessory.jd b/docs/html/guide/topics/connectivity/usb/accessory.jd
similarity index 99%
rename from docs/html/guide/topics/usb/accessory.jd
rename to docs/html/guide/topics/connectivity/usb/accessory.jd
index 8b74bc0..a217767 100644
--- a/docs/html/guide/topics/usb/accessory.jd
+++ b/docs/html/guide/topics/connectivity/usb/accessory.jd
@@ -433,7 +433,7 @@
   protocol bundles the packets together for both speeds into one logical packet for simplicity.</p>
 
   <p>For more information about using threads in Android, see <a href=
-  "{@docRoot}guide/topics/fundamentals/processes-and-threads.html#Threads">Processes and
+  "{@docRoot}guide/components/processes-and-threads.html#Threads">Processes and
   Threads</a>.</p>
 
   <h3 id="terminating-a">Terminating communication with an accessory</h3>
diff --git a/docs/html/guide/topics/usb/adk.jd b/docs/html/guide/topics/connectivity/usb/adk.jd
similarity index 90%
rename from docs/html/guide/topics/usb/adk.jd
rename to docs/html/guide/topics/connectivity/usb/adk.jd
index c8949a3..034728c 100644
--- a/docs/html/guide/topics/usb/adk.jd
+++ b/docs/html/guide/topics/connectivity/usb/adk.jd
@@ -63,7 +63,7 @@
 
       <ol>
         <li><a href="http://www.youtube.com/watch?v=s7szcpXf2rE">Google I/O Session Video</a></li>
-        <li><a href="{@docRoot}guide/topics/usb/accessory.html">USB Accessory Dev Guide</a></li>
+        <li><a href="{@docRoot}guide/topics/connectivity/usb/accessory.html">USB Accessory Dev Guide</a></li>
       </ol>
 
       <h2>Where to buy</h2>
@@ -121,7 +121,7 @@
   hardware and not all devices will support accessory mode. Devices that support accessory mode can
   be filtered using a <code>&lt;uses-feature&gt;</code> element in your corresponding application's
   Android manifest. For more information, see the <a href=
-  "{@docRoot}guide/topics/usb/accessory.html#manifest">USB Accessory</a> Developer Guide.</p>
+  "{@docRoot}guide/topics/connectivity/usb/accessory.html#manifest">USB Accessory</a> Developer Guide.</p>
 
   <p>The following list of distributers are currently producing Android Open Accessory compatible
   development boards:</p>
@@ -168,7 +168,7 @@
   prototyping platform</a>, the accessory's hardware design files, code that implements the
   accessory's firmware, and the Android application that interacts with the accessory. The hardware
   design files and firmware code are contained in the <a href=
-  "https://dl-ssl.google.com/android/adk/adk_release_0512.zip">ADK package download</a>.</p>
+  "https://dl-ssl.google.com/android/adk/adk_release_20120606.zip">ADK package download</a>.</p>
   <p>The main hardware and software components of the ADK include:</p>
 
   <ul>
@@ -190,18 +190,19 @@
     "http://www.circuitsathome.com/arduino_usb_host_shield_projects">Arduino USB Host Shield</a>
     library provides the logic for the USB micro-controller board to act as a USB Host. This allows
     the board to initiate transactions with USB devices. Describing how to use this entire library
-    is out of the scope of this document. Where needed, this document points out important
+    is beyond the scope of this document. Where needed, this document points out important
     interactions with the library. For more information, see the source code for the Arduino USB
-    Host Shield library in the <code>firmware/arduino_libs/USB_Host_Shield</code> directory.</li>
+    Host Shield library in the <code>arduino_libs/USB_Host_Shield</code> directory.</li>
 
-    <li>An Arduino sketch, <code>firmware/demokit/demokit.pde</code>, defines the firmware that
+    <li>An Arduino sketch, <code>arduino_libs/AndroidAccessory/examples/demokit/demokit.pde</code>,
+    defines the firmware that
     runs on the ADK board and is written in C++. The sketch calls the Android accessory protocol
     library to interact with the Android-powered device. It also sends data from the ADK board and
     shield to the Android application and receives data from the Android application and outputs it
     to the ADK board and shield.</li>
 
     <li>The Android accessory protocol library, which is located in the
-    <code>firmware/arduino_libs/AndroidAccessory</code> directory. This library defines how to
+    <code>arduino_libs/AndroidAccessory</code> directory. This library defines how to
     enumerate the bus, find a connected Android-powered device that supports accessory mode, and
     how to setup communication with the device.</li>
 
@@ -228,20 +229,21 @@
   <h2 id="getting-started">Getting Started with the ADK</h2>
 
   <p>The following sections describe how to install the Arduino software on your computer, use the
-  Arduino software to install the ADK board's firmware, and install and run the accompanying
+  Arduino IDE to install the ADK board's firmware, and install and run the accompanying
   Android application for the ADK board. Before you begin, download the following items to set up
   your development environment:</p>
 
   <ul>
-    <li><a href="http://www.arduino.cc/en/Main/software">Arduino Software</a>: contains libraries
-    and an IDE for coding and installing firmware to the ADK board.</li>
+    <li><a href="http://arduino.cc/en/Main/Software">Arduino 1.0 or higher</a>: contains
+    libraries and an IDE for coding and installing firmware to the ADK board.</li>
 
-    <li><a href="http://www.arduino.cc/playground/Main/CapSense">CapSense library</a>: contains the
-    libraries to sense human capacitance. This is needed for the capacative button that is located
-    on the ADK shield.</li>
+    <li><a href="http://www.arduino.cc/playground/Main/CapSense">CapSense library v.04</a>:
+    contains the libraries to sense human capacitance. This library is needed for the capacitive
+    button that is located on the ADK shield.</li>
 
-    <li><a href="https://dl-ssl.google.com/android/adk/adk_release_0512.zip">The ADK package</a>: contains the firmware for the ADK board and hardware design
-    files for the ADK board and shield.</li>
+    <li><a href="https://dl-ssl.google.com/android/adk/adk_release_20120606.zip">ADK software
+    package</a>: contains the firmware for the ADK board and hardware design files for the ADK
+    board and shield.</li>
   </ul>
 
   <h3 id="installing">Installing the Arduino software and necessary libraries</h3>
@@ -250,35 +252,33 @@
 
   <ol>
     <li>
-      <a href="http://arduino.cc/en/Guide/HomePage">Download and install</a> the Arduino Software
-      as described on the Arduino website.
+      <a href="http://arduino.cc/en/Main/Software">Download and install</a> the Arduino 1.0 or
+      higher as described on the Arduino website.
 
       <p class="note"><strong>Note:</strong> If you are on a Mac, install the FTDI USB Serial
       Driver that is included in the Arduino package, even though the installation instructions say
       otherwise.</p>
     </li>
 
-    <li><a href="https://dl-ssl.google.com/android/adk/adk_release_0512.zip">Download</a> and
+    <li><a href="https://dl-ssl.google.com/android/adk/adk_release_20120606.zip">Download</a> and
     extract the ADK package to a directory of your choice. You should have an <code>app</code>,
-    <code>firmware</code>, and <code>hardware</code> directories.</li>
+    <code>arduino_libs</code>, and <code>hardware</code> directories.</li>
 
-    <li>Extract the CapSense download to a directory of your choice.</li>
+    <li><a href="http://www.arduino.cc/playground/Main/CapSense">Download</a> and extract
+    the CapSense package to a directory of your choice.</li>
 
     <li>Install the necessary libraries:
 
       <p>On Windows:</p>
 
       <ol type="a">
-        <li>Copy the <code>firmware/arduino_libs/AndroidAccessory</code> and
-        <code>firmware/arduino_libs/USB_Host_Shield</code> directories (the complete directories,
+        <li>Copy the <code>arduino_libs/AndroidAccessory</code> and
+        <code>arduino_libs/USB_Host_Shield</code> directories (the complete directories,
         not just the files within) to the <code>&lt;arduino_installation_root&gt;/libraries/</code>
         directory.</li>
 
-        <li>Create a CapSense directory in the
-        <code>&lt;arduino_installation_root&gt;/libraries/</code> directory</li>
-
-        <li>Copy <code>CapSense.cpp</code> and <code>CapSense.h</code> from the unzipped CapSense
-        download to the <code>CapSense</code> directory.</li>
+        <li>Copy the extracted <code>CapSense/</code> library directory and its contents to the
+        <code>&lt;arduino_installation_root&gt;/libraries/</code> directory.</li>
       </ol>
 
       <p>On Mac:</p>
@@ -288,16 +288,13 @@
         directory inside your user account's <code>Documents</code> directory, and within
         that, a <code>libraries</code> directory.</li>
 
-        <li>Copy the <code>firmware/arduino_libs/AndroidAccessory</code> and
-        <code>firmware/arduino_libs/USB_Host_Shield</code> directories (the
+        <li>Copy the <code>arduino_libs/AndroidAccessory</code> and
+        <code>arduino_libs/USB_Host_Shield</code> directories (the
         complete directories, not just the files within) to your
         <code>Documents/Arduino/libraries/</code> directory.</li>
 
-        <li>Create a <code>CapSense</code> directory in your
-        <code>Documents/Arduino/libraries/</code> directory.</li>
-
-        <li>Copy <code>CapSense.cpp</code> and <code>CapSense.h</code> from the unzipped CapSense
-        download to the <code>CapSense</code> directory.</li>
+        <li>Copy the extracted <code>CapSense/</code> library directory and its contents to the
+        <code>Documents/Arduino/libraries/</code> directory.
       </ol>
 
       <p>On Linux (Ubuntu):</p>
@@ -308,19 +305,16 @@
         not just the files within) to the <code>&lt;arduino_installation_root&gt;/libraries/</code>
         directory.</li>
 
-        <li>Create a <code>CapSense</code> directory in the
+        <li>Copy the extracted <code>CapSense/</code> library directory and its contents to the
         <code>&lt;arduino_installation_root&gt;/libraries/</code> directory.</li>
 
-        <li>Copy <code>CapSense.cpp</code> and <code>CapSense.h</code> from the unzipped CapSense
-        download to the <code>CapSense</code> directory.</li>
-
         <li>Install the avr-libc library by entering <code>sudo apt-get install avr-libc</code>
         from a shell prompt.</li>
       </ol>
     </li>
   </ol>
 
-  <p>You should now have three new directories in the Arduino libraries directory:
+  <p>You should now have three new directories in the Arduino <code>libraries/</code> directory:
   <code>AndroidAccessory</code>, <code>USB_Host_Shield</code>, and <code>CapSense</code>.</p>
 
   <h3 id="installing-firmware">Installing the firmware to the ADK board</h3>
@@ -331,7 +325,7 @@
     <li>Connect the ADK board to your computer using the micro-USB port, which allows two-way
     communication and provides power to the ADK board.</li>
 
-    <li>Launch Arduino.</li>
+    <li>Launch the Arduino IDE.</li>
 
     <li>Click <strong>Tools &gt; Board &gt; Arduino Mega 2560</strong> to specify the ADK board's
     type.</li>
@@ -351,13 +345,13 @@
       </ul>
     </li>
 
-    <li>To open the firmware code (a sketch), click <strong>File &gt; Open</strong> and select
-    <code>firmware/demokit/demokit.pde</code>.</li>
+    <li>To open the Demokit sketch (firmware code), click <strong>File &gt; Examples &gt;
+    AndroidAccessory &gt; demokit</strong>.</li>
 
     <li>Click <strong>Sketch &gt; Verify/Compile</strong> to ensure that the sketch has no
     errors.</li>
 
-    <li>Select <strong>File &gt; Upload to I/O Board</strong>. When Arduino outputs <strong>Done
+    <li>Select <strong>File &gt; Upload</strong>. When Arduino outputs <strong>Done
     uploading.</strong>, the board is ready to communicate with your Android-powered device.</li>
   </ol>
 
@@ -375,7 +369,7 @@
     2.3.4 devices that support accessory mode. This library is also forward compatible with Android
     3.1 or newer devices that support accessory mode. If you only care about Android 3.1 or newer
     devices, all you need is API Level 12. For more information on deciding which API level to use,
-    see the <a href="{@docRoot}guide/topics/usb/accessory.html#choosing">USB Accessory</a>
+    see the <a href="{@docRoot}guide/topics/connectivity/usb/accessory.html#choosing">USB Accessory</a>
     documentation.</li>
 
     <li>Click <strong>File &gt; New &gt; Project...</strong>, then select <strong>Android &gt;
@@ -414,12 +408,12 @@
   <h3 id="monitoring">Monitoring the ADK Board</h3>
 
   <p>The ADK firmware consists of a few files that you should be looking at if you want to build
-  your own accessory. The files in the <code>firmware/arduino_libs/AndroidAccessory</code>
+  your own accessory. The files in the <code>arduino_libs/AndroidAccessory</code>
   directory are the most important files and have the logic to detect and connect to
   Android-powered devices that support accessory mode. Feel free to add debug statements (Arduino
-  <code>Serial.print()</code> statements) to the code located in the
-  <code>arduino_libraries_directory/AndroidAccessory</code> directory and
-  <code>firmware/demokit/demokit.pde</code> sketch and re-upload the sketch to the ADK board to
+  <code>Serial.println()</code> statements) to the code located in the
+  <code>&lt;arduino_installation_root&gt;/libraries/AndroidAccessory</code> directory and
+  <code>demokit.pde</code> sketch and re-upload the sketch to the ADK board to
   discover more about how the firmware works.</p>
 
   <p>You can view the debug statements in the Arduino Serial Monitor by clicking <strong>Tools &gt;
@@ -575,11 +569,11 @@
   useful if you want to port the code over for your own accessories.</p>
 
   <p>The important pieces of the firmware are the
-  <code>accessory/demokit/demokit/demokit.pde</code> sketch, which is the code that receives and
-  sends data to the DemoKit application running on the Android-powered device. The code to detect
-  and set up communication with the Android-powered device is contained in the
-  <code>accessory/arduino_libs/AndroidAccessory/AndroidAccessory.h</code> and
-  <code>accessory/arduino_libs/AndroidAccessory/AndroidAccessory.cpp</code> files. This code
+  <code>arduino_libs/AndroidAccessory/examples/demokit/demokit/demokit.pde</code> sketch, which is
+  the code that receives and sends data to the DemoKit application running on the Android-powered
+  device. The code to detect and set up communication with the Android-powered device is contained
+  in the <code>arduino_libs/AndroidAccessory/AndroidAccessory.h</code> and
+  <code>arduino_libs/AndroidAccessory/AndroidAccessory.cpp</code> files. This code
   includes most of the logic that will help you implement your own accessory's firmware. It might
   be useful to have all three of these files open in a text editor as you read through these next
   sections.</p>
@@ -909,8 +903,7 @@
 int AndroidAccessory::write(void *buff, int len) {
   usb.outTransfer(1, out, len, (char *)buff);
   return len; }
-
 </pre>
 
-  <p>See the <code>firmware/demokit/demokit.pde</code> file for information about how the ADK board
+  <p>See the <code>demokit.pde</code> sketch for information about how the ADK board
   reads and writes data.</p>
diff --git a/docs/html/guide/topics/usb/host.jd b/docs/html/guide/topics/connectivity/usb/host.jd
similarity index 99%
rename from docs/html/guide/topics/usb/host.jd
rename to docs/html/guide/topics/connectivity/usb/host.jd
index b561754..355dd2d 100644
--- a/docs/html/guide/topics/usb/host.jd
+++ b/docs/html/guide/topics/connectivity/usb/host.jd
@@ -380,7 +380,7 @@
     android.hardware.usb.UsbDeviceConnection#controlTransfer controlTransfer()} method. You should
     carry out this step in another thread to prevent blocking the main UI thread. For more
     information about using threads in Android, see <a href=
-    "{@docRoot}guide/topics/fundamentals/processes-and-threads.html#Threads">Processes and
+    "{@docRoot}guide/components/processes-and-threads.html#Threads">Processes and
     Threads</a>.</li>
   </ul>
 
diff --git a/docs/html/guide/topics/usb/index.jd b/docs/html/guide/topics/connectivity/usb/index.jd
similarity index 89%
rename from docs/html/guide/topics/usb/index.jd
rename to docs/html/guide/topics/connectivity/usb/index.jd
index ef53bdf..7086ab1 100644
--- a/docs/html/guide/topics/usb/index.jd
+++ b/docs/html/guide/topics/connectivity/usb/index.jd
@@ -6,9 +6,9 @@
       <h2>Topics</h2>
 
       <ol>
-        <li><a href="{@docRoot}guide/topics/usb/accessory.html">USB Accessory</a></li>
+        <li><a href="{@docRoot}guide/topics/connectivity/usb/accessory.html">USB Accessory</a></li>
 
-        <li><a href="{@docRoot}guide/topics/usb/host.html">USB Host</a></li>
+        <li><a href="{@docRoot}guide/topics/connectivity/usb/host.html">USB Host</a></li>
       </ol>
     </div>
   </div>
@@ -42,8 +42,8 @@
   dependant on the device's hardware, regardless of platform level. You can filter for devices that
   support USB host and accessory through a <a href=
   "{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature&gt;</a> element. See
-  the USB <a href="{@docRoot}guide/topics/usb/accessory.html">accessory</a> and <a href=
-  "{@docRoot}guide/topics/usb/host.html">host</a> documentation for more details.</p>
+  the USB <a href="{@docRoot}guide/topics/connectivity/usb/accessory.html">accessory</a> and <a href=
+  "{@docRoot}guide/topics/connectivity/usb/host.html">host</a> documentation for more details.</p>
 
   <h2>Debugging considerations</h2>
 
diff --git a/docs/html/guide/topics/wireless/wifip2p.jd b/docs/html/guide/topics/connectivity/wifip2p.jd
similarity index 100%
rename from docs/html/guide/topics/wireless/wifip2p.jd
rename to docs/html/guide/topics/connectivity/wifip2p.jd
diff --git a/docs/html/guide/topics/data/backup.jd b/docs/html/guide/topics/data/backup.jd
index d91e422..602b6e8 100644
--- a/docs/html/guide/topics/data/backup.jd
+++ b/docs/html/guide/topics/data/backup.jd
@@ -47,7 +47,7 @@
 
   <h2>See also</h2>
   <ol>
-    <li><a href="{@docRoot}guide/developing/tools/bmgr.html">{@code bmgr} tool</a></li>
+    <li><a href="{@docRoot}tools/help/bmgr.html">{@code bmgr} tool</a></li>
   </ol>
 
 </div>
@@ -316,7 +316,7 @@
 
 <p class="note"><strong>Tip:</strong> While developing your application, you can initiate an
 immediate backup operation from the Backup Manager with the <a
-href="{@docRoot}guide/developing/tools/bmgr.html">{@code bmgr} tool</a>.</p>
+href="{@docRoot}tools/help/bmgr.html">{@code bmgr} tool</a>.</p>
 
 <p>When the Backup Manager calls your {@link
 android.app.backup.BackupAgent#onBackup(ParcelFileDescriptor,BackupDataOutput,ParcelFileDescriptor)
@@ -460,7 +460,7 @@
 href="#RequestingRestore">Requesting restore</a> for more information).</p>
 
 <p class="note"><strong>Note:</strong> While developing your application, you can also request a
-restore operation with the <a href="{@docRoot}guide/developing/tools/bmgr.html">{@code bmgr}
+restore operation with the <a href="{@docRoot}tools/help/bmgr.html">{@code bmgr}
 tool</a>.</p>
 
 <p>When the Backup Manager calls your {@link
@@ -863,7 +863,7 @@
 
 <p class="note"><strong>Note:</strong> While developing your application, you can request a
 backup and initiate an immediate backup operation with the <a
-href="{@docRoot}guide/developing/tools/bmgr.html">{@code bmgr}
+href="{@docRoot}tools/help/bmgr.html">{@code bmgr}
 tool</a>.</p>
 
 
@@ -878,7 +878,7 @@
 implementation, passing the data from the current set of backup data.</p>
 
 <p class="note"><strong>Note:</strong> While developing your application, you can request a
-restore operation with the <a href="{@docRoot}guide/developing/tools/bmgr.html">{@code bmgr}
+restore operation with the <a href="{@docRoot}tools/help/bmgr.html">{@code bmgr}
 tool</a>.</p>
 
 
@@ -886,7 +886,7 @@
 
 <p>Once you've implemented your backup agent, you can test the backup and restore functionality
 with the following procedure, using <a
-href="{@docRoot}guide/developing/tools/bmgr.html">{@code bmgr}</a>.</p>
+href="{@docRoot}tools/help/bmgr.html">{@code bmgr}</a>.</p>
 
 <ol>
   <li>Install your application on a suitable Android system image
diff --git a/docs/html/guide/topics/data/data-storage.jd b/docs/html/guide/topics/data/data-storage.jd
index d31afa5..e9d2d25 100644
--- a/docs/html/guide/topics/data/data-storage.jd
+++ b/docs/html/guide/topics/data/data-storage.jd
@@ -1,4 +1,4 @@
-page.title=Data Storage
+page.title=Storage Options
 @jd:body
 
 
@@ -16,22 +16,9 @@
   <h2>In this document</h2>
   <ol>
     <li><a href="#pref">Using Shared Preferences</a></li>
-    <li><a href="#filesInternal">Using the Internal Storage</a>
-      <ol>
-        <li><a href="#InternalCache">Saving cache files</a></li>
-        <li><a href="#InternalMethods">Other useful methods</a></li>
-      </ol></li>
-    <li><a href="#filesExternal">Using the External Storage</a>
-      <ol>
-        <li><a href="#MediaAvail">Checking media availability</a></li>
-        <li><a href="#AccessingExtFiles">Accessing files on external storage</a></li>
-        <li><a href="#SavingSharedFiles">Saving files that should be shared</a></li>
-        <li><a href="#ExternalCache">Saving cache files</a></li>
-      </ol></li>
-    <li><a href="#db">Using Databases</a>
-      <ol>
-        <li><a href="#dbDebugging">Database debugging</a></li>
-      </ol></li>
+    <li><a href="#filesInternal">Using the Internal Storage</a></li>
+    <li><a href="#filesExternal">Using the External Storage</a></li>
+    <li><a href="#db">Using Databases</a></li>
     <li><a href="#netw">Using a Network Connection</a></li>
   </ol>
 
@@ -449,7 +436,7 @@
 
 <p>The Android SDK includes a {@code sqlite3} database tool that allows you to browse
 table contents, run SQL commands, and perform other useful functions on SQLite
-databases.  See <a href="{@docRoot}guide/developing/tools/adb.html#sqlite">Examining sqlite3
+databases.  See <a href="{@docRoot}tools/help/adb.html#sqlite">Examining sqlite3
 databases from a remote shell</a> to learn how to run this tool.
 </p>
 
diff --git a/docs/html/guide/topics/data/index.html b/docs/html/guide/topics/data/index.html
deleted file mode 100644
index a94f8c0..0000000
--- a/docs/html/guide/topics/data/index.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=data-storage.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<a href="data-storage.html">click here</a> if you are not redirected.
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/topics/data/index.jd b/docs/html/guide/topics/data/index.jd
new file mode 100644
index 0000000..1e082b3
--- /dev/null
+++ b/docs/html/guide/topics/data/index.jd
@@ -0,0 +1,23 @@
+page.title=Data Storage
+page.landing=true
+page.landing.intro=Store application data in databases, files, or preferences, in internal or removeable storage. You can also add a data backup service to let users store and recover application and system data.  
+page.landing.image=
+
+@jd:body
+
+<div class="landing-docs">
+
+
+  <div class="col-12">
+    <h3>Training</h3>
+    
+    <a href="http://developer.android.com/training/cloudsync/index.html">
+      <h4>Syncing to the Cloud</h4>
+      <p>This class covers different strategies for cloud enabled applications. It covers syncing
+data with the cloud using your own back-end web application, and backing up data using the cloud so
+that users can restore their data when installing your application on a new device.</p>
+    </a>
+    
+  </div>
+
+</div>
\ No newline at end of file
diff --git a/docs/html/guide/topics/data/install-location.jd b/docs/html/guide/topics/data/install-location.jd
new file mode 100644
index 0000000..19c4b39
--- /dev/null
+++ b/docs/html/guide/topics/data/install-location.jd
@@ -0,0 +1,206 @@
+page.title=App Install Location
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>Quickview</h2>
+  <ul>
+    <li>You can allow your application to install on the device's external storage.</li>
+    <li>Some types of applications should <strong>not</strong> allow installation on the external
+storage.</li>
+    <li>Installing on the external storage is ideal for large applications that are not tightly
+integrated with the system (most commonly, games).</li>
+  </ul>
+
+  <h2>In this document</h2>
+  <ol>
+    <li><a href="#Compatiblity">Backward Compatibility</a></li>
+    <li><a href="#ShouldNot">Applications That Should NOT Install on External Storage</a></li>
+    <li><a href="#Should">Applications That Should Install on External Storage</a></li>
+  </ol>
+
+  <h2>See also</h2>
+  <ol>
+    <li><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">
+&lt;manifest&gt;</a></code></li>
+  </ol>
+
+</div>
+</div>
+
+<p>Beginning with API Level 8, you can allow your application to be installed on the
+external storage (for example, the device's SD card). This is an optional feature you can declare
+for your application with the <a
+href="{@docRoot}guide/topics/manifest/manifest-element.html#install">{@code
+android:installLocation}</a> manifest attribute. If you do
+<em>not</em> declare this attribute, your application will be installed on the internal storage
+only and it cannot be moved to the external storage.</p>
+
+<p>To allow the system to install your application on the external storage, modify your
+manifest file to include the <a
+href="{@docRoot}guide/topics/manifest/manifest-element.html#install">{@code
+android:installLocation}</a> attribute in the <code><a
+href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element,
+with a value of either "{@code preferExternal}" or "{@code auto}". For example:</p>
+
+<pre>
+&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    android:installLocation="preferExternal"
+    ... &gt;
+</pre>
+
+<p>If you declare "{@code preferExternal}", you request that your application be installed on the
+external storage, but the system does not guarantee that your application will be installed on
+the external storage. If the external storage is full, the system will install it on the internal
+storage. The user can also move your application between the two locations.</p>
+
+<p>If you declare "{@code auto}", you indicate that your application may be installed on the
+external storage, but you don't have a preference of install location. The system will
+decide where to install your application based on several factors. The user can also move your
+application between the two locations.</p>
+
+<p>When your application is installed on the external storage:</p>
+<ul>
+  <li>There is no effect on the application performance so long
+as the external storage is mounted on the device.</li>
+  <li>The {@code .apk} file is saved on the external storage, but all private user data,
+databases, optimized {@code .dex} files, and extracted native code are saved on the
+internal device memory.</li>
+  <li>The unique container in which your application is stored is encrypted with a randomly
+generated key that can be decrypted only by the device that originally installed it. Thus, an
+application installed on an SD card works for only one device.</li>
+  <li>The user can move your application to the internal storage through the system settings.</li>
+</ul>
+
+<p class="warning"><strong>Warning:</strong> When the user enables USB mass storage to share files
+with a computer or unmounts the SD card via the system settings, the external storage is unmounted
+from the device and all applications running on the external storage are immediately killed.</p>
+
+
+
+<h2 id="Compatiblity">Backward Compatibility</h2>
+
+<p>The ability for your application to install on the external storage is a feature available only
+on devices running API Level 8 (Android 2.2) or greater. Existing applications that were built prior
+to API Level 8 will always install on the internal storage and cannot be moved to the external
+storage (even on devices with API Level 8). However, if your application is designed to support an
+API Level <em>lower than</em> 8, you can choose to support this feature for devices with API Level 8
+or greater and still be compatible with devices using an API Level lower than 8.</p>
+
+<p>To allow installation on external storage and remain compatible with versions lower than API
+Level 8:</p>
+<ol>
+  <li>Include the {@code android:installLocation} attribute with a value of "{@code auto}" or
+"{@code preferExternal}" in the <code><a
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;manifest&gt;</a></code>
+element.</li>
+  <li>Leave your {@code android:minSdkVersion} attribute as is (something <em>less
+than</em> "8") and be certain that your application code uses only APIs compatible with that
+level.</li>
+  <li>In order to compile your application, change your build target to API Level 8. This is
+necessary because older Android libraries don't understand the {@code android:installLocation}
+attribute and will not compile your application when it's present.</li>
+</ol>
+
+<p>When your application is installed on a device with an API Level lower than 8, the {@code
+android:installLocation} attribute is ignored and the application is installed on the internal
+storage.</p>
+
+<p class="caution"><strong>Caution:</strong> Although XML markup such as this will be ignored by
+older platforms, you must be careful not to use programming APIs introduced in API Level 8
+while your {@code minSdkVersion} is less than "8", unless you perform the work necessary to
+provide backward compatibility in your code. For information about building
+backward compatibility in your application code, see the <a
+href="{@docRoot}resources/articles/backward-compatibility.html">Backward Compatibility</a>
+article.</p>
+
+
+
+<h2 id="ShouldNot">Applications That Should NOT Install on External Storage</h2>
+
+<p>When the user enables USB mass storage to share files with their computer (or otherwise
+unmounts or removes the external storage), any application
+installed on the external storage and currently running is killed. The system effectively becomes
+unaware of the application until mass storage is disabled and the external storage is
+remounted on the device. Besides killing the application and making it unavailable to the user,
+this can break some types of applications in a more serious way. In order for your application to
+consistently behave as expected, you <strong>should not</strong> allow your application to be
+installed on the external storage if it uses any of the following features, due to the cited
+consequences when the external storage is unmounted:</p>
+
+<dl>
+  <dt>Services</dt>
+    <dd>Your running {@link android.app.Service} will be killed and will not be restarted when
+external storage is remounted. You can, however, register for the {@link
+android.content.Intent#ACTION_EXTERNAL_APPLICATIONS_AVAILABLE} broadcast Intent, which will notify
+your application when applications installed on external storage have become available to the
+system again. At which time, you can restart your Service.</dd>
+  <dt>Alarm Services</dt>
+    <dd>Your alarms registered with {@link android.app.AlarmManager} will be cancelled. You must
+manually re-register any alarms when external storage is remounted.</dd>
+  <dt>Input Method Engines</dt>
+    <dd>Your <a href="{@docRoot}resources/articles/on-screen-inputs.html">IME</a> will be
+replaced by the default IME. When external storage is remounted, the user can open system settings
+to enable your IME again.</dd>
+  <dt>Live Wallpapers</dt>
+    <dd>Your running <a href="{@docRoot}resources/articles/live-wallpapers.html">Live Wallpaper</a>
+will be replaced by the default Live Wallpaper. When external storage is remounted, the user can
+select your Live Wallpaper again.</dd>
+  <dt>Live Folders</dt>
+    <dd>Your <a href="{@docRoot}resources/articles/live-folders.html">Live Folder</a> will be
+removed from the home screen. When external storage is remounted, the user can add your Live Folder
+to the home screen again.</dd>
+  <dt>App Widgets</dt>
+    <dd>Your <a href="{@docRoot}guide/topics/appwidgets/index.html">App Widget</a> will be removed
+from the home screen. When external storage is remounted, your App Widget will <em>not</em> be
+available for the user to select until the system resets the home application (usually not until a
+system reboot).</dd>
+  <dt>Account Managers</dt>
+    <dd>Your accounts created with {@link android.accounts.AccountManager} will disappear until
+external storage is remounted.</dd>
+  <dt>Sync Adapters</dt>
+    <dd>Your {@link android.content.AbstractThreadedSyncAdapter} and all its sync functionality will
+not work until external storage is remounted.</dd>
+  <dt>Device Administrators</dt>
+    <dd>Your {@link android.app.admin.DeviceAdminReceiver} and all its admin capabilities will
+be disabled, which can have unforeseeable consequences for the device functionality, which may
+persist after external storage is remounted.</dd>
+  <dt>Broadcast Receivers listening for "boot completed"</dt>
+    <dd>The system delivers the {@link android.content.Intent#ACTION_BOOT_COMPLETED} broadcast
+before the external storage is mounted to the device. If your application is installed on the
+external storage, it can never receive this broadcast.</dd>
+  <dt>Copy Protection</dt>
+    <dd>Your application cannot be installed to a device's SD card if it uses Google Play's 
+      Copy Protection feature. However, if you use Google Play's 
+      <a href="{@docRoot}guide/google/play/licensing.html">Application Licensing</a> instead, your 
+      application <em>can</em> be installed to internal or external storage, including SD cards.</dd>
+</dl>
+
+<p>If your application uses any of the features listed above, you <strong>should not</strong> allow
+your application to install on external storage. By default, the system <em>will not</em> allow your
+application to install on the external storage, so you don't need to worry about your existing
+applications. However, if you're certain that your application should never be installed on the
+external storage, then you should make this clear by declaring <a
+href="{@docRoot}guide/topics/manifest/manifest-element.html#install">{@code
+android:installLocation}</a> with a value of "{@code internalOnly}". Though this does not
+change the default behavior, it explicitly states that your application should only be installed
+on the internal storage and serves as a reminder to you and other developers that this decision has
+been made.</p>
+
+
+<h2 id="Should">Applications That Should Install on External Storage</h2>
+
+<p>In simple terms, anything that does not use the features listed in the previous section
+are safe when installed on external storage. Large games are more commonly the types of
+applications that should allow installation on external storage, because games don't typically
+provide additional services when inactive. When external storage becomes unavailable and a game
+process is killed, there should be no visible effect when the storage becomes available again and
+the user restarts the game (assuming that the game properly saved its state during the normal
+<a href="{@docRoot}guide/components/activities.html#Lifecycle">Activity lifecycle</a>).</p>
+
+<p>If your application requires several megabytes for the APK file, you should
+carefully consider whether to enable the application to install on the external storage so that
+users can preserve space on their internal storage.</p>
+
diff --git a/docs/html/guide/topics/drawing/index.html b/docs/html/guide/topics/drawing/index.html
deleted file mode 100644
index 43c1499..0000000
--- a/docs/html/guide/topics/drawing/index.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=opengl.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<a href="opengl.html">click here</a> if you are not redirected.
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/topics/drawing/opengl.jd b/docs/html/guide/topics/drawing/opengl.jd
deleted file mode 100644
index e22a251..0000000
--- a/docs/html/guide/topics/drawing/opengl.jd
+++ /dev/null
@@ -1,53 +0,0 @@
-page.title=OpenGL
-@jd:body
-
-<p>Android includes support for 3D hardware acceleration. This functionality is
-accessed via the OpenGL API &mdash; specifically, the OpenGL ES API.</p>
-
-<p>OpenGL ES is a flavor of the OpenGL specification intended for embedded
-devices. Versions of OpenGL ES are loosely peered to versions of the primary
-OpenGL standard. Android currently supports OpenGL ES 1.0, which corresponds
-to OpenGL 1.3. So, if the application you have in mind is possible with OpenGL
-1.3 on a desktop system, it should be possible on Android.</p>
-
-<p>The specific API provided by Android is similar to the J2ME JSR239 OpenGL
-ES API. However, it may not be identical, so watch out for deviations.</p>
-
-<h2>Using the API</h2>
-
-<p>Here's how to use the API at an extremely high level:</p>
-
-<ol>
-<li>Write a custom View subclass.</li>
-<li>Obtain a handle to an OpenGLContext, which provides access to the OpenGL functionality.</li>
-<li>In your View's onDraw() method, get a handle to a GL object, and use its methods to perform GL operations.</li>
-</ol>
-
-<p>For an example of this usage model (based on the classic GL ColorCube),
-see
-<a href="{@docRoot}samples/ApiDemos/src/com/example/android/apis/graphics/GLView1.html">com.android.samples.graphics.GLView1.java</a>
-in the ApiDemos sample code project. A slightly more sophisticated version showing how to use
-it with threads can be found in 
-<a href="{@docRoot}samples/ApiDemos/src/com/example/android/apis/graphics/GLSurfaceViewActivity.html">com.android.samples.graphics.GLSurfaceViewActivity.java</a>.
-</p>
-
-<p>Writing a summary of how to actually write 3D applications using OpenGL is
-beyond the scope of this text and is left as an exercise for the reader.</p>
-
-<h2>Links to Additional Information</h2>
-
-<p>Information about OpenGL ES can be
-found at <a title="http://www.khronos.org/opengles/"
-href="http://www.khronos.org/opengles/">http://www.khronos.org/opengles/</a>.</p> 
-
-<p>Information specifically
-about OpenGL ES 1.0 (including a detailed specification) can be found
-at <a title="http://www.khronos.org/opengles/1_X/"
-href="http://www.khronos.org/opengles/1_X/">http://www.khronos.org/opengles/1_X/</a>.</p>
-
-<p>The documentation for the Android {@link javax.microedition.khronos.opengles.GL
-OpenGL ES implementations} are also available.</p>
-
-<p>Finally, note that though Android does include some basic support for
-OpenGL ES 1.1, the support is <strong>not complete</strong>, and should not be relied
-upon at this time.</p>
diff --git a/docs/html/guide/topics/graphics/2d-graphics.jd b/docs/html/guide/topics/graphics/2d-graphics.jd
index 5cf1a59..d842cb9 100644
--- a/docs/html/guide/topics/graphics/2d-graphics.jd
+++ b/docs/html/guide/topics/graphics/2d-graphics.jd
@@ -476,7 +476,7 @@
 do.
 </p>
 
-<p>The <a href="{@docRoot}guide/developing/tools/draw9patch.html">Draw 9-patch</a> tool offers
+<p>The <a href="{@docRoot}tools/help/draw9patch.html">Draw 9-patch</a> tool offers
    an extremely handy way to create your NinePatch images, using a WYSIWYG graphics editor. It
 even raises warnings if the region you've defined for the stretchable area is at risk of
 producing drawing artifacts as a result of the pixel replication.
diff --git a/docs/html/guide/topics/graphics/animation.jd b/docs/html/guide/topics/graphics/animation.jd
deleted file mode 100644
index 561369d..0000000
--- a/docs/html/guide/topics/graphics/animation.jd
+++ /dev/null
@@ -1,64 +0,0 @@
-page.title=Animation
-@jd:body
-
-  <div id="qv-wrapper">
-    <div id="qv">
-
-      <h2>See also</h2>
-      <ol>
-        <li><a href="{@docRoot}guide/topics/graphics/prop-animation.html">Property
-Animation</a></li>
-        <li><a href="{@docRoot}guide/topics/graphics/view-animation.html">View Animation</a></li>
-        <li><a href="{@docRoot}guide/topics/graphics/drawable-animation.html">Drawable Animation</a></li>
-      <ol>
-    </div>
-  </div>
-
-  <p>The Android framework provides two animation systems: property animation
-  (introduced in Android 3.0) and view animation. Both animation systems are viable options,
-  but the property animation system, in general, is the preferred method to use, because it
-  is more flexible and offers more features. In addition to these two systems, you can utilize Drawable
-animation, which allows you to load drawable resources and display them one frame after
-another.</p>
-
-  <p>The view animation system provides the capability to only animate {@link android.view.View}
-objects, so if you wanted to animate non-{@link android.view.View} objects, you have to implement
-your own code to do so. The view animation system is also constrained in the fact that it only
-exposes a few aspects of a {@link android.view.View} object to animate, such as the scaling and
-rotation of a View but not the background color, for instance.</p>
-
-  <p>Another disadvantage of the view animation system is that it only modified where the
-  View was drawn, and not the actual View itself. For instance, if you animated a button to move
-  across the screen, the button draws correctly, but the actual location where you can click the
-  button does not change, so you have to implement your own logic to handle this.</p>
-
-  <p>With the property animation system, these constraints are completely removed, and you can animate
-  any property of any object (Views and non-Views) and the object itself is actually modified.
-  The property animation system is also more robust in the way it carries out animation. At
-  a high level, you assign animators to the properties that you want to animate, such as color,
-  position, or size and can define aspects of the animation such as interpolation and
-  synchronization of multiple animators.</p>
-
-  <p>The view animation system, however, takes less time to setup and requires less code to write.
-  If view animation accomplishes everything that you need to do, or if your existing code already
-  works the way you want, there is no need to use the property animation system. It also might
-  make sense to use both animation systems for different situations if the use case arises.</p>
-
-<dl>
-<dt><strong><a href="{@docRoot}guide/topics/graphics/prop-animation.html">Property
-Animation</a></strong></dt>
-<dd>Introduced in Android 3.0 (API level 11), the property animation system lets you
-animate properties of any object, including ones that are not rendered to the screen. The system is
-extensible and lets you animate properties of custom types as well.</dd>
-
-<dt><strong><a href="{@docRoot}guide/topics/graphics/view-animation.html">View
-Animation</a></strong></dt>
-<dd>View Animation is the older system and can only be used for Views. It is relatively easy to
-setup and offers enough capabilities to meet many application's needs.</dd>
-</dl>
-
-<dt><strong><a href="{@docRoot}guide/topics/graphics/drawable-animation.html">Drawable
-Animation</a></strong></dt>
-<dd>Drawable animation involves displaying {@link android.graphics.drawable.Drawable} resources one
-after another, like a roll of film. This method of animation is useful if you want to animate
-things that are easier to represent with Drawable resources, such as a progression of bitmaps.</dd>
diff --git a/docs/html/guide/topics/graphics/index.jd b/docs/html/guide/topics/graphics/index.jd
index ab623c2..17f6309 100644
--- a/docs/html/guide/topics/graphics/index.jd
+++ b/docs/html/guide/topics/graphics/index.jd
@@ -1,51 +1,49 @@
-page.title=Graphics
+page.title=Animation and Graphics
+page.landing=true
+page.landing.intro=Make your apps look and perform their best using Android's powerful graphics features such as OpenGL, hardware acceleration, and built-in UI animations.
+page.landing.image=
+
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
-  <h2>Topics</h2>
-  <ol>
-    <li><a href="{@docRoot}guide/topics/graphics/2d-graphics.html">Canvas and Drawables</a></li>
-    <li><a href="{@docRoot}guide/topics/graphics/hardware-accel.html">Hardware Acceleration</a></li>
-    <li><a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL</a></li>
-  </ol>
+<div class="landing-docs">
+
+  <div class="col-6">
+    <h3>Blog Articles</h3>
+      <a
+href="http://android-developers.blogspot.com/2011/11/android-40-graphics-and-animations.html">
+        <h4>Android 4.0 Graphics and Animations</h4>
+        <p>Earlier this year, Android 3.0 launched with a new 2D rendering pipeline designed to
+support hardware acceleration on tablets. With this new pipeline, all drawing operations performed
+by the UI toolkit are carried out using the GPU. You’ll be happy to hear that Android 4.0, Ice Cream
+Sandwich, brings an improved version of the hardware-accelerated 2D rendering pipeline.</p>
+      </a>
+  
+      <a
+href="http://android-developers.blogspot.com/2011/05/introducing-viewpropertyanimator.html">
+        <h4>Introducing ViewPropertyAnimator</h4>
+        <p>This new animation system makes it easy to animate any kind of property on any object,
+including the new properties added to the View class in 3.0. In the 3.1 release, we added a small
+utility class that makes animating these properties even easier.</p>
+      </a>
+      
+      <a
+href="http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html">
+        <h4>Android 3.0 Hardware Acceleration</h4>
+        <p>Hardware accelerated graphics is nothing new to the Android platform, it has always been
+used for windows composition or OpenGL games for instance, but with this new rendering pipeline
+applications can benefit from an extra boost in performance.</p>
+      </a>
   </div>
-</div>
 
-<p>When writing an application, it's important to consider exactly what your graphical demands will be.
-Varying graphical tasks are best accomplished with varying techniques. For example, graphics and animations
-for a rather static application should be implemented much differently than graphics and animations
-for an interactive game. Here, we'll discuss a few of the options you have for drawing graphics
-on Android and which tasks they're best suited for.
-</p>
+  <div class="col-6">
+    <h3>Training</h3>
+    <a href="{@docRoot}training/displaying-bitmaps/index.html">
+      <h4>Displaying Bitmaps Efficiently</h4>
+      <p>This class covers some common techniques for processing and loading Bitmap objects in a way
+that keeps your user interface (UI) components responsive and avoids exceeding your application
+memory limit.</p>
+    </a>
+    
 
-<dl>
-<dt><strong><a href="{@docRoot}guide/topics/graphics/2d-graphics.html">Canvas and
-Drawables</a></strong></dt>
-<dd>Android provides a set of {@link android.view.View} widgets that provide general functionality
-for a wide array of user interfaces. You can also extend these widgets to modify the way they
-look or behave. In addition, you can do your own custom 2D rendering using the various drawing
-methods contained in the {@link android.graphics.Canvas} class or create {@link
-android.graphics.drawable.Drawable} objects for things such as textured buttons or frame-by-frame
-animations.</dd>
-
-<dt><strong><a href="{@docRoot}guide/topics/graphics/hardware-accel.html">Hardware
-Acceleration</a></strong></dt>
-<dd>Beginning in Android 3.0, you can hardware accelerate the majority of
-the drawing done by the Canvas APIs to further increase their performance.</dd>
-
-<dt><strong><a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL</a></strong></dt>
-<dd>Android supports OpenGL ES 1.0 and 2.0, with Android framework APIs as well as natively
-with the Native Development Kit (NDK). Using the framework APIs is desireable when you want to add a
-few graphical enhancements to your application that are not supported with the Canvas APIs, or if
-you desire platform independence and don't demand high performance. There is a performance hit in
-using the framework APIs compared to the NDK, so for many graphic intensive applications such as
-games, using the NDK is beneficial (It is important to note though that you can still get adequate
-performance using the framework APIs. For example, the Google Body app is developed entirely
-using the framework APIs). OpenGL with the NDK is also useful if you have a lot of native
-code that you want to port over to Android. For more information about using the NDK, read the
-docs in the <code>docs/</code> directory of the <a href="{@docRoot}sdk/ndk/index.html">NDK
-download.</a></dd>
-</dl>
-
-
+  </div>
+</div>
\ No newline at end of file
diff --git a/docs/html/guide/topics/graphics/opengl.jd b/docs/html/guide/topics/graphics/opengl.jd
index a786d42..a9fedb7 100644
--- a/docs/html/guide/topics/graphics/opengl.jd
+++ b/docs/html/guide/topics/graphics/opengl.jd
@@ -20,6 +20,7 @@
           <li><a href="#proj-es1">Projection and camera in ES 2.0</a></li>
         </ol>
       </li>
+      <li><a href="#faces-winding">Shape Faces and Winding</li>
       <li><a href="#compatibility">OpenGL Versions and Device Compatibility</a>
         <ol>
           <li><a href="#textures">Texture compression support</a></li>
@@ -33,11 +34,6 @@
       <li>{@link android.opengl.GLSurfaceView}</li>
       <li>{@link android.opengl.GLSurfaceView.Renderer}</li>
     </ol>
-    <h2>Related tutorials</h2>
-    <ol>
-      <li><a href="{@docRoot}resources/tutorials/opengl/opengl-es10.html">OpenGL ES 1.0</a></li>
-      <li><a href="{@docRoot}resources/tutorials/opengl/opengl-es20.html">OpenGL ES 2.0</a></li>
-    </ol>
     <h2>Related samples</h2>
     <ol>
       <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/graphics/GLSurfaceViewActivity.html">GLSurfaceViewActivity</a></li>
@@ -48,8 +44,8 @@
     </ol>
     <h2>See also</h2>
     <ol>
-      <li><a href="{@docRoot}resources/articles/glsurfaceview.html">Introducing
-GLSurfaceView</a></li>
+      <li><a href="{@docRoot}training/graphics/opengl/index.html">
+          Displaying Graphics with OpenGL ES</a></li>
       <li><a href="http://www.khronos.org/opengles/">OpenGL ES</a></li>
       <li><a href="http://www.khronos.org/opengles/1_X/">OpenGL ES 1.x Specification</a></li>
       <li><a href="http://www.khronos.org/opengles/2_X/">OpenGL ES 2.x specification</a></li>
@@ -73,7 +69,7 @@
 
 <p>Android supports OpenGL both through its framework API and the Native Development
 Kit (NDK). This topic focuses on the Android framework interfaces. For more information about the
-NDK, see the <a href="{@docRoot}sdk/ndk/index.html">Android NDK</a>.
+NDK, see the <a href="{@docRoot}tools/sdk/ndk/index.html">Android NDK</a>.
 
 <p>There are two foundational classes in the Android framework that let you create and manipulate
 graphics with the OpenGL ES API: {@link android.opengl.GLSurfaceView} and {@link
@@ -389,6 +385,43 @@
 href="{@docRoot}resources/tutorials/opengl/opengl-es20.html#projection-and-views">OpenGL ES 2.0
 tutorial</a>.</p>
 
+<h2 id="faces-winding">Shape Faces and Winding</h2>
+
+<p>In OpenGL, the face of a shape is a surface defined by three or more points in three-dimensional
+space. A set of three or more three-dimensional points (called vertices in OpenGL) have a front face
+and a back face. How do you know which face is front and which is the back? Good question. The
+answer has to do with winding, or, the direction in which you define the points of a shape.</p>
+
+<img src="{@docRoot}images/opengl/ccw-winding.png">
+<p class="img-caption">
+  <strong>Figure 1.</strong> Illustration of a coordinate list which translates into a
+counterclockwise drawing order.</p>
+
+<p>In this example, the points of the triangle are defined in an order such that they are drawn in a
+counterclockwise direction. The order in which these coordinates are drawn defines the winding
+direction for the shape. By default, in OpenGL, the face which is drawn counterclockwise is the
+front face. The triangle shown in Figure 1 is defined so that you are looking at the front face of
+the shape (as interpreted by OpenGL) and the other side is the back face.</p>
+
+<p>Why is it important to know which face of a shape is the front face? The answer has to do with a
+commonly used feature of OpenGL, called face culling. Face culling is an option for the OpenGL
+environment which allows the rendering pipeline to ignore (not calculate or draw) the back face of a
+shape, saving time, memory and processing cycles:</p>
+
+<pre>
+// enable face culling feature
+gl.glEnable(GL10.GL_CULL_FACE);
+// specify which faces to not draw
+gl.glCullFace(GL10.GL_BACK);
+</pre>
+
+<p>If you try to use the face culling feature without knowing which sides of your shapes are the
+front and back, your OpenGL graphics are going to look a bit thin, or possibly not show up at all.
+So, always define the coordinates of your OpenGL shapes in a counterclockwise drawing order.</p>
+
+<p class="note"><strong>Note:</strong> It is possible to set an OpenGL environment to treat the
+clockwise face as the front face, but doing so requires more code and is likely to confuse
+experienced OpenGL developers when you ask them for help. So don’t do that.</p>
 
 <h2 id="compatibility">OpenGL Versions and Device Compatibility</h2>
 
@@ -410,7 +443,8 @@
 href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/graphics/CompressedTextureActivity.html"
 >CompressedTextureActivity</a> code sample.</p>
 
-<p>To check if the ETC1 format is supported on a device, call the {@link
+<p>The ETC format is supported by most Android devices, but it not guarranteed to be available. To
+check if the ETC1 format is supported on a device, call the {@link
 android.opengl.ETC1Util#isETC1Supported() ETC1Util.isETC1Supported()} method.</p>
 
 <p class="note"><b>Note:</b> The ETC1 texture compression format does not support textures with an
diff --git a/docs/html/guide/topics/graphics/overview.jd b/docs/html/guide/topics/graphics/overview.jd
new file mode 100644
index 0000000..a53cd3f
--- /dev/null
+++ b/docs/html/guide/topics/graphics/overview.jd
@@ -0,0 +1,73 @@
+page.title=Animation and Graphics Overview
+@jd:body
+
+  <p>Android provides a variety of powerful APIs for applying animation to UI elements and drawing custom
+  2D and 3D graphics. The sections below provide an overview of the APIs and system capabilities available
+  and help you decide with approach is best for your needs.</p>
+
+  <h3 id="animation">Animation</h3>
+  
+  <p>The Android framework provides two animation systems: property animation
+  (introduced in Android 3.0) and view animation. Both animation systems are viable options,
+  but the property animation system, in general, is the preferred method to use, because it
+  is more flexible and offers more features. In addition to these two systems, you can utilize Drawable
+  animation, which allows you to load drawable resources and display them one frame after
+  another.</p>
+
+<dl>
+<dt><strong><a href="{@docRoot}guide/topics/graphics/prop-animation.html">Property
+Animation</a></strong></dt>
+<dd>Introduced in Android 3.0 (API level 11), the property animation system lets you
+animate properties of any object, including ones that are not rendered to the screen. The system is
+extensible and lets you animate properties of custom types as well.</dd>
+
+<dt><strong><a href="{@docRoot}guide/topics/graphics/view-animation.html">View
+Animation</a></strong></dt>
+<dd>View Animation is the older system and can only be used for Views. It is relatively easy to
+setup and offers enough capabilities to meet many application's needs.</dd>
+</dl>
+
+<dt><strong><a href="{@docRoot}guide/topics/graphics/drawable-animation.html">Drawable
+Animation</a></strong></dt>
+<dd>Drawable animation involves displaying {@link android.graphics.drawable.Drawable} resources one
+after another, like a roll of film. This method of animation is useful if you want to animate
+things that are easier to represent with Drawable resources, such as a progression of bitmaps.</dd>
+
+<h3 id="graphics">2D and 3D Graphics</h3>
+
+<p>When writing an application, it's important to consider exactly what your graphical demands will be.
+Varying graphical tasks are best accomplished with varying techniques. For example, graphics and animations
+for a rather static application should be implemented much differently than graphics and animations
+for an interactive game. Here, we'll discuss a few of the options you have for drawing graphics
+on Android and which tasks they're best suited for.
+</p>
+
+<dl>
+<dt><strong><a href="{@docRoot}guide/topics/graphics/2d-graphics.html">Canvas and
+Drawables</a></strong></dt>
+<dd>Android provides a set of {@link android.view.View} widgets that provide general functionality
+for a wide array of user interfaces. You can also extend these widgets to modify the way they
+look or behave. In addition, you can do your own custom 2D rendering using the various drawing
+methods contained in the {@link android.graphics.Canvas} class or create {@link
+android.graphics.drawable.Drawable} objects for things such as textured buttons or frame-by-frame
+animations.</dd>
+
+<dt><strong><a href="{@docRoot}guide/topics/graphics/hardware-accel.html">Hardware
+Acceleration</a></strong></dt>
+<dd>Beginning in Android 3.0, you can hardware accelerate the majority of
+the drawing done by the Canvas APIs to further increase their performance.</dd>
+
+<dt><strong><a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL</a></strong></dt>
+<dd>Android supports OpenGL ES 1.0 and 2.0, with Android framework APIs as well as natively
+with the Native Development Kit (NDK). Using the framework APIs is desireable when you want to add a
+few graphical enhancements to your application that are not supported with the Canvas APIs, or if
+you desire platform independence and don't demand high performance. There is a performance hit in
+using the framework APIs compared to the NDK, so for many graphic intensive applications such as
+games, using the NDK is beneficial (It is important to note though that you can still get adequate
+performance using the framework APIs. For example, the Google Body app is developed entirely
+using the framework APIs). OpenGL with the NDK is also useful if you have a lot of native
+code that you want to port over to Android. For more information about using the NDK, read the
+docs in the <code>docs/</code> directory of the <a href="{@docRoot}tools/sdk/ndk/index.html">NDK
+download.</a></dd>
+</dl>
+
diff --git a/docs/html/guide/topics/graphics/prop-animation.jd b/docs/html/guide/topics/graphics/prop-animation.jd
index be24788..b733624 100644
--- a/docs/html/guide/topics/graphics/prop-animation.jd
+++ b/docs/html/guide/topics/graphics/prop-animation.jd
@@ -166,6 +166,31 @@
   "{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/animation/index.html">API
   Demos</a> sample project provides many examples on how to use the property
   animation system.</p>
+  
+  <h2 id="property-vs-view">How Property Animation Differs from View Animation</h2>
+  
+  <p>The view animation system provides the capability to only animate {@link android.view.View}
+  objects, so if you wanted to animate non-{@link android.view.View} objects, you have to implement
+  your own code to do so. The view animation system is also constrained in the fact that it only
+  exposes a few aspects of a {@link android.view.View} object to animate, such as the scaling and
+  rotation of a View but not the background color, for instance.</p>
+
+  <p>Another disadvantage of the view animation system is that it only modified where the
+  View was drawn, and not the actual View itself. For instance, if you animated a button to move
+  across the screen, the button draws correctly, but the actual location where you can click the
+  button does not change, so you have to implement your own logic to handle this.</p>
+
+  <p>With the property animation system, these constraints are completely removed, and you can animate
+  any property of any object (Views and non-Views) and the object itself is actually modified.
+  The property animation system is also more robust in the way it carries out animation. At
+  a high level, you assign animators to the properties that you want to animate, such as color,
+  position, or size and can define aspects of the animation such as interpolation and
+  synchronization of multiple animators.</p>
+
+  <p>The view animation system, however, takes less time to setup and requires less code to write.
+  If view animation accomplishes everything that you need to do, or if your existing code already
+  works the way you want, there is no need to use the property animation system. It also might
+  make sense to use both animation systems for different situations if the use case arises.</p>
 
   <h2>API Overview</h2>
 
diff --git a/docs/html/guide/topics/renderscript/compute.jd b/docs/html/guide/topics/graphics/renderscript/compute.jd
similarity index 100%
rename from docs/html/guide/topics/renderscript/compute.jd
rename to docs/html/guide/topics/graphics/renderscript/compute.jd
diff --git a/docs/html/guide/topics/renderscript/graphics.jd b/docs/html/guide/topics/graphics/renderscript/graphics.jd
similarity index 99%
rename from docs/html/guide/topics/renderscript/graphics.jd
rename to docs/html/guide/topics/graphics/renderscript/graphics.jd
index 462a990..58676ea 100644
--- a/docs/html/guide/topics/renderscript/graphics.jd
+++ b/docs/html/guide/topics/graphics/renderscript/graphics.jd
@@ -46,7 +46,8 @@
 
         <li><a href="{@docRoot}resources/samples/RenderScript/FountainFbo/index.html">FountainFbo</a></li>        
 
-        <li><a href="{@docRoot}resources/samples/RenderScript/HelloWorld/index.html">Hello World</a></li>
+        <li><a href="{@docRoot}resources/samples/RenderScript/HelloWorld/index.html">Hello
+World</a></li>
 
         <li><a
 href="{@docRoot}resources/samples/RenderScript/MiscSamples/index.html">Misc Samples</a></li>
diff --git a/docs/html/guide/topics/renderscript/index.jd b/docs/html/guide/topics/graphics/renderscript/index.jd
similarity index 100%
rename from docs/html/guide/topics/renderscript/index.jd
rename to docs/html/guide/topics/graphics/renderscript/index.jd
diff --git a/docs/html/guide/topics/renderscript/reference.jd b/docs/html/guide/topics/graphics/renderscript/reference.jd
similarity index 100%
rename from docs/html/guide/topics/renderscript/reference.jd
rename to docs/html/guide/topics/graphics/renderscript/reference.jd
diff --git a/docs/html/guide/topics/intents/index.html b/docs/html/guide/topics/intents/index.html
deleted file mode 100644
index b831246..0000000
--- a/docs/html/guide/topics/intents/index.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=intents-filters.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<a href="intents-filters.html">click here</a> if you are not redirected.
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/topics/location/index.jd b/docs/html/guide/topics/location/index.jd
index 8a2e9cd..54c034d 100644
--- a/docs/html/guide/topics/location/index.jd
+++ b/docs/html/guide/topics/location/index.jd
@@ -13,8 +13,7 @@
 
   <h2>Topics</h2>
   <ol>
-    <li><a href="{@docRoot}guide/topics/location/obtaining-user-location.html">Obtaining User
-Location</a></li>
+    <li><a href="{@docRoot}guide/topics/location/strategies.html">Location Strategies</a></li>
   </ol>
   
   <h2>See Also</h2>
@@ -58,8 +57,7 @@
 </ul>
 
 <p>For more information, read the guide to <a
-href="{@docRoot}guide/topics/location/obtaining-user-location.html">Obtaining User
-Location</a>.</p>
+href="{@docRoot}guide/topics/location/strategies.html">Location Strategies</a>.</p>
 
 
 <h2 id="maps">Google Maps External Library</h2>
@@ -98,8 +96,8 @@
 href="http://code.google.com/android/add-ons/google-apis">http://code.google.com/android/add-ons/google-apis</a></p>
 
 <p>For your convenience, the Google APIs add-on is also available as a downloadable component from
-the Android SDK Manager (see <a href="{@docRoot}sdk/adding-components.html">Adding SDK
-Components</a>).</p>
+the Android SDK Manager (see <a href="{@docRoot}sdk/exploring.html">Exploring the
+SDK</a>).</p>
 
 <p class="note"><strong>Note:</strong> In order to display Google Maps data in a
 MapView, you must register with the Google Maps service and obtain a Maps API
diff --git a/docs/html/guide/topics/location/obtaining-user-location.jd b/docs/html/guide/topics/location/strategies.jd
similarity index 98%
rename from docs/html/guide/topics/location/obtaining-user-location.jd
rename to docs/html/guide/topics/location/strategies.jd
index 3b450f0..f790953 100644
--- a/docs/html/guide/topics/location/obtaining-user-location.jd
+++ b/docs/html/guide/topics/location/strategies.jd
@@ -1,4 +1,4 @@
-page.title=Obtaining User Location
+page.title=Location Strategies
 parent.title=Location and Maps
 parent.link=index.html
 @jd:body
@@ -422,7 +422,7 @@
 </ul>
 
 <p>For more information on using DDMS to spoof location data, see
-<a href="{@docRoot}guide/developing/debugging/ddms.html">Using DDMS</a>.
+<a href="{@docRoot}tools/debugging/ddms.html">Using DDMS</a>.
 
 
 <h3 id="MockGeo">Using the "geo" command in the emulator console</h3>
@@ -451,4 +451,4 @@
 </ol>
 
 <p>For information about how to connect to the emulator console, see
-<a href="{@docRoot}guide/developing/devices/emulator.html#console">Using the Emulator Console</a>.</p>
+<a href="{@docRoot}tools/devices/emulator.html#console">Using the Emulator Console</a>.</p>
diff --git a/docs/html/guide/topics/manifest/action-element.jd b/docs/html/guide/topics/manifest/action-element.jd
index 8ad94cd..037d0dc 100644
--- a/docs/html/guide/topics/manifest/action-element.jd
+++ b/docs/html/guide/topics/manifest/action-element.jd
@@ -16,7 +16,7 @@
 An <code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element must contain 
 one or more {@code &lt;action&gt;} elements.  If it doesn't contain any, no
 Intent objects will get through the filter.  See 
-<a href="{@docRoot}guide/topics/intents/intents-filters.html">Intents and 
+<a href="{@docRoot}guide/components/intents-filters.html">Intents and 
 Intent Filters</a> for details on intent filters and the role of action
 specifications within a filter.
 </dd>
diff --git a/docs/html/guide/topics/manifest/activity-element.jd b/docs/html/guide/topics/manifest/activity-element.jd
index 9dc124b..88f226c 100644
--- a/docs/html/guide/topics/manifest/activity-element.jd
+++ b/docs/html/guide/topics/manifest/activity-element.jd
@@ -508,7 +508,7 @@
 
 <p>For more information on launch modes and their interaction with Intent
 flags, see the 
-<a href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back Stack</a>
+<a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back Stack</a>
 document.
 </p>
 </dd>
diff --git a/docs/html/guide/topics/manifest/category-element.jd b/docs/html/guide/topics/manifest/category-element.jd
index f392c0a..41a2cfded 100644
--- a/docs/html/guide/topics/manifest/category-element.jd
+++ b/docs/html/guide/topics/manifest/category-element.jd
@@ -12,7 +12,7 @@
 
 <dt>description:</dt>
 <dd>Adds a category name to an intent filter.  See 
-<a href="{@docRoot}guide/topics/intents/intents-filters.html">Intents and 
+<a href="{@docRoot}guide/components/intents-filters.html">Intents and 
 Intent Filters</a> for details on intent filters and the role of category
 specifications within a filter.</dd>
 
diff --git a/docs/html/guide/topics/manifest/compatible-screens-element.jd b/docs/html/guide/topics/manifest/compatible-screens-element.jd
index a27c316..bb004fb 100644
--- a/docs/html/guide/topics/manifest/compatible-screens-element.jd
+++ b/docs/html/guide/topics/manifest/compatible-screens-element.jd
@@ -54,7 +54,7 @@
 &lt;supports-screens&gt;}</a> element to declare whether the system should resize your
 application for different screen sizes.</p>
 
-  <p>Also see the <a href="{@docRoot}guide/appendix/market-filters.html">Filters on Google Play</a>
+  <p>Also see the <a href="{@docRoot}guide/google/play/filters.html">Filters on Google Play</a>
 document for more information about how Google Play filters applications using this and
 other manifest elements.</p>
 
@@ -138,5 +138,5 @@
 <dt>see also:</dt>
 <dd><a
 href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></dd>
-<dd><a href="{@docRoot}guide/appendix/market-filters.html">Filters on Google Play</a></dd>
+<dd><a href="{@docRoot}guide/google/play/filters.html">Filters on Google Play</a></dd>
 </dl>
diff --git a/docs/html/guide/topics/manifest/data-element.jd b/docs/html/guide/topics/manifest/data-element.jd
index 9b0d0df..8fd91de 100644
--- a/docs/html/guide/topics/manifest/data-element.jd
+++ b/docs/html/guide/topics/manifest/data-element.jd
@@ -62,7 +62,7 @@
 <p>
 Information on how intent filters work, including the rules for how Intent objects
 are matched against filters, can be found in another document,
-<a href="{@docRoot}guide/topics/intents/intents-filters.html">Intents and
+<a href="{@docRoot}guide/components/intents-filters.html">Intents and
 Intent Filters</a>.  See also the 
 <a href="{@docRoot}guide/topics/manifest/manifest-intro.html#ifs">Intent Filters</a> 
 section in the introduction.
diff --git a/docs/html/guide/topics/manifest/intent-filter-element.jd b/docs/html/guide/topics/manifest/intent-filter-element.jd
index d293400..f90541c 100644
--- a/docs/html/guide/topics/manifest/intent-filter-element.jd
+++ b/docs/html/guide/topics/manifest/intent-filter-element.jd
@@ -41,7 +41,7 @@
 
 <p>
 For a more detailed discussion of filters, see the separate  
-<a href="{@docRoot}guide/topics/intents/intents-filters.html">Intents 
+<a href="{@docRoot}guide/components/intents-filters.html">Intents 
 and Intent Filters</a> document, as well as the 
 <a href="{@docRoot}guide/topics/manifest/manifest-intro.html#ifs">Intents Filters</a> 
 section in the introduction.
diff --git a/docs/html/guide/topics/manifest/manifest-element.jd b/docs/html/guide/topics/manifest/manifest-element.jd
index 98968d7..a3d4a95 100644
--- a/docs/html/guide/topics/manifest/manifest-element.jd
+++ b/docs/html/guide/topics/manifest/manifest-element.jd
@@ -152,7 +152,7 @@
 
 <p class="caution"><strong>Caution:</strong> If your application uses Google Play's Copy 
   Protection feature, it cannot be installed to a device's SD card. However, if you use Google 
-  Play's <a href="{@docRoot}guide/market/licensing.html">Application Licensing</a> instead, 
+  Play's <a href="{@docRoot}guide/google/play/licensing.html">Application Licensing</a> instead, 
   your application <em>can</em> be installed to internal or external storage, including SD cards.</p>
 
 <p class="note"><strong>Note:</strong> By default, your application will be installed on the
diff --git a/docs/html/guide/topics/manifest/manifest-intro.jd b/docs/html/guide/topics/manifest/manifest-intro.jd
index 0f20305..a130f7d 100644
--- a/docs/html/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html/guide/topics/manifest/manifest-intro.jd
@@ -345,7 +345,7 @@
 <p>
 For information on how Intent objects are tested against intent filters, 
 see a separate document, 
-<a href="{@docRoot}guide/topics/intents/intents-filters.html">Intents 
+<a href="{@docRoot}guide/components/intents-filters.html">Intents 
 and Intent Filters</a>.
 </p>
 
diff --git a/docs/html/guide/topics/manifest/supports-gl-texture-element.jd b/docs/html/guide/topics/manifest/supports-gl-texture-element.jd
index ebdd0b1..6dfc59e 100644
--- a/docs/html/guide/topics/manifest/supports-gl-texture-element.jd
+++ b/docs/html/guide/topics/manifest/supports-gl-texture-element.jd
@@ -141,7 +141,7 @@
 <dt>see also:</dt>
 <dd>
   <ul>
-    <li><a href="{@docRoot}guide/appendix/market-filters.html">Filters on Google Play</a></li>
+    <li><a href="{@docRoot}guide/google/play/filters.html">Filters on Google Play</a></li>
   </ul>
 </dd>
 
diff --git a/docs/html/guide/topics/manifest/uses-feature-element.jd b/docs/html/guide/topics/manifest/uses-feature-element.jd
index 5f0a501..f605295 100644
--- a/docs/html/guide/topics/manifest/uses-feature-element.jd
+++ b/docs/html/guide/topics/manifest/uses-feature-element.jd
@@ -207,7 +207,7 @@
     <li>{@link android.content.pm.FeatureInfo}</li>
     <li>{@link android.content.pm.ConfigurationInfo}</li>
     <li><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html"><code>&lt;uses-permission&gt;</code></a></li>
-    <li><a href="{@docRoot}guide/appendix/market-filters.html">Filters on Google Play</a></li>
+    <li><a href="{@docRoot}guide/google/play/filters.html">Filters on Google Play</a></li>
   </ul>
 </dd>
 
@@ -501,7 +501,7 @@
 <p class="note"><strong>Note:</strong> You must use the version of
 <code>aapt</code> that is provided for the latest Platform-Tools component available. If
 you do not have the latest Platform-Tools component, download it using the <a
-href="{@docRoot}sdk/adding-components.html">Android SDK Manager</a>.
+href="{@docRoot}sdk/exploring.html">Android SDK Manager</a>.
 </p></li>
 <li>Run <code>aapt</code> using this syntax: </li>
 </ol>
diff --git a/docs/html/guide/topics/manifest/uses-library-element.jd b/docs/html/guide/topics/manifest/uses-library-element.jd
index 2f8eb50..3ad8ddb 100644
--- a/docs/html/guide/topics/manifest/uses-library-element.jd
+++ b/docs/html/guide/topics/manifest/uses-library-element.jd
@@ -46,7 +46,7 @@
         <dd>
             Google Play filters applications based on the libraries installed on the
             user's device. For more information about filtering, see the topic
-            <a href="{@docRoot}guide/appendix/market-filters.html">Filters on Google Play</a>.
+            <a href="{@docRoot}guide/google/play/filters.html">Filters on Google Play</a>.
         </dd>
     </dl>
     <p>
diff --git a/docs/html/guide/topics/manifest/uses-sdk-element.jd b/docs/html/guide/topics/manifest/uses-sdk-element.jd
index 8fa39d1..29dcb56 100644
--- a/docs/html/guide/topics/manifest/uses-sdk-element.jd
+++ b/docs/html/guide/topics/manifest/uses-sdk-element.jd
@@ -3,6 +3,29 @@
 parent.link=manifest-intro.html
 @jd:body
 
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>In this document</h2>
+<ol>
+  <li><a href="#ApiLevels">What is API Level?</a></li>
+  <li><a href="#uses">Uses of API Level in Android</a></li>
+  <li><a href="#considerations">Development Considerations</a>
+    <ol>
+      <li><a href="#fc">Application forward compatibility</a></li>
+      <li><a href="#bc">Application backward compatibility</a></li>
+      <li><a href="#platform">Selecting a platform version and API Level</a></li>
+      <li><a href="#apilevel">Declaring a minimum API Level</a></li>
+      <li><a href="#testing">Testing against higher API Levels</a></li>
+    </ol>
+  </li>
+  <li><a href="#provisional">Using a Provisional API Level</a></li>
+  <li><a href="#filtering">Filtering the Reference Documentation by API Level</a></li>
+</ol>
+</div>
+</div>
+
 <dl class="xml">
 <dt>syntax:</dt>
 <dd><pre>
@@ -25,9 +48,8 @@
 its associated Android version number (for example, it is not the same as the
 major version or the sum of the major and minor versions).</p>
 
-<p>For more information, read about 
-<a href="{@docRoot}guide/appendix/api-levels.html">Android API Levels</a> and
-<a href="{@docRoot}guide/publishing/versioning.html">Versioning Your Applications</a>.
+<p>Also read the document about
+<a href="{@docRoot}tools/publishing/versioning.html">Versioning Your Applications</a>.
 </p></dd> 
 
  <div class="sidebox-wrapper" xstyle="margin-bottom:2em;margin-top:.5em;width:90%;"> 
@@ -42,7 +64,7 @@
 attributes in each application's manifest to establish its version-compatibility
 range, then shows or hides the application based on a comparison with the API
 Level of the user's Android system version. For more information, see <a
-href="{@docRoot}guide/appendix/market-filters.html">Filters on Google Play</a>.</p>
+href="{@docRoot}guide/google/play/filters.html">Filters on Google Play</a>.</p>
   </div>
 </div>
 
@@ -156,3 +178,403 @@
 <dd>API Level 1</dd>
 
 </dl>
+
+
+
+
+
+<!--- CONTENT FROM OLD API LEVEL DOC ---->
+
+
+
+
+<h2 id="ApiLevels">What is API Level?</h2>
+
+<p>API Level is an integer value that uniquely identifies the framework API
+revision offered by a version of the Android platform.</p>
+
+<p>The Android platform provides a framework API that applications can use to
+interact with the underlying Android system. The framework API consists of:</p>
+
+<ul>
+<li>A core set of packages and classes</li>
+<li>A set of XML elements and attributes for declaring a manifest file</li>
+<li>A set of XML elements and attributes for declaring and accessing resources</li>
+<li>A set of Intents</li>
+<li>A set of permissions that applications can request, as well as permission
+enforcements included in the system</li>
+</ul>
+
+<p>Each successive version of the Android platform can include updates to the
+Android application framework API that it delivers. </p>
+
+<p>Updates to the framework API are designed so that the new API remains
+compatible with earlier versions of the API. That is, most changes in the API
+are additive and introduce new or replacement functionality. As parts of the API
+are upgraded, the older replaced parts are deprecated but are not removed, so
+that existing applications can still use them. In a very small number of cases,
+parts of the API may be modified or removed, although typically such changes are
+only needed to ensure API robustness and application or system security. All
+other API parts from earlier revisions are carried forward without
+modification.</p>
+
+<p>The framework API that an Android platform delivers is specified using an
+integer identifier called "API Level". Each Android platform version supports
+exactly one API Level, although support is implicit for all earlier API Levels
+(down to API Level 1). The initial release of the Android platform provided 
+API Level 1 and subsequent releases have incremented the API Level.</p>
+
+<p>The following table specifies the API Level supported by each version of the
+Android platform.</p>
+
+<table>
+  <tr><th>Platform Version</th><th>API Level</th><th>VERSION_CODE</th><th>Notes</th></tr>
+ 
+     <tr><td><a href="{@docRoot}about/versions/android-4.0.3.html">Android 4.0.3</a></td>
+    <td><a href="{@docRoot}sdk/api_diff/15/changes.html" title="Diff Report">15</a></td>
+    <td>{@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1}</td>
+    <td rowspan="2"><a href="{@docRoot}about/versions/android-4.0-highlights.html">Platform
+Highlights</a></td></tr>
+
+    <tr><td><a href="{@docRoot}about/versions/android-4.0.html">Android 4.0, 4.0.1, 4.0.2</a></td>
+    <td><a href="{@docRoot}sdk/api_diff/14/changes.html" title="Diff Report">14</a></td>
+    <td>{@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}</td>
+    </tr>
+  
+    <tr><td><a href="{@docRoot}about/versions/android-3.2.html">Android 3.2</a></td>
+    <td><a href="{@docRoot}sdk/api_diff/13/changes.html" title="Diff Report">13</a></td>
+    <td>{@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}</td>
+    <td><!-- <a href="{@docRoot}about/versions/android-3.2-highlights.html">Platform
+Highlights</a>--></td></tr>
+  
+  <tr><td><a href="{@docRoot}about/versions/android-3.1.html">Android 3.1.x</a></td>
+    <td><a href="{@docRoot}sdk/api_diff/12/changes.html" title="Diff Report">12</a></td>
+    <td>{@link android.os.Build.VERSION_CODES#HONEYCOMB_MR1}</td>
+    <td><a href="{@docRoot}about/versions/android-3.1-highlights.html">Platform Highlights</a></td></tr>
+    
+  <tr><td><a href="{@docRoot}about/versions/android-3.0.html">Android 3.0.x</td>
+    <td><a href="{@docRoot}sdk/api_diff/11/changes.html" title="Diff Report">11</a></td>
+    <td>{@link android.os.Build.VERSION_CODES#HONEYCOMB}</td>
+    <td><a href="{@docRoot}about/versions/android-3.0-highlights.html">Platform Highlights</a></td></tr>
+    
+  <tr><td><a href="{@docRoot}about/versions/android-2.3.3.html">Android 2.3.4<br>Android 2.3.3</td>
+    <td><a href="{@docRoot}sdk/api_diff/10/changes.html" title="Diff Report">10</a></td>
+    <td>{@link android.os.Build.VERSION_CODES#GINGERBREAD_MR1}</td>
+    <td rowspan="2"><a href="{@docRoot}about/versions/android-2.3-highlights.html">Platform
+Highlights</a></td></tr>
+  
+  <tr><td><a href="{@docRoot}about/versions/android-2.3.html">Android 2.3.2<br>Android 2.3.1<br>Android
+2.3</td>
+    <td><a href="{@docRoot}sdk/api_diff/9/changes.html" title="Diff Report">9</a></td>
+    <td>{@link android.os.Build.VERSION_CODES#GINGERBREAD}</td>
+    </tr>
+  
+  <tr><td><a href="{@docRoot}about/versions/android-2.2.html">Android 2.2.x</td>
+    <td ><a href="{@docRoot}sdk/api_diff/8/changes.html" title="Diff Report">8</a></td>
+    <td>{@link android.os.Build.VERSION_CODES#FROYO}</td>
+    <td><a href="{@docRoot}about/versions/android-2.2-highlights.html">Platform Highlights</a></td></tr>
+  
+  <tr><td><a href="{@docRoot}about/versions/android-2.1.html">Android 2.1.x</td>
+    <td><a href="{@docRoot}sdk/api_diff/7/changes.html" title="Diff Report">7</a></td>
+    <td>{@link android.os.Build.VERSION_CODES#ECLAIR_MR1}</td>
+    <td rowspan="3" ><a href="{@docRoot}about/versions/android-2.0-highlights.html">Platform
+Highlights</a></td></tr>
+    
+  <tr><td><a href="{@docRoot}about/versions/android-2.0.1.html">Android 2.0.1</td>
+    <td><a href="{@docRoot}sdk/api_diff/6/changes.html" title="Diff Report">6</a></td>
+    <td>{@link android.os.Build.VERSION_CODES#ECLAIR_0_1}</td>
+    </tr>
+    
+  <tr><td><a href="{@docRoot}about/versions/android-2.0.html">Android 2.0</td>
+    <td><a href="{@docRoot}sdk/api_diff/5/changes.html" title="Diff Report">5</a></td>
+    <td>{@link android.os.Build.VERSION_CODES#ECLAIR}</td>
+    </tr>
+    
+  <tr><td><a href="{@docRoot}about/versions/android-1.6.html">Android 1.6</td>
+    <td><a href="{@docRoot}sdk/api_diff/4/changes.html" title="Diff Report">4</a></td>
+    <td>{@link android.os.Build.VERSION_CODES#DONUT}</td>
+    <td><a href="{@docRoot}about/versions/android-1.6-highlights.html">Platform Highlights</a></td></tr>
+    
+  <tr><td><a href="{@docRoot}about/versions/android-1.5.html">Android 1.5</td>
+    <td><a href="{@docRoot}sdk/api_diff/3/changes.html" title="Diff Report">3</a></td>
+    <td>{@link android.os.Build.VERSION_CODES#CUPCAKE}</td>
+    <td><a href="{@docRoot}about/versions/android-1.5-highlights.html">Platform Highlights</a></td></tr>
+    
+  <tr><td><a href="{@docRoot}about/versions/android-1.1.html">Android 1.1</td>
+    <td>2</td>
+    <td>{@link android.os.Build.VERSION_CODES#BASE_1_1}</td><td></td></tr>
+    
+  <tr><td>Android 1.0</td>
+    <td>1</td>
+    <td>{@link android.os.Build.VERSION_CODES#BASE}</td>
+    <td></td></tr>
+</table>
+
+
+<h2 id="uses">Uses of API Level in Android</h2>
+
+<p>The API Level identifier serves a key role in ensuring the best possible
+experience for users and application developers: 
+
+<ul>
+<li>It lets the Android platform describe the maximum framework API revision 
+that it supports</li>
+<li>It lets applications describe the framework API revision that they
+require</li>
+<li>It lets the system negotiate the installation of applications on the user's
+device, such that version-incompatible applications are not installed.</li>
+</ul>
+
+<p>Each Android platform version stores its API Level identifier internally, in
+the Android system itself. </p>
+
+<p>Applications can use a manifest element provided by the framework API &mdash;
+<code>&lt;uses-sdk&gt;</code> &mdash; to describe the minimum and maximum API
+Levels under which they are able to run, as well as the preferred API Level that
+they are designed to support. The element offers three key attributes:</p>
+
+<ul>
+<li><code>android:minSdkVersion</code> &mdash; Specifies the minimum API Level
+on which the application is able to run. The default value is "1".</li>
+<li><code>android:targetSdkVersion</code> &mdash; Specifies the API Level
+on which the application is designed to run. In some cases, this allows the
+application to use manifest elements or behaviors defined in the target
+API Level, rather than being restricted to using only those defined 
+for the minimum API Level.</li>
+<li><code>android:maxSdkVersion</code> &mdash; Specifies the maximum API Level
+on which the application is able to run. <strong>Important:</strong> Please read the <a
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
+documentation before using this attribute.  </li>
+</ul>
+
+<p>For example, to specify the minimum system API Level that an application
+requires in order to run, the application would include in its manifest a
+<code>&lt;uses-sdk&gt;</code> element with a <code>android:minSdkVersion</code>
+attribute. The value of <code>android:minSdkVersion</code> would be the integer
+corresponding to the API Level of the earliest version of the Android platform
+under which the application can run. </p>
+
+<p>When the user attempts to install an application, or when revalidating an
+appplication after a system update, the Android system first checks the
+<code>&lt;uses-sdk&gt;</code> attributes in the application's manifest and
+compares the values against its own internal API Level. The system allows the
+installation to begin only if these conditions are met:</p>
+
+<ul>
+<li>If a <code>android:minSdkVersion</code> attribute is declared, its value
+must be less than or equal to the system's API Level integer. If not declared,
+the system assumes that the application requires API Level 1. </li>
+<li>If a <code>android:maxSdkVersion</code> attribute is declared, its value
+must be equal to or greater than the system's API Level integer. 
+If not declared, the system assumes that the application
+has no maximum API Level. Please read the <a
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
+documentation for more information about how the system handles this attribute.</li>
+</ul>
+
+<p>When declared in an application's manifest, a <code>&lt;uses-sdk&gt;</code>
+element might look like this: </p>
+
+<pre>&lt;manifest&gt;
+  &lt;uses-sdk android:minSdkVersion="5" /&gt;
+  ...
+&lt;/manifest&gt;</pre>
+
+<p>The principal reason that an application would declare an API Level in
+<code>android:minSdkVersion</code> is to tell the Android system that it is
+using APIs that were <em>introduced</em> in the API Level specified. If the
+application were to be somehow installed on a platform with a lower API Level,
+then it would crash at run-time when it tried to access APIs that don't exist.
+The system prevents such an outcome by not allowing the application to be
+installed if the lowest API Level it requires is higher than that of the
+platform version on the target device.</p>
+
+<p>For example, the {@link android.appwidget} package was introduced with API
+Level 3. If an application uses that API, it must declare a
+<code>android:minSdkVersion</code> attribute with a value of "3". The
+application will then be installable on platforms such as Android 1.5 (API Level
+3) and Android 1.6 (API Level 4), but not on the Android 1.1 (API Level 2) and
+Android 1.0 platforms (API Level 1).</p>
+
+<p>For more information about how to specify an application's API Level
+requirements, see the <a
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
+ section of the manifest file documentation.</p>
+
+
+<h2 id="considerations">Development Considerations</h2>
+
+<p>The sections below provide information related to API level that you should
+consider when developing your application.</p>
+
+<h3 id="fc">Application forward compatibility</h3>
+
+<p>Android applications are generally forward-compatible with new versions of
+the Android platform.</p>
+
+<p>Because almost all changes to the framework API are additive, an Android
+application developed using any given version of the API (as specified by its
+API Level) is forward-compatible with later versions of the Android platform and
+higher API levels. The application should be able to run on all later versions
+of the Android platform, except in isolated cases where the application uses a
+part of the API that is later removed for some reason. </p>
+
+<p>Forward compatibility is important because many Android-powered devices
+receive over-the-air (OTA) system updates. The user may install your
+application and use it successfully, then later receive an OTA update to a new
+version of the Android platform. Once the update is installed, your application
+will run in a new run-time version of the environment, but one that has the API
+and system capabilities that your application depends on. </p>
+
+<p>In some cases, changes <em>below</em> the API, such those in the underlying
+system itself, may affect your application when it is run in the new
+environment. For that reason it's important for you, as the application
+developer, to understand how the application will look and behave in each system
+environment. To help you test your application on various versions of the Android
+platform, the Android SDK includes multiple platforms that you can download.
+Each platform includes a compatible system image that you can run in an AVD, to
+test your application. </p>
+
+<h3 id="bc">Application backward compatibility</h3>
+
+<p>Android applications are not necessarily backward compatible with versions of
+the Android platform older than the version against which they were compiled.
+</p>
+
+<p>Each new version of the Android platform can include new framework APIs, such
+as those that give applications access to new platform capabilities or replace
+existing API parts. The new APIs are accessible to applications when running on
+the new platform and, as mentioned above, also when running on later versions of
+the platform, as specified by API Level. Conversely, because earlier versions of
+the platform do not include the new APIs, applications that use the new APIs are
+unable to run on those platforms.</p>
+
+<p>Although it's unlikely that an Android-powered device would be downgraded to
+a previous version of the platform, it's important to realize that there are
+likely to be many devices in the field that run earlier versions of the
+platform. Even among devices that receive OTA updates, some might lag and
+might not receive an update for a significant amount of time. </p>
+
+<h3 id="platform">Selecting a platform version and API Level</h3>
+
+<p>When you are developing your application, you will need to choose
+the platform version against which you will compile the application. In
+general, you should compile your application against the lowest possible
+version of the platform that your application can support. 
+
+<p>You can determine the lowest possible platform version by compiling the
+application against successively lower build targets. After you determine the
+lowest version, you should create an AVD using the corresponding platform
+version (and API Level) and fully test your application. Make sure to declare a
+<code>android:minSdkVersion</code> attribute in the application's manifest and
+set its value to the API Level of the platform version. </p>
+
+<h3 id="apilevel">Declaring a minimum API Level</h3>
+
+<p>If you build an application that uses APIs or system features introduced in
+the latest platform version, you should set the
+<code>android:minSdkVersion</code> attribute to the API Level of the latest
+platform version. This ensures that users will only be able to install your
+application if their devices are running a compatible version of the Android
+platform. In turn, this ensures that your application can function properly on
+their devices. </p>
+
+<p>If your application uses APIs introduced in the latest platform version but
+does <em>not</em> declare a <code>android:minSdkVersion</code> attribute, then
+it will run properly on devices running the latest version of the platform, but
+<em>not</em> on devices running earlier versions of the platform. In the latter
+case, the application will crash at runtime when it tries to use APIs that don't
+exist on the earlier versions.</p>
+
+<h3 id="testing">Testing against higher API Levels</h3>
+
+<p>After compiling your application, you should make sure to test it on the
+platform specified in the application's <code>android:minSdkVersion</code>
+attribute. To do so, create an AVD that uses the platform version required by
+your application. Additionally, to ensure forward-compatibility, you should run
+and test the application on all platforms that use a higher API Level than that
+used by your application. </p>
+
+<p>The Android SDK includes multiple platform versions that you can use,
+including the latest version, and provides an updater tool that you can use to
+download other platform versions as necessary. </p>
+
+<p>To access the updater, use the <code>android</code> command-line tool,
+located in the &lt;sdk&gt;/tools directory. You can launch the SDK updater by
+executing <code>android sdk</code>. You can
+also simply double-click the android.bat (Windows) or android (OS X/Linux) file.
+In ADT, you can also access the updater by selecting 
+<strong>Window</strong>&nbsp;>&nbsp;<strong>Android SDK
+Manager</strong>.</p>
+
+<p>To run your application against different platform versions in the emulator,
+create an AVD for each platform version that you want to test. For more
+information about AVDs, see <a
+href="{@docRoot}tools/devices/index.html">Creating and Managing Virtual Devices</a>. If
+you are using a physical device for testing, ensure that you know the API Level
+of the Android platform it runs. See the table at the top of this document for
+a list of platform versions and their API Levels. </p>
+
+<h2 id="provisional">Using a Provisional API Level</h2>
+
+<p>In some cases, an "Early Look" Android SDK platform may be available. To let
+you begin developing on the platform although the APIs may not be final, the
+platform's API Level integer will not be specified. You must instead use the
+platform's <em>provisional API Level</em> in your application manifest, in order
+to build applications against the platform. A provisional API Level is not an
+integer, but a string matching the codename of the unreleased platform version.
+The provisional API Level will be specified in the release notes for the Early
+Look SDK release notes and is case-sensitive.</p>
+
+<p>The use of a provisional API Level is designed to protect developers and
+device users from inadvertently publishing or installing applications based on
+the Early Look framework API, which may not run properly on actual devices
+running the final system image.</p>
+
+<p>The provisional API Level will only be valid while using the Early Look SDK
+and can only be used to run applications in the emulator. An application using
+the provisional API Level can never be installed on an Android device. At the
+final release of the platform, you must replace any instances of the provisional
+API Level in your application manifest with the final platform's actual API
+Level integer.</p>
+
+
+<h2 id="filtering">Filtering the Reference Documentation by API Level</h2>
+
+<p>Reference documentation pages on the Android Developers site offer a "Filter
+by API Level" control in the top-right area of each page. You can use the 
+control to show documentation only for parts of the API that are actually 
+accessible to your application, based on the API Level that it specifies in 
+the <code>android:minSdkVersion</code> attribute of its manifest file. </p>
+
+<p>To use filtering, select the checkbox to enable filtering, just below the
+page search box. Then set the "Filter by API Level" control to the same API
+Level as specified by your application. Notice that APIs introduced in a later
+API Level are then grayed out and their content is masked, since they would not
+be accessible to your application. </p>
+
+<p>Filtering by API Level in the documentation does not provide a view
+of what is new or introduced in each API Level &mdash; it simply provides a way
+to view the entire API associated with a given API Level, while excluding API
+elements introduced in later API Levels.</p>
+
+<p>If you decide that you don't want to filter the API documentation, just
+disable the feature using the checkbox. By default, API Level filtering is
+disabled, so that you can view the full framework API, regardless of API Level.
+</p>
+
+<p>Also note that the reference documentation for individual API elements
+specifies the API Level at which each element was introduced. The API Level 
+for packages and classes is specified as "Since &lt;api level&gt;" at the 
+top-right corner of the content area on each documentation page. The API Level 
+for class members is specified in their detailed description headers, 
+at the right margin. </p>
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/guide/topics/media/camera.jd b/docs/html/guide/topics/media/camera.jd
index 7d72491..a63270a 100644
--- a/docs/html/guide/topics/media/camera.jd
+++ b/docs/html/guide/topics/media/camera.jd
@@ -162,8 +162,7 @@
 &lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&gt;
 </pre>
 <p>For more information about getting user location, see
-<a href="{@docRoot}guide/topics/location/obtaining-user-location.html">Obtaining User
-Location</a>.</p>
+<a href="{@docRoot}guide/topics/location/strategies.html">Location Strategies</a>.</p>
   </li>
 </ul>
 
diff --git a/docs/html/guide/topics/media/index.jd b/docs/html/guide/topics/media/index.jd
index 0e0412a..a750c9a 100644
--- a/docs/html/guide/topics/media/index.jd
+++ b/docs/html/guide/topics/media/index.jd
@@ -1,63 +1,56 @@
-page.title=Multimedia and Camera
+page.title=Media and Camera
+page.landing=true
+page.landing.intro=Add video, audio, and photo capabilities to your app with Android's robust APIs for playing and recording media. 
+page.landing.image=
+
 @jd:body
 
-    <div id="qv-wrapper">
-    <div id="qv">
+<div class="landing-docs">
 
-<h2>Topics</h2>
-<ol>
-<li><a href="{@docRoot}guide/topics/media/mediaplayer.html">Media Playback</a></li>
-<li><a href="{@docRoot}guide/topics/media/jetplayer.html">JetPlayer</a></li>
-<li><a href="{@docRoot}guide/topics/media/camera.html">Camera</a></li>
-<li><a href="{@docRoot}guide/topics/media/audio-capture.html">Audio Capture</a></li>
-</ol>
+  <div class="col-6">
+    <h3>Blog Articles</h3>
+    <a
+href="http://android-developers.blogspot.com/2010/06/allowing-applications-to-play-nicer.html">
+      <h4>Allowing applications to play nice(r) with each other: Handling remote control
+buttons</h4>
+      <p>If your media playback application creates a media playback service, just like Music, that
+responds to the media button events, how will the user know where those events are going to? Music,
+or your new application?</p>
+    </a>
 
-<h2>Key classes</h2>
-<ol>
-<li>{@link android.media.MediaPlayer}</li>
-<li>{@link android.media.JetPlayer}</li>
-<li>{@link android.hardware.Camera}</li>
-<li>{@link android.media.MediaRecorder}</li>
-<li>{@link android.media.AudioManager}</li>
-<li>{@link android.media.SoundPool}</li>
-</ol>
+    <a
+href="http://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html">
+      <h4>Making Android Games that Play Nice</h4>
+      <p>Making a game on Android is easy. Making a great game for a mobile, multitasking, often
+multi-core, multi-purpose system like Android is trickier. Even the best developers frequently make
+mistakes in the way they interact with the Android system and with other applications</p>
+    </a>
 
-<h2>See also</h2>
-<ol>
-<li></li>
-<li><a href="{@docRoot}guide/appendix/media-formats.html">Android Supported Media Formats</a></li>
-<li><a href="{@docRoot}guide/topics/media/jet/jetcreator_manual.html">JetCreator User
-Manual</a></li>
-</ol>
+    <a href="http://android-developers.blogspot.com/2011/12/more-android-games-that-play-nice.html">
+      <h4>More Android Games that Play Nice</h4>
+      <p>Android users get used to using the back key. We expect the volume keys to work in some
+intuitive fashion. We expect that the home key behaves in a manner consistent with the Android
+navigation paradigm.</p>
+    </a>
+  </div>
 
-</div>
-</div>
+  <div class="col-6">
+    <h3>Training</h3>
 
-<p>The Android multimedia framework includes support for capturing and playing audio, video and
-images in a variety of common media types, so that you can easily integrate them into your
-applications. You can play audio or video from media files stored in your application's resources,
-from standalone files in the file system, or from a data stream arriving over a
-network connection, all using the {@link android.media.MediaPlayer} or {@link
-android.media.JetPlayer} APIs. You can also record audio, video and take pictures using the {@link
-android.media.MediaRecorder} and {@link android.hardware.Camera} APIs if supported by the device
-hardware.</p>
+    <a href="http://developer.android.com/training/camera/index.html">
+      <h4>Capturing Photos</h4>
+      <p>This class gets you clicking fast with some super-easy ways of leveraging existing camera
+applications. In later lessons, you dive deeper and learn how to control the camera hardware
+directly.</p>
+    </a>
 
-<p>The following topics show you how to use the Android framework to implement multimedia capture
-and playback.</p>
+    <a href="http://developer.android.com/training/managing-audio/index.html">
+      <h4>Managing Audio Playback</h4>
+      <p>After this class, you will be able to build apps that respond to hardware audio key
+presses, which request audio focus when playing audio, and which respond appropriately to changes in
+audio focus caused by the system or other applications.</p>
+    </a>
 
-<dl>
-  <dt><strong><a href="{@docRoot}guide/topics/media/mediaplayer.html">Media Playback</a></strong>
-  </dt>
-  <dd>How to play audio and video in your application.</dd>
+  </div>
 
-  <dt><strong><a href="{@docRoot}guide/topics/media/jetplayer.html">JetPlayer</a></strong></dt>
-  <dd>How to play interactive audio and video in your application using content created with
-JetCreator.</dd>
-
-  <dt><strong><a href="{@docRoot}guide/topics/media/camera.html">Camera</a></strong></dt>
-  <dd>How to use a device camera to take pictures or video in your application.</dd>
-
-  <dt><strong><a href="{@docRoot}guide/topics/media/audio-capture.html">Audio
-Capture</a></strong></dt>
-  <dd>How to record sound in your application.</dd>
-</dl>
\ No newline at end of file
+</div>
\ No newline at end of file
diff --git a/docs/html/guide/topics/media/mediaplayer.jd b/docs/html/guide/topics/media/mediaplayer.jd
index 002d113..45a58a7 100644
--- a/docs/html/guide/topics/media/mediaplayer.jd
+++ b/docs/html/guide/topics/media/mediaplayer.jd
@@ -457,7 +457,7 @@
 </pre>
 
 <p>For more information, see the documentation about <a
-href="{@docRoot}guide/topics/fundamentals/services.html#Foreground">Services</a> and
+href="{@docRoot}guide/components/services.html#Foreground">Services</a> and
 <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Status Bar Notifications</a>.</p>
 
 
diff --git a/docs/html/guide/topics/providers/calendar-provider.jd b/docs/html/guide/topics/providers/calendar-provider.jd
index d30dda4..f53b062 100644
--- a/docs/html/guide/topics/providers/calendar-provider.jd
+++ b/docs/html/guide/topics/providers/calendar-provider.jd
@@ -250,27 +250,30 @@
 
 <h3 id="query">Querying a calendar</h3>
 
-<p>Here is an example that shows how to get all the calendars for a particular
+<p>Here is an example that shows how to get the calendars that are owned by a particular
 user. For simplicity's sake, in this example the query operation is shown in the
 user interface thread ("main thread"). In practice, this should be done in an asynchronous
 thread instead of on the main thread. For more discussion, see 
-<a href="{@docRoot}guide/topics/fundamentals/loaders.html">Loaders</a>. If you are not just reading data but modifying it, see {@link android.content.AsyncQueryHandler}.
+<a href="{@docRoot}guide/components/loaders.html">Loaders</a>. If you are not just 
+reading data but modifying it, see {@link android.content.AsyncQueryHandler}.
 </p>
 
 
 <pre>
-  // Projection array. Creating indices for this array instead of doing
-  // dynamic lookups improves performance.
-  public static final String[] EVENT_PROJECTION = new String[] {
+// Projection array. Creating indices for this array instead of doing
+// dynamic lookups improves performance.
+public static final String[] EVENT_PROJECTION = new String[] {
     Calendars._ID,                           // 0
     Calendars.ACCOUNT_NAME,                  // 1
-    Calendars.CALENDAR_DISPLAY_NAME          // 2
-  };
+    Calendars.CALENDAR_DISPLAY_NAME,         // 2
+    Calendars.OWNER_ACCOUNT                  // 3
+};
   
-  // The indices for the projection array above.
-  private static final int PROJECTION_ID_INDEX = 0;
-  private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
-  private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;</pre>
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
+private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
+private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
   
 
 <div class="sidebox-wrapper"> <div class="sidebox"> <h3>Why must you include
@@ -291,11 +294,15 @@
 
 <p> In the next part of the example, you construct your query. The selection
 specifies the criteria for the query. In this example the query is looking for
-all calendars that have the <code>ACCOUNT_NAME</code>
-"sampleuser@google.com" and the <code>ACCOUNT_TYPE</code>
-"com.google". The query returns a {@link android.database.Cursor}
+calendars that have the <code>ACCOUNT_NAME</code>
+"sampleuser@google.com", the <code>ACCOUNT_TYPE</code>
+"com.google", and the <code>OWNER_ACCOUNT</code>
+"sampleuser@google.com". If you want to see all calendars that a user
+has viewed, not just calendars the user owns, omit the <code>OWNER_ACCOUNT</code>.
+The query returns a {@link android.database.Cursor}
 object that you can use to traverse the result set returned by the database
-query. For more discussion of using queries in content providers, see <a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>.</p>
+query. For more discussion of using queries in content providers, 
+see <a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>.</p>
 
 
 <pre>// Run query
@@ -303,8 +310,10 @@
 ContentResolver cr = getContentResolver();
 Uri uri = Calendars.CONTENT_URI;   
 String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND (" 
-                        + Calendars.ACCOUNT_TYPE + " = ?))";
-String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google"}; 
+                        + Calendars.ACCOUNT_TYPE + " = ?) AND ("
+                        + Calendars.OWNER_ACCOUNT + " = ?))";
+String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
+        "sampleuser@gmail.com"}; 
 // Submit the query and get a Cursor object back. 
 cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
 
@@ -316,12 +325,14 @@
 while (cur.moveToNext()) {
     long calID = 0;
     String displayName = null;
-    String accountName = null;        
+    String accountName = null;
+    String ownerName = null;
       
     // Get the field values
     calID = cur.getLong(PROJECTION_ID_INDEX);
     displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
     accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
+    ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
               
     // Do something with the values...
 
@@ -1179,5 +1190,3 @@
 </pre>
 <p>For a sample implementation of a sync adapter (not specifically related to Calendar), see 
 <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>.
-</body>
-</html>
diff --git a/docs/html/guide/topics/providers/contacts-provider.jd b/docs/html/guide/topics/providers/contacts-provider.jd
new file mode 100644
index 0000000..e3b998a
--- /dev/null
+++ b/docs/html/guide/topics/providers/contacts-provider.jd
@@ -0,0 +1,2361 @@
+page.title=Contacts Provider
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Quickview</h2>
+<ul>
+    <li>Android's repository of information about people.</li>
+    <li>
+        Syncs with the web.
+    </li>
+    <li>
+        Integrates social stream data.
+    </li>
+</ul>
+<h2>In this document</h2>
+<ol>
+    <li>
+        <a href="#InformationTypes">Contacts Provider Organization</a>
+    </li>
+    <li>
+        <a href="#RawContactBasics">Raw contacts</a>
+    </li>
+    <li>
+        <a href="#DataBasics">Data</a>
+    </li>
+    <li>
+        <a href="#ContactBasics">Contacts</a>
+    </li>
+    <li>
+        <a href="#Sources">Data From Sync Adapters</a>
+    </li>
+    <li>
+        <a href="#Permissions">Required Permissions</a>
+    </li>
+    <li>
+        <a href="#UserProfile">The User Profile</a>
+    </li>
+    <li>
+        <a href="#ContactsProviderMetadata">Contacts Provider Metadata</a>
+    </li>
+    <li>
+        <a href="#Access">Contacts Provider Access</a>
+    <li>
+    </li>
+    <li>
+        <a href="#SyncAdapters">Contacts Provider Sync Adapters</a>
+    </li>
+    <li>
+        <a href="#SocialStream">Social Stream Data</a>
+    </li>
+    <li>
+        <a href="#AdditionalFeatures">Additional Contacts Provider Features</a>
+    </li>
+</ol>
+<h2>Key classes</h2>
+<ol>
+    <li>{@link android.provider.ContactsContract.Contacts}</li>
+    <li>{@link android.provider.ContactsContract.RawContacts}</li>
+    <li>{@link android.provider.ContactsContract.Data}</li>
+    <li>{@link android.provider.ContactsContract.StreamItems}</li>
+</ol>
+<h2>Related Samples</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}resources/samples/ContactManager/index.html">
+        Contact Manager
+        </a>
+    </li>
+    <li>
+        <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+        Sample Sync Adapter</a>
+    </li>
+</ol>
+<h2>See Also</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        Content Provider Basics
+        </a>
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    The Contacts Provider is a powerful and flexible Android component that manages the
+    device's central repository of data about people. The Contacts Provider is the source of data
+    you see in the device's contacts application, and you can also access its data in your own
+    application and transfer data between the device and online services. The provider accommodates
+    a wide range of data sources and tries to manage as much data as possible for each person, with
+    the result that its organization is complex. Because of this, the provider's API includes an
+    extensive set of contract classes and interfaces that facilitate both data retrieval and
+    modification.
+</p>
+<p>
+    This guide describes the following:
+</p>
+    <ul>
+        <li>
+            The basic provider structure.
+        </li>
+        <li>
+            How to retrieve data from the provider.
+        </li>
+        <li>
+            How to modify data in the provider.
+        </li>
+        <li>
+            How to write a sync adapter for synchronizing data from your server to the
+            Contacts Provider.
+        </li>
+    </ul>
+<p>
+    This guide assumes that you know the basics of Android content providers. To learn more
+    about Android content providers, read the
+    <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+    Content Provider Basics</a> guide. The
+    <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">Sample Sync Adapter</a>
+    sample app is an example of using a sync adapter to transfer data between the Contacts
+    Provider and a sample application hosted by Google Web Services.
+</p>
+<h2 id="InformationTypes">Contacts Provider Organization</h2>
+<p>
+    The Contacts Provider is an Android content provider component. It maintains three types of
+    data about a person, each of which corresponds to a table offered by the provider, as
+    illustrated in figure 1:
+</p>
+<img src="{@docRoot}images/providers/contacts_structure.png" alt=""
+    height="364" id="figure1" />
+<p class="img-caption">
+  <strong>Figure 1.</strong> Contacts Provider table structure.
+</p>
+<p>
+    The three tables are commonly referred to by the names of their contract classes. The classes
+    define constants for content URIs, column names, and column values used by the tables:
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.Contacts} table
+    </dt>
+    <dd>
+        Rows representing different people, based on aggregations of raw contact rows.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.RawContacts} table
+    </dt>
+    <dd>
+        Rows containing a summary of a person's data, specific to a user account and type.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.Data} table
+    </dt>
+    <dd>
+        Rows containing the details for raw contact, such as email addresses or phone numbers.
+    </dd>
+</dl>
+<p>
+    The other tables represented by contract classes in {@link android.provider.ContactsContract}
+    are auxiliary tables that the Contacts Provider uses to manage its operations or support
+    specific functions in the device's contacts or telephony applications.
+</p>
+<h2 id="RawContactBasics">Raw contacts</h2>
+<p>
+    A raw contact represents a person's data coming from a single account type and account
+    name. Because the Contacts Provider allows more than one online service as the source of
+    data for a person, the Contacts Provider allows multiple raw contacts for the same person.
+    Multiple raw contacts also allow a user to combine a person's data from more than one account
+    from the same account type.
+</p>
+<p>
+    Most of the data for a raw contact isn't stored in the
+    {@link android.provider.ContactsContract.RawContacts} table. Instead, it's stored in one or more
+    rows in the {@link android.provider.ContactsContract.Data} table. Each data row has a column
+    {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID Data.RAW_CONTACT_ID} that
+    contains the {@link android.provider.BaseColumns#_ID RawContacts._ID} value of its
+    parent {@link android.provider.ContactsContract.RawContacts} row.
+</p>
+<h3 id="RawContactsColumns">Important raw contact columns</h3>
+<p>
+    The important columns in the {@link android.provider.ContactsContract.RawContacts} table are
+    listed in table 1. Please read the notes that follow after the table:
+</p>
+<p class="table-caption" id="table1">
+    <strong>Table 1.</strong> Important raw contact columns.
+</p>
+<table>
+    <tr>
+        <th scope="col">Column name</th>
+        <th scope="col">Use</th>
+        <th scope="col">Notes</th>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_NAME}
+        </td>
+        <td>
+            The account name for the account type that's the source of this raw contact.
+            For example, the account name of a Google account is one of the device owner's Gmail
+            addresses. See the next entry for
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE} for more
+            information.
+        </td>
+        <td>
+            The format of this name is specific to its account type. It is not
+            necessarily an email address.
+        </td>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}
+        </td>
+        <td>
+            The account type that's the source of this raw contact. For example, the account
+            type of a Google account is <code>com.google</code>. Always qualify your account type
+            with a domain identifier for a domain you own or control. This will ensure that your
+            account type is unique.
+        </td>
+        <td>
+            An account type that offers contacts data usually has an associated sync adapter that
+            synchronizes with the Contacts Provider.
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.RawContactsColumns#DELETED}
+        </td>
+        <td>
+            The "deleted" flag for a raw contact.
+        </td>
+        <td>
+            This flag allows the Contacts Provider to maintain the row internally until sync
+            adapters are able to delete the row from their servers and then finally delete the row
+            from the repository.
+        </td>
+    </tr>
+</table>
+<h4>Notes</h4>
+<p>
+    The following are important notes about the
+    {@link android.provider.ContactsContract.RawContacts} table:
+</p>
+<ul>
+    <li>
+        A raw contact's name is not stored in its row in
+        {@link android.provider.ContactsContract.RawContacts}. Instead, it's stored in
+        the {@link android.provider.ContactsContract.Data} table, in a
+        {@link android.provider.ContactsContract.CommonDataKinds.StructuredName} row. A raw contact
+        has only one row of this type in the {@link android.provider.ContactsContract.Data} table.
+    </li>
+    <li>
+        <strong>Caution:</strong> To use your own account data in a raw contact row, it must
+        first be registered with the {@link android.accounts.AccountManager}. To do this, prompt
+        users to add the account type and their account name to the list of accounts. If you don't
+        do this, the Contacts Provider will automatically delete your raw contact row.
+        <p>
+            For example, if you want your app to maintain contacts data for your web-based service
+            with the domain {@code com.example.dataservice}, and the user's account for your service
+            is {@code becky.sharp@dataservice.example.com}, the user must first add the account
+            "type" ({@code com.example.dataservice}) and account "name"
+            ({@code becky.smart@dataservice.example.com}) before your app can add raw contact rows.
+            You can explain this requirement to the user in documentation, or you can prompt the
+            user to add the type and name, or both. Account types and account names
+            are described in more detail in the next section.
+    </li>
+</ul>
+<h3 id="RawContactsExample">Sources of raw contacts data</h3>
+<p>
+    To understand how raw contacts work, consider the user "Emily Dickinson" who has the following
+    three user accounts defined on her device:
+</p>
+<ul>
+    <li><code>emily.dickinson@gmail.com</code></li>
+    <li><code>emilyd@gmail.com</code></li>
+    <li>Twitter account "belle_of_amherst"</li>
+</ul>
+<p>
+    This user has enabled <em>Sync Contacts</em> for all three of these accounts in the
+    <em>Accounts</em> settings.
+</p>
+<p>
+    Suppose Emily Dickinson opens a browser window, logs into Gmail as
+    <code>emily.dickinson@gmail.com</code>, opens
+    Contacts, and adds "Thomas Higginson". Later on, she logs into Gmail as
+    <code>emilyd@gmail.com</code> and sends an email to "Thomas Higginson", which automatically
+    adds him as a contact. She also follows "colonel_tom" (Thomas Higginson's Twitter ID) on
+    Twitter.
+</p>
+<p>
+    The Contacts Provider creates three raw contacts as a result of this work:
+</p>
+<ol>
+    <li>
+        A raw contact for "Thomas Higginson" associated with <code>emily.dickinson@gmail.com</code>.
+        The user account type is Google.
+    </li>
+    <li>
+        A second raw contact for "Thomas Higginson" associated with <code>emilyd@gmail.com</code>.
+        The user account type is also Google. There is a second raw contact even
+        though the name is identical to a previous name, because the person was added for a
+        different user account.
+    </li>
+    <li>
+        A third raw contact for "Thomas Higginson" associated with "belle_of_amherst". The user
+        account type is Twitter.
+    </li>
+</ol>
+<h2 id="DataBasics">Data</h2>
+<p>
+    As noted previously, the data for a raw contact is stored in a
+    {@link android.provider.ContactsContract.Data} row that is linked to the raw contact's
+    <code>_ID</code> value. This allows a single raw contact to have multiple instances of the same
+    type of data such as email addresses or phone numbers. For example, if
+    "Thomas Higginson" for {@code emilyd@gmail.com}  (the raw contact row for Thomas Higginson
+    associated with the Google account <code>emilyd@gmail.com</code>) has a home email address of
+    <code>thigg@gmail.com</code> and a work email address of
+    <code>thomas.higginson@gmail.com</code>, the Contacts Provider stores the two email address
+    rows and links them both to the raw contact.
+</p>
+<p>
+    Notice that different types of data are stored in this single table. Display name,
+    phone number, email, postal address, photo, and website detail rows are all found in the
+    {@link android.provider.ContactsContract.Data} table. To help manage this, the
+    {@link android.provider.ContactsContract.Data} table has some columns with descriptive names,
+    and others with generic names. The contents of a descriptive-name column have the same meaning
+    regardless of the type of data in the row, while the contents of a generic-name column have
+    different meanings depending on the type of data.
+</p>
+<h3 id="DescriptiveColumns">Descriptive column names</h3>
+<p>
+    Some examples of descriptive column names are:
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.Data#RAW_CONTACT_ID}
+    </dt>
+    <dd>
+        The value of the <code>_ID</code> column of the raw contact for this data.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.Data#MIMETYPE}
+    </dt>
+    <dd>
+        The type of data stored in this row, expressed as a custom MIME type. The Contacts Provider
+        uses the MIME types defined in the subclasses of
+        {@link android.provider.ContactsContract.CommonDataKinds}. These MIME types are open source,
+        and can be used by any application or sync adapter that works with the Contacts Provider.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY}
+    </dt>
+    <dd>
+        If this type of data row can occur more than once for a raw contact, the
+        {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} column flags
+        the data row that contains the primary data for the type. For example, if
+        the user long-presses a phone number for a contact and selects <strong>Set default</strong>,
+        then the {@link android.provider.ContactsContract.Data} row containing that number
+        has its {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} column set to a
+        non-zero value.
+    </dd>
+</dl>
+<h3 id="GenericColumns">Generic column names</h3>
+<p>
+    There are 15 generic columns named <code>DATA1</code> through
+    <code>DATA15</code> that are generally available and an additional four generic
+    columns <code>SYNC1</code> through <code>SYNC4</code> that should only be used by sync
+    adapters. The generic column name constants always work, regardless of the type of
+    data the row contains.
+</p>
+<p>
+    The <code>DATA1</code> column is indexed.  The Contacts Provider always uses this column for
+    the data that the provider expects will be the most frequent target of a query. For example,
+    in an email row, this column contains the actual email address.
+</p>
+<p>
+    By convention, the column <code>DATA15</code> is reserved for storing Binary Large Object
+    (BLOB) data such as photo thumbnails.
+</p>
+<h3 id="TypeSpecificNames">Type-specific column names</h3>
+<p>
+    To facilitate working with the columns for a particular type of row, the Contacts Provider
+    also provides type-specific column name constants, defined in subclasses of
+    {@link android.provider.ContactsContract.CommonDataKinds}. The constants simply give a
+    different constant name to the same column name, which helps you access data in a row of a
+    particular type.
+</p>
+<p>
+    For example, the {@link android.provider.ContactsContract.CommonDataKinds.Email} class defines
+    type-specific column name constants for a {@link android.provider.ContactsContract.Data} row
+    that has the MIME type
+    {@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
+    Email.CONTENT_ITEM_TYPE}. The class contains the constant
+    {@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS} for the email address
+    column. The actual value of
+    {@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS} is "data1", which is
+    the same as the column's generic name.
+</p>
+<p class="caution">
+    <strong>Caution:</strong> Don't add your own custom data to the
+    {@link android.provider.ContactsContract.Data} table using a row that has one of the
+    provider's pre-defined MIME types. If you do, you may lose the data or cause the provider to
+    malfunction. For example, you should not add a row with the MIME type
+    {@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
+    Email.CONTENT_ITEM_TYPE} that contains a user name instead of an email address in the
+    column <code>DATA1</code>. If you use your own custom MIME type for the row, then you are free
+    to define your own type-specific column names and use the columns however you wish.
+</p>
+<p>
+    Figure 2 shows how descriptive columns and data columns appear in a
+    {@link android.provider.ContactsContract.Data} row, and how type-specific column names "overlay"
+    the generic column names
+</p>
+<img src="{@docRoot}images/providers/data_columns.png"
+    alt="How type-specific column names map to generic column names"
+    height="311" id="figure2" />
+<p class="img-caption">
+  <strong>Figure 2.</strong> Type-specific column names and generic column names.
+</p>
+<h3 id="ColumnMaps">Type-specific column name classes</h3>
+<p>
+    Table 2 lists the most commonly-used type-specific column name classes:
+</p>
+<p class="table-caption" id="table2">
+  <strong>Table 2.</strong> Type-specific column name classes</p>
+<table>
+  <tr>
+    <th scope="col">Mapping class</th>
+    <th scope="col">Type of data</th>
+    <th scope="col">Notes</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredName}</td>
+    <td>The name data for the raw contact associated with this data row.</td>
+    <td>A raw contact has only one of these rows.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Photo}</td>
+    <td>The main photo for the raw contact associated with this data row.</td>
+    <td>A raw contact has only one of these rows.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Email}</td>
+    <td>An email address for the raw contact associated with this data row.</td>
+    <td>A raw contact can have multiple email addresses.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal}</td>
+    <td>A postal address for the raw contact associated with this data row.</td>
+    <td>A raw contact can have multiple postal addresses.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.GroupMembership}</td>
+    <td>An identifier that links the raw contact to one of the groups in the Contacts Provider.</td>
+    <td>
+        Groups are an optional feature of an account type and account name. They're described in
+        more detail in the section <a href="#Groups">Contact groups</a>.
+    </td>
+  </tr>
+</table>
+<h3 id="ContactBasics">Contacts</h3>
+<p>
+    The Contacts Provider combines the raw contact rows across all account types and account names
+    to form a <strong>contact</strong>. This facilitates displaying and modifying all the data a
+    user has collected for a person. The Contacts Provider manages the creation of new contact
+    rows, and the aggregation of raw contacts with an existing contact row. Neither applications nor
+    sync adapters are allowed to add contacts, and some columns in a contact row are read-only.
+</p>
+<p class="note">
+    <strong>Note:</strong> If you try to add a contact to the Contacts Provider with an
+    {@link android.content.ContentResolver#insert(Uri,ContentValues) insert()}, you'll get
+    an {@link java.lang.UnsupportedOperationException} exception. If you try to update a column
+    that's listed as "read-only," the update is ignored.
+</p>
+<p>
+    The Contacts Provider creates a new contact in response to the addition of a new raw contact
+    that doesn't match any existing contacts. The provider also does this if an existing raw
+    contact's data changes in such a way that it no longer matches the contact to which it was
+    previously attached. If an application or sync adapter creates a new raw contact that
+    <em>does</em> match an existing contact, the new raw contact is aggregated to the existing
+    contact.
+</p>
+<p>
+    The Contacts Provider links a contact row to its raw contact rows with the contact row's
+    <code>_ID</code> column in the {@link android.provider.ContactsContract.Contacts Contacts}
+    table. The <code>CONTACT_ID</code> column of the raw contacts table
+    {@link android.provider.ContactsContract.RawContacts} contains <code>_ID</code> values for
+    the contacts row associated with each raw contacts row.
+</p>
+<p>
+    The {@link android.provider.ContactsContract.Contacts} table also has the column
+    {@link android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} that is a
+    "permanent" link to the contact row. Because the Contacts Provider maintains contacts
+    automatically, it may change a contact row's {@link android.provider.BaseColumns#_ID} value
+    in response to an aggregation or sync. Even If this happens, the content URI
+    {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI} combined with
+    contact's {@link android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} will still
+    point to the contact row, so you can use
+    {@link android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}
+    to maintain links to "favorite" contacts, and so forth. This column has its own format that is
+    unrelated to the format of the {@link android.provider.BaseColumns#_ID} column.
+</p>
+<p>
+    Figure 3 shows how the three main tables relate to each other.
+</p>
+<img src="{@docRoot}images/providers/contacts_tables.png" alt="Contacts provider main tables"
+    height="514" id="figure4" />
+<p class="img-caption">
+  <strong>Figure 3.</strong> Contacts, Raw Contacts, and Details table relationships.
+</p>
+<h2 id="Sources">Data From Sync Adapters</h2>
+<p>
+    Users enter contacts data directly into the device, but data also flows into the Contacts
+    Provider from web services via <strong>sync adapters</strong>, which automate
+    the transfer of data between the device and services. Sync adapters run in the background
+    under the control of the system, and they call {@link android.content.ContentResolver} methods
+    to manage data.
+</p>
+<p>
+    In Android, the web service that a sync adapter works with is identified by an account type.
+    Each sync adapter works with one account type, but it can support multiple account names for
+    that type. Account types and account names are described briefly in the section
+    <a href="#RawContactsExample">Sources of raw contacts data</a>. The following definitions offer
+    more detail, and describe how account type and name relate to sync adapters and services.
+</p>
+<dl>
+    <dt>
+        Account type
+    </dt>
+    <dd>
+        Identifies a service in which the user has stored data. Most of the time, the user has to
+        authenticate with the service. For example, Google Contacts is an account type, identified
+        by the code <code>google.com</code>. This value corresponds to the account type used by
+        {@link android.accounts.AccountManager}.
+    </dd>
+    <dt>
+        Account name
+    </dt>
+    <dd>
+        Identifies a particular account or login for an account type. Google Contacts accounts
+        are the same as Google accounts, which have an email address as an account name.
+        Other services may use a single-word username or numeric id.
+    </dd>
+</dl>
+<p>
+    Account types don't have to be unique. A user can configure multiple Google Contacts accounts
+    and download their data to the Contacts Provider; this may happen if the user has one set of
+    personal contacts for a personal account name, and another set for work. Account names are
+    usually unique. Together, they identify a specific data flow between the Contacts Provider and
+    an external service.
+</p>
+<p>
+    If you want to transfer your service's data to the Contacts Provider, you need to write your
+    own sync adapter. This is described in more detail in the section
+    <a href="#SyncAdapters">Contacts Provider Sync Adapters</a>.
+</p>
+<p>
+    Figure 4 shows how the Contacts Provider fits into the flow of data
+    about people. In the box marked "sync adapters," each adapter is labeled by its account type.
+</p>
+<img src="{@docRoot}images/providers/ContactsDataFlow.png" alt="Flow of data about people"
+    height="252" id="figure5" />
+<p class="img-caption">
+  <strong>Figure 4.</strong> The Contacts Provider flow of data.
+</p>
+<h2 id="Permissions">Required Permissions</h2>
+<p>
+    Applications that want to access the Contacts Provider must request the following
+    permissions:
+</p>
+<dl>
+    <dt>Read access to one or more tables</dt>
+    <dd>
+        {@link android.Manifest.permission#READ_CONTACTS}, specified in
+        <code>AndroidManifest.xml</code> with the
+        <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code> element as
+        <code>&lt;uses-permission android:name="android.permission.READ_CONTACTS"&gt;</code>.
+    </dd>
+    <dt>Write access to one or more tables</dt>
+    <dd>
+        {@link android.Manifest.permission#WRITE_CONTACTS}, specified in
+        <code>AndroidManifest.xml</code> with the
+        <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code> element as
+        <code>&lt;uses-permission android:name="android.permission.WRITE_CONTACTS"&gt;</code>.
+    </dd>
+</dl>
+<p>
+    These permissions do not extend to the user profile data. The user profile and its
+    required permissions are discussed in the following section,
+    <a href="#UserProfile">The User Profile</a>.
+</p>
+<p>
+    Remember that the user's contacts data is personal and sensitive. Users are concerned about
+    their privacy, so they don't want applications collecting data about them or their contacts.
+    If it's not obvious why you need permission to access their contacts data, they may give
+    your application low ratings or simply refuse to install it.
+</p>
+<h2 id="UserProfile">The User Profile</h2>
+<p>
+    The {@link android.provider.ContactsContract.Contacts} table has a single row containing
+    profile data for the device's user. This data describes the device's <code>user</code> rather
+    than one of the user's contacts. The profile contacts row is linked to a raw
+    contacts row for each system that uses a profile.
+    Each profile raw contact row can have multiple data rows. Constants for accessing the user
+    profile are available in the {@link android.provider.ContactsContract.Profile} class.
+</p>
+<p>
+    Access to the user profile requires special permissions. In addition to the
+    {@link android.Manifest.permission#READ_CONTACTS} and
+    {@link android.Manifest.permission#WRITE_CONTACTS} permissions needed to read and write, access
+    to the user profile requires the {@link android.Manifest.permission#READ_PROFILE} and
+    {@link android.Manifest.permission#WRITE_PROFILE} permissions for read and write access,
+    respectively.
+</p>
+<p>
+    Remember that you should consider a user's profile to be sensitive. The permission
+    {@link android.Manifest.permission#READ_PROFILE} allows you to access the device user's
+    personally-identifying data. Make sure to tell the user why
+    you need user profile access permissions in the description of your application.
+</p>
+<p>
+    To retrieve the contact row that contains the user's profile,
+    call {@link android.content.ContentResolver#query(Uri,String[], String, String[], String)
+    ContentResolver.query()}. Set the content URI to
+    {@link android.provider.ContactsContract.Profile#CONTENT_URI} and don't provide any
+    selection criteria. You can also use this content URI as the base URI for retrieving raw
+    contacts or data for the profile. For example, this snippet retrieves data for the profile:
+</p>
+<pre>
+// Sets the columns to retrieve for the user profile
+mProjection = new String[]
+    {
+        Profile._ID,
+        Profile.DISPLAY_NAME_PRIMARY,
+        Profile.LOOKUP_KEY,
+        Profile.PHOTO_THUMBNAIL_URI
+    };
+
+// Retrieves the profile from the Contacts Provider
+mProfileCursor =
+        getContentResolver().query(
+                Profile.CONTENT_URI,
+                mProjection ,
+                null,
+                null,
+                null);
+</pre>
+<p class="note">
+    <strong>Note:</strong> If you retrieve multiple contact rows, and you want to determine if one of them
+    is the user profile, test the row's
+    {@link android.provider.ContactsContract.ContactsColumns#IS_USER_PROFILE} column. This column
+    is set to "1" if the contact is the user profile.
+</p>
+<h2 id="ContactsProviderMetadata">Contacts Provider Metadata</h2>
+<p>
+    The Contacts Provider manages data that keeps track of the state of contacts data in the
+    repository. This metadata about the repository is stored in various places, including the
+    Raw Contacts, Data, and Contacts table rows, the
+    {@link android.provider.ContactsContract.Settings} table, and the
+    {@link android.provider.ContactsContract.SyncState} table. The following table shows the
+    effect of each of these pieces of metadata:
+</p>
+<p class="table-caption" id="table3">
+  <strong>Table 3.</strong> Metadata in the Contacts Provider</p>
+<table>
+    <tr>
+        <th scope="col">Table</th>
+        <th scope="col">Column</th>
+        <th scope="col">Values</th>
+        <th scope="col">Meaning</th>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.RawContacts}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.SyncColumns#DIRTY}</td>
+        <td>"0" - not changed since the last sync.</td>
+        <td rowspan="2">
+            Marks raw contacts that were changed on the device and have to be synced back to the
+            server. The value is set automatically by the Contacts Provider when Android
+            applications update a row.
+            <p>
+                Sync adapters that modify the raw contact or data tables should always append the
+                string {@link android.provider.ContactsContract#CALLER_IS_SYNCADAPTER} to the
+                content URI they use. This prevents the provider from marking rows as dirty.
+                Otherwise, sync adapter modifications appear to be local modifications and are
+                sent to the server, even though the server was the source of the modification.
+            </p>
+        </td>
+    </tr>
+    <tr>
+            <td>"1" - changed since last sync, needs to be synced back to the server.</td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#VERSION}</td>
+        <td>The version number of this row.</td>
+        <td>
+            The Contacts Provider automatically increments this value whenever the row or
+            its related data changes.
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.Data}</td>
+        <td>{@link android.provider.ContactsContract.DataColumns#DATA_VERSION}</td>
+        <td>The version number of this row.</td>
+        <td>
+            The Contacts Provider automatically increments this value whenever the data row
+            is changed.
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}</td>
+        <td>
+            A string value that uniquely identifies this raw contact to the account in
+            which it was created.
+        </td>
+        <td>
+            When a sync adapter creates a new raw contact, this column should be set to the
+            server's unique ID for the raw contact. When an Android application creates a new
+            raw contact, the application should leave this column empty. This signals the sync
+            adapter that it should create a new raw contact on the server, and get a
+            value for the {@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}.
+            <p>
+                In particular, the source id must be <strong>unique</strong> for each account
+                type and should be stable across syncs:
+            </p>
+                <ul>
+                    <li>
+                        Unique: Each raw contact for an account must have its own source id. If you
+                        don't enforce this, you'll cause problems in the contacts application.
+                        Notice that two raw contacts for the same account <em>type</em> may have
+                        the same source id. For example, the raw contact "Thomas Higginson" for the
+                        account {@code emily.dickinson@gmail.com} is allowed to have the same source
+                        id as the raw contact "Thomas Higginson" for the account
+                        {@code emilyd@gmail.com}.
+                    </li>
+                    <li>
+                        Stable: Source ids are a permanent part of the online service's data for
+                        the raw contact. For example, if the user clears Contacts Storage from the
+                        Apps settings and re-syncs, the restored raw contacts should have the same
+                        source ids as before. If you don't enforce this, shortcuts will stop
+                        working.
+                    </li>
+                </ul>
+        </td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Groups}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.GroupsColumns#GROUP_VISIBLE}</td>
+        <td>"0" - Contacts in this group should not be visible in Android application UIs.</td>
+        <td>
+            This column is for compatibility with servers that allow a user to hide contacts in
+            certain groups.
+        </td>
+    </tr>
+    <tr>
+        <td>"1" - Contacts in this group are allowed to be visible in application UIs.</td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Settings}</td>
+        <td rowspan="2">
+            {@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE}</td>
+        <td>
+            "0" - For this account and account type, contacts that don't belong to a group are
+            invisible to Android application UIs.
+        </td>
+        <td rowspan="2">
+            By default, contacts are invisible if none of their raw contacts belongs to a group
+            (Group membership for a raw contact is indicated by one or more
+            {@link android.provider.ContactsContract.CommonDataKinds.GroupMembership} rows
+            in the {@link android.provider.ContactsContract.Data} table).
+            By setting this flag in the {@link android.provider.ContactsContract.Settings} table row
+            for an account type and account, you can force contacts without groups to be visible.
+            One use of this flag is to show contacts from servers that don't use groups.
+        </td>
+    </tr>
+    <tr>
+        <td>
+            "1" - For this account and account type, contacts that don't belong to a group are
+            visible to application UIs.
+        </td>
+
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.SyncState}</td>
+        <td>(all)</td>
+        <td>
+            Use this table to store metadata for your sync adapter.
+        </td>
+        <td>
+            With this table you can store sync state and other sync-related data persistently on
+            the device.
+        </td>
+    </tr>
+</table>
+<h2 id="Access">Contacts Provider Access</h2>
+<p>
+    This section describes guidelines for accessing data from the Contacts Provider, focusing on
+    the following:
+</p>
+<ul>
+    <li>
+        Entity queries.
+    </li>
+    <li>
+        Batch modification.
+    </li>
+    <li>
+        Retrieval and modification with intents.
+    </li>
+    <li>
+        Data integrity.
+    </li>
+</ul>
+<p>
+    Making modifications from a sync adapter is also covered in more detail in the section
+    <a href="#SyncAdapters">Contacts Provider Sync Adapters</a>.
+</p>
+<h3 id="Entities">Querying entities</h3>
+<p>
+    Because the Contacts Provider tables are organized in a hierarchy, it's often useful to
+    retrieve a row and all of the "child" rows that are linked to it. For example, to display
+    all the information for a person, you may want to retrieve all the
+    {@link android.provider.ContactsContract.RawContacts} rows for a single
+    {@link android.provider.ContactsContract.Contacts} row, or all the
+    {@link android.provider.ContactsContract.CommonDataKinds.Email} rows for a single
+    {@link android.provider.ContactsContract.RawContacts} row. To facilitate this, the Contacts
+    Provider offers <strong>entity</strong> constructs, which act like database joins between
+    tables.
+</p>
+<p>
+    An entity is like a table composed of selected columns from a parent table and its child table.
+    When you query an entity, you supply a projection and search criteria based on the columns
+    available from the entity. The result is a {@link android.database.Cursor} that contains
+    contains one row for each child table row that was retrieved. For example, if you query
+    {@link android.provider.ContactsContract.Contacts.Entity} for a contact name
+    and all the {@link android.provider.ContactsContract.CommonDataKinds.Email} rows for all the
+    raw contacts for that name, you get back a {@link android.database.Cursor} containing one row
+    for each {@link android.provider.ContactsContract.CommonDataKinds.Email} row.
+</p>
+<p>
+    Entities simplify queries. Using an entity, you can retrieve all of the contacts data for a
+    contact or raw contact at once, instead of having to query the parent table first to get an
+    ID, and then having to query the child table with that ID. Also, the Contacts Provider processes
+    a query against an entity in a single transaction, which ensures that the retrieved data is
+    internally consistent.
+</p>
+<p class="note">
+    <strong>Note:</strong> An entity usually doesn't contain all the columns of the parent and
+    child table. If you attempt to work with a column name that isn't in the list of column name
+    constants for the entity, you'll get an {@link java.lang.Exception}.
+</p>
+<p>
+    The following snippet shows how to retrieve all the raw contact rows for a contact. The snippet
+    is part of a larger application that has two activities, "main" and "detail". The main activity
+    shows a list of contact rows; when the user select one, the activity sends its ID to the detail
+    activity. The detail activity uses the {@link android.provider.ContactsContract.Contacts.Entity}
+    to display all of the data rows from all of the raw contacts associated with the selected
+    contact.
+</p>
+<p>
+    This snippet is taken from the "detail" activity:
+</p>
+<pre>
+...
+    /*
+     * Appends the entity path to the URI. In the case of the Contacts Provider, the
+     * expected URI is content://com.google.contacts/#/entity (# is the ID value).
+     */
+    mContactUri = Uri.withAppendedPath(
+            mContactUri,
+            ContactsContract.Contacts.Entity.CONTENT_DIRECTORY);
+
+    // Initializes the loader identified by LOADER_ID.
+    getLoaderManager().initLoader(
+            LOADER_ID,  // The identifier of the loader to initialize
+            null,       // Arguments for the loader (in this case, none)
+            this);      // The context of the activity
+
+    // Creates a new cursor adapter to attach to the list view
+    mCursorAdapter = new SimpleCursorAdapter(
+            this,                        // the context of the activity
+            R.layout.detail_list_item,   // the view item containing the detail widgets
+            mCursor,                     // the backing cursor
+            mFromColumns,                // the columns in the cursor that provide the data
+            mToViews,                    // the views in the view item that display the data
+            0);                          // flags
+
+    // Sets the ListView's backing adapter.
+    mRawContactList.setAdapter(mCursorAdapter);
+...
+&#64;Override
+public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+
+    /*
+     * Sets the columns to retrieve.
+     * RAW_CONTACT_ID is included to identify the raw contact associated with the data row.
+     * DATA1 contains the first column in the data row (usually the most important one).
+     * MIMETYPE indicates the type of data in the data row.
+     */
+    String[] projection =
+        {
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID,
+            ContactsContract.Contacts.Entity.DATA1,
+            ContactsContract.Contacts.Entity.MIMETYPE
+        };
+
+    /*
+     * Sorts the retrieved cursor by raw contact id, to keep all data rows for a single raw
+     * contact collated together.
+     */
+    String sortOrder =
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID +
+            " ASC";
+
+    /*
+     * Returns a new CursorLoader. The arguments are similar to
+     * ContentResolver.query(), except for the Context argument, which supplies the location of
+     * the ContentResolver to use.
+     */
+    return new CursorLoader(
+            getApplicationContext(),  // The activity's context
+            mContactUri,              // The entity content URI for a single contact
+            projection,               // The columns to retrieve
+            null,                     // Retrieve all the raw contacts and their data rows.
+            null,                     //
+            sortOrder);               // Sort by the raw contact ID.
+}
+</pre>
+<p>
+    When the load is finished, {@link android.app.LoaderManager} invokes a callback to
+    {@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished(Loader, D)
+    onLoadFinished()}. One of the incoming arguments to this method is a
+    {@link android.database.Cursor} with the results of the query. In your own app, you can get the
+    data from this {@link android.database.Cursor} to display it or work with it further.
+</p>
+<h3 id="Transactions">Batch modification</h3>
+<p>
+    Whenever possible, you should insert, update, and delete data in the Contacts Provider in
+    "batch mode", by creating an {@link java.util.ArrayList} of
+    {@link android.content.ContentProviderOperation} objects and calling
+    {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}. Because
+    the Contacts Provider performs all of the operations in an
+    {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} in a single
+    transaction, your modifications will never leave the contacts repository in an inconsistent
+    state. A batch modification also facilitates inserting a raw contact and its detail data at
+    the same time.
+</p>
+<p class="note">
+    <strong>Note:</strong> To modify a <em>single</em> raw contact, consider sending an intent to
+    the device's contacts application rather than handling the modification in your app.
+    Doing this is described in more detail in the section
+    <a href="#Intents">Retrieval and modification with intents</a>.
+</p>
+<h4>Yield points</h4>
+<p>
+    A batch modification containing a large number of operations can block other processes,
+    resulting in a bad overall user experience. To organize all the modifications you want to
+    perform in as few separate lists as possible, and at the same time prevent them from
+    blocking the system, you should set <strong>yield points</strong> for one or more operations.
+    A yield point is a {@link android.content.ContentProviderOperation} object that has its
+    {@link android.content.ContentProviderOperation#isYieldAllowed()} value set to
+    <code>true</code>. When the Contacts Provider encounters a yield point, it pauses its work to
+    let other processes run and closes the current transaction. When the provider starts again, it
+    continues with the next operation in the {@link java.util.ArrayList} and starts a new
+    transaction.
+</p>
+<p>
+    Yield points do result in more than one transaction per call to
+    {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}. Because of
+    this, you should set a yield point for the last operation for a set of related rows.
+    For example, you should set a yield point for the last operation in a set that adds a
+    raw contact rows and its associated data rows, or the last operation for a set of rows related
+    to a single contact.
+</p>
+<p>
+    Yield points are also a unit of atomic operation. All accesses between two yield points will
+    either succeed or fail as a single unit. If you don't set any yield points, the smallest
+    atomic operation is the entire batch of operations. If you do use yield points, you prevent
+    operations from degrading system performance, while at the same time ensuring that a subset of
+    operations is atomic.
+</p>
+<h4>Modification back references</h4>
+<p>
+    When you're inserting a new raw contact row and its associated data rows as a set of
+    {@link android.content.ContentProviderOperation} objects, you have to link the data rows to
+    the raw contact row by inserting the raw contact's
+    {@link android.provider.BaseColumns#_ID} value as the
+    {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID} value. However, this
+    value isn't available when you're creating the {@link android.content.ContentProviderOperation}
+    for the data row, because you haven't yet applied the
+    {@link android.content.ContentProviderOperation} for the raw contact row. To work around this,
+    the {@link android.content.ContentProviderOperation.Builder} class has the method
+    {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}.
+    This method allows you to insert or modify a column with the
+    result of a previous operation.
+</p>
+<p>
+    The {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+    method has two arguments:
+</p>
+    <dl>
+        <dt>
+            <code>key</code>
+        </dt>
+        <dd>
+            The key of a key-value pair. The value of this argument should be the name of a column
+            in the table that you're modifying.
+        </dd>
+        <dt>
+            <code>previousResult</code>
+        </dt>
+        <dd>
+            The 0-based index of a value in the array of
+            {@link android.content.ContentProviderResult} objects from
+            {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}. As
+            the batch operations are applied, the result of each operation is stored in an
+            intermediate array of results. The <code>previousResult</code> value is the index
+            of one of these results, which is retrieved and stored with the <code>key</code>
+            value. This allows you to insert a new raw contact record and get back its
+            {@link android.provider.BaseColumns#_ID} value, then make a "back reference" to the
+            value when you add a {@link android.provider.ContactsContract.Data} row.
+            <p>
+                The entire result array is created when you first call
+                {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()},
+                with a size equal to the size of the {@link java.util.ArrayList} of
+                {@link android.content.ContentProviderOperation} objects you provide. However, all
+                the elements in the result array are set to <code>null</code>, and if you try
+                to do a back reference to a result for an operation that hasn't yet been applied,
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+                throws an {@link java.lang.Exception}.
+
+            </p>
+        </dd>
+    </dl>
+<p>
+    The following snippets show how to insert a new raw contact and data in batch. They
+    includes code that establishes a yield point and uses a back reference. The snippets are an
+    expanded version of the <code>createContacEntry()</code> method, which is part of the
+    <code>ContactAdder</code> class in the
+    <code><a href="{@docRoot}resources/samples/ContactManager/index.html">
+    Contact Manager</a></code> sample application.
+</p>
+<p>
+    The first snippet retrieves contact data from the UI. At this point, the user has already
+    selected the account for which the new raw contact should be added.
+</p>
+<pre>
+// Creates a contact entry from the current UI values, using the currently-selected account.
+protected void createContactEntry() {
+    /*
+     * Gets values from the UI
+     */
+    String name = mContactNameEditText.getText().toString();
+    String phone = mContactPhoneEditText.getText().toString();
+    String email = mContactEmailEditText.getText().toString();
+
+    int phoneType = mContactPhoneTypes.get(
+            mContactPhoneTypeSpinner.getSelectedItemPosition());
+
+    int emailType = mContactEmailTypes.get(
+            mContactEmailTypeSpinner.getSelectedItemPosition());
+</pre>
+<p>
+    The next snippet creates an operation to insert the raw contact row into the
+    {@link android.provider.ContactsContract.RawContacts} table:
+</p>
+<pre>
+    /*
+     * Prepares the batch operation for inserting a new raw contact and its data. Even if
+     * the Contacts Provider does not have any data for this person, you can't add a Contact,
+     * only a raw contact. The Contacts Provider will then add a Contact automatically.
+     */
+
+     // Creates a new array of ContentProviderOperation objects.
+    ArrayList&lt;ContentProviderOperation&gt; ops =
+            new ArrayList&lt;ContentProviderOperation&gt;();
+
+    /*
+     * Creates a new raw contact with its account type (server type) and account name
+     * (user's account). Remember that the display name is not stored in this row, but in a
+     * StructuredName data row. No other data is required.
+     */
+    ContentProviderOperation.Builder op =
+            ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
+            .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType())
+            .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    Next, the code creates data rows for the display name, phone, and email rows.
+</p>
+<p>
+    Each operation builder object uses
+    {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+    to get the
+    {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}. The reference points
+    back to the {@link android.content.ContentProviderResult} object from the first operation,
+    which adds the raw contact row and returns its new {@link android.provider.BaseColumns#_ID}
+    value. As a result, each data row is automatically linked by its
+    {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}
+    to the new {@link android.provider.ContactsContract.RawContacts} row to which it belongs.
+</p>
+<p>
+    The {@link android.content.ContentProviderOperation.Builder} object that adds the email row is
+    flagged with {@link android.content.ContentProviderOperation.Builder#withYieldAllowed(boolean)
+    withYieldAllowed()}, which sets a yield point:
+</p>
+<pre>
+    // Creates the display name for the new raw contact, as a StructuredName data row.
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * withValueBackReference sets the value of the first argument to the value of
+             * the ContentProviderResult indexed by the second argument. In this particular
+             * call, the raw contact ID column of the StructuredName data row is set to the
+             * value of the result returned by the first operation, which is the one that
+             * actually adds the raw contact row.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to StructuredName
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
+
+            // Sets the data row's display name to the name in the UI.
+            .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified phone number and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Phone
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
+
+            // Sets the phone number and type
+            .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone)
+            .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified email and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Email
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
+
+            // Sets the email address and type
+            .withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email)
+            .withValue(ContactsContract.CommonDataKinds.Email.TYPE, emailType);
+
+    /*
+     * Demonstrates a yield point. At the end of this insert, the batch operation's thread
+     * will yield priority to other threads. Use after every set of operations that affect a
+     * single contact, to avoid degrading performance.
+     */
+    op.withYieldAllowed(true);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    The last snippet shows the call to
+    {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} that
+    inserts the new raw contact and data rows.
+</p>
+<pre>
+    // Ask the Contacts Provider to create a new contact
+    Log.d(TAG,"Selected account: " + mSelectedAccount.getName() + " (" +
+            mSelectedAccount.getType() + ")");
+    Log.d(TAG,"Creating contact: " + name);
+
+    /*
+     * Applies the array of ContentProviderOperation objects in batch. The results are
+     * discarded.
+     */
+    try {
+
+            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
+    } catch (Exception e) {
+
+            // Display a warning
+            Context ctx = getApplicationContext();
+
+            CharSequence txt = getString(R.string.contactCreationFailure);
+            int duration = Toast.LENGTH_SHORT;
+            Toast toast = Toast.makeText(ctx, txt, duration);
+            toast.show();
+
+            // Log exception
+            Log.e(TAG, "Exception encountered while inserting contact: " + e);
+    }
+}
+</pre>
+<p>
+    Batch operations also allow you to implement <strong>optimistic concurrency control</strong>,
+    a method of applying modification transactions without having to lock the underlying repository.
+    To use this method, you apply the transaction and then check for other modifications that
+    may have been made at the same time. If you find an inconsistent modification has occurred, you
+    roll back your transaction and retry it.
+</p>
+<p>
+    Optimistic concurrency control is useful for a mobile device, where there's only one user at
+    a time, and simultaneous accesses to a data repository are rare. Because locking isn't used,
+    no time is wasted on setting locks or waiting for other transactions to release their locks.
+</p>
+<p>
+    To use optimistic concurrency control while updating a single
+    {@link android.provider.ContactsContract.RawContacts} row, follow these steps:
+</p>
+<ol>
+    <li>
+        Retrieve the raw contact's {@link android.provider.ContactsContract.SyncColumns#VERSION}
+        column along with the other data you retrieve.
+    </li>
+    <li>
+        Create a {@link android.content.ContentProviderOperation.Builder} object suitable for
+        enforcing a constraint, using the method
+        {@link android.content.ContentProviderOperation#newAssertQuery(Uri)}. For the content URI,
+        use {@link android.provider.ContactsContract.RawContacts#CONTENT_URI
+        RawContacts.CONTENT_URI}
+        with the raw contact's {@link android.provider.BaseColumns#_ID} appended to it.
+    </li>
+    <li>
+        For the {@link android.content.ContentProviderOperation.Builder} object, call
+        {@link android.content.ContentProviderOperation.Builder#withValue(String, Object)
+        withValue()} to compare the {@link android.provider.ContactsContract.SyncColumns#VERSION}
+        column to the version number you just retrieved.
+    </li>
+    <li>
+        For the same {@link android.content.ContentProviderOperation.Builder}, call
+        {@link android.content.ContentProviderOperation.Builder#withExpectedCount(int)
+        withExpectedCount()} to ensure that only one row is tested by this assertion.
+    </li>
+    <li>
+        Call {@link android.content.ContentProviderOperation.Builder#build()} to create the
+        {@link android.content.ContentProviderOperation} object, then add this object as the
+        first object in the {@link java.util.ArrayList} that you pass to
+        {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}.
+    </li>
+    <li>
+        Apply the batch transaction.
+    </li>
+</ol>
+<p>
+    If the raw contact row is updated by another operation between the time you read the row and
+    the time you attempt to modify it, the "assert" {@link android.content.ContentProviderOperation}
+    will fail, and the entire batch of operations will be backed out. You can then choose to retry
+    the batch or take some other action.
+</p>
+<p>
+    The following snippet demonstrates how to create an "assert"
+    {@link android.content.ContentProviderOperation} after querying for a single raw contact using
+    a {@link android.content.CursorLoader}:
+</p>
+<pre>
+/*
+ * The application uses CursorLoader to query the raw contacts table. The system calls this method
+ * when the load is finished.
+ */
+public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor cursor) {
+
+    // Gets the raw contact's _ID and VERSION values
+    mRawContactID = cursor.getLong(cursor.getColumnIndex(BaseColumns._ID));
+    mVersion = cursor.getInt(cursor.getColumnIndex(SyncColumns.VERSION));
+}
+
+...
+
+// Sets up a Uri for the assert operation
+Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, mRawContactID);
+
+// Creates a builder for the assert operation
+ContentProviderOperation.Builder assertOp = ContentProviderOperation.netAssertQuery(rawContactUri);
+
+// Adds the assertions to the assert operation: checks the version and count of rows tested
+assertOp.withValue(SyncColumns.VERSION, mVersion);
+assertOp.withExpectedCount(1);
+
+// Creates an ArrayList to hold the ContentProviderOperation objects
+ArrayList ops = new ArrayList&lt;ContentProviderOperationg&gt;;
+
+ops.add(assertOp.build());
+
+// You would add the rest of your batch operations to "ops" here
+
+...
+
+// Applies the batch. If the assert fails, an Exception is thrown
+try
+    {
+        ContentProviderResult[] results =
+                getContentResolver().applyBatch(AUTHORITY, ops);
+
+    } catch (OperationApplicationException e) {
+
+        // Actions you want to take if the assert operation fails go here
+    }
+</pre>
+<h3 id="Intents">Retrieval and modification with intents</h3>
+<p>
+    Sending an intent to the device's contacts application allows you to access the Contacts
+    Provider indirectly. The intent starts the device's contacts application UI, in which users can
+    do contacts-related work. With this type of access, users can:
+    <ul>
+        <li>Pick a contact from a list and have it returned to your app for further work.</li>
+        <li>Edit an existing contact's data.</li>
+        <li>Insert a new raw contact for any of their accounts.</li>
+        <li>Delete a contact or contacts data.</li>
+    </ul>
+<p>
+    If the user is inserting or updating data, you can collect the data first and send it as
+    part of the intent.
+</p>
+<p>
+    When you use intents to access the Contacts Provider via the device's contacts application, you
+    don't have to write your own UI or code for accessing the provider. You also don't have to
+    request permission to read or write to the provider. The device's contacts application can
+    delegate read permission for a contact to you, and because you're making modifications to the
+    provider through another application, you don't have to have write permissions.
+</p>
+<p>
+    The general process of sending an intent to access a provider is described in detail in the
+    <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+    Content Provider Basics</a> guide in the section "Data access via intents." The action,
+    MIME type, and data values you use for the available tasks are summarized in Table 4, while the
+    extras values you can use with
+    {@link android.content.Intent#putExtra(String, String) putExtra()} are listed in the
+    reference documentation for {@link android.provider.ContactsContract.Intents.Insert}:
+</p>
+<p class="table-caption" id="table4">
+  <strong>Table 4.</strong> Contacts Provider Intents.
+</p>
+<table style="width:75%">
+    <tr>
+        <th scope="col" style="width:10%">Task</th>
+        <th scope="col" style="width:5%">Action</th>
+        <th scope="col" style="width:10%">Data</th>
+        <th scope="col" style="width:10%">MIME type</th>
+        <th scope="col" style="width:25%">Notes</th>
+    </tr>
+    <tr>
+        <td><strong>Pick a contact from a list</strong></td>
+        <td>{@link android.content.Intent#ACTION_PICK}</td>
+        <td>
+            One of:
+            <ul>
+                <li>
+{@link android.provider.ContactsContract.Contacts#CONTENT_URI Contacts.CONTENT_URI},
+                    which displays a list of contacts.
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Phone#CONTENT_URI Phone.CONTENT_URI},
+                    which displays a list of phone numbers for a raw contact.
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal#CONTENT_URI
+StructuredPostal.CONTENT_URI},
+                    which displays a list of postal addresses for a raw contact.
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_URI Email.CONTENT_URI},
+                    which displays a list of email addresses for a raw contact.
+                </li>
+            </ul>
+        </td>
+        <td>
+            Not used
+        </td>
+        <td>
+            Displays a list of raw contacts or a list of data from a raw contact, depending on the
+            content URI type you supply.
+            <p>
+                Call
+         {@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()},
+                which returns the content URI of the selected row. The form of the URI is the
+                table's content URI with the row's <code>LOOKUP_ID</code> appended to it.
+                The device's contacts app delegates read and write permissions to this content URI
+                for the life of your activity. See the
+                <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+                Content Provider Basics</a> guide for more details.
+            </p>
+        </td>
+    </tr>
+    <tr>
+        <td><strong>Insert a new raw contact</strong></td>
+        <td>{@link android.provider.ContactsContract.Intents.Insert#ACTION Insert.ACTION}</td>
+        <td>N/A</td>
+        <td>
+            {@link android.provider.ContactsContract.RawContacts#CONTENT_TYPE
+            RawContacts.CONTENT_TYPE}, MIME type for a set of raw contacts.
+        </td>
+        <td>
+            Displays the device's contacts application's <strong>Add Contact</strong> screen. The
+            extras values you add to the intent are displayed. If sent with
+        {@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()},
+            the content URI of the newly-added raw contact is passed back to your activity's
+            {@link android.app.Activity#onActivityResult(int, int, Intent) onActivityResult()}
+            callback method in the {@link android.content.Intent} argument, in the
+            "data" field. To get the value, call {@link android.content.Intent#getData()}.
+        </td>
+    </tr>
+    <tr>
+        <td><strong>Edit a contact</strong></td>
+        <td>{@link android.content.Intent#ACTION_EDIT}</td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI} for
+            the contact. The editor activity will allow the user to edit any of the data associated
+            with this contact.
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE
+            Contacts.CONTENT_ITEM_TYPE}, a single contact.</td>
+        <td>
+            Displays the Edit Contact screen in the contacts application. The extras values you add
+            to the intent are displayed. When the user clicks <strong>Done</strong> to save the
+            edits, your activity returns to the foreground.
+        </td>
+    </tr>
+    <tr>
+        <td><strong>Display a picker that can also add data.</strong></td>
+        <td>{@link android.content.Intent#ACTION_INSERT_OR_EDIT}</td>
+        <td>
+            N/A
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE}
+        </td>
+         <td>
+            This intent always displays the contacts app's picker screen. The user can either
+            pick a contact to edit, or add a new contact. Either the edit or the add screen
+            appears, depending on the user's choice, and the extras data you pass in the intent
+            is displayed. If your app displays contact data such as an email or phone number, use
+            this intent to allow the user to add the data to an existing contact.
+            contact,
+            <p class="note">
+                <strong>Note:</strong> There's no need to send a name value in this intent's extras,
+                because the user always picks an existing name or adds a new one. Moreover,
+                if you send a name, and the user chooses to do an edit, the contacts app will
+                display the name you send, overwriting the previous value. If the user doesn't
+                notice this and saves the edit, the old value is lost.
+            </p>
+         </td>
+    </tr>
+</table>
+<p>
+    The device's contacts app doesn't allow you to delete a raw contact or any of its data with an
+    intent. Instead, to delete a raw contact, use
+    {@link android.content.ContentResolver#delete(Uri, String, String[]) ContentResolver.delete()}
+    or {@link android.content.ContentProviderOperation#newDelete(Uri)
+    ContentProviderOperation.newDelete()}.
+</p>
+<p>
+    The following snippet shows how to construct and send an intent that inserts a new raw
+    contact and data:
+</p>
+<pre>
+// Gets values from the UI
+String name = mContactNameEditText.getText().toString();
+String phone = mContactPhoneEditText.getText().toString();
+String email = mContactEmailEditText.getText().toString();
+
+String company = mCompanyName.getText().toString();
+String jobtitle = mJobTitle.getText().toString();
+
+// Creates a new intent for sending to the device's contacts application
+Intent insertIntent = new Intent(ContactsContract.Intents.Insert.ACTION);
+
+// Sets the MIME type to the one expected by the insertion activity
+insertIntent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
+
+// Sets the new contact name
+insertIntent.putExtra(ContactsContract.Intents.Insert.NAME, name);
+
+// Sets the new company and job title
+insertIntent.putExtra(ContactsContract.Intents.Insert.COMPANY, company);
+insertIntent.putExtra(ContactsContract.Intents.Insert.JOB_TITLE, jobtitle);
+
+/*
+ * Demonstrates adding data rows as an array list associated with the DATA key
+ */
+
+// Defines an array list to contain the ContentValues objects for each row
+ArrayList&lt;ContentValues&gt; contactData = new ArrayList&lt;ContentValues&gt;();
+
+
+/*
+ * Defines the raw contact row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues rawContactRow = new ContentValues();
+
+// Adds the account type and name to the row
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType());
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+// Adds the row to the array
+contactData.add(rawContactRow);
+
+/*
+ * Sets up the phone number data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues phoneRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+phoneRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
+);
+
+// Adds the phone number and its type to the row
+phoneRow.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone);
+
+// Adds the row to the array
+contactData.add(phoneRow);
+
+/*
+ * Sets up the email data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues emailRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+emailRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE
+);
+
+// Adds the email address and its type to the row
+emailRow.put(ContactsContract.CommonDataKinds.Email.ADDRESS, email);
+
+// Adds the row to the array
+contactData.add(emailRow);
+
+/*
+ * Adds the array to the intent's extras. It must be a parcelable object in order to
+ * travel between processes. The device's contacts app expects its key to be
+ * Intents.Insert.DATA
+ */
+insertIntent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, contactData);
+
+// Send out the intent to start the device's contacts app in its add contact activity.
+startActivity(insertIntent);
+</pre>
+<h3 id="DataIntegrity">Data integrity</h3>
+<p>
+    Because the contacts repository contains important and sensitive data that users expect to be
+    correct and up-to-date, the Contacts Provider has well-defined rules for data integrity. It's
+    your responsibility to conform to these rules when you modify contacts data. The important
+    rules are listed here:
+</p>
+<dl>
+    <dt>
+        Always add a {@link android.provider.ContactsContract.CommonDataKinds.StructuredName} row
+        for every {@link android.provider.ContactsContract.RawContacts} row you add.
+    </dt>
+    <dd>
+        A {@link android.provider.ContactsContract.RawContacts} row without a
+        {@link android.provider.ContactsContract.CommonDataKinds.StructuredName} row in the
+        {@link android.provider.ContactsContract.Data} table may cause problems during
+        aggregation.
+    </dd>
+    <dt>
+        Always link new {@link android.provider.ContactsContract.Data} rows to their parent
+        {@link android.provider.ContactsContract.RawContacts} row.
+    </dt>
+    <dd>
+        A {@link android.provider.ContactsContract.Data} row that isn't linked to a
+        {@link android.provider.ContactsContract.RawContacts} won't be visible in the device's
+        contacts application, and it might cause problems with sync adapters.
+    </dd>
+    <dt>
+        Change data only for those raw contacts that you own.
+    </dt>
+    <dd>
+        Remember that the Contacts Provider is usually managing data from several different
+        account types/online services. You need to ensure that your application only modifies
+        or deletes data for rows that belong to you, and that it only inserts data with an
+        account type and name that you control.
+    </dd>
+    <dt>
+        Always use the constants defined in {@link android.provider.ContactsContract} and its
+        subclasses for authorities, content URIs, URI paths, column names, MIME types, and
+        {@link android.provider.ContactsContract.CommonDataKinds.CommonColumns#TYPE} values.
+    </dt>
+    <dd>
+        Using these constants helps you to avoid errors. You'll also be notified with compiler
+        warnings if any of the constants is deprecated.
+    </dd>
+</dl>
+<h3 id="CustomData">Custom data rows</h3>
+<p>
+    By creating and using your own custom MIME types, you can insert, edit, delete, and retrieve
+    your own data rows in the {@link android.provider.ContactsContract.Data} table. Your rows
+    are limited to using the column defined in
+    {@link android.provider.ContactsContract.DataColumns}, although you can map your own
+    type-specific column names to the default column names. In the device's contacts application,
+    the data for your rows is displayed but can't be edited or deleted, and users can't add
+    additional data. To allow users to modify your custom data rows, you must provide an editor
+    activity in your own application.
+</p>
+<p>
+    To display your custom data, provide a <code>contacts.xml</code> file containing a
+    <code>&lt;ContactsAccountType&gt;</code> element and one or more of its
+    <code>&lt;ContactsDataKind&gt;</code> child elements. This is described in more detail in the
+    section <a href="#SocialStreamDataKind"><code>&lt;ContactsDataKind&gt; element</code></a>.
+</p>
+<p>
+    To learn more about custom MIME types, read the
+    <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+    Creating a Content Provider</a> guide.
+</p>
+<h2 id="SyncAdapters">Contacts Provider Sync Adapters</h2>
+<p>
+    The Contacts Provider is specifically designed for handling <strong>synchronization</strong>
+    of contacts data between a device and an online service. This allows users to download
+    existing data to a new device and upload existing data to a new account.
+    Synchronization also ensures that users have the latest data at hand, regardless
+    of the source of additions and changes. Another advantage of synchronization is that it makes
+    contacts data available even when the device is not connected to the network.
+</p>
+<p>
+    Although you can implement synchronization in a variety of ways, the Android system provides
+    a plug-in synchronization framework that automates the following tasks:
+    <ul>
+
+    <li>
+        Checking network availability.
+    </li>
+    <li>
+        Scheduling and executing synchronization, based on user preferences.
+    </li>
+    <li>
+        Restarting synchronizations that have stopped.
+    </li>
+    </ul>
+<p>
+    To use this framework, you supply a sync adapter plug-in. Each sync adapter is unique to a
+    service and content provider, but can handle multiple account names for the same service. The
+    framework also allows multiple sync adapters for the same service and provider.
+</p>
+<h3 id="SyncClassesFiles">Sync adapter classes and files</h3>
+<p>
+    You implement a sync adapter as a subclass of
+    {@link android.content.AbstractThreadedSyncAdapter} and install it as part of an Android
+    application. The system learns about the sync adapter from elements in your application
+    manifest, and from a special XML file pointed to by the manifest. The XML file defines the
+    account type for the online service and the authority for the content provider, which together
+    uniquely identify the adapter. The sync adapter does not become active until the user adds an
+    account for the sync adapter's  account type and enables synchronization for the content
+    provider the sync adapter syncs with.  At that point, the system starts managing the adapter,
+    calling it as necessary to synchronize between the content provider and the server.
+</p>
+<p class="note">
+    <strong>Note:</strong> Using an account type as part of the sync adapter's identification allows
+    the system to detect and group together sync adapters that access different services from the
+    same organization. For example, sync adapters for Google online services all have the same
+    account type <code>com.google</code>. When users add a Google account to their devices, all
+    of the installed sync adapters for Google services are listed together; each sync adapter
+    listed syncs with a different content provider on the device.
+</p>
+<p>
+    Because most services require users to verify their identity before accessing
+    data, the Android system offers an authentication framework that is similar to, and often
+    used in conjunction with, the sync adapter framework. The authentication framework uses
+    plug-in authenticators that are subclasses of
+    {@link android.accounts.AbstractAccountAuthenticator}. An authenticator verifies
+    the user's identity in the following steps:
+    <ol>
+        <li>
+            Collects the user's name, password or similar information (the user's
+            <strong>credentials</strong>).
+        </li>
+        <li>
+            Sends the credentials to the service
+        </li>
+        <li>
+            Examines the service's reply.
+        </li>
+    </ol>
+<p>
+    If the service accepts the credentials, the authenticator can
+    store the credentials for later use. Because of the plug-in authenticator framework, the
+    {@link android.accounts.AccountManager} can provide access to any authtokens an authenticator
+    supports and chooses to expose, such as OAuth2 authtokens.
+</p>
+<p>
+    Although authentication is not required, most contacts services use it.
+    However, you're not required to use the Android authentication framework to do authentication.
+</p>
+<h3 id="SyncAdapterImplementing">Sync adapter implementation</h3>
+<p>
+    To implement a sync adapter for the Contacts Provider, you start by creating an
+    Android application that contains the following:
+</p>
+    <dl>
+        <dt>
+            A {@link android.app.Service} component that responds to requests from the system to
+            bind to the sync adapter.
+        </dt>
+        <dd>
+            When the system wants to run a synchronization, it calls the service's
+            {@link android.app.Service#onBind(Intent) onBind()} method to get an
+            {@link android.os.IBinder} for the sync adapter. This allows the system to do
+            cross-process calls to the adapter's methods.
+            <p>
+                In the <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+                Sample Sync Adapter</a> sample app, the class name of this service is
+                <code>com.example.android.samplesync.syncadapter.SyncService</code>.
+            </p>
+        </dd>
+        <dt>
+            The actual sync adapter, implemented as a concrete subclass of
+            {@link android.content.AbstractThreadedSyncAdapter}.
+        </dt>
+        <dd>
+            This class does the work of downloading data from the server, uploading data from the
+            device, and resolving conflicts. The main work of the adapter is
+            done in the method {@link android.content.AbstractThreadedSyncAdapter#onPerformSync(
+            Account, Bundle, String, ContentProviderClient, SyncResult)
+            onPerformSync()}. This class must be instantiated as a singleton.
+            <p>
+                In the <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+                Sample Sync Adapter</a> sample app, the sync adapter is defined in the class
+                <code>com.example.android.samplesync.syncadapter.SyncAdapter</code>.
+            </p>
+        </dd>
+        <dt>
+            A subclass of {@link android.app.Application}.
+        </dt>
+        <dd>
+            This class acts as a factory for the sync adapter singleton. Use the
+            {@link android.app.Application#onCreate()} method to instantiate the sync adapter, and
+            provide a static "getter" method to return the singleton to the
+            {@link android.app.Service#onBind(Intent) onBind()} method of the sync adapter's
+            service.
+        </dd>
+        <dt>
+            <strong>Optional:</strong> A {@link android.app.Service} component that responds to
+            requests from the system for user authentication.
+        </dt>
+        <dd>
+            {@link android.accounts.AccountManager} starts this service to begin the authentication
+            process. The service's {@link android.app.Service#onCreate()} method instantiates an
+            authenticator object. When the system wants to authenticate a user account for the
+            application's sync adapter, it calls the service's
+            {@link android.app.Service#onBind(Intent) onBind()} method to get an
+            {@link android.os.IBinder} for the authenticator. This allows the system to do
+            cross-process calls to the authenticator's methods..
+            <p>
+                In the <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+                Sample Sync Adapter</a> sample app, the class name of this service is
+                <code>com.example.android.samplesync.authenticator.AuthenticationService</code>.
+            </p>
+        </dd>
+        <dt>
+            <strong>Optional:</strong> A concrete subclass of
+            {@link android.accounts.AbstractAccountAuthenticator} that handles requests for
+            authentication.
+        </dt>
+        <dd>
+            This class provides methods that the {@link android.accounts.AccountManager} invokes
+            to authenticate the user's credentials with the server. The details of the
+            authentication process vary widely, based on the server technology in use. You should
+            refer to the documentation for your server software to learn more about authentication.
+            <p>
+                In the <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+                Sample Sync Adapter</a> sample app, the authenticator is defined in the class
+                <code>com.example.android.samplesync.authenticator.Authenticator</code>.
+            </p>
+        </dd>
+        <dt>
+            XML files that define the sync adapter and authenticator to the system.
+        </dt>
+        <dd>
+            The sync adapter and authenticator service components described previously are
+            defined in
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/service-element.html">service</a>&gt;</code>
+            elements in the application manifest. These elements
+            contain
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+child elements that provide specific data to the
+            system:
+            <ul>
+                <li>
+                    The
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+                    element for the sync adapter service points to the
+                    XML file <code>res/xml/syncadapter.xml</code>. In turn, this file specifies
+                    a URI for the web service that will be synchronized with the Contacts Provider,
+                    and an account type for the web service.
+                </li>
+                <li>
+                    <strong>Optional:</strong> The
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+                    element for the authenticator points to the XML file
+                    <code>res/xml/authenticator.xml</code>. In turn, this file specifies the
+                    account type that this authenticator supports, as well as UI resources that
+                    appear during the authentication process. The account type specified in this
+                    element must be the same as the account type specified for the sync
+                    adapter.
+                </li>
+            </ul>
+        </dd>
+    </dl>
+<h2 id="SocialStream">Social Stream Data</h2>
+<p>
+    The {@link android.provider.ContactsContract.StreamItems} and
+    {@link android.provider.ContactsContract.StreamItemPhotos} tables
+    manage incoming data from social networks. You can write a sync adapter that adds stream data
+    from your own network to these tables, or you can read stream data from these tables and
+    display it in your own application, or both. With these features, your social networking
+    services and applications can be integrated into Android's social networking experience.
+</p>
+<h3 id="StreamText">Social stream text</h3>
+<p>
+    Stream items are always associated with a raw contact. The
+    {@link android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID} links to the
+    <code>_ID</code> value for the raw contact. The account type and account name of the raw
+    contact are also stored in the stream item row.
+</p>
+<p>
+    Store the data from your stream in the following columns:
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_TYPE}
+    </dt>
+    <dd>
+        <strong>Required.</strong> The user's account type for the raw contact associated with this
+        stream item. Remember to set this value when you insert a stream item.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_NAME}
+    </dt>
+    <dd>
+        <strong>Required.</strong> The user's account name for the raw contact associated with this
+        stream item. Remember to set this value when you insert a stream item.
+    </dd>
+    <dt>
+        Identifier columns
+    </dt>
+    <dd>
+        <strong>Required.</strong> You must insert the following identifier columns when you
+        insert a stream item:
+        <ul>
+            <li>
+                {@link android.provider.ContactsContract.StreamItemsColumns#CONTACT_ID}: The
+                {@link android.provider.BaseColumns#_ID} value of the contact that this stream
+                item is associated with.
+            </li>
+            <li>
+                {@link android.provider.ContactsContract.StreamItemsColumns#CONTACT_LOOKUP_KEY}: The
+                {@link android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} value of the
+                contact this stream item is associated with.
+            </li>
+            <li>
+                {@link android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}: The
+                {@link android.provider.BaseColumns#_ID} value of the raw contact that this stream
+                item is associated with.
+            </li>
+        </ul>
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.StreamItemsColumns#COMMENTS}
+    </dt>
+    <dd>
+        Optional. Stores summary information that you can display at the beginning of a stream item.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.StreamItemsColumns#TEXT}
+    </dt>
+    <dd>
+        The text of the stream item, either the content that was posted by the source of the item,
+        or a description of some action that generated the stream item. This column can contain
+        any formatting and embedded resource images that can be rendered by
+        {@link android.text.Html#fromHtml(String) fromHtml()}. The provider may truncate or
+        ellipsize long content, but it will try to avoid breaking tags.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP}
+    </dt>
+    <dd>
+        A text string containing the time the stream item was inserted or updated, in the form
+        of <em>milliseconds</em> since epoch. Applications that insert or update stream items are
+        responsible for maintaining this column; it is not automatically maintained by the
+        Contacts Provider.
+    </dd>
+</dl>
+<p>
+    To display identifying information for your stream items, use the
+    {@link android.provider.ContactsContract.StreamItemsColumns#RES_ICON},
+    {@link android.provider.ContactsContract.StreamItemsColumns#RES_LABEL}, and
+    {@link android.provider.ContactsContract.StreamItemsColumns#RES_PACKAGE} to link to resources
+    in your application.
+</p>
+<p>
+    The {@link android.provider.ContactsContract.StreamItems} table also contains the columns
+    {@link android.provider.ContactsContract.StreamItemsColumns#SYNC1} through
+    {@link android.provider.ContactsContract.StreamItemsColumns#SYNC4} for the exclusive use of
+    sync adapters.
+</p>
+<h3 id="StreamPhotos">Social stream photos</h3>
+<p>
+   The {@link android.provider.ContactsContract.StreamItemPhotos} table stores photos associated
+   with a stream item. The table's
+   {@link android.provider.ContactsContract.StreamItemPhotosColumns#STREAM_ITEM_ID} column
+   links to values in the {@link android.provider.BaseColumns#_ID} column of
+   {@link android.provider.ContactsContract.StreamItems} table. Photo references are stored in the
+   table in these columns:
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.StreamItemPhotos#PHOTO} column (a BLOB).
+    </dt>
+    <dd>
+        A binary representation of the photo, resized by the provider for storage and display.
+        This column is available for backwards compatibility with previous versions of the Contacts
+        Provider that used it for storing photos. However, in the current version
+        you should not use this column to store photos. Instead, use
+        either {@link android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID} or
+        {@link android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI} (both of
+        which are described in the following points) to store photos in a file. This column now
+        contains a thumbnail of the photo, which is available for reading.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID}
+    </dt>
+    <dd>
+        A numeric identifier of a photo for a raw contact. Append this value to the constant
+        {@link android.provider.ContactsContract.DisplayPhoto#CONTENT_URI DisplayPhoto.CONTENT_URI}
+        to get a content URI pointing to a single photo file, and then call
+        {@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
+        openAssetFileDescriptor()} to get a handle to the photo file.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI}
+    </dt>
+    <dd>
+        A content URI pointing directly to the photo file for the photo represented by this row.
+        Call {@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
+        openAssetFileDescriptor()} with this URI to get a handle to the photo file.
+    </dd>
+</dl>
+<h3 id="SocialStreamTables">Using the social stream tables</h3>
+<p>
+    These tables work the same as the other main tables in the Contacts Provider, except that:
+</p>
+    <ul>
+        <li>
+            These tables require additional access permissions. To read from them, your application
+            must have the permission {@link android.Manifest.permission#READ_SOCIAL_STREAM}. To
+            modify them, your application must have the permission
+            {@link android.Manifest.permission#WRITE_SOCIAL_STREAM}.
+        </li>
+        <li>
+            For the {@link android.provider.ContactsContract.StreamItems} table, the number of rows
+            stored for each raw contact is limited. Once this limit is reached,
+            the Contacts Provider makes space for new stream item rows by automatically deleting
+            the rows having the oldest
+            {@link android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP}. To get the
+            limit, issue a query to the content URI
+            {@link android.provider.ContactsContract.StreamItems#CONTENT_LIMIT_URI}. You can leave
+            all the arguments other than the content URI set to <code>null</code>. The query
+            returns a Cursor containing a single row, with the single column
+            {@link android.provider.ContactsContract.StreamItems#MAX_ITEMS}.
+        </li>
+    </ul>
+
+<p>
+    The class {@link android.provider.ContactsContract.StreamItems.StreamItemPhotos} defines a
+    sub-table of {@link android.provider.ContactsContract.StreamItemPhotos} containing the photo
+    rows for a single stream item.
+</p>
+<h3 id="SocialStreamInteraction">Social stream interactions</h3>
+<p>
+    The social stream data managed by the Contacts Provider, in conjunction with the
+    device's contacts application, offers a powerful way to connect your social networking system
+    with existing contacts. The following features are available:
+</p>
+    <ul>
+        <li>
+            By syncing your social networking service to the Contacts Provider with a sync
+            adapter, you can retrieve recent activity for a user's contacts and store it in
+            the {@link android.provider.ContactsContract.StreamItems} and
+            {@link android.provider.ContactsContract.StreamItemPhotos} tables for later use.
+        </li>
+        <li>
+            Besides regular synchronization, you can trigger your sync adapter to retrieve
+            additional data when the user selects a contact to view. This allows your sync adapter
+            to retrieve high-resolution photos and the most recent stream items for the contact.
+        </li>
+        <li>
+            By registering a notification with the device's contacts application and the Contacts
+            Provider, you can <em>receive</em> an intent when a contact is viewed, and at that point
+            update the contact's status from your service. This approach may be faster and use less
+            bandwidth than doing a full sync with a sync adapter.
+        </li>
+        <li>
+            Users can add a contact to your social networking service while looking at the contact
+            in the device's contacts application. You enable this with the "invite contact" feature,
+            which you enable with a combination of an activity that adds an existing contact to your
+            network, and an XML file that provides the device's contacts application and the
+            Contacts Provider with the details of your application.
+        </li>
+    </ul>
+<p>
+    Regular synchronization of stream items with the Contacts Provider is the same as
+    other synchronizations. To learn more about synchronization, see the section
+    <a href="#SyncAdapters">Contacts Provider Sync Adapters</a>. Registering notifications and
+    inviting contacts are covered in the next two sections.
+</p>
+<h4>Registering to handle social networking views</h4>
+<p>
+    To register your sync adapter to receive notifications when the user views a contact that's
+    managed by your sync adapter:
+</p>
+<ol>
+    <li>
+        Create a file named <code>contacts.xml</code> in your project's <code>res/xml/</code>
+        directory. If you already have this file, you can skip this step.
+    </li>
+    <li>
+        In this file, add the element
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>.
+        If this element already exists, you can skip this step.
+    </li>
+    <li>
+        To register a service that is notified when the user opens a contact's detail page in
+        the device's contacts application, add the attribute
+        <code>viewContactNotifyService="<em>serviceclass</em>"</code> to the element, where
+        <code><em>serviceclass</em></code> is the fully-qualified classname of the service
+        that should receive the intent from the device's contacts application. For the notifier
+        service, use a class that extends {@link android.app.IntentService}, to allow the service to
+        receive intents. The data in the incoming intent contains the content URI of the raw
+        contact the user clicked. From the notifier service, you can bind to and then call your
+        sync adapter to update the data for the raw contact.
+    </li>
+</ol>
+<p>
+    To register an activity to be called when the user clicks on a stream item or photo or both:
+</p>
+<ol>
+    <li>
+        Create a file named <code>contacts.xml</code> in your project's <code>res/xml/</code>
+        directory. If you already have this file, you can skip this step.
+    </li>
+    <li>
+        In this file, add the element
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>.
+        If this element already exists, you can skip this step.
+    </li>
+    <li>
+        To register one of your activities to handle the user clicking on a stream item in the
+        device's contacts application, add the attribute
+        <code>viewStreamItemActivity="<em>activityclass</em>"</code> to the element, where
+        <code><em>activityclass</em></code> is the fully-qualified classname of the activity
+        that should receive the intent from the device's contacts application.
+    </li>
+    <li>
+        To register one of your activities to handle the user clicking on a stream photo in the
+        device's contacts application, add the attribute
+        <code>viewStreamItemPhotoActivity="<em>activityclass</em>"</code> to the element, where
+        <code><em>activityclass</em></code> is the fully-qualified classname of the activity
+        that should receive the intent from the device's contacts application.
+    </li>
+</ol>
+<p>
+    The <code>&lt;ContactsAccountType&gt;</code> element is described in more detail in the
+    section <a href="#SocialStreamAcctType">&lt;ContactsAccountType&gt; element</a>.
+</p>
+<p>
+    The incoming intent contains the content URI of the item or photo that the user clicked.
+    To have separate activities for text items and for photos, use both attributes in the same file.
+</p>
+<h4>Interacting with your social networking service</h4>
+<p>
+    Users don't have to leave the device's contacts application to invite a contact to your social
+    networking site. Instead, you can have the device's contacts app send an intent for inviting the
+    contact to one of your activities. To set this up:
+</p>
+<ol>
+    <li>
+        Create a file named <code>contacts.xml</code> in your project's <code>res/xml/</code>
+        directory. If you already have this file, you can skip this step.
+    </li>
+    <li>
+        In this file, add the element
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>.
+        If this element already exists, you can skip this step.
+    </li>
+    <li>
+        Add the following attributes:
+        <ul>
+            <li><code>inviteContactActivity="<em>activityclass</em>"</code></li>
+            <li>
+                <code>inviteContactActionLabel="&#64;string/<em>invite_action_label</em>"</code>
+            </li>
+        </ul>
+        The <code><em>activityclass</em></code> value is the fully-qualified classname of the
+        activity that should receive the intent. The <code><em>invite_action_label</em></code>
+        value is a text string that's displayed in the <strong>Add Connection</strong> menu in the
+        device's contacts application.
+    </li>
+</ol>
+<p class="note">
+    <strong>Note:</strong> <code>ContactsSource</code> is a deprecated tag name for
+    <code>ContactsAccountType</code>.
+</p>
+<h3 id="ContactsFile">contacts.xml reference</h3>
+<p>
+    The file <code>contacts.xml</code> contains XML elements that control the interaction of your
+    sync adapter and application with the contacts application and the Contacts Provider. These
+    elements are described in the following sections.
+</p>
+<h4 id="SocialStreamAcctType">&lt;ContactsAccountType&gt; element</h4>
+<p>
+    The <code>&lt;ContactsAccountType&gt;</code> element controls the interaction of your
+    application with the contacts application. It has the following syntax:
+</p>
+<pre>
+&lt;ContactsAccountType
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        inviteContactActivity="<em>activity_name</em>"
+        inviteContactActionLabel="<em>invite_command_text</em>"
+        viewContactNotifyService="<em>view_notify_service</em>"
+        viewGroupActivity="<em>group_view_activity</em>"
+        viewGroupActionLabel="<em>group_action_text</em>"
+        viewStreamItemActivity="<em>viewstream_activity_name</em>"
+        viewStreamItemPhotoActivity="<em>viewphotostream_activity_name</em>"&gt;
+</pre>
+<p>
+    <strong>contained in:</strong>
+</p>
+<p>
+    <code>res/xml/contacts.xml</code>
+</p>
+<p>
+    <strong>can contain:</strong>
+</p>
+<p>
+    <strong><code>&lt;ContactsDataKind&gt;</code></strong>
+</p>
+<p>
+    <strong>Description:</strong>
+</p>
+<p>
+    Declares Android components and UI labels that allow users to invite one of their contacts to
+    a social network, notify users when one of their social networking streams is updated, and
+    so forth.
+</p>
+<p>
+    Notice that the attribute prefix <code>android:</code> is not necessary for the attributes
+    of <code>&lt;ContactsAccountType&gt;</code>.
+</p>
+<p>
+    <strong>Attributes:</strong>
+</p>
+<dl>
+    <dt>{@code inviteContactActivity}</dt>
+    <dd>
+        The fully-qualified class name of the activity in your application that you want to
+        activate when the user selects <strong>Add connection</strong> from the device's
+        contacts application.
+    </dd>
+    <dt>{@code inviteContactActionLabel}</dt>
+    <dd>
+        A text string that is displayed for the activity specified in
+        {@code inviteContactActivity}, in the <strong>Add connection</strong> menu.
+        For example, you can use the string "Follow in my network". You can use a string resource
+        identifier for this label.
+    </dd>
+    <dt>{@code viewContactNotifyService}</dt>
+    <dd>
+        The fully-qualified class name of a service in your application that should receive
+        notifications when the user views a contact. This notification is sent by the device's
+        contacts application; it allows your application to postpone data-intensive operations
+        until they're needed. For example, your application can respond to this notification
+        by reading in and displaying the contact's high-resolution photo and most recent
+        social stream items. This feature is described in more detail in the section
+        <a href="#SocialStreamInteraction">Social stream interactions</a>. You can see an
+        example of the notification service in the <code>NotifierService.java</code> file in the
+        <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>
+        sample app.
+    </dd>
+    <dt>{@code viewGroupActivity}</dt>
+    <dd>
+        The fully-qualified class name of an activity in your application that can display
+        group information. When the user clicks the group label in the device's contacts
+        application, the UI for this activity is displayed.
+    </dd>
+    <dt>{@code viewGroupActionLabel}</dt>
+    <dd>
+        The label that the contacts application displays for a UI control that allows
+        the user to look at groups in your application.
+        <p>
+            For example, if you install the Google+ application on your device and you sync
+            Google+ with the contacts application, you'll see Google+ circles listed as groups
+            in your contacts application's <strong>Groups</strong> tab. If you click on a
+            Google+ circle, you'll see people in that circle listed as a "group". At the top of
+            the display, you'll see a Google+ icon; if you click it, control switches to the
+            Google+ app. The contacts application does this with the
+            {@code viewGroupActivity}, using the Google+ icon as the value of
+            {@code viewGroupActionLabel}.
+        </p>
+        <p>
+            A string resource identifier is allowed for this attribute.
+        </p>
+    </dd>
+    <dt>{@code viewStreamItemActivity}</dt>
+    <dd>
+        The fully-qualified class name of an activity in your application that the device's
+        contacts application launches when the user clicks a stream item for a raw contact.
+    </dd>
+    <dt>{@code viewStreamItemPhotoActivity}</dt>
+    <dd>
+        The fully-qualified class name of an activity in your application that the device's
+        contacts application launches when the user clicks a photo in the stream item
+        for a raw contact.
+    </dd>
+</dl>
+<h4 id="SocialStreamDataKind">&lt;ContactsDataKind&gt; element</h4>
+<p>
+    The <code>&lt;ContactsDataKind&gt;</code> element controls the display of your application's
+    custom data rows in the contacts application's UI. It has the following syntax:
+</p>
+<pre>
+&lt;ContactsDataKind
+        android:mimeType="<em>MIMEtype</em>"
+        android:icon="<em>icon_resources</em>"
+        android:summaryColumn="<em>column_name</em>"
+        android:detailColumn="<em>column_name</em>"&gt;
+</pre>
+<p>
+    <strong>contained in:</strong>
+</p>
+<code>&lt;ContactsAccountType&gt;</code>
+<p>
+    <strong>Description:</strong>
+</p>
+<p>
+    Use this element to have the contacts application display the contents of a custom data row as
+    part of the details of a raw contact. Each <code>&lt;ContactsDataKind&gt;</code> child element
+    of <code>&lt;ContactsAccountType&gt;</code> represents a type of custom data row that your sync
+    adapter adds to the {@link android.provider.ContactsContract.Data} table. Add one
+    <code>&lt;ContactsDataKind&gt;</code> element for each custom MIME type you use. You don't have
+    to add the element if you have a custom data row for which you don't want to display data.
+</p>
+<p>
+    <strong>Attributes:</strong>
+</p>
+<dl>
+    <dt>{@code android:mimeType}</dt>
+    <dd>
+        The custom MIME type you've defined for one of your custom data row types in the
+        {@link android.provider.ContactsContract.Data} table. For example, the value
+        <code>vnd.android.cursor.item/vnd.example.locationstatus</code> could be a custom
+        MIME type for a data row that records a contact's last known location.
+    </dd>
+    <dt>{@code android:icon}</dt>
+    <dd>
+        An Android
+        <a href="{@docRoot}guide/topics/resources/drawable-resource.html">drawable resource</a>
+        that the contacts application displays next to your data. Use this to indicate to the
+        user that the data comes from your service.
+    </dd>
+    <dt>{@code android:summaryColumn}</dt>
+    <dd>
+        The column name for the first of two values retrieved from the data row. The
+        value is displayed as the first line of the entry for this data row. The first line is
+        intended to be used as a summary of the data, but that is optional. See also
+        <a href="#detailColumn">android:detailColumn</a>.
+    </dd>
+    <dt>{@code android:detailColumn}</dt>
+    <dd>
+        The column name for the second of two values retrieved from the data row. The value is
+        displayed as the second line of the entry for this data row. See also
+        {@code android:summaryColumn}.
+    </dd>
+</dl>
+<h2 id="AdditionalFeatures">Additional Contacts Provider Features</h2>
+<p>
+    Besides the main features described in previous sections, the Contacts Provider offers
+    these useful features for working with contacts data:
+</p>
+    <ul>
+       <li>Contact groups</li>
+       <li>Photo features</li>
+    </ul>
+<h3 id="Groups">Contact groups</h3>
+<p>
+    The Contacts Provider can optionally label collections of related contacts with
+    <strong>group</strong> data. If the server associated with a user account
+    wants to maintain groups, the sync adapter for the account's account type should transfer
+    groups data between the Contacts Provider and the server. When users add a new contact to the
+    server and then put this contact in a new group, the sync adapter must add the new group
+    to the {@link android.provider.ContactsContract.Groups} table. The group or groups a raw
+    contact belongs to are stored in the {@link android.provider.ContactsContract.Data} table, using
+    the {@link android.provider.ContactsContract.CommonDataKinds.GroupMembership} MIME type.
+</p>
+<p>
+    If you're designing a sync adapter that will add raw contact data from
+    server to the Contacts Provider, and you aren't using groups, then you need to tell the
+    Provider to make your data visible. In the code that is executed when a user adds an account
+    to the device, update the {@link android.provider.ContactsContract.Settings}
+    row that the Contacts Provider adds for the account. In this row, set the value of the
+    {@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE
+    Settings.UNGROUPED_VISIBLE} column to 1. When you do this, the Contacts Provider will always
+    make your contacts data visible, even if you don't use groups.
+</p>
+<h3 id="Photos">Contact photos</h3>
+<p>
+    The {@link android.provider.ContactsContract.Data} table stores photos as rows with MIME type
+    {@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
+    Photo.CONTENT_ITEM_TYPE}. The row's
+    {@link android.provider.ContactsContract.RawContactsColumns#CONTACT_ID} column is linked to the
+    {@link android.provider.BaseColumns#_ID} column of the raw contact to which it belongs.
+    The class {@link android.provider.ContactsContract.Contacts.Photo} defines a sub-table of
+    {@link android.provider.ContactsContract.Contacts} containing photo information for a contact's
+    primary photo, which is the primary photo of the contact's primary raw contact. Similarly,
+    the class {@link android.provider.ContactsContract.RawContacts.DisplayPhoto} defines a sub-table
+    of {@link android.provider.ContactsContract.RawContacts} containing photo information for a
+    raw contact's primary photo.
+</p>
+<p>
+    The reference documentation for {@link android.provider.ContactsContract.Contacts.Photo} and
+    {@link android.provider.ContactsContract.RawContacts.DisplayPhoto} contain examples of
+    retrieving photo information. There is no convenience class for retrieving the primary
+    thumbnail for a raw contact, but you can send a query to the
+    {@link android.provider.ContactsContract.Data} table, selecting on the raw contact's
+    {@link android.provider.BaseColumns#_ID}, the
+    {@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
+    Photo.CONTENT_ITEM_TYPE}, and the {@link android.provider.ContactsContract.Data#IS_PRIMARY}
+    column to find the raw contact's primary photo row.
+</p>
+<p>
+    Social stream data for a person may also include photos. These are stored in the
+    {@link android.provider.ContactsContract.StreamItemPhotos} table, which is described in more
+    detail in the section <a href="#StreamPhotos">Social stream photos</a>.
+</p>
diff --git a/docs/html/guide/topics/providers/content-provider-basics.jd b/docs/html/guide/topics/providers/content-provider-basics.jd
index de89568..b1d6827 100644
--- a/docs/html/guide/topics/providers/content-provider-basics.jd
+++ b/docs/html/guide/topics/providers/content-provider-basics.jd
@@ -371,7 +371,7 @@
     ContentResolver.query()} on the "UI thread"". In actual code, however, you should
     do queries asynchronously on a separate thread. One way to do this is to use the
     {@link android.content.CursorLoader} class, which is described
-    in more detail in the <a href="{@docRoot}guide/topics/fundamentals/loaders.html">
+    in more detail in the <a href="{@docRoot}guide/components/loaders.html">
     Loaders</a> guide. Also, the lines of code are snippets only; they don't show a complete
     application.
 </p>
@@ -941,7 +941,7 @@
     <li>
         Asynchronous queries: You should do queries in a separate thread. One way to do this is to
         use a {@link android.content.CursorLoader} object. The examples in the
-        <a href="{@docRoot}guide/topics/fundamentals/loaders.html">Loaders</a> guide demonstrate
+        <a href="{@docRoot}guide/components/loaders.html">Loaders</a> guide demonstrate
         how to do this.
     </li>
     <li>
diff --git a/docs/html/guide/topics/providers/content-provider-creating.jd b/docs/html/guide/topics/providers/content-provider-creating.jd
index 4ebdb50..bad5390 100644
--- a/docs/html/guide/topics/providers/content-provider-creating.jd
+++ b/docs/html/guide/topics/providers/content-provider-creating.jd
@@ -551,7 +551,7 @@
         All of these methods except {@link android.content.ContentProvider#onCreate() onCreate()}
         can be called by multiple threads at once, so they must be thread-safe. To learn
         more about multiple threads, see the topic
-        <a href="{@docRoot}guide/topics/fundamentals/processes-and-threads.html">
+        <a href="{@docRoot}guide/components/processes-and-threads.html">
         Processes and Threads</a>.
     </li>
     <li>
@@ -1211,5 +1211,5 @@
 <p>
     Handling an incoming intent that wishes to modify your provider's data is no different from
     handling other intents. You can learn more about using intents by reading the topic
-    <a href="{@docRoot}guide/topics/intents/intents-filters.html">Intents and Intent Filters</a>.
+    <a href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters</a>.
 </p>
diff --git a/docs/html/guide/topics/providers/content-providers.jd b/docs/html/guide/topics/providers/content-providers.jd
index 1707f03..751fc95 100644
--- a/docs/html/guide/topics/providers/content-providers.jd
+++ b/docs/html/guide/topics/providers/content-providers.jd
@@ -18,6 +18,9 @@
     <li>
         <a href="{@docRoot}guide/topics/providers/calendar-provider.html">Calendar Provider</a>
     </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/contacts-provider.html">Contacts Provider</a>
+    </li>
 </ol>
 
     <!-- Related Samples -->
@@ -38,6 +41,10 @@
         href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html">
         &quot;Cursor (Phones)&quot;</a>
         </li>
+        <li>
+            <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+            Sample Sync Adapter</a>
+        </li>
     </ol>
 </div>
 </div>
@@ -93,4 +100,11 @@
     <dd>
         How to access the Calendar Provider that is part of the Android platform.
     </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/contacts-provider.html">
+        Contacts Provider</a></strong>
+    </dt>
+    <dd>
+        How to access the Contacts Provider that is part of the Android platform.
+    </dd>
 </dl>
diff --git a/docs/html/guide/topics/resources/animation-resource.jd b/docs/html/guide/topics/resources/animation-resource.jd
index 6473155..3af52aa 100644
--- a/docs/html/guide/topics/resources/animation-resource.jd
+++ b/docs/html/guide/topics/resources/animation-resource.jd
@@ -18,7 +18,7 @@
     <h2>See also</h2>
     <ol>
       <li><a href="{@docRoot}guide/topics/graphics/view-animation.html">View Animation</a></li>
-      <li><a href="{@docRoot}guide/topics/graphics/animation.html">Property Animation</a></li>
+      <li><a href="{@docRoot}guide/topics/graphics/prop-animation.html">Property Animation</a></li>
     </ol>
   </div>
 </div>
@@ -334,7 +334,7 @@
 <dt>see also:</dt>
 <dd>
 <ul>
-  <li><a href="{@docRoot}guide/topics/graphics/animation.html">Property Animation</a></li>
+  <li><a href="{@docRoot}guide/topics/graphics/prop-animation.html">Property Animation</a></li>
   <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/animation/index.html">API Demos</a> for examples
   on how to use the property animation system.</li>
 </ul>
diff --git a/docs/html/guide/topics/resources/index.jd b/docs/html/guide/topics/resources/index.jd
index 3f0f1ee..386abf5 100644
--- a/docs/html/guide/topics/resources/index.jd
+++ b/docs/html/guide/topics/resources/index.jd
@@ -1,103 +1,55 @@
-page.title=Application Resources
+page.title=App Resources
+page.landing=true
+page.landing.intro=It takes more than just code to build a great app. Resources are the additional files and static content that your code uses, such as bitmaps, layout definitions, user interface strings, animation instructions, and more.  
+page.landing.image=images/develop/resources.png
+
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>Topics</h2>
-  <ol>
-    <li><a href="providing-resources.html">Providing Resources</a></li>
-    <li><a href="accessing-resources.html">Accessing Resources</a></li>
-    <li><a href="runtime-changes.html">Handling Runtime Changes</a></li>
-    <li><a href="localization.html">Localization</a></li>
-  </ol>
+<div class="landing-docs">
 
-  <h2>Reference</h2>
-  <ol>
-    <li><a href="available-resources.html">Resource Types</a></li>
-  </ol>
-</div>
-</div>
+  <div class="col-6">
+    <h3>Blog Articles</h3>
 
+    <a
+href="http://android-developers.blogspot.com/2011/07/new-tools-for-managing-screen-sizes.html">
+      <h4>New Tools For Managing Screen Sizes</h4>
+      <p>Android 3.2 includes new tools for supporting devices with a wide range of screen sizes.
+One important result is better support for a new size of screen; what is typically called a ?7-inch?
+tablet. This release also offers several new APIs to simplify developers? work in adjusting to
+different screen sizes.</p>
+    </a>
 
-<p>You should always externalize resources such as images and strings from your application
-code, so that you can maintain them independently. Externalizing your
-resources also allows you to provide alternative resources that support specific device
-configurations such as different languages or screen sizes, which becomes increasingly
-important as more Android-powered devices become available with different configurations. In order
-to provide compatibility with different configurations, you must organize resources in your
-project's {@code res/} directory, using various sub-directories that group resources by type and
-configuration.</p>
+    <a href="http://android-developers.blogspot.com/2012/01/holo-everywhere.html">
+      <h4>Holo Everywhere</h4>
+      <p>Before Android 4.0 the variance in system themes from device to device could make it
+difficult to design an app with a single predictable look and feel. We set out to improve this
+situation for the developer community in Ice Cream Sandwich and beyond.</p>
+    </a>
+    
+    <a
+href="http://android-developers.blogspot.com/2011/07/new-mode-for-apps-on-large-screens.html">
+      <h4>New Mode for Apps on Large Screens</h4>
+      <p>Android tablets are becoming more popular, and we're pleased to note that the vast majority
+of apps resize to the larger screens just fine. To keep the few apps that don't resize well from
+frustrating users with awkward-looking apps on their tablets, Android 3.2 introduces a screen
+compatibility mode that makes these apps more usable on tablets.</p>
+    </a>
+  </div>
 
-<div class="figure" style="width:429px">
-<img src="{@docRoot}images/resources/resource_devices_diagram1.png" height="167" alt="" />
-<p class="img-caption">
-<strong>Figure 1.</strong> Two different devices, each using the default layout
-(the app provides no alternative layouts).</p>
-</div>
+  <div class="col-6">
+    <h3>Training</h3>
 
-<div class="figure" style="width:429px">
-<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
-<p class="img-caption">
-<strong>Figure 2.</strong> Two different devices, each using a different layout provided
-for different screen sizes.</p>
-</div>
-
-<p>For any type of resource, you can specify <em>default</em> and multiple
-<em>alternative</em> resources for your application:</p>
-<ul>
-  <li>Default resources are those that should be used regardless of
-the device configuration or when there are no alternative resources that match the current
-configuration.</li>
-  <li>Alternative resources are those that you've designed for use with a specific
-configuration. To specify that a group of resources are for a specific configuration,
-append an appropriate configuration qualifier to the directory name.</li>
-</ul>
-
-<p>For example, while your default UI
-layout is saved in the {@code res/layout/} directory, you might specify a different layout to
-be used when the screen is in landscape orientation, by saving it in the {@code res/layout-land/}
-directory. Android automatically applies the appropriate resources by matching the
-device's current configuration to your resource directory names.</p>
-
-<p>Figure 1 illustrates how the system applies the same layout for
-two different devices when there are no alternative resources available. Figure 2 shows
-the same application when it adds an alternative layout resource for larger screens.</p>
-
-<p>The following documents provide a complete guide to how you can organize your application resources,
-specify alternative resources, access them in your application, and more:</p>
-
-<dl>
-  <dt><strong><a href="providing-resources.html">Providing Resources</a></strong></dt>
-  <dd>What kinds of resources you can provide in your app, where to save them, and how to create
-alternative resources for specific device configurations.</dd>
-  <dt><strong><a href="accessing-resources.html">Accessing Resources</a></strong></dt>
-  <dd>How to use the resources you've provided, either by referencing them from your application
-code or from other XML resources.</dd>
-  <dt><strong><a href="runtime-changes.html">Handling Runtime Changes</a></strong></dt>
-  <dd>How to manage configuration changes that occur while your Activity is running.</dd>
-  <dt><strong><a href="localization.html">Localization</a></strong></dt>
-  <dd>A bottom-up guide to localizing your application using alternative resources. While this is
-just one specific use of alternative resources, it is very important in order to reach more
-users.</dd>
-  <dt><strong><a href="available-resources.html">Resource Types</a></strong></dt>
-  <dd>A reference of various resource types you can provide, describing their XML elements,
-attributes, and syntax. For example, this reference shows you how to create a resource for
-application menus, drawables, animations, and more.</dd>
-</dl>
-
-<!--
-<h2>Raw Assets</h2>
-
-<p>An alternative to saving files in {@code res/} is to save files in the {@code
-assets/} directory. This should only be necessary if you need direct access to original files and
-directories by name. Files saved in the {@code assets/} directory will not be given a resource
-ID, so you can't reference them through the {@code R} class or from XML resources. Instead, you can
-query data in the {@code assets/} directory like an ordinary file system, search through the
-directory and
-read raw data using {@link android.content.res.AssetManager}. For example, this can be more useful
-when dealing with textures for a game. However, if you only need to read raw data from a file
-(such as a video or audio file), then you should save files into the {@code res/raw/} directory and
-then read a stream of bytes using {@link android.content.res.Resources#openRawResource(int)}. This
-is uncommon, but if you need direct access to original files in {@code assets/}, refer to the {@link
-android.content.res.AssetManager} documentation.</p>
--->
+    <a href="http://developer.android.com/training/basics/supporting-devices/index.html">
+      <h4>Supporting Different Devices</h4>
+      <p>This class teaches you how to use basic platform features that leverage alternative
+resources and other features so your app can provide an optimized user experience on a variety of
+Android-compatible devices, using a single application package (APK).</p>
+    </a>
+    
+    <a href="http://developer.android.com/training/multiscreen/index.html">
+      <h4>Designing for Multiple Screens</h4>
+      <p>This class shows you how to implement a user interface that's optimized for several screen
+configurations.</p>
+    </a>
+  </div>
+</div><!-- end landing-docs -->
diff --git a/docs/html/guide/topics/resources/layout-resource.jd b/docs/html/guide/topics/resources/layout-resource.jd
index 286e3d1..5643075 100644
--- a/docs/html/guide/topics/resources/layout-resource.jd
+++ b/docs/html/guide/topics/resources/layout-resource.jd
@@ -7,7 +7,7 @@
   <div id="qv">
     <h2>See also</h2>
     <ol>
-      <li><a href="{@docRoot}guide/topics/ui/declaring-layout.html">XML Layouts</a></li>
+      <li><a href="{@docRoot}guide/topics/ui/declaring-layout.html">Layouts</a></li>
     </ol>
   </div>
 </div>
@@ -128,7 +128,7 @@
       <p>More attributes are supported by the {@link android.view.View}
       base class, and many more are supported by each implementation of
       {@link android.view.View}. Read <a
-href="{@docRoot}guide/topics/ui/declaring-layout.html">XML Layouts</a> for more information. For
+href="{@docRoot}guide/topics/ui/declaring-layout.html">Layouts</a> for more information. For
 a reference of all available attributes,
       see the corresponding reference documentation (for example, the <a
       href="{@docRoot}reference/android/widget/TextView.html#lattrs">TextView XML attributes</a>).</p>
@@ -275,7 +275,7 @@
 <dt>see also:</dt>
 <dd>
 <ul>
-  <li><a href="{@docRoot}guide/topics/ui/declaring-layout.html">XML Layouts</a></li>
+  <li><a href="{@docRoot}guide/topics/ui/declaring-layout.html">Layouts</a></li>
   <li>{@link android.view.View}</li>
   <li>{@link android.view.ViewGroup}</li>
 </ul>
diff --git a/docs/html/guide/topics/resources/localization.jd b/docs/html/guide/topics/resources/localization.jd
index c2b668d..41961a3 100755
--- a/docs/html/guide/topics/resources/localization.jd
+++ b/docs/html/guide/topics/resources/localization.jd
@@ -38,7 +38,6 @@
   <li><a href="#emulator">Testing on an Emulator</a></li>

   <li><a href="#test-for-default">Testing for Default Resources</a></li>

   </ol>

-<li><a href="#publishing">Publishing</a></li>

 <li><a href="#checklist">Localization Checklists</a></li>

   <ol>

   <li><a href="#planning-checklist">Planning and Design Checklist</a></li>

@@ -52,7 +51,7 @@
   <li><a

 href="{@docRoot}resources/tutorials/localization/index.html">Hello, L10N Tutorial</a></li>

     <li><a href="{@docRoot}guide/topics/resources/providing-resources.html">Providing Resources</a></li>

-    <li><a href="{@docRoot}guide/topics/ui/declaring-layout.html">XML Layouts</a></li>

+    <li><a href="{@docRoot}guide/topics/ui/declaring-layout.html">Layouts</a></li>

     <li><a href="{@docRoot}reference/android/app/Activity.html#ActivityLifecycle">Activity Lifecycle</a></li>

 </ol>

 </div>

@@ -430,7 +429,7 @@
 <h3 id="emulator">Testing on an Emulator</h3>

 

 <p>For details about using the emulator, see See <a

-href="{@docRoot}guide/developing/tools/emulator.html">Android Emulator</a>.</p>

+href="{@docRoot}tools/help/emulator.html">Android Emulator</a>.</p>

 <h4>Creating and using a custom locale</h4>

 

 <p>A &quot;custom&quot; locale is a language/region combination that the Android

@@ -505,26 +504,6 @@
 	<code>res/layout-port/main.xml</code>, then set the emulator or device to 

 	portrait orientation and see if the application will run. 

 

-<h2 id="publishing">Publishing Localized Applications</h2>

-

-<p>The Google Play is

-  the main application distribution system for Android devices. To publish a 

-  localized application, you need to sign your application, version it, and go

-through all the other steps described in <a

-href="{@docRoot}guide/publishing/preparing.html">Preparing to Publish</a>. </p>

-

-<p>If you split your application in several .apk files, each targeted to a

-different locale, follow these guidelines:</p>

-

-<ul>

-  <li>Sign each .apk file with the same certificate. For more about this, see <a

-href="{@docRoot}guide/publishing/app-signing.html#strategies">Signing

-Strategies</a>. </li>

-  <li>Give each .apk file a different application name. Currently it is

-impossible to publish two applications on Google Play that have exactly the

-same name.</li>

-<li>Include a complete set of default resources in each .apk file.</li>

-</ul>

 

 <h2 id="checklist">Localization Checklists</h2>

 

@@ -640,8 +619,6 @@
 border="0"></td>

     <td>Upload your .apk file or files to Google Play, selecting the appropriate

 languages as

-    you upload. (For more details, see <a

-href="{@docRoot}guide/publishing/publishing.html">Publishing Your

-Applications</a>.)</td>

+    you upload.</td>

   </tr>

 </table>
\ No newline at end of file
diff --git a/docs/html/guide/topics/resources/menu-resource.jd b/docs/html/guide/topics/resources/menu-resource.jd
index fb7612e..b2d6eb3 100644
--- a/docs/html/guide/topics/resources/menu-resource.jd
+++ b/docs/html/guide/topics/resources/menu-resource.jd
@@ -111,7 +111,7 @@
 callback to {@link android.app.Activity#onOptionsItemSelected onOptionsItemSelected()}. See the
 example at the bottom.
           <p class="warning"><strong>Warning:</strong> If you obfuscate your code using <a
-href="{@docRoot}guide/developing/tools/proguard.html">ProGuard</a> (or a similar tool),
+href="{@docRoot}tools/help/proguard.html">ProGuard</a> (or a similar tool),
 be sure to exclude the method you specify in this attribute from renaming, because it can break the
 functionality.</p>
           <p>Introduced in API Level 11.</p></dd>
@@ -133,7 +133,8 @@
 bar. Setting multiple items to always appear as action items can result in them overlapping
 with other UI in the action bar.</td></tr>
             <tr><td><code>collapseActionView</code></td><td>The action view associated
-with this action item (as declared by <code>android:actionViewLayout</code>) is
+with this action item (as declared by <code>android:actionLayout</code> or
+<code>android:actionViewClass</code>) is
 collapsible.<br/>Introduced in API Level 14.</td></tr>
           </table>
           <p>See the <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> developer 
@@ -141,7 +142,7 @@
           <p>Introduced in API Level 11.</p>
         </dd>
 
-        <dt><code>android:actionViewLayout</code></dt>
+        <dt><code>android:actionLayout</code></dt>
           <dd><em>Layout resource</em>. A layout to use as the action view.
           <p>See the <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> developer 
 guide for more information.</p>
@@ -154,7 +155,7 @@
           <p>See the <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> developer 
 guide for more information.</p>
           <p class="warning"><strong>Warning:</strong> If you obfuscate your code using <a
-href="{@docRoot}guide/developing/tools/proguard.html">ProGuard</a> (or a similar tool),
+href="{@docRoot}tools/help/proguard.html">ProGuard</a> (or a similar tool),
 be sure to exclude the class you specify in this attribute from renaming, because it can break the
 functionality.</p>
           <p>Introduced in API Level 11.</p></dd>
@@ -166,7 +167,7 @@
           <p>See the <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> developer
 guide for more information.</p>
           <p class="warning"><strong>Warning:</strong> If you obfuscate your code using <a
-href="{@docRoot}guide/developing/tools/proguard.html">ProGuard</a> (or a similar tool),
+href="{@docRoot}tools/help/proguard.html">ProGuard</a> (or a similar tool),
 be sure to exclude the class you specify in this attribute from renaming, because it can break the
 functionality.</p>
           <p>Introduced in API Level 14.</p></dd>
diff --git a/docs/html/guide/topics/resources/overview.jd b/docs/html/guide/topics/resources/overview.jd
new file mode 100644
index 0000000..c3bd0bf
--- /dev/null
+++ b/docs/html/guide/topics/resources/overview.jd
@@ -0,0 +1,103 @@
+page.title=Resources Overview
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Topics</h2>
+  <ol>
+    <li><a href="providing-resources.html">Providing Resources</a></li>
+    <li><a href="accessing-resources.html">Accessing Resources</a></li>
+    <li><a href="runtime-changes.html">Handling Runtime Changes</a></li>
+    <li><a href="localization.html">Localization</a></li>
+  </ol>
+
+  <h2>Reference</h2>
+  <ol>
+    <li><a href="available-resources.html">Resource Types</a></li>
+  </ol>
+</div>
+</div>
+
+
+<p>You should always externalize resources such as images and strings from your application
+code, so that you can maintain them independently. Externalizing your
+resources also allows you to provide alternative resources that support specific device
+configurations such as different languages or screen sizes, which becomes increasingly
+important as more Android-powered devices become available with different configurations. In order
+to provide compatibility with different configurations, you must organize resources in your
+project's {@code res/} directory, using various sub-directories that group resources by type and
+configuration.</p>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram1.png" height="167" alt="" />
+<p class="img-caption">
+<strong>Figure 1.</strong> Two different devices, each using the default layout
+(the app provides no alternative layouts).</p>
+</div>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
+<p class="img-caption">
+<strong>Figure 2.</strong> Two different devices, each using a different layout provided
+for different screen sizes.</p>
+</div>
+
+<p>For any type of resource, you can specify <em>default</em> and multiple
+<em>alternative</em> resources for your application:</p>
+<ul>
+  <li>Default resources are those that should be used regardless of
+the device configuration or when there are no alternative resources that match the current
+configuration.</li>
+  <li>Alternative resources are those that you've designed for use with a specific
+configuration. To specify that a group of resources are for a specific configuration,
+append an appropriate configuration qualifier to the directory name.</li>
+</ul>
+
+<p>For example, while your default UI
+layout is saved in the {@code res/layout/} directory, you might specify a different layout to
+be used when the screen is in landscape orientation, by saving it in the {@code res/layout-land/}
+directory. Android automatically applies the appropriate resources by matching the
+device's current configuration to your resource directory names.</p>
+
+<p>Figure 1 illustrates how the system applies the same layout for
+two different devices when there are no alternative resources available. Figure 2 shows
+the same application when it adds an alternative layout resource for larger screens.</p>
+
+<p>The following documents provide a complete guide to how you can organize your application resources,
+specify alternative resources, access them in your application, and more:</p>
+
+<dl>
+  <dt><strong><a href="providing-resources.html">Providing Resources</a></strong></dt>
+  <dd>What kinds of resources you can provide in your app, where to save them, and how to create
+alternative resources for specific device configurations.</dd>
+  <dt><strong><a href="accessing-resources.html">Accessing Resources</a></strong></dt>
+  <dd>How to use the resources you've provided, either by referencing them from your application
+code or from other XML resources.</dd>
+  <dt><strong><a href="runtime-changes.html">Handling Runtime Changes</a></strong></dt>
+  <dd>How to manage configuration changes that occur while your Activity is running.</dd>
+  <dt><strong><a href="localization.html">Localization</a></strong></dt>
+  <dd>A bottom-up guide to localizing your application using alternative resources. While this is
+just one specific use of alternative resources, it is very important in order to reach more
+users.</dd>
+  <dt><strong><a href="available-resources.html">Resource Types</a></strong></dt>
+  <dd>A reference of various resource types you can provide, describing their XML elements,
+attributes, and syntax. For example, this reference shows you how to create a resource for
+application menus, drawables, animations, and more.</dd>
+</dl>
+
+<!--
+<h2>Raw Assets</h2>
+
+<p>An alternative to saving files in {@code res/} is to save files in the {@code
+assets/} directory. This should only be necessary if you need direct access to original files and
+directories by name. Files saved in the {@code assets/} directory will not be given a resource
+ID, so you can't reference them through the {@code R} class or from XML resources. Instead, you can
+query data in the {@code assets/} directory like an ordinary file system, search through the
+directory and
+read raw data using {@link android.content.res.AssetManager}. For example, this can be more useful
+when dealing with textures for a game. However, if you only need to read raw data from a file
+(such as a video or audio file), then you should save files into the {@code res/raw/} directory and
+then read a stream of bytes using {@link android.content.res.Resources#openRawResource(int)}. This
+is uncommon, but if you need direct access to original files in {@code assets/}, refer to the {@link
+android.content.res.AssetManager} documentation.</p>
+-->
diff --git a/docs/html/guide/topics/resources/providing-resources.jd b/docs/html/guide/topics/resources/providing-resources.jd
index 82b5e29..b0d5d6f 100644
--- a/docs/html/guide/topics/resources/providing-resources.jd
+++ b/docs/html/guide/topics/resources/providing-resources.jd
@@ -44,7 +44,7 @@
 <p>You should always externalize application resources such as images and strings from your
 code, so that you can maintain them independently. You should also provide alternative resources for
 specific device configurations, by grouping them in specially-named resource directories. At
-runtime, Android uses uses the appropriate resource based on the current configuration. For
+runtime, Android uses the appropriate resource based on the current configuration. For
 example, you might want to provide a different UI layout depending on the screen size or different
 strings depending on the language setting.</p>
 
@@ -89,7 +89,7 @@
 
   <tr>
     <td><code>animator/</code></td>
-    <td>XML files that define <a href="{@docRoot}guide/topics/graphics/animation.html">property
+    <td>XML files that define <a href="{@docRoot}guide/topics/graphics/prop-animation.html">property
 animations</a>.</td>
   </tr>
 
@@ -744,7 +744,7 @@
         <p>The API level supported by the device. For example, <code>v1</code> for API level
 1 (devices with Android 1.0 or higher) and <code>v4</code> for API level 4 (devices with Android
 1.6 or higher). See the <a
-href="{@docRoot}guide/appendix/api-levels.html">Android API levels</a> document for more information
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Android API levels</a> document for more information
 about these values.</p>
         <p class="caution"><strong>Caution:</strong> Android 1.5 and 1.6 only match resources
 with this qualifier when it exactly matches the platform version. See the section below about <a
@@ -976,7 +976,7 @@
 notlong} resources in the corresponding default resource directory.</p>
   </li>
 
-  <li>Ensure that your <a href="{@docRoot}sdk/tools-notes.html">SDK Tools</a> version
+  <li>Ensure that your <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools</a> version
 is r6 or greater.
 
     <p>You need SDK Tools, Revision 6 (or greater), because it includes a new packaging tool that
diff --git a/docs/html/guide/topics/resources/runtime-changes.jd b/docs/html/guide/topics/resources/runtime-changes.jd
index 871b063..f5475b4 100644
--- a/docs/html/guide/topics/resources/runtime-changes.jd
+++ b/docs/html/guide/topics/resources/runtime-changes.jd
@@ -32,7 +32,7 @@
 
 <p>To properly handle a restart, it is important that your activity restores its previous
 state through the normal <a
-href="{@docRoot}guide/topics/fundamentals/activities.html#Lifecycle">Activity
+href="{@docRoot}guide/components/activities.html#Lifecycle">Activity
 lifecycle</a>, in which Android calls
 {@link android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()} before it destroys
 your activity so that you can save data about the application state. You can then restore the state
@@ -45,7 +45,7 @@
 user data or state in order to handle events such as configuration changes or when the user receives
 an incoming phone call and then returns to your application much later after your application
 process may have been destroyed. To learn how you can restore your activity state, read about the <a
-href="{@docRoot}guide/topics/fundamentals/activities.html#Lifecycle">Activity lifecycle</a>.</p>
+href="{@docRoot}guide/components/activities.html#Lifecycle">Activity lifecycle</a>.</p>
 
 <p>However, you might encounter a situation in which restarting your application and
 restoring significant amounts of data can be costly and create a poor user experience. In such a
diff --git a/docs/html/guide/topics/search/index.jd b/docs/html/guide/topics/search/index.jd
index 218511b..2ee624b 100644
--- a/docs/html/guide/topics/search/index.jd
+++ b/docs/html/guide/topics/search/index.jd
@@ -1,4 +1,4 @@
-page.title=Search
+page.title=Search Overview
 @jd:body
 
 <div id="qv-wrapper">
diff --git a/docs/html/guide/topics/search/search-dialog.jd b/docs/html/guide/topics/search/search-dialog.jd
index 8b8e75b..49451ac 100644
--- a/docs/html/guide/topics/search/search-dialog.jd
+++ b/docs/html/guide/topics/search/search-dialog.jd
@@ -561,7 +561,7 @@
 events are triggered once the user executes a search (the current activity receives {@link
 android.app.Activity#onPause()} and so forth, as
 described in the <a
-href="{@docRoot}guide/topics/fundamentals/activities.html#Lifecycle">Activities</a>
+href="{@docRoot}guide/components/activities.html#Lifecycle">Activities</a>
 document). If, however, the current activity is the searchable activity, then one of two
 things happens:</p>
 
diff --git a/docs/html/guide/topics/security/index.jd b/docs/html/guide/topics/security/index.jd
new file mode 100644
index 0000000..775fc03
--- /dev/null
+++ b/docs/html/guide/topics/security/index.jd
@@ -0,0 +1,65 @@
+page.title=Security and Permissions
+page.landing=true
+page.landing.intro=Android's security architecture gives the user full control over what resources are accessible to each app, protecting the system itself and all apps in it. Learn how to use system permissions to request access to the resources your app needs and design your app for optimal security. 
+page.landing.image=
+
+@jd:body
+
+<div style="width=100%;padding-left:1em;">
+
+  <div style="float:left;clear:both;padding-top:20px;">
+    <p style="text-transform:uppercase;"><b style="color:#666;font-size:14px;">Blog Articles</b></p>
+
+    <div class="" style="border-top:2px solid #DDD;margin:1em 0;background-color:#F7F7F7;width:336px">
+
+      <div style="float:left;padding:8px;padding-right:16px;">
+        <img src="/assets/images/resource-article.png">
+      </div>
+
+      <div class="caption">
+        <p style="margin:0;padding:0;font-weight:bold;"><a href="">Accessibility: Are You Serving All Your Users?</a></p>
+        <p style="margin:0;padding:0">In the upcoming weeks, some of the older Client Login authentication keys will expire. 
+        If you generated the token you’re currently using to authenticate with the C2DM servers before October 2011, it will stop working.</p>
+
+        <p style="margin:0;padding:0;font-weight:bold;"><a href="">Android C2DM — Client Login key expiration</a></p>
+        <p  style="margin:0;padding:0">Accessibility is about making sure that Android users who have limited vision or other physical impairments can use your application just as well</p>
+
+        <p style="margin:0;padding:0;font-weight:bold;"><a href="">A Faster Emulator with Better Hardware Support</a></p>
+        <p  style="margin:0;padding:0">The Android emulator is a key tool for Android developers in building and testing their apps.
+        As the power and diversity of Android devices has grown quickly, it’s been hard for the emulator keep pace. </p>
+
+        <a href="">More &raquo;</a>
+      </div>
+    </div>
+  </div>
+
+  <div style="float:right;padding-top:20px;">
+    <p style="text-transform:uppercase;"><b style="color:#666;font-size:14px;">Training</b></p>
+
+    <div class="" style="border-top:2px solid #DDD;bordddser-top:2px solid #FF8800;margin:1em 0;background-color:#F7F7F7;width:336px">
+
+      <div style="float:left;padding:8px;padding-right:16px;">
+        <img src="/assets/images/resource-tutorial.png">
+      </div>
+
+      <div class="caption">
+        <p style="margin:0;padding:0;font-weight:bold;"><a href="">Managing the Activity Lifecycle</a></p>
+        <p  style="margin:0;padding:0">This class explains important lifecycle callback methods that each Activity
+        instance receives and how you can use them so your activity does what the user expects and does not consume system
+        resources when your activity doesn't need them.</p>
+
+        <p style="margin:0;padding:0;font-weight:bold;"><a href="">Supporting Different Devices</a></p>
+        <p  style="margin:0;padding:0">This class teaches you how to use basic platform features that leverage alternative
+        resources and other features so your app can provide an optimized user experience on a variety of Android-compatible devices,
+        using a single application package (APK).</p>
+
+        <p style="margin:0;padding:0;font-weight:bold;"><a href="">Sharing Content</a></p>
+        <p  style="margin:0;padding:0">This class covers some common ways you can send and receive content between
+        applications using Intent APIs and the ActionProvider object.</p>
+
+        <a href="">More &raquo;</a>
+      </div>
+    </div>
+</div>
+
+</div>
\ No newline at end of file
diff --git a/docs/html/guide/topics/security/permissions.jd b/docs/html/guide/topics/security/permissions.jd
new file mode 100644
index 0000000..3013e38
--- /dev/null
+++ b/docs/html/guide/topics/security/permissions.jd
@@ -0,0 +1,407 @@
+page.title=Permissions
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>In this document</h2>
+<ol>
+<li><a href="#arch">Security Architecture</a></li>
+<li><a href="#signing">Application Signing</a></li>
+<li><a href="#userid">User IDs and File Access</a></li>
+<li><a href="#permissions">Using Permissions</a></li>
+<li><a href="#declaring">Declaring and Enforcing Permissions</a>
+	<ol>
+	<li><a href="#manifest">...in AndroidManifest.xml</a></li>
+	<li><a href="#broadcasts">...when Sending Broadcasts</a></li>
+	<li><a href="#enforcement">Other Permission Enforcement</a></li>
+	</ol></li>
+<li><a href="#uri">URI Permissions</a></li>
+</ol>
+</div>
+</div>
+<p>This document describes how application developers can use the
+security features provided by Android.  A more general <a
+href="http://source.android.com/tech/security/index.html"> Android Security
+Overview</a> is provided in the Android Open Source Project.</p>
+
+<p>Android is a privilege-separated operating system, in which each
+application runs with a distinct system identity (Linux user ID and group
+ID).  Parts of the system are also separated into distinct identities.
+Linux thereby isolates applications from each other and from the system.</p>
+
+<p>Additional finer-grained security features are provided through a
+"permission" mechanism that enforces restrictions on the specific operations
+that a particular process can perform, and per-URI permissions for granting
+ad-hoc access to specific pieces of data.</p>
+
+<a name="arch"></a>
+<h2>Security Architecture</h2>
+
+<p>A central design point of the Android security architecture is that no
+application, by default, has permission to perform any operations that would
+adversely impact other applications, the operating system, or the user.  This
+includes reading or writing the user's private data (such as contacts or
+e-mails), reading or writing another application's files, performing
+network access, keeping the device awake, etc.</p>
+
+<p>Because Android sandboxes applications from each other, applications
+must explicitly share resources and data. They do this by declaring the
+<em>permissions</em> they need for additional capabilities not provided by
+the basic sandbox. Applications statically declare the permissions they
+require, and the Android system prompts the user for consent at the time the
+application is installed. Android has no mechanism for granting permissions
+dynamically (at run-time) because it complicates the user experience to the
+detriment of security.</p>
+
+<p>The application sandbox does not depend on the technology used to build
+an application. In particular the Dalvik VM is not a security boundary, and
+any app can run native code (see <a href="/sdk/ndk/index.html">the Android
+NDK</a>). All types of applications &mdash; Java, native, and hybrid &mdash;
+are sandboxed in the same way and have the same degree of security from each
+other.</p>
+
+<a name="signing"></a>
+<h2>Application Signing</h2>
+
+<p>All Android applications (.apk files) must be signed with a certificate
+whose private key is held by their developer.  This certificate identifies
+the author of the application.  The certificate does <em>not</em> need to be
+signed by a certificate authority: it is perfectly allowable, and typical,
+for Android applications to use self-signed certificates. The purpose of
+certificates in Android is to distinguish application authors. This allows
+the system to grant or deny applications access to <a
+href="/guide/topics/manifest/permission-element.html#plevel">signature-level
+permissions</a> and to grant or deny an application's <a
+href="/guide/topics/manifest/manifest-element.html#uid">request to be given
+the same Linux identity</a> as another application.</p>
+
+<a name="userid"></a>
+<h2>User IDs and File Access</h2>
+
+<p>At install time, Android gives each package a distinct Linux user ID. The
+identity remains constant for the duration of the package's life on that
+device. On a different device, the same package may have a different UID;
+what matters is that each package has a distinct UID on a given device.</p>
+
+<p>Because security enforcement happens at the
+process level, the code of any two packages can not normally
+run in the same process, since they need to run as different Linux users.
+You can use the {@link android.R.attr#sharedUserId} attribute in the
+<code>AndroidManifest.xml</code>'s
+{@link android.R.styleable#AndroidManifest manifest} tag of each package to
+have them assigned the same user ID.  By doing this, for purposes of security
+the two packages are then treated as being the same application, with the same
+user ID and file permissions.  Note that in order to retain security, only two applications
+signed with the same signature (and requesting the same sharedUserId) will
+be given the same user ID.</p>
+
+<p>Any data stored by an application will be assigned that application's user
+ID, and not normally accessible to other packages.  When creating a new file
+with {@link android.content.Context#getSharedPreferences},
+{@link android.content.Context#openFileOutput}, or
+{@link android.content.Context#openOrCreateDatabase},
+you can use the
+{@link android.content.Context#MODE_WORLD_READABLE} and/or
+{@link android.content.Context#MODE_WORLD_WRITEABLE} flags to allow any other
+package to read/write the file.  When setting these flags, the file is still
+owned by your application, but its global read and/or write permissions have
+been set appropriately so any other application can see it.</p>
+
+
+<a name="permissions"></a>
+<h2>Using Permissions</h2>
+
+<p>A basic Android application has no permissions associated with it,
+meaning it can not do anything that would adversely impact the user experience
+or any data on the device.  To make use of protected features of the device,
+you must include in your <code>AndroidManifest.xml</code> one or more
+<code>{@link android.R.styleable#AndroidManifestUsesPermission &lt;uses-permission&gt;}</code>
+tags declaring the permissions that your application needs.</p>
+
+<p>For example, an application that needs to monitor incoming SMS messages would
+specify:</p>
+
+<pre>&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    package=&quot;com.android.app.myapp&quot; &gt;
+    &lt;uses-permission android:name=&quot;android.permission.RECEIVE_SMS&quot; /&gt;
+    ...
+&lt;/manifest&gt;</pre>
+
+<p>At application install time, permissions requested by the application are
+granted to it by the package installer, based on checks against the
+signatures of the applications declaring those permissions and/or interaction
+with the user. <em>No</em> checks with the user
+are done while an application is running: it either was granted a particular
+permission when installed, and can use that feature as desired, or the
+permission was not granted and any attempt to use the feature will fail
+without prompting the user.</p>
+
+<p>Often times a permission failure will result in a {@link
+java.lang.SecurityException} being thrown back to the application. However,
+this is not guaranteed to occur everywhere. For example, the {@link
+android.content.Context#sendBroadcast} method checks permissions as data is
+being delivered to each receiver, after the method call has returned, so you
+will not receive an exception if there are permission failures. In almost all
+cases, however, a permission failure will be printed to the system log.</p>
+
+<p>The permissions provided by the Android system can be found at {@link
+android.Manifest.permission}. Any application may also define and enforce its
+own permissions, so this is not a comprehensive list of all possible
+permissions.</p>
+
+<p>A particular permission may be enforced at a number of places during your
+program's operation:</p>
+
+<ul>
+<li>At the time of a call into the system, to prevent an application from
+executing certain functions.</li>
+<li>When starting an activity, to prevent applications from launching
+activities of other applications.</li>
+<li>Both sending and receiving broadcasts, to control who can receive
+your broadcast or who can send a broadcast to you.</li>
+<li>When accessing and operating on a content provider.</li>
+<li>Binding to or starting a service.</li>
+</ul>
+
+
+<a name="declaring"></a>
+<h2>Declaring and Enforcing Permissions</h2>
+
+<p>To enforce your own permissions, you must first declare them in your
+<code>AndroidManifest.xml</code> using one or more
+<code>{@link android.R.styleable#AndroidManifestPermission &lt;permission&gt;}</code>
+tags.</p>
+
+<p>For example, an application that wants to control who can start one
+of its activities could declare a permission for this operation as follows:</p>
+
+<pre>&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    package=&quot;com.me.app.myapp&quot; &gt;
+    &lt;permission android:name=&quot;com.me.app.myapp.permission.DEADLY_ACTIVITY&quot;
+        android:label=&quot;&#64;string/permlab_deadlyActivity&quot;
+        android:description=&quot;&#64;string/permdesc_deadlyActivity&quot;
+        android:permissionGroup=&quot;android.permission-group.COST_MONEY&quot;
+        android:protectionLevel=&quot;dangerous&quot; /&gt;
+    ...
+&lt;/manifest&gt;</pre>
+
+<p>The {@link android.R.styleable#AndroidManifestPermission_protectionLevel
+&lt;protectionLevel&gt;} attribute is required, telling the system how the
+user is to be informed of applications requiring the permission, or who is
+allowed to hold that permission, as described in the linked documentation.</p>
+
+<p>The {@link android.R.styleable#AndroidManifestPermission_permissionGroup
+&lt;permissionGroup&gt;} attribute is optional, and only used to help the system display
+permissions to the user.  You will usually want to set this to either a standard
+system group (listed in {@link android.Manifest.permission_group
+android.Manifest.permission_group}) or in more rare cases to one defined by
+yourself.  It is preferred to use an existing group, as this simplifies the
+permission UI shown to the user.</p>
+
+<p>Note that both a label and description should be supplied for the
+permission. These are string resources that can be displayed to the user when
+they are viewing a list of permissions
+(<code>{@link android.R.styleable#AndroidManifestPermission_label android:label}</code>)
+or details on a single permission (
+<code>{@link android.R.styleable#AndroidManifestPermission_description android:description}</code>).
+The label should be short, a few words
+describing the key piece of functionality the permission is protecting. The
+description should be a couple sentences describing what the permission allows
+a holder to do. Our convention for the description is two sentences, the first
+describing the permission, the second warning the user of what bad things
+can happen if an application is granted the permission.</p>
+
+<p>Here is an example of a label and description for the CALL_PHONE
+permission:</p>
+
+<pre>
+    &lt;string name=&quot;permlab_callPhone&quot;&gt;directly call phone numbers&lt;/string&gt;
+    &lt;string name=&quot;permdesc_callPhone&quot;&gt;Allows the application to call
+        phone numbers without your intervention. Malicious applications may
+        cause unexpected calls on your phone bill. Note that this does not
+        allow the application to call emergency numbers.&lt;/string&gt;
+</pre>
+
+<p>You can look at the permissions currently defined in the system with the
+Settings app and the shell command <code>adb shell pm list permissions</code>.
+To use the Settings app, go to Settings &gt; Applications.  Pick an app and
+scroll down to see the permissions that the app uses. For developers, the adb '-s'
+option displays the permissions in a form similar to how the user will see them:</p>
+
+<pre>
+$ adb shell pm list permissions -s
+All Permissions:
+
+Network communication: view Wi-Fi state, create Bluetooth connections, full
+Internet access, view network state
+
+Your location: access extra location provider commands, fine (GPS) location,
+mock location sources for testing, coarse (network-based) location
+
+Services that cost you money: send SMS messages, directly call phone numbers
+
+...</pre>
+
+<a name="manifest"></a>
+<h3>Enforcing Permissions in AndroidManifest.xml</h3>
+
+<p>High-level permissions restricting access to entire components of the
+system or application can be applied through your
+<code>AndroidManifest.xml</code>. All that this requires is including an {@link
+android.R.attr#permission android:permission} attribute on the desired
+component, naming the permission that will be used to control access to
+it.</p>
+
+<p><strong>{@link android.app.Activity}</strong> permissions
+(applied to the
+{@link android.R.styleable#AndroidManifestActivity &lt;activity&gt;} tag)
+restrict who can start the associated
+activity.  The permission is checked during
+{@link android.content.Context#startActivity Context.startActivity()} and
+{@link android.app.Activity#startActivityForResult Activity.startActivityForResult()};
+if the caller does not have
+the required permission then {@link java.lang.SecurityException} is thrown
+from the call.</p>
+
+<p><strong>{@link android.app.Service}</strong> permissions
+(applied to the
+{@link android.R.styleable#AndroidManifestService &lt;service&gt;} tag)
+restrict who can start or bind to the
+associated service.  The permission is checked during
+{@link android.content.Context#startService Context.startService()},
+{@link android.content.Context#stopService Context.stopService()} and
+{@link android.content.Context#bindService Context.bindService()};
+if the caller does not have
+the required permission then {@link java.lang.SecurityException} is thrown
+from the call.</p>
+
+<p><strong>{@link android.content.BroadcastReceiver}</strong> permissions
+(applied to the
+{@link android.R.styleable#AndroidManifestReceiver &lt;receiver&gt;} tag)
+restrict who can send broadcasts to the associated receiver.
+The permission is checked <em>after</em>
+{@link android.content.Context#sendBroadcast Context.sendBroadcast()} returns,
+as the system tries
+to deliver the submitted broadcast to the given receiver.  As a result, a
+permission failure will not result in an exception being thrown back to the
+caller; it will just not deliver the intent.  In the same way, a permission
+can be supplied to
+{@link android.content.Context#registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, String, android.os.Handler)
+Context.registerReceiver()}
+to control who can broadcast to a programmatically registered receiver.
+Going the other way, a permission can be supplied when calling
+{@link android.content.Context#sendBroadcast(Intent, String) Context.sendBroadcast()}
+to restrict which BroadcastReceiver objects are allowed to receive the broadcast (see
+below).</p>
+
+<p><strong>{@link android.content.ContentProvider}</strong> permissions
+(applied to the
+{@link android.R.styleable#AndroidManifestProvider &lt;provider&gt;} tag)
+restrict who can access the data in
+a {@link android.content.ContentProvider}.  (Content providers have an important
+additional security facility available to them called
+<a href="#uri">URI permissions</a> which is described later.)
+Unlike the other components,
+there are two separate permission attributes you can set:
+{@link android.R.attr#readPermission android:readPermission} restricts who
+can read from the provider, and
+{@link android.R.attr#writePermission android:writePermission} restricts
+who can write to it.  Note that if a provider is protected with both a read
+and write permission, holding only the write permission does not mean
+you can read from a provider.  The permissions are checked when you first
+retrieve a provider (if you don't have either permission, a SecurityException
+will be thrown), and as you perform operations on the provider.  Using
+{@link android.content.ContentResolver#query ContentResolver.query()} requires
+holding the read permission; using
+{@link android.content.ContentResolver#insert ContentResolver.insert()},
+{@link android.content.ContentResolver#update ContentResolver.update()},
+{@link android.content.ContentResolver#delete ContentResolver.delete()}
+requires the write permission.
+In all of these cases, not holding the required permission results in a
+{@link java.lang.SecurityException} being thrown from the call.</p>
+
+
+<a name="broadcasts"></a>
+<h3>Enforcing Permissions when Sending Broadcasts</h3>
+
+<p>In addition to the permission enforcing who can send Intents to a
+registered {@link android.content.BroadcastReceiver} (as described above), you
+can also specify a required permission when sending a broadcast. By calling {@link
+android.content.Context#sendBroadcast(android.content.Intent,String)
+Context.sendBroadcast()} with a
+permission string, you require that a receiver's application must hold that
+permission in order to receive your broadcast.</p>
+
+<p>Note that both a receiver and a broadcaster can require a permission. When
+this happens, both permission checks must pass for the Intent to be delivered
+to the associated target.</p>
+
+
+<a name="enforcement"></a>
+<h3>Other Permission Enforcement</h3>
+
+<p>Arbitrarily fine-grained permissions can be enforced at any call into a
+service. This is accomplished with the {@link
+android.content.Context#checkCallingPermission Context.checkCallingPermission()}
+method. Call with a desired
+permission string and it will return an integer indicating whether that
+permission has been granted to the current calling process. Note that this can
+only be used when you are executing a call coming in from another process,
+usually through an IDL interface published from a service or in some other way
+given to another process.</p>
+
+<p>There are a number of other useful ways to check permissions. If you have
+the pid of another process, you can use the Context method {@link
+android.content.Context#checkPermission(String, int, int) Context.checkPermission(String, int, int)}
+to check a permission against that pid. If you have the package name of another
+application, you can use the direct PackageManager method {@link
+android.content.pm.PackageManager#checkPermission(String, String)
+PackageManager.checkPermission(String, String)}
+to find out whether that particular package has been granted a specific permission.</p>
+
+
+<a name="uri"></a>
+<h2>URI Permissions</h2>
+
+<p>The standard permission system described so far is often not sufficient
+when used with content providers.  A content provider may want to
+protect itself with read and write permissions, while its direct clients
+also need to hand specific URIs to other applications for them to operate on.
+A typical example is attachments in a mail application.  Access to the mail
+should be protected by permissions, since this is sensitive user data.  However,
+if a URI to an image attachment is given to an image viewer, that image viewer
+will not have permission to open the attachment since it has no reason to hold
+a permission to access all e-mail.</p>
+
+<p>The solution to this problem is per-URI permissions: when starting an
+activity or returning a result to an activity, the caller can set
+{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION
+Intent.FLAG_GRANT_READ_URI_PERMISSION} and/or
+{@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION
+Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.  This grants the receiving activity
+permission access the specific data URI in the Intent, regardless of whether
+it has any permission to access data in the content provider corresponding
+to the Intent.</p>
+
+<p>This mechanism allows a common capability-style model where user interaction
+(opening an attachment, selecting a contact from a list, etc) drives ad-hoc
+granting of fine-grained permission.  This can be a key facility for reducing
+the permissions needed by applications to only those directly related to their
+behavior.</p>
+
+<p>The granting of fine-grained URI permissions does, however, require some
+cooperation with the content provider holding those URIs.  It is strongly
+recommended that content providers implement this facility, and declare that
+they support it through the
+{@link android.R.styleable#AndroidManifestProvider_grantUriPermissions
+android:grantUriPermissions} attribute or
+{@link android.R.styleable#AndroidManifestGrantUriPermission
+&lt;grant-uri-permissions&gt;} tag.</p>
+
+<p>More information can be found in the
+{@link android.content.Context#grantUriPermission Context.grantUriPermission()},
+{@link android.content.Context#revokeUriPermission Context.revokeUriPermission()}, and
+{@link android.content.Context#checkUriPermission Context.checkUriPermission()}
+methods.</p>
+
diff --git a/docs/html/guide/topics/security/security.jd b/docs/html/guide/topics/security/security.jd
index 1fd9ba0..eeaac44 100644
--- a/docs/html/guide/topics/security/security.jd
+++ b/docs/html/guide/topics/security/security.jd
@@ -1,407 +1,770 @@
-page.title=Security and Permissions
+page.title=Designing for Security
 @jd:body
 
 <div id="qv-wrapper">
 <div id="qv">
-
 <h2>In this document</h2>
 <ol>
-<li><a href="#arch">Security Architecture</a></li>
-<li><a href="#signing">Application Signing</a></li>
-<li><a href="#userid">User IDs and File Access</a></li>
-<li><a href="#permissions">Using Permissions</a></li>
-<li><a href="#declaring">Declaring and Enforcing Permissions</a>
-	<ol>
-	<li><a href="#manifest">...in AndroidManifest.xml</a></li>
-	<li><a href="#broadcasts">...when Sending Broadcasts</a></li>
-	<li><a href="#enforcement">Other Permission Enforcement</a></li>
-	</ol></li>
-<li><a href="#uri">URI Permissions</a></li>
+<li><a href="#Dalvik">Using Davlik Code</a></li>
+<li><a href="#Native">Using Native Code</a></li>
+<li><a href="#Data">Storing Data</a></li>
+<li><a href="#IPC">Using IPC</a></li>
+<li><a href="#Permissions">Using Permissions</a></li>
+<li><a href="#Networking">Using Networking</a></li>
+<li><a href="#DynamicCode">Dynamically Loading Code</a></li>
+<li><a href="#Input">Performing Input Validation</a></li>
+<li><a href="#UserData">Handling User Data</a></li>
+<li><a href="#Crypto">Using Cryptography</a></li>
 </ol>
-</div>
-</div>
-<p>This document describes how application developers can use the
-security features provided by Android.  A more general <a
-href="http://source.android.com/tech/security/index.html"> Android Security
-Overview</a> is provided in the Android Open Source Project.</p>
+<h2>See also</h2>
+<ol>
+<li><a href="http://source.android.com/tech/security/index.html">Android
+Security Overview</a></li>
+<li><a href="{@docRoot}guide/topics/security/security.html">Android Security
+And Permissions</a></li>
+</ol>
+</div></div>
+<p>Android was designed so that most developers will be able to build
+applications using the default settings and not be confronted with difficult
+decisions about security.  Android also has a number of security features built
+into the operating system that significantly reduce the frequency and impact of
+application security issues.</p>
 
-<p>Android is a privilege-separated operating system, in which each
-application runs with a distinct system identity (Linux user ID and group
-ID).  Parts of the system are also separated into distinct identities.
-Linux thereby isolates applications from each other and from the system.</p>
+<p>Some of the security features that help developers build secure applications
+include:
+<ul>
+<li>The Android Application Sandbox that isolates data and code execution on a
+per-application basis.</li>
+<li>Android application framework with robust implementations of common
+security functionality such as cryptography, permissions, and secure IPC.</li>
+<li>Technologies like ASLR, NX, ProPolice, safe_iop, OpenBSD dlmalloc, OpenBSD
+calloc, and Linux mmap_min_addr to mitigate risks associated with common memory
+management errors</li>
+<li>An encrypted filesystem that can be enabled to protect data on lost or
+stolen devices.</li>
+</ul></p>
 
-<p>Additional finer-grained security features are provided through a
-"permission" mechanism that enforces restrictions on the specific operations
-that a particular process can perform, and per-URI permissions for granting
-ad-hoc access to specific pieces of data.</p>
+<p>Nevertheless, it is important for developers to be familiar with Android
+security best practices to make sure they take advantage of these capabilities
+and to reduce the likelihood of inadvertently introducing security issues that
+can affect their applications.</p>
 
-<a name="arch"></a>
-<h2>Security Architecture</h2>
+<p>This document is organized around common APIs and development techniques
+that can have security implications for your application and its users. As
+these best practices are constantly evolving, we recommend you check back
+occasionally throughout your application development process.</p>
 
-<p>A central design point of the Android security architecture is that no
-application, by default, has permission to perform any operations that would
-adversely impact other applications, the operating system, or the user.  This
-includes reading or writing the user's private data (such as contacts or
-e-mails), reading or writing another application's files, performing
-network access, keeping the device awake, etc.</p>
+<a name="Dalvik"></a>
+<h2>Using Dalvik Code</h2>
+<p>Writing secure code that runs in virtual machines is a well-studied topic
+and many of the issues are not specific to Android.  Rather than attempting to
+rehash these topics, we’d recommend that you familiarize yourself with the
+existing literature. Two of the more popular resources are:
+<ul>
+<li><a href="http://www.securingjava.com/toc.html">
+http://www.securingjava.com/toc.html</a></li>
+<li><a
+href="https://www.owasp.org/index.php/Java_Security_Resources">
+https://www.owasp.org/index.php/Java_Security_Resources</a></li>
+</ul></p>
 
-<p>Because Android sandboxes applications from each other, applications
-must explicitly share resources and data. They do this by declaring the
-<em>permissions</em> they need for additional capabilities not provided by
-the basic sandbox. Applications statically declare the permissions they
-require, and the Android system prompts the user for consent at the time the
-application is installed. Android has no mechanism for granting permissions
-dynamically (at run-time) because it complicates the user experience to the
-detriment of security.</p>
+<p>This document is focused on the areas which are Android specific and/or
+different from other environments.  For developers experienced with VM
+programming in other environments, there are two broad issues that may be
+different about writing apps for Android:
+<ul>
+<li>Some virtual machines, such as the JVM or .net runtime, act as a security
+boundary, isolating code from the underlying operating system capabilities.  On
+Android, the Dalvik VM is not a security boundary -- the application sandbox is
+implemented at the OS level, so Dalvik can interoperate with native code in the
+same application without any security constraints.</li>
+<li>Given the limited storage on mobile devices, it’s common for developers
+to want to build modular applications and use dynamic class loading.  When
+doing this consider both the source where you retrieve your application logic
+and where you store it locally. Do not use dynamic class loading from sources
+that are not verified, such as unsecured network sources or external storage,
+since that code can be modified to include malicious behavior.</li>
+</ul></p>
 
-<p>The application sandbox does not depend on the technology used to build
-an application. In particular the Dalvik VM is not a security boundary, and
-any app can run native code (see <a href="/sdk/ndk/index.html">the Android
-NDK</a>). All types of applications &mdash; Java, native, and hybrid &mdash;
-are sandboxed in the same way and have the same degree of security from each
-other.</p>
+<a name="Native"></a>
+<h2>Using Native Code</h2>
 
-<a name="signing"></a>
-<h2>Application Signing</h2>
+<p>In general, we encourage developers to use the Android SDK for most
+application development, rather than using native code.   Applications built
+with native code are more complex, less portable, and more like to include
+common memory corruption errors such as buffer overflows.</p>
 
-<p>All Android applications (.apk files) must be signed with a certificate
-whose private key is held by their developer.  This certificate identifies
-the author of the application.  The certificate does <em>not</em> need to be
-signed by a certificate authority: it is perfectly allowable, and typical,
-for Android applications to use self-signed certificates. The purpose of
-certificates in Android is to distinguish application authors. This allows
-the system to grant or deny applications access to <a
-href="/guide/topics/manifest/permission-element.html#plevel">signature-level
-permissions</a> and to grant or deny an application's <a
-href="/guide/topics/manifest/manifest-element.html#uid">request to be given
-the same Linux identity</a> as another application.</p>
+<p>Android is built using the Linux kernel and being familiar with Linux
+development security best practices is especially useful if you are going to
+use native code. This document is too short to discuss all of those best
+practices, but one of the most popular resources is  “Secure Programming for
+Linux and Unix HOWTO”, available at <a
+href="http://www.dwheeler.com/secure-programs">
+http://www.dwheeler.com/secure-programs</a>.</p>
 
-<a name="userid"></a>
-<h2>User IDs and File Access</h2>
+<p>An important difference between Android and most Linux environments is the
+Application Sandbox.  On Android, all applications run in the Application
+Sandbox, including those written with native code.  At the most basic level, a
+good way to think about it for developers familiar with Linux is to know that
+every application is given a unique UID with very limited permissions. This is
+discussed in more detail in the <a
+href="http://source.android.com/tech/security/index.html">Android Security
+Overview</a> and you should be familiar with application permissions even if
+you are using native code.</p>
 
-<p>At install time, Android gives each package a distinct Linux user ID. The
-identity remains constant for the duration of the package's life on that
-device. On a different device, the same package may have a different UID;
-what matters is that each package has a distinct UID on a given device.</p>
+<a name="Data"></a>
+<h2>Storing Data</h2>
 
-<p>Because security enforcement happens at the
-process level, the code of any two packages can not normally
-run in the same process, since they need to run as different Linux users.
-You can use the {@link android.R.attr#sharedUserId} attribute in the
-<code>AndroidManifest.xml</code>'s
-{@link android.R.styleable#AndroidManifest manifest} tag of each package to
-have them assigned the same user ID.  By doing this, for purposes of security
-the two packages are then treated as being the same application, with the same
-user ID and file permissions.  Note that in order to retain security, only two applications
-signed with the same signature (and requesting the same sharedUserId) will
-be given the same user ID.</p>
+<h3>Using internal files</h3>
 
-<p>Any data stored by an application will be assigned that application's user
-ID, and not normally accessible to other packages.  When creating a new file
-with {@link android.content.Context#getSharedPreferences},
-{@link android.content.Context#openFileOutput}, or
-{@link android.content.Context#openOrCreateDatabase},
-you can use the
-{@link android.content.Context#MODE_WORLD_READABLE} and/or
-{@link android.content.Context#MODE_WORLD_WRITEABLE} flags to allow any other
-package to read/write the file.  When setting these flags, the file is still
-owned by your application, but its global read and/or write permissions have
-been set appropriately so any other application can see it.</p>
+<p>By default, files created on <a
+href="{@docRoot}guide/topics/data/data-storage.html#filesInternal">internal
+storage</a> are only accessible to the application that created the file. This
+protection is implemented by Android and is sufficient for most
+applications.</p>
 
+<p>Use of <a
+href="{@docRoot}reference/android/content/Context.html#MODE_WORLD_WRITEABLE">
+world writable</a> or <a
+href="{@docRoot}reference/android/content/Context.html#MODE_WORLD_READABLE">world
+readable</a> files for IPC is discouraged because it does not provide
+the ability to limit data access to particular applications, nor does it
+provide any control on data format. As an alternative, you might consider using
+a ContentProvider which provides read and write permissions, and can make
+dynamic permission grants on a case-by-case basis.</p>
 
-<a name="permissions"></a>
-<h2>Using Permissions</h2>
+<p>To provide additional protection for sensitive data, some applications
+choose to encrypt local files using a key that is not accessible to the
+application. (For example, a key can be placed in a <code><a
+href={@docRoot}reference/java/security/KeyStore.html">KeyStore</a></code> and
+protected with a user password that is not stored on the device).  While this
+does not protect data from a root compromise that can monitor the user
+inputting the password,  it can provide protection for a lost device without <a
+href="http://source.android.com/tech/encryption/index.html">file system
+encryption</a>.</p>
 
-<p>A basic Android application has no permissions associated with it,
-meaning it can not do anything that would adversely impact the user experience
-or any data on the device.  To make use of protected features of the device,
-you must include in your <code>AndroidManifest.xml</code> one or more
-<code>{@link android.R.styleable#AndroidManifestUsesPermission &lt;uses-permission&gt;}</code>
-tags declaring the permissions that your application needs.</p>
+<h3>Using external storage</h3>
 
-<p>For example, an application that needs to monitor incoming SMS messages would
-specify:</p>
+<p>Files created on <a
+href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">external
+storage</a>, such as SD Cards, are globally readable and writable.  Since
+external storage can be removed by the user and also modified by any
+application,  applications should not store sensitive information using
+external storage.</p>
 
-<pre>&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
-    package=&quot;com.android.app.myapp&quot; &gt;
-    &lt;uses-permission android:name=&quot;android.permission.RECEIVE_SMS&quot; /&gt;
-    ...
-&lt;/manifest&gt;</pre>
+<p>As with data from any untrusted source, applications should perform input
+validation when handling data from external storage (see Input Validation
+section).  We strongly recommend that applications not store executables or
+class files on external storage prior to dynamic loading.  If an application
+does retrieve executable files from external storage they should be signed and
+cryptographically verified prior to dynamic loading.</p>
 
-<p>At application install time, permissions requested by the application are
-granted to it by the package installer, based on checks against the
-signatures of the applications declaring those permissions and/or interaction
-with the user. <em>No</em> checks with the user
-are done while an application is running: it either was granted a particular
-permission when installed, and can use that feature as desired, or the
-permission was not granted and any attempt to use the feature will fail
-without prompting the user.</p>
+<h3>Using content providers</h3>
 
-<p>Often times a permission failure will result in a {@link
-java.lang.SecurityException} being thrown back to the application. However,
-this is not guaranteed to occur everywhere. For example, the {@link
-android.content.Context#sendBroadcast} method checks permissions as data is
-being delivered to each receiver, after the method call has returned, so you
-will not receive an exception if there are permission failures. In almost all
-cases, however, a permission failure will be printed to the system log.</p>
+<p>ContentProviders provide a structured storage mechanism that can be limited
+to your own application, or exported to allow access by other applications. By
+default, a <code>
+<a href="{@docRoot}reference/android/content/ContentProvider.html">
+ContentProvider</a></code> is
+<a href="{@docRoot}guide/topics/manifest/provider-element.html#exported">exported
+</a> for use by other applications.  If you do not intend to provide other
+applications with access to your<code>
+<a href="{@docRoot}reference/android/content/ContentProvider.html">
+ContentProvider</a></code>, mark them as <code><a
+href="{@docRoot}guide/topics/manifest/provider-element.html#exported">
+android:exported=false</a></code> in the application manifest.</p>
 
-<p>The permissions provided by the Android system can be found at {@link
-android.Manifest.permission}. Any application may also define and enforce its
-own permissions, so this is not a comprehensive list of all possible
+<p>When creating a <code>
+<a href="{@docRoot}reference/android/content/ContentProvider.html">ContentProvider
+</a></code> that will be exported for use by other applications, you can specify
+a single
+<a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">permission
+</a> for reading and writing, or distinct permissions for reading and writing
+within the manifest. We recommend that you limit your permissions to those
+required to accomplish the task at hand. Keep in mind that it’s usually
+easier to add permissions later to expose new functionality than it is to take
+them away and break existing users.</p>
+
+<p>If you are using a <code>
+<a href="{@docRoot}reference/android/content/ContentProvider.html">
+ContentProvider</a></code> for sharing data between applications built by the
+same developer, it is preferable to use
+<a href="{@docRoot}guide/topics/manifest/permission-element.html#plevel">signature
+level permissions</a>.  Signature permissions do not require user confirmation,
+so they provide a better user experience and more controlled access to the
+<code>
+<a href="{@docRoot}reference/android/content/ContentProvider.html">
+ContentProvider</a></code>.</p>
+
+<p>ContentProviders can also provide more granular access by declaring the <a
+href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+grantUriPermissions</a> element and using the <code><a
+href="{@docRoot}reference/android/content/Intent.html#FLAG_GRANT_READ_URI_PERMISSION">FLAG_GRANT_READ_URI_PERMISSION</a></code>
+and <code><a
+href="{@docRoot}reference/android/content/Intent.html#FLAG_GRANT_WRITE_URI_PERMISSION">FLAG_GRANT_WRITE_URI_PERMISSION</a></code>
+flags in the Intent object
+that activates the component.  The scope of these permissions can be further
+limited by the <code><a
+href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
+grant-uri-permission element</a></code>.</p>
+
+<p>When accessing a <code>
+<a href="{@docRoot}reference/android/content/ContentProvider.html">
+ContentProvider</a></code>, use parameterized query methods such as <code>
+<a href="{@docRoot}reference/android/content/ContentProvider.html#query(android.net.Uri,%20java.lang.String[],%20java.lang.String,%20java.lang.String[],%20java.lang.String)">query()</a></code>, <code><a
+href="{@docRoot}reference/android/content/ContentProvider.html#update(android.net.Uri,%20android.content.ContentValues,%20java.lang.String,%20java.lang.String[])">update()</a></code>, and <code><a
+href="{@docRoot}reference/android/content/ContentProvider.html#delete(android.net.Uri,%20java.lang.String,%20java.lang.String[])">delete()</a></code> to avoid
+potential <a href="http://en.wikipedia.org/wiki/SQL_injection">SQL
+Injection</a> from untrusted data. Note that using parameterized methods is not
+sufficient if the <code>selection</code> is built by concatenating user data
+prior to submitting it to the method.</p>
+
+<p>Do not have a false sense of security about the write permission.  Consider
+that the write permission allows SQL statements which make it possible for some
+data to be confirmed using creative <code>WHERE</code> clauses and parsing the
+results. For example, an attacker might probe for presence of a specific phone
+number in a call-log by modifying a row only if that phone number already
+exists. If the content provider data has predictable structure, the write
+permission may be equivalent to providing both reading and writing.</p>
+
+<a name="IPC"></a>
+<h2>Using Interprocess Communication (IPC)</h2>
+
+<p>Some Android applications attempt to implement IPC using traditional Linux
+techniques such as network sockets and shared files.  We strongly encourage the
+use of Android system functionality for IPC such as Intents, Binders, Services,
+and Receivers.  The Android IPC mechanisms allow you to verify the identity of
+the application connecting to your IPC and set security policy for each IPC
+mechanism.</p>
+
+<p>Many of the security elements are shared across IPC mechanisms. <a
+href="{@docRoot}reference/android/content/BroadcastReceiver.html">
+Broadcast Receivers</a>, <a
+href="{@docRoot}reference/android/R.styleable.html#AndroidManifestActivity">
+Activities</a>, and <a
+href="{@docRoot}reference/android/R.styleable.html#AndroidManifestService">
+Services</a> are all declared in the application manifest.  If your IPC mechanism is
+not intended for use by other applications, set the <a
+href="{@docRoot}guide/topics/manifest/service-element.html#exported">{@code android:exported}</a>
+property to false.  This is useful for applications that consist of multiple processes
+within the same UID, or if you decide late in development that you do not
+actually want to expose functionality as IPC but you don’t want to rewrite
+the code.</p>
+
+<p>If your IPC is intended to be accessible to other applications, you can
+apply a security policy by using the <a
+href="{@docRoot}reference/android/R.styleable.html#AndroidManifestPermission">
+Permission</a> tag. If IPC is between applications built by the same developer,
+it is preferable to use <a
+href="{@docRoot}guide/topics/manifest/permission-element.html#plevel">signature
+level permissions</a>.  Signature permissions do not require user confirmation,
+so they provide a better user experience and more controlled access to the IPC
+mechanism.</p>
+
+<p>One area that can introduce confusion is the use of intent filters. Note
+that Intent filters should not be considered a security feature -- components
+can be invoked directly and may not have data that would conform to the intent
+filter. You should perform input validation within your intent receiver to
+confirm that it is properly formatted for the invoked receiver, service, or
+activity.</p>
+
+<h3>Using intents</h3>
+
+<p>Intents are the preferred mechanism for asynchronous IPC in Android.
+Depending on your application requirements, you might use <code><a
+href="{@docRoot}reference/android/content/Context.html#sendBroadcast(android.content.Intent)">sendBroadcast()</a></code>, 
+<code><a
+href="{@docRoot}reference/android/content/Context.html#sendOrderedBroadcast(android.content.Intent,%20java.lang.String)">sendOrderedBroadcast()</a></code>,
+or direct an intent to a specific application component.</p>
+
+<p>Note that ordered broadcasts can be “consumed” by a recipient, so they
+may not be delivered to all applications.  If you are sending an Intent where
+delivery to a specific receiver is required, the intent must be delivered
+directly to the receiver.</p>
+
+<p>Senders of an intent can verify that the recipient has a permission
+specifying a non-Null Permission upon sending.  Only applications with that
+Permission will receive the intent.  If data within a broadcast intent may be
+sensitive, you should consider applying a permission to make sure that
+malicious applications cannot register to receive those messages without
+appropriate permissions.  In those circumstances, you may also consider
+invoking the receiver directly, rather than raising a broadcast.</p>
+
+<h3>Using binder and AIDL interfaces</h3>
+
+<p><a href="{@docRoot}reference/android/os/Binder.html">Binders</a> are the
+preferred mechanism for RPC-style IPC in Android. They provide a well-defined
+interface that enables mutual authentication of the endpoints, if required.</p>
+
+<p>We strongly encourage designing interfaces in a manner that does not require
+interface specific permission checks. Binders are not declared within the
+application manifest, and therefore you cannot apply declarative permissions
+directly to a Binder.  Binders generally inherit permissions declared in the
+application manifest for the Service or Activity within which they are
+implemented.  If you are creating an interface that requires authentication
+and/or access controls on a specific binder interface, those controls must be
+explicitly added as code in the interface.</p>
+
+<p>If providing an interface that does require access controls, use <code><a
+href="{@docRoot}reference/android/content/Context.html#checkCallingPermission(java.lang.String)">checkCallingPermission()</a></code>
+to verify whether the
+caller of the Binder has a required permission. This is especially important
+before accessing a Service on behalf of the caller, as the identify of your
+application is passed to other interfaces.  If invoking an interface provided
+by a Service, the <code><a
+href="{@docRoot}reference/android/content/Context.html#bindService(android.content.Intent,%20android.content.ServiceConnection,%20int)">bindService()</a></code>
+ invocation may fail if you do not have permission to access the given Service.
+ If calling an interface provided locally by your own application, it may be
+useful to use the <code><a
+href="{@docRoot}reference/android/os/Binder.html#clearCallingIdentity()">
+clearCallingIdentity()</a></code> to satisfy internal security checks.</p>
+
+<h3>Using broadcast receivers</h3>
+
+<p>Broadcast receivers are used to handle asynchronous requests initiated via
+an intent.</p>
+
+<p>By default, receivers are exported and can be invoked by any other
+application. If your <code><a
+href="{@docRoot}reference/android/content/BroadcastReceiver.html">
+BroadcastReceivers</a></code> is intended for use by other applications, you
+may want to apply security permissions to receivers using the <code><a
+href="{@docRoot}guide/topics/manifest/receiver-element.html">
+&lt;receiver&gt;</a></code> element within the application manifest.  This will
+prevent applications without appropriate permissions from sending an intent to
+the <code><a
+href="{@docRoot}reference/android/content/BroadcastReceiver.html">
+BroadcastReceivers</a></code>.</p>
+
+<h3>Using Services</h3>
+
+<p>Services are often used to supply functionality for other applications to
+use. Each service class must have a corresponding <service> declaration in its
+package's AndroidManifest.xml.</p>
+
+<p>By default, Services are exported and can be invoked by any other
+application.  Services can be protected using the <a
+href="{@docRoot}guide/topics/manifest/service-element.html#prmsn">{@code android:permission}</a>
+attribute
+within the manifest’s <code><a
+href="{@docRoot}guide/topics/manifest/service-element.html">
+&lt;service&gt;</a></code> tag. By doing so, other applications will need to declare
+a corresponding <code><a
+href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a>
+</code> element in their own manifest to be
+able to start, stop, or bind to the service.</p>
+
+<p>A Service can protect individual IPC calls into it with permissions, by
+calling <code><a
+href="{@docRoot}reference/android/content/Context.html#checkCallingPermission(java.lang.String)">checkCallingPermission()</a></code>
+before executing
+the implementation of that call.  We generally recommend using the
+declarative permissions in the manifest, since those are less prone to
+oversight.</p>
+
+<h3>Using Activities</h3>
+
+<p>Activities are most often used for providing the core user-facing
+functionality of an application. By default, Activities are exported and
+invokable by other applications only if they have an intent filter or binder
+declared.  In general, we recommend that you specifically declare a Receiver or
+Service to handle IPC, since this modular approach reduces the risk of exposing
+functionality that is not intended for use by other applications.</p>
+
+<p>If you do expose an Activity for purposes of IPC, the  <code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#prmsn">android:permission</a></code>
+attribute in the  <code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html">
+&lt;activity&gt;</a></code> declaration in the application manifest can be used to
+restrict access to only those applications which have the stated
 permissions.</p>
 
-<p>A particular permission may be enforced at a number of places during your
-program's operation:</p>
+<a name="Permissions"></a>
+<h2>Using Permissions</h2>
 
+<h3>Requesting Permissions</h3>
+
+<p>We recommend minimizing the number of permissions requested by an
+application. Not having access to sensitive permissions reduces the risk of
+inadvertently misusing those permissions, can improve user adoption, and makes
+applications less attractive targets for attackers.</p>
+
+<p>If it is possible to design your application in a way that does not require
+a permission, that is preferable.  For example, rather than requesting access
+to device information to create an identifier, create a <a
+href="{@docRoot}reference/java/util/UUID.html">GUID</a> for your application.
+(This specific example is also discussed in Handling User Data) Or, rather than
+using external storage, store data in your application directory.</p>
+
+<p>If a permission is not required, do not request it.  This sounds simple, but
+there has been quite a bit of research into the frequency of over-requesting
+permissions. If you’re interested in the subject you might start with this
+research paper published by U.C. Berkeley: <a
+href="http://www.eecs.berkeley.edu/Pubs/TechRpts/2011/EECS-2011-48.pdf">
+http://www.eecs.berkeley.edu/Pubs/TechRpts/2011/EECS-2011-48.pdf</a></p>
+
+<p>In addition to requesting permissions, your application can use <a
+href="{@docRoot}guide/topics/manifest/permission-element.html">permissions</a>
+to protect IPC that is security sensitive and will be exposed to other
+applications -- such as a <code><a
+href="{@docRoot}reference/android/content/ContentProvider.html">
+ContentProvider</a></code>.  In general, we recommend using access controls
+other than user confirmed permissions where possible since permissions can
+be confusing for users. For example, consider using the <a
+href="{@docRoot}guide/topics/manifest/permission-element.html#plevel">signature
+protection level</a> on permissions for IPC communication between applications
+provided by a single developer.</p>
+
+<p>Do not cause permission re-delegation.  This occurs when an app exposes data
+over IPC that is only available because it has a specific permission, but does
+not require that permission of any clients of it’s IPC interface. More
+details on the potential impacts, and frequency of this type of problem is
+provided in this research paper published at USENIX: <a
+href="http://www.cs.berkeley.edu/~afelt/felt_usenixsec2011.pdf">http://www.cs.be
+rkeley.edu/~afelt/felt_usenixsec2011.pdf</a></p>
+
+<h3>Creating Permissions</h3>
+
+<p>Generally, you should strive to create as few permissions as possible while
+satisfying your security requirements.  Creating a new permission is relatively
+uncommon for most applications, since <a
+href="{@docRoot}reference/android/Manifest.permission.html">system-defined
+permissions</a> cover many situations.  Where appropriate,
+perform access checks using existing permissions.</p>
+
+<p>If you must create a new permission, consider whether you can accomplish
+your task with a Signature permission.  Signature permissions are transparent
+to the user and only allow access by applications signed by the same developer
+as application performing the permission check.  If you create a Dangerous
+permission, then the user needs to decide whether to install the application.
+This can be confusing for other developers, as well as for users.</p>
+
+<p>If you create a Dangerous permission, there are a number of complexities
+that you need to consider.
 <ul>
-<li>At the time of a call into the system, to prevent an application from
-executing certain functions.</li>
-<li>When starting an activity, to prevent applications from launching
-activities of other applications.</li>
-<li>Both sending and receiving broadcasts, to control who can receive
-your broadcast or who can send a broadcast to you.</li>
-<li>When accessing and operating on a content provider.</li>
-<li>Binding to or starting a service.</li>
-</ul>
+<li>The permission must have a string that concisely expresses to a user the
+security decision they will be required to make.</li>
+<li>The permission string must be localized to many different languages.</li>
+<li>Uses may choose not to install an application because a permission is
+confusing or perceived as risky.</li>
+<li>Applications may request the permission when the creator of the permission
+has not been installed.</li>
+</ul></p>
+
+<p>Each of these poses a significant non-technical challenge for an application
+developer, which is why we discourage the use of Dangerous permission.</p>
+
+<a name="Networking"></a>
+<h2>Using Networking</h2>
+
+<h3>Using IP Networking</h3>
+
+<p>Networking on Android is not significantly different from Linux
+environments.  The key consideration is making sure that appropriate protocols
+are used for sensitive data, such as <a
+href="{@docRoot}reference/javax/net/ssl/HttpsURLConnection.html">HTTPS</a> for
+web traffic.   We prefer use of HTTPS over HTTP anywhere that HTTPS is
+supported on the server, since mobile devices frequently connect on networks
+that are not secured, such as public WiFi hotspots.</p>
+
+<p>Authenticated, encrypted socket-level communication can be easily
+implemented using the <code><a
+href="{@docRoot}reference/javax/net/ssl/SSLSocket.html">SSLSocket</a></code>
+class.  Given the frequency with which Android devices connect to unsecured
+wireless networks using WiFi, the use of secure networking is strongly
+encouraged for all applications.</p>
+
+<p>We have seen some applications use <a
+href="http://en.wikipedia.org/wiki/Localhost">localhost</a> network ports for
+handling sensitive IPC.  We discourage this approach since these interfaces are
+accessible by other applications on the device.  Instead, use an Android IPC
+mechanism where authentication is possible such as a Service and Binder.  (Even
+worse than using loopback is to bind to INADDR_ANY since then your application
+may receive requests from anywhere.  We’ve seen that, too.)</p>
+
+<p>Also, one common issue that warrants repeating is to make sure that you do
+not trust data downloaded from HTTP or other insecure protocols.  This includes
+validation of input in <code><a
+href="{@docRoot}reference/android/webkit/WebView.html">WebView</a></code> and
+any responses to intents issued against HTTP.</p>
+
+<h3>Using Telephony Networking</h3>
+
+<p>SMS is the telephony protocol most frequently used by Android developers.
+Developers should keep in mind that this protocol was primarily designed for
+user-to-user communication and is not well-suited for some application
+purposes. Due to the limitations of SMS, we strongly recommend the use of <a
+href="http://code.google.com/android/c2dm/">C2DM</a> and IP networking for
+sending data messages to devices.</p>
+
+<p>Many developers do not realize that SMS is not encrypted or strongly
+authenticated on the network or on the device.  In particular, any SMS receiver
+should expect that a malicious user may have sent the SMS to your application
+-- do not rely on unauthenticated SMS data to perform sensitive commands.
+Also, you should be aware that SMS may be subject to spoofing and/or
+interception on the network.  On the Android-powered device itself, SMS
+messages are transmitted as Broadcast intents, so they may be read or captured
+by other applications that have the READ_SMS permission.</p>
+
+<a name="DynamicCode"></a>
+<h2>Dynamically Loading Code</h2>
+
+<p>We strongly discourage loading code from outside of the application APK.
+Doing so significantly increases the likelihood of application compromise due
+to code injection or code tampering.  It also adds complexity around version
+management and application testing.  Finally, it can make it impossible to
+verify the behavior of an application, so it may be prohibited in some
+environments.</p>
+
+<p>If your application does dynamically load code, the most important thing to
+keep in mind about dynamically loaded code is that it runs with the same
+security permissions as the application APK.  The user made a decision to
+install your application based on your identity, and they are expecting that
+you provide any code run within the application, including code that is
+dynamically loaded.</p>
+
+<p>The major security risk associated with dynamically loading code is that the
+code needs to come from a verifiable source. If the modules are included
+directly within your APK, then they cannot be modified by other applications.
+This is true whether the code is a native library or a class being loaded using
+<a href="{@docRoot}reference/dalvik/system/DexClassLoader.html">
+<code>DexClassLoader</code></a>.  We have seen many instances of applications
+attempting to load code from insecure locations, such as downloaded from the
+network over unencrypted protocols or from world writable locations such as
+external storage. These locations could allow someone on the network to modify
+the content in transit, or another application on a users device to modify the
+content, respectively.</p>
 
 
-<a name="declaring"></a>
-<h2>Declaring and Enforcing Permissions</h2>
+<h3>Using WebView</h3>
 
-<p>To enforce your own permissions, you must first declare them in your
-<code>AndroidManifest.xml</code> using one or more
-<code>{@link android.R.styleable#AndroidManifestPermission &lt;permission&gt;}</code>
-tags.</p>
+<p>Since WebView consumes web content that can include HTML and JavaScript,
+improper use can introduce common web security issues such as <a
+href="http://en.wikipedia.org/wiki/Cross_site_scripting">cross-site-scripting</a
+> (JavaScript injection).  Android includes a number of mechanisms to reduce
+the scope of these potential issues by limiting the capability of WebView to
+the minimum functionality required by your application.</p>
 
-<p>For example, an application that wants to control who can start one
-of its activities could declare a permission for this operation as follows:</p>
+<p>If your application does not directly use JavaScript within a <code><a
+href="{@docRoot}reference/android/webkit/WebView.html">WebView</a></code>, do
+not call
+<a href="{@docRoot}reference/android/webkit/WebSettings.html#setJavaScriptEnabled(boolean)">
+<code>setJavaScriptEnabled()</code></a>. We have seen this method invoked
+in sample code that might be repurposed in production application -- so
+remove it if necessary. By default, <code><a
+href="{@docRoot}reference/android/webkit/WebView.html">WebView</a></code> does
+not execute JavaScript so cross-site-scripting is not possible.</p>
 
-<pre>&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
-    package=&quot;com.me.app.myapp&quot; &gt;
-    &lt;permission android:name=&quot;com.me.app.myapp.permission.DEADLY_ACTIVITY&quot;
-        android:label=&quot;&#64;string/permlab_deadlyActivity&quot;
-        android:description=&quot;&#64;string/permdesc_deadlyActivity&quot;
-        android:permissionGroup=&quot;android.permission-group.COST_MONEY&quot;
-        android:protectionLevel=&quot;dangerous&quot; /&gt;
-    ...
-&lt;/manifest&gt;</pre>
+<p>Use <code><a
+href="{@docRoot}reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object,%20java.lang.String)">addJavaScriptInterface()</a></code> with
+particular care because it allows JavaScript to invoke operations that are
+normally reserved for Android applications.  Only expose <code><a
+href="{@docRoot}reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object,%20java.lang.String)">addJavaScriptInterface()</a></code> to
+sources from which all input is trustworthy.  If untrusted input is allowed,
+untrusted JavaScript may be able to invoke Android methods.  In general, we
+recommend only exposing <code><a
+href="{@docRoot}reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object,%20java.lang.String)">addJavaScriptInterface()</a></code> to
+JavaScript that is contained within your application APK.</p>
 
-<p>The {@link android.R.styleable#AndroidManifestPermission_protectionLevel
-&lt;protectionLevel&gt;} attribute is required, telling the system how the
-user is to be informed of applications requiring the permission, or who is
-allowed to hold that permission, as described in the linked documentation.</p>
+<p>Do not trust information downloaded over HTTP, use HTTPS instead.  Even if
+you are connecting only to a single website that you trust or control, HTTP is
+subject to <a
+href="http://en.wikipedia.org/wiki/Man-in-the-middle_attack">MiTM</a> attacks
+and interception of data.  Sensitive capabilities using <code><a
+href="{@docRoot}reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object,%20java.lang.String)">addJavaScriptInterface()</a></code> should
+not ever be exposed to unverified script downloaded over HTTP. Note that even
+with the use of HTTPS,
+<code><a
+href="{@docRoot}reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object,%20java.lang.String)">addJavaScriptInterface()</a></code>
+increases the attack surface of your application to include the server
+infrastructure and all CAs trusted by the Android-powered device.</p>
 
-<p>The {@link android.R.styleable#AndroidManifestPermission_permissionGroup
-&lt;permissionGroup&gt;} attribute is optional, and only used to help the system display
-permissions to the user.  You will usually want to set this to either a standard
-system group (listed in {@link android.Manifest.permission_group
-android.Manifest.permission_group}) or in more rare cases to one defined by
-yourself.  It is preferred to use an existing group, as this simplifies the
-permission UI shown to the user.</p>
+<p>If your application accesses sensitive data with a <code><a
+href="{@docRoot}reference/android/webkit/WebView.html">WebView</a></code>, you
+may want to use the <code><a
+href="{@docRoot}reference/android/webkit/WebView.html#clearCache(boolean)">
+clearCache()</a></code> method to delete any files stored locally. Server side
+headers like no-cache can also be used to indicate that an application should
+not cache particular content.</p>
 
-<p>Note that both a label and description should be supplied for the
-permission. These are string resources that can be displayed to the user when
-they are viewing a list of permissions
-(<code>{@link android.R.styleable#AndroidManifestPermission_label android:label}</code>)
-or details on a single permission (
-<code>{@link android.R.styleable#AndroidManifestPermission_description android:description}</code>).
-The label should be short, a few words
-describing the key piece of functionality the permission is protecting. The
-description should be a couple sentences describing what the permission allows
-a holder to do. Our convention for the description is two sentences, the first
-describing the permission, the second warning the user of what bad things
-can happen if an application is granted the permission.</p>
+<a name="Input"></a>
+<h2>Performing Input Validation</h2>
 
-<p>Here is an example of a label and description for the CALL_PHONE
-permission:</p>
+<p>Insufficient input validation is one of the most common security problems
+affecting applications, regardless of what platform they run on. Android does
+have platform-level countermeasures that reduce the exposure of applications to
+input validation issues, you should use those features where possible. Also
+note that selection of type-safe languages tends to reduce the likelihood of
+input validation issues.  We strongly recommend building your applications with
+the Android SDK.</p>
 
-<pre>
-    &lt;string name=&quot;permlab_callPhone&quot;&gt;directly call phone numbers&lt;/string&gt;
-    &lt;string name=&quot;permdesc_callPhone&quot;&gt;Allows the application to call
-        phone numbers without your intervention. Malicious applications may
-        cause unexpected calls on your phone bill. Note that this does not
-        allow the application to call emergency numbers.&lt;/string&gt;
-</pre>
+<p>If you are using native code, then any data read from files, received over
+the network, or received from an IPC has the potential to introduce a security
+issue.  The most common problems are <a
+href="http://en.wikipedia.org/wiki/Buffer_overflow">buffer overflows</a>, <a
+href="http://en.wikipedia.org/wiki/Double_free#Use_after_free">use after
+free</a>, and <a
+href="http://en.wikipedia.org/wiki/Off-by-one_error">off-by-one errors</a>.
+Android provides a number of technologies like ASLR and DEP that reduce the
+exploitability of these errors, but they do not solve the underlying problem.
+These can be prevented by careful handling of pointers and managing of
+buffers.</p>
 
-<p>You can look at the permissions currently defined in the system with the
-Settings app and the shell command <code>adb shell pm list permissions</code>.
-To use the Settings app, go to Settings &gt; Applications.  Pick an app and
-scroll down to see the permissions that the app uses. For developers, the adb '-s'
-option displays the permissions in a form similar to how the user will see them:</p>
+<p>Dynamic, string based languages such as JavaScript and SQL are also subject
+to input validation problems due to escape characters and <a
+href="http://en.wikipedia.org/wiki/Code_injection">script injection</a>.</p>
 
-<pre>
-$ adb shell pm list permissions -s
-All Permissions:
+<p>If you are using data within queries that are submitted to SQL Database or a
+Content Provider, SQL Injection may be an issue.  The best defense is to use
+parameterized queries, as is discussed in the ContentProviders section.
+Limiting permissions to read-only or write-only can also reduce the potential
+for harm related to SQL Injection.</p>
 
-Network communication: view Wi-Fi state, create Bluetooth connections, full
-Internet access, view network state
+<p>If you are using <code><a
+href="{@docRoot}reference/android/webkit/WebView.html">WebView</a></code>, then
+you must consider the possibility of XSS.  If your application does not
+directly use JavaScript within a <code><a
+href="{@docRoot}reference/android/webkit/WebView.html">WebView</a></code>, do
+not call setJavaScriptEnabled() and XSS is no longer possible. If you must
+enable JavaScript then the WebView section provides other security best
+practices.</p>
 
-Your location: access extra location provider commands, fine (GPS) location,
-mock location sources for testing, coarse (network-based) location
+<p>If you cannot use the security features above, we strongly recommend the use
+of well-structured data formats and verifying that the data conforms to the
+expected format. While blacklisting of characters or character-replacement can
+be an effective strategy, these techniques are error-prone in practice and
+should be avoided when possible.</p>
 
-Services that cost you money: send SMS messages, directly call phone numbers
+<a name="UserData"></a>
+<h2>Handling User Data</h2>
 
-...</pre>
+<p>In general, the best approach is to minimize use of APIs that access
+sensitive or personal user data. If you have access to data and can avoid
+storing or transmitting the information, do not store or transmit the data.
+Finally, consider if there is a way that your application logic can be
+implemented using a hash or non-reversible form of the data.  For example, your
+application might use the hash of an an email address as a primary key, to
+avoid transmitting or storing the email address.  This reduces the chances of
+inadvertently exposing data, and it also reduces the chance of attackers
+attempting to exploit your application.</p>
 
-<a name="manifest"></a>
-<h3>Enforcing Permissions in AndroidManifest.xml</h3>
+<p>If your application accesses personal information such as passwords or
+usernames, keep in mind that some jurisdictions may require you to provide a
+privacy policy explaining your use and storage of that data.  So following the
+security best practice of minimizing access to user data may also simplify
+compliance.</p>
 
-<p>High-level permissions restricting access to entire components of the
-system or application can be applied through your
-<code>AndroidManifest.xml</code>. All that this requires is including an {@link
-android.R.attr#permission android:permission} attribute on the desired
-component, naming the permission that will be used to control access to
-it.</p>
+<p>You should also consider whether your application might be inadvertently
+exposing personal information to other parties such as third-party components
+for advertising or third-party services used by your application. If you don't
+know why a component or service requires a personal information, don’t
+provide it.  In general, reducing the access to personal information by your
+application will reduce the potential for problems in this area.</p>
 
-<p><strong>{@link android.app.Activity}</strong> permissions
-(applied to the
-{@link android.R.styleable#AndroidManifestActivity &lt;activity&gt;} tag)
-restrict who can start the associated
-activity.  The permission is checked during
-{@link android.content.Context#startActivity Context.startActivity()} and
-{@link android.app.Activity#startActivityForResult Activity.startActivityForResult()};
-if the caller does not have
-the required permission then {@link java.lang.SecurityException} is thrown
-from the call.</p>
+<p>If access to sensitive data is required, evaluate whether that information
+must be transmitted to a server, or whether the operation can be performed on
+the client.  Consider running any code using sensitive data on the client to
+avoid transmitting user data.</p>
 
-<p><strong>{@link android.app.Service}</strong> permissions
-(applied to the
-{@link android.R.styleable#AndroidManifestService &lt;service&gt;} tag)
-restrict who can start or bind to the
-associated service.  The permission is checked during
-{@link android.content.Context#startService Context.startService()},
-{@link android.content.Context#stopService Context.stopService()} and
-{@link android.content.Context#bindService Context.bindService()};
-if the caller does not have
-the required permission then {@link java.lang.SecurityException} is thrown
-from the call.</p>
+<p>Also, make sure that you do not inadvertently expose user data to other
+application on the device through overly permissive IPC, world writable files,
+or network sockets. This is a special case of permission redelegation,
+discussed in the Requesting Permissions section.</p>
 
-<p><strong>{@link android.content.BroadcastReceiver}</strong> permissions
-(applied to the
-{@link android.R.styleable#AndroidManifestReceiver &lt;receiver&gt;} tag)
-restrict who can send broadcasts to the associated receiver.
-The permission is checked <em>after</em>
-{@link android.content.Context#sendBroadcast Context.sendBroadcast()} returns,
-as the system tries
-to deliver the submitted broadcast to the given receiver.  As a result, a
-permission failure will not result in an exception being thrown back to the
-caller; it will just not deliver the intent.  In the same way, a permission
-can be supplied to
-{@link android.content.Context#registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, String, android.os.Handler)
-Context.registerReceiver()}
-to control who can broadcast to a programmatically registered receiver.
-Going the other way, a permission can be supplied when calling
-{@link android.content.Context#sendBroadcast(Intent, String) Context.sendBroadcast()}
-to restrict which BroadcastReceiver objects are allowed to receive the broadcast (see
-below).</p>
+<p>If a GUID is required, create a large, unique number and store it.  Do not
+use phone identifiers such as the phone number or IMEI which may be associated
+with personal information.  This topic is discussed in more detail in the <a
+href="http://android-developers.blogspot.com/2011/03/identifying-app-installations.html">Android Developer Blog</a>.</p>
 
-<p><strong>{@link android.content.ContentProvider}</strong> permissions
-(applied to the
-{@link android.R.styleable#AndroidManifestProvider &lt;provider&gt;} tag)
-restrict who can access the data in
-a {@link android.content.ContentProvider}.  (Content providers have an important
-additional security facility available to them called
-<a href="#uri">URI permissions</a> which is described later.)
-Unlike the other components,
-there are two separate permission attributes you can set:
-{@link android.R.attr#readPermission android:readPermission} restricts who
-can read from the provider, and
-{@link android.R.attr#writePermission android:writePermission} restricts
-who can write to it.  Note that if a provider is protected with both a read
-and write permission, holding only the write permission does not mean
-you can read from a provider.  The permissions are checked when you first
-retrieve a provider (if you don't have either permission, a SecurityException
-will be thrown), and as you perform operations on the provider.  Using
-{@link android.content.ContentResolver#query ContentResolver.query()} requires
-holding the read permission; using
-{@link android.content.ContentResolver#insert ContentResolver.insert()},
-{@link android.content.ContentResolver#update ContentResolver.update()},
-{@link android.content.ContentResolver#delete ContentResolver.delete()}
-requires the write permission.
-In all of these cases, not holding the required permission results in a
-{@link java.lang.SecurityException} being thrown from the call.</p>
+<p>Application developers should be careful writing to on-device logs.
+In Android, logs are a shared resource, and are available
+to an application with the
+<a href="{@docRoot}reference/android/Manifest.permission.html#READ_LOGS">
+<code>READ_LOGS</code></a> permission. Even though the phone log data
+is temporary and erased on reboot, inappropriate logging of user information
+could inadvertently leak user data to other applications.</p>
 
 
-<a name="broadcasts"></a>
-<h3>Enforcing Permissions when Sending Broadcasts</h3>
+<h3>Handling Credentials</h3>
 
-<p>In addition to the permission enforcing who can send Intents to a
-registered {@link android.content.BroadcastReceiver} (as described above), you
-can also specify a required permission when sending a broadcast. By calling {@link
-android.content.Context#sendBroadcast(android.content.Intent,String)
-Context.sendBroadcast()} with a
-permission string, you require that a receiver's application must hold that
-permission in order to receive your broadcast.</p>
+<p>In general, we recommend minimizing the frequency of asking for user
+credentials -- to make phishing attacks more conspicuous, and less likely to be
+successful.  Instead use an authorization token and refresh it.</p>
 
-<p>Note that both a receiver and a broadcaster can require a permission. When
-this happens, both permission checks must pass for the Intent to be delivered
-to the associated target.</p>
+<p>Where possible, username and password should not be stored on the device.
+Instead, perform initial authentication using the username and password
+supplied by the user, and then use a short-lived, service-specific
+authorization token.</p>
 
+<p>Services that will be accessible to multiple applications should be accessed
+using <code>
+<a href="{@docRoot}reference/android/accounts/AccountManager.html">
+AccountManager</a></code>. If possible, use the <code><a
+href="{@docRoot}reference/android/accounts/AccountManager.html">
+AccountManager</a></code> class to invoke a cloud-based service and do not store
+passwords on the device.</p>
 
-<a name="enforcement"></a>
-<h3>Other Permission Enforcement</h3>
+<p>After using <code><a
+href="{@docRoot}reference/android/accounts/AccountManager.html">
+AccountManager</a></code> to retrieve an Account, check the <code><a
+href="{@docRoot}reference/android/accounts/Account.html#CREATOR">CREATOR</a>
+</code> before passing in any credentials, so that you do not inadvertently pass
+credentials to the wrong application.</p>
 
-<p>Arbitrarily fine-grained permissions can be enforced at any call into a
-service. This is accomplished with the {@link
-android.content.Context#checkCallingPermission Context.checkCallingPermission()}
-method. Call with a desired
-permission string and it will return an integer indicating whether that
-permission has been granted to the current calling process. Note that this can
-only be used when you are executing a call coming in from another process,
-usually through an IDL interface published from a service or in some other way
-given to another process.</p>
+<p>If credentials are to be used only by applications that you create, then you
+can verify the application which accesses the <code><a
+href="{@docRoot}reference/android/accounts/AccountManager.html">
+AccountManager</a></code> using <code><a
+href="{@docRoot}reference/android/content/pm/PackageManager.html#checkSignatures(java.lang.String,%20java.lang.String)">checkSignature()</a></code>.
+Alternatively, if only one application will use the credential, you might use a
+<code><a
+href={@docRoot}reference/java/security/KeyStore.html">KeyStore</a></code> for
+storage.</p>
 
-<p>There are a number of other useful ways to check permissions. If you have
-the pid of another process, you can use the Context method {@link
-android.content.Context#checkPermission(String, int, int) Context.checkPermission(String, int, int)}
-to check a permission against that pid. If you have the package name of another
-application, you can use the direct PackageManager method {@link
-android.content.pm.PackageManager#checkPermission(String, String)
-PackageManager.checkPermission(String, String)}
-to find out whether that particular package has been granted a specific permission.</p>
+<a name="Crypto"></a>
+<h2>Using Cryptography</h2>
 
+<p>In addition to providing data isolation, supporting full-filesystem
+encryption, and providing secure communications channels Android provides a
+wide array of algorithms for protecting data using cryptography.</p>
 
-<a name="uri"></a>
-<h2>URI Permissions</h2>
+<p>In general, try to use the highest level of pre-existing framework
+implementation that can  support your use case.  If you need to securely
+retrieve a file from a known location, a simple HTTPS URI may be adequate and
+require no knowledge of cryptography on your part.  If you need a secure
+tunnel, consider using
+<a href="{@docRoot}reference/javax/net/ssl/HttpsURLConnection.html">
+<code>HttpsURLConnection</code></a> or <code><a
+href="{@docRoot}reference/javax/net/ssl/SSLSocket.html">SSLSocket</a></code>,
+rather than writing your own protocol.</p>
 
-<p>The standard permission system described so far is often not sufficient
-when used with content providers.  A content provider may want to
-protect itself with read and write permissions, while its direct clients
-also need to hand specific URIs to other applications for them to operate on.
-A typical example is attachments in a mail application.  Access to the mail
-should be protected by permissions, since this is sensitive user data.  However,
-if a URI to an image attachment is given to an image viewer, that image viewer
-will not have permission to open the attachment since it has no reason to hold
-a permission to access all e-mail.</p>
+<p>If you do find yourself needing to implement your own protocol, we strongly
+recommend that you not implement your own cryptographic algorithms. Use
+existing cryptographic algorithms such as those in the implementation of AES or
+RSA provided in the <code><a
+href="{@docRoot}reference/javax/crypto/Cipher.html">Cipher</a></code> class.</p>
 
-<p>The solution to this problem is per-URI permissions: when starting an
-activity or returning a result to an activity, the caller can set
-{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION
-Intent.FLAG_GRANT_READ_URI_PERMISSION} and/or
-{@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION
-Intent.FLAG_GRANT_WRITE_URI_PERMISSION}.  This grants the receiving activity
-permission access the specific data URI in the Intent, regardless of whether
-it has any permission to access data in the content provider corresponding
-to the Intent.</p>
+<p>Use a secure random number generator (
+<a href="{@docRoot}reference/java/security/SecureRandom.html">
+<code>SecureRandom</code></a>) to initialize any cryptographic keys (<a
+href="{@docRoot}reference/javax/crypto/KeyGenerator.html">
+<code>KeyGenerator</code></a>). Use of a key that is not generated with a secure random
+number generator significantly weakens the strength of the algorithm, and may
+allow offline attacks.</p>
 
-<p>This mechanism allows a common capability-style model where user interaction
-(opening an attachment, selecting a contact from a list, etc) drives ad-hoc
-granting of fine-grained permission.  This can be a key facility for reducing
-the permissions needed by applications to only those directly related to their
-behavior.</p>
+<p>If you need to store a key for repeated use, use a mechanism like <code><a
+href="{@docRoot}reference/java/security/KeyStore.html">KeyStore</a></code> that
+provides a mechanism for long term storage and retrieval of cryptographic
+keys.</p>
 
-<p>The granting of fine-grained URI permissions does, however, require some
-cooperation with the content provider holding those URIs.  It is strongly
-recommended that content providers implement this facility, and declare that
-they support it through the
-{@link android.R.styleable#AndroidManifestProvider_grantUriPermissions
-android:grantUriPermissions} attribute or
-{@link android.R.styleable#AndroidManifestGrantUriPermission
-&lt;grant-uri-permissions&gt;} tag.</p>
+<h2>Conclusion</h2>
 
-<p>More information can be found in the
-{@link android.content.Context#grantUriPermission Context.grantUriPermission()},
-{@link android.content.Context#revokeUriPermission Context.revokeUriPermission()}, and
-{@link android.content.Context#checkUriPermission Context.checkUriPermission()}
-methods.</p>
+<p>Android provides developers with the ability to design applications with a
+broad range of security requirements.  These best practices will help you make
+sure that your application takes advantage of the security benefits provided by
+the platform.</p>
 
+<p>You can receive more information on these topics and discuss security best
+practices with other developers in the <a
+href="http://groups.google.com/group/android-security-discuss">Android Security
+Discuss</a> Google Group</p>
diff --git a/docs/html/guide/topics/sensors/index.jd b/docs/html/guide/topics/sensors/index.jd
index 43903dc..a045899 100644
--- a/docs/html/guide/topics/sensors/index.jd
+++ b/docs/html/guide/topics/sensors/index.jd
@@ -1,88 +1,40 @@
-page.title=Sensors
+page.title=Location and Sensors
+page.landing=true
+page.landing.intro=Use sensors on the device to add rich location and motion capabilities to your app, from GPS or network location to accelerometer, gyroscope, temperature, barometer, and more. 
+page.landing.image=
+
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
-  <h2>Topics</h2>
-    <ol>
-      <li><a href="{@docRoot}guide/topics/sensors/sensors_overview.html">Sensors Overview</a></li>
-      <li><a href="{@docRoot}guide/topics/sensors/sensors_motion.html">Motion Sensors</a></li>
-      <li><a href="{@docRoot}guide/topics/sensors/sensors_position.html">Position
-          Sensors</a></li>
-      <li><a href="{@docRoot}guide/topics/sensors/sensors_environment.html">Environment
-          Sensors</a></li>
-    </ol>
-  <h2>Key classes and interfaces</h2>
-    <ol>
-      <li>{@link android.hardware.Sensor}</li>
-      <li>{@link android.hardware.SensorEvent}</li>
-      <li>{@link android.hardware.SensorManager}</li>
-      <li>{@link android.hardware.SensorEventListener}</li>
-    </ol>
-  <h2>Related samples</h2>
-    <ol>
-      <li><a href="{@docRoot}resources/samples/AccelerometerPlay/index.html">Accelerometer
-          Play</a></li>
-      <li><a
-href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/os/RotationVectorDemo.html">
-API Demos (OS - RotationVectorDemo)</a></li>
-      <li><a
-href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/os/Sensors.html">API Demos
-(OS - Sensors)</a></li>
-    </ol>
+<div class="landing-docs">
+
+  <div class="col-6">
+    <h3>Blog Articles</h3>
+    
+    <a href="http://android-developers.blogspot.com/2010/09/one-screen-turn-deserves-another.html">
+      <h4>One Screen Turn Deserves Another</h4>
+      <p>However, there’s a new wrinkle: recently, a few devices have shipped (see here and here)
+that run Android on screens that are naturally landscape in their orientation. That is, when held in
+the default position, the screens are wider than they are tall. This introduces a few fairly subtle
+issues that we’ve noticed causing problems in some apps.</p>
+    </a>
+    
+    <a href="android-developers.blogspot.com/2011/06/deep-dive-into-location.html">
+      <h4>A Deep Dive Into Location</h4>
+      <p>I’ve written an open-source reference app that incorporates all of the tips, tricks, and
+cheats I know to reduce the time between opening an app and seeing an up-to-date list of nearby
+venues - as well as providing a reasonable level of offline support</p>
+    </a>
   </div>
-</div>
 
-<p>Most Android-powered devices have built-in sensors that measure motion, orientation,
-and various environmental conditions. These sensors are capable of providing raw data with high
-precision and accuracy, and are useful if you want to monitor three-dimensional device movement or
-positioning, or you want to monitor changes in the ambient environment near a device. For example, a
-game might track readings from a device's gravity sensor to infer complex user gestures
-and motions, such as tilt, shake, rotation, or swing. Likewise, a weather application might use a
-device's temperature sensor and humidity sensor to calculate and report the dewpoint, or a travel
-application might use the geomagnetic field sensor and accelerometer to report a compass
-bearing.</p>
+  <div class="col-6">
+    <h3>Training</h3>
+    
+    <a href="http://developer.android.com/training/basics/location/index.html">
+      <h4>Making Your App Location Aware</h4>
+      <p>This class teaches you how to incorporate location based services in your Android
+application. You'll learn a number of methods to receive location updates and related best
+practices.</p>
+    </a>
+  </div>
 
-<p>The Android platform supports three broad categories of sensors:</p>
-
-<ul>
-  <li>Motion sensors
-    <p>These sensors measure acceleration forces and rotational forces along three axes. This
-      category includes accelerometers, gravity sensors, gyroscopes, and rotational vector
-      sensors.</p>
-  </li>
-  <li>Environmental sensors
-    <p>These sensors measure various environmental parameters, such as ambient air temperature
-      and pressure, illumination, and humidity. This category includes barometers, photometers, and
-      thermometers.</p>
-  </li>
-  <li>Position sensors
-    <p>These sensors measure the physical position of a device. This category includes
-      orientation sensors and magnetometers.</p>
-  </li>
-</ul>
-
-<p>To access these sensors, you can use the Android sensor framework. The sensor framework provides
-several classes and interfaces that help you perform a wide variety of sensor-related tasks. To
-learn more about the framework and the sensors that are supported on the Android system, read the
-following documents:</p>
-
-<dl>
-  <dt><strong><a href="{@docRoot}guide/topics/sensors/sensors_overview.html">Sensors
-        Overview</a></strong></dt>
-    <dd>Learn how to list the sensors that are on a device, set up sensor event listeners, and
-      acquire sensor data. Also learn best practices for accessing and using sensors.</dd>
-  <dt><strong><a href="{@docRoot}guide/topics/sensors/sensors_motion.html">Motion
-        Sensors</a></strong></dt>
-    <dd>Learn how to use the sensors that provide acceleration data, such as the accelerometer,
-      gravity sensor, and linear acceleration sensor. Also learn how to use the sensors that
-      provide rotational data, such as gyroscopes and rotational vector sensors.</dd>
-  <dt><strong><a href="{@docRoot}guide/topics/sensors/sensors_position.html">Position
-      Sensors</a></strong></dt>
-    <dd>Learn how to use the sensors that provide orientation and compass data, such as the
-      orientation sensor and the geomagnetic field sensor.</dd>
-  <dt><strong><a href="{@docRoot}guide/topics/sensors/sensors_environment.html">Environment
-        Sensors</a></strong></dt>
-    <dd>Learn how to use the sensors that provide environmental data, such as the light,
-      humidity, pressure, temperature, and proximity sensors.</dd>
-</dl>
+</div>
\ No newline at end of file
diff --git a/docs/html/guide/topics/sensors/sensors_overview.jd b/docs/html/guide/topics/sensors/sensors_overview.jd
index 543872c..e38a843 100644
--- a/docs/html/guide/topics/sensors/sensors_overview.jd
+++ b/docs/html/guide/topics/sensors/sensors_overview.jd
@@ -50,13 +50,39 @@
   </div>
 </div>
 
-<p>Most Android-powered devices have sensors that let you monitor changes in device
-position and motion. Many devices also have sensors that let you determine ambient environmental
-conditions, such as temperature, pressure, humidity, and lighting. You can access these
-sensors and acquire raw sensor data by using the Android sensor framework.</p>
+<p>Most Android-powered devices have built-in sensors that measure motion, orientation,
+and various environmental conditions. These sensors are capable of providing raw data with high
+precision and accuracy, and are useful if you want to monitor three-dimensional device movement or
+positioning, or you want to monitor changes in the ambient environment near a device. For example, a
+game might track readings from a device's gravity sensor to infer complex user gestures
+and motions, such as tilt, shake, rotation, or swing. Likewise, a weather application might use a
+device's temperature sensor and humidity sensor to calculate and report the dewpoint, or a travel
+application might use the geomagnetic field sensor and accelerometer to report a compass
+bearing.</p>
 
-<p>The sensor framework provides several classes and interfaces that help you perform a wide variety
-of sensor-related tasks. For example, you can use the sensor framework to do the following:</p>
+<p>The Android platform supports three broad categories of sensors:</p>
+
+<ul>
+  <li>Motion sensors
+    <p>These sensors measure acceleration forces and rotational forces along three axes. This
+      category includes accelerometers, gravity sensors, gyroscopes, and rotational vector
+      sensors.</p>
+  </li>
+  <li>Environmental sensors
+    <p>These sensors measure various environmental parameters, such as ambient air temperature
+      and pressure, illumination, and humidity. This category includes barometers, photometers, and
+      thermometers.</p>
+  </li>
+  <li>Position sensors
+    <p>These sensors measure the physical position of a device. This category includes
+      orientation sensors and magnetometers.</p>
+  </li>
+</ul>
+
+
+<p>You can access sensors available on the device and acquire raw sensor data by using the Android
+sensor framework. The sensor framework provides several classes and interfaces that help you perform a wide
+variety of sensor-related tasks. For example, you can use the sensor framework to do the following:</p>
 
 <ul>
    <li>Determine which sensors are available on a device.</li>
diff --git a/docs/html/guide/topics/testing/activity_testing.jd b/docs/html/guide/topics/testing/activity_testing.jd
deleted file mode 100644
index 51121f4..0000000
--- a/docs/html/guide/topics/testing/activity_testing.jd
+++ /dev/null
@@ -1,394 +0,0 @@
-page.title=Activity Testing
-parent.title=Testing
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li>
-      <a href="#ActivityTestAPI">The Activity Testing API</a>
-      <ol>
-        <li>
-            <a href="#ActivityInstrumentationTestCase2">ActivityInstrumentationTestCase2</a>
-        </li>
-        <li>
-            <a href="#ActivityUnitTestCase">ActivityUnitTestCase</a>
-        </li>
-        <li>
-            <a href="#SingleLaunchActivityTestCase">SingleLaunchActivityTestCase</a>
-        </li>
-        <li>
-            <a href="#MockObjectNotes">Mock objects and activity testing</a>
-        </li>
-        <li>
-            <a href="#AssertionNotes">Assertions for activity testing</a>
-        </li>
-      </ol>
-    </li>
-    <li>
-        <a href="#WhatToTest">What to Test</a>
-    </li>
-    <li>
-        <a href="#NextSteps">Next Steps</a>
-    </li>
-    <li>
-      <a href="#UITesting">Appendix: UI Testing Notes</a>
-      <ol>
-        <li>
-          <a href="#RunOnUIThread">Testing on the UI thread</a>
-        </li>
-        <li>
-          <a href="#NotouchMode">Turning off touch mode</a>
-        </li>
-        <li>
-          <a href="#UnlockDevice">Unlocking the Emulator or Device</a>
-        </li>
-        <li>
-          <a href="#UITestTroubleshooting">Troubleshooting UI tests</a>
-        </li>
-      </ol>
-    </li>
-    </ol>
-<h2>Key Classes</h2>
-    <ol>
-      <li>{@link android.test.InstrumentationTestRunner}</li>
-      <li>{@link android.test.ActivityInstrumentationTestCase2}</li>
-      <li>{@link android.test.ActivityUnitTestCase}</li>
-    </ol>
-<h2>Related Tutorials</h2>
-    <ol>
-      <li>
-        <a href="{@docRoot}resources/tutorials/testing/helloandroid_test.html">
-        Hello, Testing</a>
-      </li>
-      <li>
-         <a href="{@docRoot}resources/tutorials/testing/activity_test.html">Activity Testing</a>
-      </li>
-    </ol>
-<h2>See Also</h2>
-      <ol>
-        <li>
-          <a href="{@docRoot}guide/developing/testing/testing_eclipse.html">
-          Testing in Eclipse, with ADT</a>
-        </li>
-        <li>
-          <a href="{@docRoot}guide/developing/testing/testing_otheride.html">
-          Testing in Other IDEs</a>
-        </li>
-      </ol>
-  </div>
-</div>
-<p>
-    Activity testing is particularly dependent on the the Android instrumentation framework.
-    Unlike other components, activities have a complex lifecycle based on callback methods; these
-    can't be invoked directly except by instrumentation. Also, the only way to send events to the
-    user interface from a program is through instrumentation.
-</p>
-<p>
-    This document describes how to test activities using instrumentation and other test
-    facilities. The document assumes you have already read
-    <a href="{@docRoot}guide/topics/testing/testing_android.html">Testing Fundamentals</a>,
-    the introduction to the Android testing and instrumentation framework.
-</p>
-<h2 id="ActivityTestAPI">The Activity Testing API</h2>
-<p>
-    The activity testing API base class is {@link android.test.InstrumentationTestCase},
-    which provides instrumentation to the test case subclasses you use for Activities.
-</p>
-<p>
-    For activity testing, this base class provides these functions:
-</p>
-<ul>
-    <li>
-        Lifecycle control: With instrumentation, you can start the activity under test, pause it,
-        and destroy it, using methods provided by the test case classes.
-    </li>
-    <li>
-        Dependency injection: Instrumentation allows you to create mock system objects such as
-        Contexts or Applications and use them to run the activity under test. This
-        helps you control the test environment and isolate it from production systems. You can
-        also set up customized Intents and start an activity with them.
-    </li>
-    <li>
-        User interface interaction: You use instrumentation to send keystrokes or touch events
-        directly to the UI of the activity under test.
-    </li>
-</ul>
-<p>
-    The activity testing classes also provide the JUnit framework by extending
-    {@link junit.framework.TestCase} and {@link junit.framework.Assert}.
-</p>
-<p>
-    The two main testing subclasses are {@link android.test.ActivityInstrumentationTestCase2} and
-    {@link android.test.ActivityUnitTestCase}. To test an Activity that is launched in a mode
-    other than <code>standard</code>, you use {@link android.test.SingleLaunchActivityTestCase}.
-</p>
-<h3 id="ActivityInstrumentationTestCase2">ActivityInstrumentationTestCase2</h3>
-<p>
-    The {@link android.test.ActivityInstrumentationTestCase2} test case class is designed to do
-    functional testing of one or more Activities in an application, using a normal system
-    infrastructure. It runs the Activities in a normal instance of the application under test,
-    using a standard system Context. It allows you to send mock Intents to the activity under
-    test, so you can use it to test an activity that responds to multiple types of intents, or
-    an activity that expects a certain type of data in the intent, or both. Notice, though, that it
-    does not allow mock Contexts or Applications, so you can not isolate the test from the rest of
-    a production system.
-</p>
-<h3 id="ActivityUnitTestCase">ActivityUnitTestCase</h3>
-<p>
-    The {@link android.test.ActivityUnitTestCase} test case class tests a single activity in
-    isolation. Before you start the activity, you can inject a mock Context or Application, or both.
-    You use it to run activity tests in isolation, and to do unit testing of methods
-    that do not interact with Android. You can not send mock Intents to the activity under test,
-    although you can call
-    {@link android.app.Activity#startActivity(Intent) Activity.startActivity(Intent)} and then
-    look at arguments that were received.
-</p>
-<h3 id="SingleLaunchActivityTestCase">SingleLaunchActivityTestCase</h3>
-<p>
-    The {@link android.test.SingleLaunchActivityTestCase} class is a convenience class for
-    testing a single activity in an environment that doesn't change from test to test.
-    It invokes {@link junit.framework.TestCase#setUp() setUp()} and
-    {@link junit.framework.TestCase#tearDown() tearDown()} only once, instead of once per
-    method call. It does not allow you to inject any mock objects.
-</p>
-<p>
-    This test case is useful for testing an activity that runs in a mode other than
-    <code>standard</code>. It ensures that the test fixture is not reset between tests. You
-    can then test that the activity handles multiple calls correctly.
-</p>
-<h3 id="MockObjectNotes">Mock objects and activity testing</h3>
-<p>
-    This section contains notes about the use of the mock objects defined in
-    {@link android.test.mock} with activity tests.
-</p>
-<p>
-    The mock object {@link android.test.mock.MockApplication} is only available for activity
-    testing if you use the {@link android.test.ActivityUnitTestCase} test case class.
-    By default, <code>ActivityUnitTestCase</code>, creates a hidden <code>MockApplication</code>
-    object that is used as the application under test. You can inject your own object using
-    {@link android.test.ActivityUnitTestCase#setApplication(Application) setApplication()}.
-</p>
-<h3 id="AssertionNotes">Assertions for activity testing</h3>
-<p>
-    {@link android.test.ViewAsserts} defines assertions for Views. You use it to verify the
-    alignment and position of View objects, and to look at the state of ViewGroup objects.
-</p>
-<h2 id="WhatToTest">What To Test</h2>
-<ul>
-    <li>
-        Input validation: Test that an activity responds correctly to input values in an
-        EditText View. Set up a keystroke sequence, send it to the activity, and then
-        use {@link android.view.View#findViewById(int)} to examine the state of the View. You can
-        verify that a valid keystroke sequence enables an OK button, while an invalid one leaves the
-        button disabled. You can also verify that the Activity responds to invalid input by
-        setting error messages in the View.
-    </li>
-    <li>
-        Lifecycle events: Test that each of your application's activities handles lifecycle events
-        correctly. In general, lifecycle events are actions, either from the system or from the
-        user, that trigger a callback method such as <code>onCreate()</code> or
-        <code>onClick()</code>. For example, an activity should respond to pause or destroy events
-        by saving its state. Remember that even a change in screen orientation causes the current
-        activity to be destroyed, so you should test that accidental device movements don't
-        accidentally lose the application state.
-    </li>
-    <li>
-        Intents: Test that each activity correctly handles the intents listed in the intent
-        filter specified in its manifest. You can use
-        {@link android.test.ActivityInstrumentationTestCase2} to send mock Intents to the
-        activity under test.
-    </li>
-    <li>
-        Runtime configuration changes: Test that each activity responds correctly to the
-        possible changes in the device's configuration while your application is running. These
-        include a change to the device's orientation, a change to the current language, and so
-        forth. Handling these changes is described in detail in the topic
-        <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Handling Runtime
-        Changes</a>.
-    </li>
-    <li>
-        Screen sizes and resolutions: Before you publish your application, make sure to test it on
-        all of the screen sizes and densities on which you want it to run. You can test the
-        application on multiple sizes and densities using AVDs, or you can test your application
-        directly on the devices that you are targeting. For more information, see the topic
-        <a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>.
-    </li>
-</ul>
-<h2 id="NextSteps">Next Steps</h2>
-<p>
-    To learn how to set up and run tests in Eclipse, please refer to <a
-    href="{@docRoot}guide/developing/testing/testing_eclipse.html">Testing in
-    Eclipse, with ADT</a>. If you're not working in Eclipse, refer to <a
-    href="{@docRoot}guide/developing/testing/testing_otheride.html">Testing in Other
-    IDEs</a>.
-</p>
-<p>
-    If you want a step-by-step introduction to testing activities, try one of the
-    testing tutorials:
-</p>
-<ul>
-    <li>
-        The <a
-        href="{@docRoot}resources/tutorials/testing/helloandroid_test.html">Hello,
-        Testing</a> tutorial introduces basic testing concepts and procedures in the
-        context of the Hello, World application.
-    </li>
-    <li>
-        The <a
-        href="{@docRoot}resources/tutorials/testing/activity_test.html">Activity
-        Testing</a> tutorial is an excellent follow-up to the Hello, Testing tutorial.
-        It guides you through a more complex testing scenario that you develop against a
-        more realistic activity-oriented application.
-    </li>
-</ul>
-<h2 id="UITesting">Appendix: UI Testing Notes</h2>
-<p>
-    The following sections have tips for testing the UI of your Android application, specifically
-    to help you handle actions that run in the UI thread, touch screen and keyboard events, and home
-    screen unlock during testing.
-</p>
-<h3 id="RunOnUIThread">Testing on the UI thread</h3>
-<p>
-    An application's activities run on the application's <strong>UI thread</strong>. Once the
-    UI is instantiated, for example in the activity's <code>onCreate()</code> method, then all
-    interactions with the UI must run in the UI thread. When you run the application normally, it
-    has access to the thread and does not have to do anything special.
-</p>
-<p>
-    This changes when you run tests against the application. With instrumentation-based classes,
-    you can invoke methods against the UI of the application under test. The other test classes
-    don't allow this. To run an entire test method on the UI thread, you can annotate the thread
-    with <code>@UIThreadTest</code>. Notice that this will run <em>all</em> of the method statements
-    on the UI thread.  Methods that do not interact with the UI are not allowed; for example, you
-    can't invoke <code>Instrumentation.waitForIdleSync()</code>.
-</p>
-<p>
-    To run a subset of a test method on the UI thread, create an anonymous class of type
-    <code>Runnable</code>, put the statements you want in the <code>run()</code> method, and
-    instantiate a new instance of the class as a parameter to the method
-    <code><em>appActivity</em>.runOnUiThread()</code>, where <code><em>appActivity</em></code> is
-    the instance of the application you are testing.
-</p>
-<p>
-    For example, this code instantiates an activity to test, requests focus (a UI action) for the
-    Spinner displayed by the activity, and then sends a key to it. Notice that the calls to
-    <code>waitForIdleSync</code> and <code>sendKeys</code> aren't allowed to run on the UI thread:
-</p>
-<pre>
-  private MyActivity mActivity; // MyActivity is the class name of the app under test
-  private Spinner mSpinner;
-
-  ...
-
-  protected void setUp() throws Exception {
-      super.setUp();
-      mInstrumentation = getInstrumentation();
-
-      mActivity = getActivity(); // get a references to the app under test
-
-      /*
-       * Get a reference to the main widget of the app under test, a Spinner
-       */
-      mSpinner = (Spinner) mActivity.findViewById(com.android.demo.myactivity.R.id.Spinner01);
-
-  ...
-
-  public void aTest() {
-      /*
-       * request focus for the Spinner, so that the test can send key events to it
-       * This request must be run on the UI thread. To do this, use the runOnUiThread method
-       * and pass it a Runnable that contains a call to requestFocus on the Spinner.
-       */
-      mActivity.runOnUiThread(new Runnable() {
-          public void run() {
-              mSpinner.requestFocus();
-          }
-      });
-
-      mInstrumentation.waitForIdleSync();
-
-      this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
-</pre>
-
-<h3 id="NotouchMode">Turning off touch mode</h3>
-<p>
-    To control the emulator or a device with key events you send from your tests, you must turn off
-    touch mode. If you do not do this, the key events are ignored.
-</p>
-<p>
-    To turn off touch mode, you invoke
-    <code>ActivityInstrumentationTestCase2.setActivityTouchMode(false)</code>
-    <em>before</em> you call <code>getActivity()</code> to start the activity. You must invoke the
-    method in a test method that is <em>not</em> running on the UI thread. For this reason, you
-    can't invoke the touch mode method from a test method that is annotated with
-    <code>@UIThread</code>. Instead, invoke the touch mode method from <code>setUp()</code>.
-</p>
-<h3 id="UnlockDevice">Unlocking the emulator or device</h3>
-<p>
-    You may find that UI tests don't work if the emulator's or device's home screen is disabled with
-    the keyguard pattern. This is because the application under test can't receive key events sent
-    by <code>sendKeys()</code>. The best way to avoid this is to start your emulator or device
-    first and then disable the keyguard for the home screen.
-</p>
-<p>
-    You can also explicitly disable the keyguard. To do this,
-    you need to add a permission in the manifest file (<code>AndroidManifest.xml</code>) and
-    then disable the keyguard in your application under test. Note, though, that you either have to
-    remove this before you publish your application, or you have to disable it with code in
-    the published application.
-</p>
-<p>
-    To add the the permission, add the element
-    <code>&lt;uses-permission android:name="android.permission.DISABLE_KEYGUARD"/&gt;</code>
-    as a child of the <code>&lt;manifest&gt;</code> element. To disable the KeyGuard, add the
-    following code to the <code>onCreate()</code> method of activities you intend to test:
-</p>
-<pre>
-  mKeyGuardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
-  mLock = mKeyGuardManager.newKeyguardLock("<em>activity_classname</em>");
-  mLock.disableKeyguard();
-</pre>
-<p>where <code><em>activity_classname</em></code> is the class name of the activity.</p>
-<h3 id="UITestTroubleshooting">Troubleshooting UI tests</h3>
-<p>
-    This section lists some of the common test failures you may encounter in UI testing, and their
-    causes:
-</p>
-<dl>
-    <dt><code>WrongThreadException</code></dt>
-    <dd>
-      <p><strong>Problem:</strong></p>
-      For a failed test, the Failure Trace contains the following error message:
-      <code>
-        android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created
-        a view hierarchy can touch its views.
-      </code>
-      <p><strong>Probable Cause:</strong></p>
-        This error is common if you tried to send UI events to the UI thread from outside the UI
-        thread. This commonly happens if you send UI events from the test application, but you don't
-        use the <code>@UIThread</code> annotation or the <code>runOnUiThread()</code> method. The
-        test method tried to interact with the UI outside the UI thread.
-      <p><strong>Suggested Resolution:</strong></p>
-        Run the interaction on the UI thread. Use a test class that provides instrumentation. See
-        the previous section <a href="#RunOnUIThread">Testing on the UI Thread</a>
-        for more details.
-    </dd>
-    <dt><code>java.lang.RuntimeException</code></dt>
-    <dd>
-      <p><strong>Problem:</strong></p>
-        For a failed test, the Failure Trace contains the following error message:
-      <code>
-        java.lang.RuntimeException: This method can not be called from the main application thread
-      </code>
-      <p><strong>Probable Cause:</strong></p>
-        This error is common if your test method is annotated with <code>@UiThreadTest</code> but
-        then tries to do something outside the UI thread or tries to invoke
-        <code>runOnUiThread()</code>.
-      <p><strong>Suggested Resolution:</strong></p>
-        Remove the <code>@UiThreadTest</code> annotation, remove the <code>runOnUiThread()</code>
-        call, or re-factor your tests.
-    </dd>
-</dl>
diff --git a/docs/html/guide/topics/testing/contentprovider_testing.jd b/docs/html/guide/topics/testing/contentprovider_testing.jd
deleted file mode 100644
index edaae8c..0000000
--- a/docs/html/guide/topics/testing/contentprovider_testing.jd
+++ /dev/null
@@ -1,225 +0,0 @@
-page.title=Content Provider Testing
-parent.title=Testing
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li>
-        <a href="#DesignAndTest">Content Provider Design and Testing</a>
-    </li>
-    <li>
-      <a href="#ContentProviderTestAPI">The Content Provider Testing API</a>
-      <ol>
-        <li>
-          <a href="#ProviderTestCase2">ProviderTestCase2 </a>
-        </li>
-        <li>
-          <a href="#MockObjects">Mock object classes</a>
-        </li>
-      </ol>
-    </li>
-    <li>
-        <a href="#WhatToTest">What To Test</a>
-    </li>
-    <li>
-        <a href="#NextSteps">Next Steps</a>
-    </li>
-  </ol>
-  <h2>Key Classes</h2>
-    <ol>
-      <li>{@link android.test.InstrumentationTestRunner}</li>
-      <li>{@link android.test.ProviderTestCase2}</li>
-      <li>{@link android.test.IsolatedContext}</li>
-      <li>{@link android.test.mock.MockContentResolver}</li>
-    </ol>
-  <h2>See Also</h2>
-      <ol>
-        <li>
-          <a
-          href="{@docRoot}guide/topics/testing/testing_android.html">
-          Testing Fundamentals</a>
-        </li>
-        <li>
-          <a href="{@docRoot}guide/developing/testing/testing_eclipse.html">
-          Testing in Eclipse, with ADT</a>
-        </li>
-        <li>
-          <a href="{@docRoot}guide/developing/testing/testing_otheride.html">
-          Testing in Other IDEs</a>
-        </li>
-      </ol>
-  </div>
-</div>
-<p>
-    Content providers, which store and retrieve data and make it accessible across applications,
-    are a key part of the Android API. As an application developer you're allowed to provide your
-    own public providers for use by other applications. If you do, then you should test them
-    using the API you publish.
-</p>
-<p>
-    This document describes how to test public content providers, although the information is
-    also applicable to providers that you keep private to your own application. If you aren't
-    familiar with content  providers or the Android testing framework, please read
-    <a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>,
-    the guide to developing content providers, and
-    <a href="{@docRoot}guide/topics/testing/testing_android.html">Testing Fundamentals</a>,
-    the introduction to the Android testing and instrumentation framework.
-</p>
-<h2 id="DesignAndTest">Content Provider Design and Testing</h2>
-<p>
-    In Android, content providers are viewed externally as data APIs that provide
-    tables of data, with their internals hidden from view. A content provider may have many
-    public constants, but it usually has few if any public methods and no public variables.
-    This suggests that you should write your tests based only on the provider's public members.
-    A content provider that is designed like this is offering a contract between itself and its
-    users.
-</p>
-<p>
-    The base test case class for content providers,
-    {@link android.test.ProviderTestCase2}, allows you to test your content provider in an
-    isolated environment. Android mock objects such as {@link android.test.IsolatedContext} and
-    {@link android.test.mock.MockContentResolver} also help provide an isolated test environment.
-</p>
-<p>
-    As with other Android tests, provider test packages are run under the control of the test
-    runner {@link android.test.InstrumentationTestRunner}. The section
-    <a href="{@docRoot}guide/topics/testing/testing_android.html#InstrumentationTestRunner">
-    Running Tests With InstrumentationTestRunner</a> describes the test runner in
-    more detail. The topic <a href="{@docRoot}guide/developing/testing/testing_eclipse.html">
-    Testing in Eclipse, with ADT</a> shows you how to run a test package in Eclipse, and the
-    topic <a href="{@docRoot}guide/developing/testing/testing_otheride.html">
-    Testing in Other IDEs</a>
-    shows you how to run a test package from the command line.
-</p>
-<h2 id="ContentProviderTestAPI">Content Provider Testing API</h2>
-<p>
-    The main focus of the provider testing API is to provide an isolated testing environment. This
-    ensures that tests always run against data dependencies set explicitly in the test case. It
-    also prevents tests from modifying actual user data. For example, you want to avoid writing
-    a test that fails because there was data left over from a previous test, and you want to
-    avoid adding or deleting contact information in a actual provider.
-</p>
-<p>
-    The test case class and mock object classes for provider testing set up this isolated testing
-    environment for you.
-</p>
-<h3 id="ProviderTestCase2">ProviderTestCase2</h3>
-<p>
-    You test a provider with a subclass of {@link android.test.ProviderTestCase2}. This base class
-    extends {@link android.test.AndroidTestCase}, so it provides the JUnit testing framework as well
-    as Android-specific methods for testing application permissions. The most important
-    feature of this class is its initialization, which creates the isolated test environment.
-</p>
-<p>
-    The initialization is done in the constructor for {@link android.test.ProviderTestCase2}, which
-    subclasses call in their own constructors. The {@link android.test.ProviderTestCase2}
-    constructor creates an {@link android.test.IsolatedContext} object that allows file and
-    database operations but stubs out other interactions with the Android system.
-    The file and database operations themselves take place in a directory that is local to the
-    device or emulator and has a special prefix.
-</p>
-<p>
-    The constructor then creates a {@link android.test.mock.MockContentResolver} to use as the
-    resolver for the test. The {@link android.test.mock.MockContentResolver} class is described in
-    detail in the section
-    <a href="{@docRoot}guide/topics/testing/testing_android.html#MockObjectClasses">Mock object
-classes</a>.
-</p>
-<p>
-    Lastly, the constructor creates an instance of the provider under test. This is a normal
-    {@link android.content.ContentProvider} object, but it takes all of its environment information
-    from the {@link android.test.IsolatedContext}, so it is restricted to
-    working in the isolated test environment. All of the tests done in the test case class run
-    against this isolated object.
-</p>
-<h3 id="MockObjects">Mock object classes</h3>
-<p>
-    {@link android.test.ProviderTestCase2} uses {@link android.test.IsolatedContext} and
-    {@link android.test.mock.MockContentResolver}, which are standard mock object classes. To
-    learn more about them, please read
-    <a href="{@docRoot}guide/topics/testing/testing_android.html#MockObjectClasses">
-    Testing Fundamentals</a>.
-</p>
-<h2 id="WhatToTest">What To Test</h2>
-<p>
-    The topic <a href="{@docRoot}guide/topics/testing/what_to_test.html">What To Test</a>
-    lists general considerations for testing Android components.
-    Here are some specific guidelines for testing content providers.
-</p>
-<ul>
-    <li>
-        Test with resolver methods: Even though you can instantiate a provider object in
-        {@link android.test.ProviderTestCase2}, you should always test with a resolver object
-        using the appropriate URI. This ensures that you are testing the provider using the same
-        interaction that a regular application would use.
-    </li>
-    <li>
-        Test a public provider as a contract: If you intent your provider to be public and
-        available to other applications, you should test it as a contract. This includes
-        the following ideas:
-        <ul>
-            <li>
-                Test with constants that your provider publicly exposes. For
-                example, look for constants that refer to column names in one of the provider's
-                data tables. These should always be constants publicly defined by the provider.
-            </li>
-            <li>
-                Test all the URIs offered by your provider. Your provider may offer several URIs,
-                each one referring to a different aspect of the data. The
-                <a href="{@docRoot}resources/samples/NotePad/index.html">Note Pad</a> sample,
-                for example, features a provider that offers one URI for retrieving a list of notes,
-                another for retrieving an individual note by it's database ID, and a third for
-                displaying notes in a live folder.
-            </li>
-            <li>
-                Test invalid URIs: Your unit tests should deliberately call the provider with an
-                invalid URI, and look for errors. Good provider design is to throw an
-                IllegalArgumentException for invalid URIs.
-
-            </li>
-        </ul>
-    </li>
-    <li>
-        Test the standard provider interactions: Most providers offer six access methods:
-        query, insert, delete, update, getType, and onCreate(). Your tests should verify that all
-        of these methods work. These are described in more detail in the topic
-        <a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>.
-    </li>
-    <li>
-        Test business logic: Don't forget to test the business logic that your provider should
-        enforce. Business logic includes handling of invalid values, financial or arithmetic
-        calculations, elimination or combining of duplicates, and so forth. A content provider
-        does not have to have business logic, because it may be implemented by activities that
-        modify the data. If the provider does implement business logic, you should test it.
-    </li>
-</ul>
-<h2 id="NextSteps">Next Steps</h2>
-<p>
-    To learn how to set up and run tests in Eclipse, please refer to <a
-    href="{@docRoot}guide/developing/testing/testing_eclipse.html">Testing in
-    Eclipse, with ADT</a>. If you're not working in Eclipse, refer to <a
-    href="{@docRoot}guide/developing/testing/testing_otheride.html">Testing in Other
-    IDEs</a>.
-</p>
-<p>
-    If you want a step-by-step introduction to testing activities, try one of the
-    testing tutorials:
-</p>
-<ul>
-    <li>
-        The <a
-        href="{@docRoot}resources/tutorials/testing/helloandroid_test.html">Hello,
-        Testing</a> tutorial introduces basic testing concepts and procedures in the
-        context of the Hello, World application.
-    </li>
-    <li>
-        The <a
-        href="{@docRoot}resources/tutorials/testing/activity_test.html">Activity
-        Testing</a> tutorial is an excellent follow-up to the Hello, Testing tutorial.
-        It guides you through a more complex testing scenario that you develop against a
-        more realistic activity-oriented application.
-    </li>
-</ul>
diff --git a/docs/html/guide/topics/testing/index.jd b/docs/html/guide/topics/testing/index.jd
deleted file mode 100644
index cf87187..0000000
--- a/docs/html/guide/topics/testing/index.jd
+++ /dev/null
@@ -1,86 +0,0 @@
-page.title=Testing
-@jd:body
-<p>
-    The Android development environment includes an integrated testing framework that helps you
-    test all aspects of your application.
-</p>
-<h4>Fundamentals</h4>
-<p>
-    To start learning how to use the framework to create tests for your applications, please
-    read the topic <a href="{@docRoot}guide/topics/testing/testing_android.html">
-    Testing Fundamentals</a>.
-</p>
-<h4>Concepts</h4>
-<ul>
-    <li>
-        <a href="{@docRoot}guide/topics/testing/activity_testing.html">
-        Activity Testing</a> focuses on testing activities. It describes how instrumentation allows
-        you to control activities outside the normal application lifecycle. It also lists
-        activity-specific features you should test, and it provides tips for testing Android
-        user interfaces.
-    </li>
-    <li>
-        <a href="{@docRoot}guide/topics/testing/contentprovider_testing.html">
-        Content Provider Testing</a> focuses on testing content providers. It describes the
-        mock system objects you can use, provides tips for designing providers so that they
-        can be tested, and lists provider-specific features you should test.
-    </li>
-    <li>
-        <a href="{@docRoot}guide/topics/testing/service_testing.html">
-        Service Testing</a> focuses on testing services. It also lists service-specific features
-        you should test.
-    </li>
-    <li>
-        <a href="{@docRoot}guide/topics/testing/what_to_test.html">What to Test</a>
-        is an overview of the types of testing you should do. It focuses on testing
-        system-wide aspects of Android that can affect every component in your application.
-    </li>
-</ul>
-<h4>Procedures</h4>
-<ul>
-    <li>
-        The topic <a href="{@docRoot}guide/developing/testing/testing_eclipse.html">
-        Testing in Eclipse, with ADT</a> describes how to create and run tests in Eclipse with ADT.
-    </li>
-    <li>
-        The topic <a href="{@docRoot}guide/developing/testing/testing_otheride.html">
-        Testing in other IDEs</a> describes how to create and run tests with command-line tools.
-    </li>
-</ul>
-<h4>Tutorials</h4>
-<ul>
-    <li>
-        The <a href="{@docRoot}resources/tutorials/testing/helloandroid_test.html">
-        Hello, Testing</a> tutorial introduces basic testing concepts and procedures.
-    </li>
-    <li>
-        For a more advanced tutorial, try
-        <a href="{@docRoot}resources/tutorials/testing/activity_test.html">Activity Testing</a>,
-        which guides you through a more complex testing scenario.
-    </li>
-</ul>
-<h4>Tools</h4>
-<ul>
-    <li>
-        The
-        <a href="{@docRoot}guide/developing/tools/monkey.html">UI/Application Exerciser Monkey</a>,
-        usually called Monkey, is a command-line tool that sends pseudo-random
-        streams of keystrokes, touches, and gestures to a device.
-    </li>
-    <li>
-     The <a href="{@docRoot}guide/developing/tools/monkeyrunner_concepts.html">monkeyrunner</a> tool
-        is an API and execution environment. You use monkeyrunner with Python programs
-        to test applications and devices.
-    </li>
-</ul>
-<!--
-<h4>Samples</h4>
-<ul>
-    <li>
-        The <a href="{@docRoot}resources/samples/AlarmServiceTest.html">Alarm Service Test</a>
-        is a test package for the <a href="{@docRoot}resources/samples/Alarm.html">Alarm</a>
-        sample application. It provides a simple example of unit
-        testing a {@link android.app.Service}.
-    </li>
-</ul>
--->
diff --git a/docs/html/guide/topics/testing/service_testing.jd b/docs/html/guide/topics/testing/service_testing.jd
deleted file mode 100644
index eae8607..0000000
--- a/docs/html/guide/topics/testing/service_testing.jd
+++ /dev/null
@@ -1,180 +0,0 @@
-page.title=Service Testing
-parent.title=Testing
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li>
-        <a href="#DesignAndTest">Service Design and Testing</a>
-    </li>
-    <li>
-        <a href="#ServiceTestCase">ServiceTestCase</a>
-    </li>
-    <li>
-        <a href="#MockObjects">Mock object classes</a>
-    </li>
-    <li>
-        <a href="#TestAreas">What to Test</a>
-    </li>
-  </ol>
-  <h2>Key Classes</h2>
-    <ol>
-      <li>{@link android.test.InstrumentationTestRunner}</li>
-      <li>{@link android.test.ServiceTestCase}</li>
-      <li>{@link android.test.mock.MockApplication}</li>
-      <li>{@link android.test.RenamingDelegatingContext}</li>
-    </ol>
-  <h2>Related Tutorials</h2>
-    <ol>
-        <li>
-            <a href="{@docRoot}resources/tutorials/testing/helloandroid_test.html">
-            Hello, Testing</a>
-        </li>
-        <li>
-            <a href="{@docRoot}resources/tutorials/testing/activity_test.html">Activity Testing</a>
-        </li>
-    </ol>
-  <h2>See Also</h2>
-      <ol>
-        <li>
-          <a href="{@docRoot}guide/developing/testing/testing_eclipse.html">
-          Testing in Eclipse, with ADT</a>
-        </li>
-        <li>
-          <a href="{@docRoot}guide/developing/testing/testing_otheride.html">
-          Testing in Other IDEs</a>
-        </li>
-      </ol>
-  </div>
-</div>
-<p>
-    Android provides a testing framework for Service objects that can run them in
-    isolation and provides mock objects. The test case class for Service objects is
-    {@link android.test.ServiceTestCase}. Since the Service class assumes that it is separate
-    from its clients, you can test a Service object without using instrumentation.
-</p>
-<p>
-    This document describes techniques for testing Service objects. If you aren't familiar with the
-    Service class, please read the <a href="{@docRoot}guide/topics/fundamentals/services.html">
-    Services</a> document. If you aren't familiar with Android testing, please read
-    <a href="{@docRoot}guide/topics/testing/testing_android.html">Testing Fundamentals</a>,
-    the introduction to the Android testing and instrumentation framework.
-</p>
-<h2 id="DesignAndTest">Service Design and Testing</h2>
-<p>
-    When you design a Service, you should consider how your tests can examine the various states
-    of the Service lifecycle. If the lifecycle methods that start up your Service, such as
-    {@link android.app.Service#onCreate() onCreate()} or
-    {@link android.app.Service#onStartCommand(Intent, int, int) onStartCommand()} do not normally
-    set a global variable to indicate that they were successful, you may want to provide such a
-    variable for testing purposes.
-</p>
-<p>
-    Most other testing is facilitated by the methods in the {@link android.test.ServiceTestCase}
-    test case class. For example, the {@link android.test.ServiceTestCase#getService()} method
-    returns a handle to the Service under test, which you can test to confirm that the Service is
-    running even at the end of your tests.
-</p>
-<h2 id="ServiceTestCase">ServiceTestCase</h2>
-<p>
-    {@link android.test.ServiceTestCase} extends the JUnit {@link junit.framework.TestCase} class
-    with with methods for testing application permissions and for controlling the application and
-    Service under test. It also provides mock application and Context objects that isolate your
-    test from the rest of the system.
-</p>
-<p>
-    {@link android.test.ServiceTestCase} defers initialization of the test environment until you
-    call {@link android.test.ServiceTestCase#startService(Intent) ServiceTestCase.startService()} or
-    {@link android.test.ServiceTestCase#bindService(Intent) ServiceTestCase.bindService()}. This
-    allows you to set up your test environment, particularly your mock objects, before the Service
-    is started.
-</p>
-<p>
-    Notice that the parameters to <code>ServiceTestCase.bindService()</code>are different from
-    those for <code>Service.bindService()</code>. For the <code>ServiceTestCase</code> version,
-    you only provide an Intent. Instead of returning a boolean,
-    <code>ServiceTestCase.bindService()</code> returns an object that subclasses
-    {@link android.os.IBinder}.
-</p>
-<p>
-    The {@link android.test.ServiceTestCase#setUp()} method for {@link android.test.ServiceTestCase}
-    is called before each test. It sets up the test fixture by making a copy of the current system
-    Context before any test methods touch it. You can retrieve this Context by calling
-    {@link android.test.ServiceTestCase#getSystemContext()}. If you override this method, you must
-    call <code>super.setUp()</code> as the first statement in the override.
-</p>
-<p>
-    The methods {@link android.test.ServiceTestCase#setApplication(Application) setApplication()}
-    and {@link android.test.AndroidTestCase#setContext(Context)} setContext()} allow you to set
-    a mock Context or mock Application (or both) for the Service, before you start it. These mock
-    objects are described in <a href="#MockObjects">Mock object classes</a>.
-</p>
-<p>
-    By default, {@link android.test.ServiceTestCase} runs the test method
-    {@link android.test.AndroidTestCase#testAndroidTestCaseSetupProperly()}, which asserts that
-    the base test case class successfully set up a Context before running.
-</p>
-<h2 id="MockObjects">Mock object classes</h2>
-<p>
-    <code>ServiceTestCase</code> assumes that you will use a mock Context or mock Application
-    (or both) for the test environment. These objects isolate the test environment from the
-    rest of the system. If you don't provide your own instances of these objects before you
-    start the Service, then {@link android.test.ServiceTestCase} will create its own internal
-    instances and inject them into the Service. You can override this behavior by creating and
-    injecting your own instances before starting the Service
-</p>
-<p>
-    To inject a mock Application object into the Service under test, first create a subclass of
-    {@link android.test.mock.MockApplication}. <code>MockApplication</code> is a subclass of
-    {@link android.app.Application} in which all the methods throw an Exception, so to use it
-    effectively you subclass it and override the methods you need. You then inject it into the
-    Service with the
-    {@link android.test.ServiceTestCase#setApplication(Application) setApplication()} method.
-    This mock object allows you to control the application values that the Service sees, and
-    isolates it from the real system. In addition, any hidden dependencies your Service has on
-    its application reveal themselves as exceptions when you run the test.
-</p>
-<p>
-    You inject a mock Context into the Service under test with the
-    {@link android.test.AndroidTestCase#setContext(Context) setContext()} method. The mock
-    Context classes you can use are described in more detail in
-    <a href="{@docRoot}guide/topics/testing/testing_android.html#MockObjectClasses">
-    Testing Fundamentals</a>.
-</p>
-<h2 id="TestAreas">What to Test</h2>
-<p>
-    The topic <a href="{@docRoot}guide/topics/testing/what_to_test.html">What To Test</a>
-    lists general considerations for testing Android components.
-    Here are some specific guidelines for testing a Service:
-</p>
-<ul>
-    <li>
-        Ensure that the {@link android.app.Service#onCreate()} is called in response to
-        {@link android.content.Context#startService(Intent) Context.startService()} or
-    {@link android.content.Context#bindService(Intent,ServiceConnection,int) Context.bindService()}.
-        Similarly, you should ensure that {@link android.app.Service#onDestroy()} is called in
-        response to {@link android.content.Context#stopService(Intent) Context.stopService()},
-        {@link android.content.Context#unbindService(ServiceConnection) Context.unbindService()},
-        {@link android.app.Service#stopSelf()}, or
-        {@link android.app.Service#stopSelfResult(int) stopSelfResult()}.
-    </li>
-    <li>
-        Test that your Service correctly handles multiple calls from
-        <code>Context.startService()</code>. Only the first call triggers
-        <code>Service.onCreate()</code>, but all calls trigger a call to
-        <code>Service.onStartCommand()</code>.
-        <p>
-            In addition, remember that <code>startService()</code> calls don't
-            nest, so a single call to <code>Context.stopService()</code> or
-            <code>Service.stopSelf()</code> (but not <code>stopSelf(int)</code>)
-            will stop the Service. You should test that your Service stops at the correct point.
-        </p>
-    </li>
-    <li>
-        Test any business logic that your Service implements. Business logic includes checking for
-        invalid values, financial and arithmetic calculations, and so forth.
-    </li>
-</ul>
diff --git a/docs/html/guide/topics/testing/testing_android.jd b/docs/html/guide/topics/testing/testing_android.jd
deleted file mode 100755
index adbc59d..0000000
--- a/docs/html/guide/topics/testing/testing_android.jd
+++ /dev/null
@@ -1,666 +0,0 @@
-page.title=Testing Fundamentals
-parent.title=Testing
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li>
-        <a href="#TestStructure">Test Structure</a>
-    </li>
-    <li>
-        <a href="#TestProjects">Test Projects</a>
-    </li>
-    <li>
-      <a href="#TestAPI">The Testing API</a>
-      <ol>
-        <li>
-          <a href="#JUnit">JUnit</a>
-        </li>
-        <li>
-          <a href="#Instrumentation">Instrumentation</a>
-        </li>
-        <li>
-            <a href="#TestCaseClasses">Test case classes</a>
-        </li>
-        <li>
-          <a href="#AssertionClasses">Assertion classes</a>
-        </li>
-        <li>
-          <a href="#MockObjectClasses">Mock object classes</a>
-        </li>
-      </ol>
-    </li>
-    <li>
-        <a href="#InstrumentationTestRunner">Running Tests</a>
-    </li>
-    <li>
-        <a href="#TestResults">Seeing Test Results</a>
-    </li>
-    <li>
-        <a href="#Monkeys">monkey and monkeyrunner</a>
-    </li>
-    <li>
-       <a href="#PackageNames">Working With Package Names</a>
-    </li>
-    <li>
-        <a href="#WhatToTest">What To Test</a>
-    </li>
-    <li>
-        <a href="#NextSteps">Next Steps</a>
-    </li>
-  </ol>
-  <h2>Key classes</h2>
-    <ol>
-      <li>{@link android.test.InstrumentationTestRunner}</li>
-      <li>{@link android.test}</li>
-      <li>{@link android.test.mock}</li>
-      <li>{@link junit.framework}</li>
-    </ol>
-  <h2>Related tutorials</h2>
-    <ol>
-        <li>
-            <a href="{@docRoot}resources/tutorials/testing/helloandroid_test.html">
-            Hello, Testing</a>
-        </li>
-        <li>
-            <a href="{@docRoot}resources/tutorials/testing/activity_test.html">Activity Testing</a>
-        </li>
-    </ol>
-  <h2>See also</h2>
-      <ol>
-        <li>
-          <a href="{@docRoot}guide/developing/testing/testing_eclipse.html">
-          Testing in Eclipse, with ADT</a>
-        </li>
-        <li>
-          <a href="{@docRoot}guide/developing/testing/testing_otheride.html">
-          Testing in Other IDEs</a>
-        </li>
-        <li>
-          <a href="{@docRoot}guide/developing/tools/monkeyrunner_concepts.html">
-          monkeyrunner</a>
-        </li>
-        <li>
-     <a href="{@docRoot}guide/developing/tools/monkey.html">UI/Application Exerciser Monkey</a>
-        </li>
-      </ol>
-  </div>
-</div>
-<p>
-    The Android testing framework, an integral part of the development environment,
-    provides an architecture and powerful tools that help you test every aspect of your application
-    at every level from unit to framework.
-</p>
-<p>
-    The testing framework has these key features:
-</p>
-<ul>
-    <li>
-        Android test suites are based on JUnit. You can use plain JUnit to test a class that doesn't
-        call the Android API, or Android's JUnit extensions to test Android components. If you're
-        new to Android testing, you can start with general-purpose test case classes such as {@link
-        android.test.AndroidTestCase} and then go on to use more sophisticated classes.
-    </li>
-    <li>
-        The Android JUnit extensions provide component-specific test case classes. These classes
-        provide helper methods for creating mock objects and methods that help you control the
-        lifecycle of a component.
-    </li>
-    <li>
-        Test suites are contained in test packages that are similar to main application packages, so
-        you don't need to learn a new set of tools or techniques for designing and building tests.
-    </li>
-    <li>
-        The SDK tools for building and tests are available in Eclipse with ADT, and also in
-        command-line form for use with other IDES. These tools get information from the project of
-        the application under test and use this information to automatically create the build files,
-        manifest file, and directory structure for the test package.
-    </li>
-    <li>
-        The SDK also provides
-  <a href="{@docRoot}guide/developing/tools/monkeyrunner_concepts.html">monkeyrunner</a>, an API
-        testing devices with Python programs, and <a
-        href="{@docRoot}guide/developing/tools/monkey.html">UI/Application Exerciser Monkey</a>,
-        a command-line tool for stress-testing UIs by sending pseudo-random events to a device.
-    </li>
-</ul>
-<p>
-    This document describes the fundamentals of the Android testing framework, including the
-    structure of tests, the APIs that you use to develop tests, and the tools that you use to run
-    tests and view results. The document assumes you have a basic knowledge of Android application
-    programming and JUnit testing methodology.
-</p>
-<p>
-    The following diagram summarizes the testing framework:
-</p>
-<div style="width: 70%; margin-left:auto; margin-right:auto;">
-<a href="{@docRoot}images/testing/test_framework.png">
-    <img src="{@docRoot}images/testing/test_framework.png"
-        alt="The Android testing framework"/>
-</a>
-</div>
-<h2 id="TestStructure">Test Structure</h2>
-<p>
-    Android's build and test tools assume that test projects are organized into a standard
-    structure of tests, test case classes, test packages, and test projects.
-</p>
-<p>
-    Android testing is based on JUnit. In general, a JUnit test is a method whose
-    statements test a part of the application under test. You organize test methods into classes
-    called test cases (or test suites). Each test is an isolated test of an individual module in
-    the application under test. Each class is a container for related test methods, although it
-    often provides helper methods as well.
-</p>
-<p>
-    In JUnit, you build one or more test source files into a class file. Similarly, in Android you
-    use the SDK's build tools to build one or more test source files into class files in an
-    Android test package. In JUnit, you use a test runner to execute test classes. In Android, you
-    use test tools to load the test package and the application under test, and the tools then
-    execute an Android-specific test runner.
-</p>
-<h2 id="TestProjects">Test Projects</h2>
-<p>
-    Tests, like Android applications, are organized into projects.
-</p>
-<p>
-    A test project is a directory or Eclipse project in which you create the source code, manifest
-    file, and other files for a test package. The Android SDK contains tools for Eclipse with ADT
-    and for the command line that create and update test projects for you. The tools create the
-    directories you use for source code and resources and the manifest file for the test package.
-    The command-line tools also create the Ant build files you need.
-</p>
-<p>
-    You should always use Android tools to create a test project. Among other benefits,
-    the tools:
-</p>
-    <ul>
-        <li>
-            Automatically set up your test package to use
-            {@link android.test.InstrumentationTestRunner} as the test case runner. You must use
-            <code>InstrumentationTestRunner</code> (or a subclass) to run JUnit tests.
-        </li>
-        <li>
-            Create an appropriate name for the test package. If the application
-            under test has a package name of <code>com.mydomain.myapp</code>, then the
-            Android tools set the test package name to <code>com.mydomain.myapp.test</code>. This
-            helps you identify their relationship, while preventing conflicts within the system.
-        </li>
-        <li>
-            Automatically create the proper build files, manifest file, and directory
-            structure for the test project. This helps you to build the test package without
-            having to modify build files and sets up the linkage between your test package and
-            the application under test.
-            The
-        </li>
-    </ul>
-<p>
-    You can create a test project anywhere in your file system, but the best approach is to
-    add the test project so that its root directory <code>tests/</code> is at the same level
-    as the <code>src/</code> directory of the main application's project. This helps you find the
-    tests associated with an application. For example, if your application project's root directory
-    is <code>MyProject</code>, then you should use the following directory structure:
-</p>
-<pre class="classic no-pretty-print">
-  MyProject/
-      AndroidManifest.xml
-      res/
-          ... (resources for main application)
-      src/
-          ... (source code for main application) ...
-      tests/
-          AndroidManifest.xml
-          res/
-              ... (resources for tests)
-          src/
-              ... (source code for tests)
-</pre>
-<h2 id="TestAPI">The Testing API</h2>
-<p>
-    The Android testing API is based on the JUnit API and extended with a instrumentation
-    framework and Android-specific testing classes.
-</p>
-<h3 id="JUnit">JUnit</h3>
-<p>
-    You can use the JUnit {@link junit.framework.TestCase TestCase} class to do unit testing on
-    a plain Java object. <code>TestCase</code> is also the base class for
-    {@link android.test.AndroidTestCase}, which you can use to test Android-dependent objects.
-    Besides providing the JUnit framework, AndroidTestCase offers Android-specific setup,
-    teardown, and helper methods.
-</p>
-<p>
-    You use the JUnit {@link junit.framework.Assert} class to display test results.
-    The assert methods compare values you expect from a test to the actual results and
-    throw an exception if the comparison fails. Android also provides a class of assertions that
-    extend the possible types of comparisons, and another class of assertions for testing the UI.
-    These are described in more detail in the section <a href="#AssertionClasses">
-    Assertion classes</a>
-</p>
-<p>
-    To learn more about JUnit, you can read the documentation on the
-    <a href="http://www.junit.org">junit.org</a> home page.
-    Note that the Android testing API supports JUnit 3 code style, but not JUnit 4. Also, you must
-    use Android's instrumented test runner {@link android.test.InstrumentationTestRunner} to run
-    your test case classes. This test runner is described in the
-    section <a href="#InstrumentationTestRunner">Running Tests</a>.
-</p>
-<h3 id="Instrumentation">Instrumentation</h3>
-<p>
-    Android instrumentation is a set of control methods or "hooks" in the Android system. These hooks
-    control an Android component independently of its normal lifecycle. They also control how
-    Android loads applications.
-</p>
-<p>
-    Normally, an Android component runs in a lifecycle determined by the system. For example, an
-    Activity object's lifecycle starts when the Activity is activated by an Intent. The object's
-    <code>onCreate()</code> method is called, followed by <code>onResume()</code>. When the user
-    starts another application, the <code>onPause()</code> method is called. If the Activity
-    code calls the <code>finish()</code> method, the <code>onDestroy()</code> method is called.
-    The Android framework API does not provide a way for your code to invoke these callback
-    methods directly, but you can do so using instrumentation.
-</p>
-<p>
-    Also, the system runs all the components of an application into the same
-    process. You can allow some components, such as content providers, to run in a separate process,
-    but you can't force an application to run in the same process as another application that is
-    already running.
-</p>
-<p>
-    With Android instrumentation, though, you can invoke callback methods in your test code.
-    This allows you to run through the lifecycle of a component step by step, as if you were
-    debugging the component. The following test code snippet demonstrates how to use this to
-    test that an Activity saves and restores its state:
-</p>
-<a name="ActivitySnippet"></a>
-<pre>
-    // Start the main activity of the application under test
-    mActivity = getActivity();
-
-    // Get a handle to the Activity object's main UI widget, a Spinner
-    mSpinner = (Spinner)mActivity.findViewById(com.android.example.spinner.R.id.Spinner01);
-
-    // Set the Spinner to a known position
-    mActivity.setSpinnerPosition(TEST_STATE_DESTROY_POSITION);
-
-    // Stop the activity - The onDestroy() method should save the state of the Spinner
-    mActivity.finish();
-
-    // Re-start the Activity - the onResume() method should restore the state of the Spinner
-    mActivity = getActivity();
-
-    // Get the Spinner's current position
-    int currentPosition = mActivity.getSpinnerPosition();
-
-    // Assert that the current position is the same as the starting position
-    assertEquals(TEST_STATE_DESTROY_POSITION, currentPosition);
-</pre>
-<p>
-    The key method used here is
-    {@link android.test.ActivityInstrumentationTestCase2#getActivity()}, which is a
-    part of the instrumentation API. The Activity under test is not started until you call this
-    method. You can set up the test fixture in advance, and then call this method to start the
-    Activity.
-</p>
-<p>
-    Also, instrumentation can load both a test package and the application under test into the
-    same process. Since the application components and their tests are in the same process, the
-    tests can invoke methods in the components, and modify and examine fields in the components.
-</p>
-<h3 id="TestCaseClasses">Test case classes</h3>
-<p>
-    Android provides several test case classes that extend {@link junit.framework.TestCase} and
-    {@link junit.framework.Assert} with Android-specific setup, teardown, and helper methods.
-</p>
-<h4 id="AndroidTestCase">AndroidTestCase</h4>
-<p>
-    A useful general test case class, especially if you are
-    just starting out with Android testing, is {@link android.test.AndroidTestCase}. It extends
-    both {@link junit.framework.TestCase} and {@link junit.framework.Assert}. It provides the
-    JUnit-standard <code>setUp()</code> and <code>tearDown()</code> methods, as well as
-    all of JUnit's Assert methods. In addition, it provides methods for testing permissions, and a
-    method that guards against memory leaks by clearing out certain class references.
-</p>
-<h4 id="ComponentTestCase">Component-specific test cases</h4>
-<p>
-    A key feature of the Android testing framework is its component-specific test case classes.
-    These address specific component testing needs with methods for fixture setup and
-    teardown and component lifecycle control. They also provide methods for setting up mock objects.
-    These classes are described in the component-specific testing topics:
-</p>
-<ul>
-    <li>
-        <a href="{@docRoot}guide/topics/testing/activity_testing.html">Activity Testing</a>
-    </li>
-    <li>
-        <a href="{@docRoot}guide/topics/testing/contentprovider_testing.html">
-        Content Provider Testing</a>
-    </li>
-    <li>
-        <a href="{@docRoot}guide/topics/testing/service_testing.html">Service Testing</a>
-    </li>
-</ul>
-<p>
-    Android does not provide a separate test case class for BroadcastReceiver. Instead, test a
-    BroadcastReceiver by testing the component that sends it Intent objects, to verify that the
-    BroadcastReceiver responds correctly.
-</p>
-<h4 id="ApplicationTestCase">ApplicationTestCase</h4>
-<p>
-    You use the {@link android.test.ApplicationTestCase} test case class to test the setup and
-    teardown of {@link android.app.Application} objects. These objects maintain the global state of
-    information that applies to all the components in an application package. The test case can
-    be useful in verifying that the &lt;application&gt; element in the manifest file is correctly
-    set up. Note, however, that this test case does not allow you to control testing of the
-    components within your application package.
-</p>
-<h4 id="InstrumentationTestCase">InstrumentationTestCase</h4>
-<p>
-    If you want to use instrumentation methods in a test case class, you must use
-    {@link android.test.InstrumentationTestCase} or one of its subclasses. The
-    {@link android.app.Activity} test cases extend this base class with other functionality that
-    assists in Activity testing.
-</p>
-
-<h3 id="AssertionClasses">Assertion classes</h3>
-<p>
-    Because Android test case classes extend JUnit, you can use assertion methods to display the
-    results of tests. An assertion method compares an actual value returned by a test to an
-    expected value, and throws an AssertionException if the comparison test fails. Using assertions
-    is more convenient than doing logging, and provides better test performance.
-</p>
-<p>
-    Besides the JUnit {@link junit.framework.Assert} class methods, the testing API also provides
-    the {@link android.test.MoreAsserts} and {@link android.test.ViewAsserts} classes:
-</p>
-<ul>
-    <li>
-        {@link android.test.MoreAsserts} contains more powerful assertions such as
-        {@link android.test.MoreAsserts#assertContainsRegex}, which does regular expression
-        matching.
-    </li>
-    <li>
-        {@link android.test.ViewAsserts} contains useful assertions about Views. For example
-        it contains {@link android.test.ViewAsserts#assertHasScreenCoordinates} that tests if a View
-        has a particular X and Y position on the visible screen. These asserts simplify testing of
-        geometry and alignment in the UI.
-    </li>
-</ul>
-<h3 id="MockObjectClasses">Mock object classes</h3>
-<p>
-    To facilitate dependency injection in testing, Android provides classes that create mock system
-    objects such as {@link android.content.Context} objects,
-    {@link android.content.ContentProvider} objects, {@link android.content.ContentResolver}
-    objects, and {@link android.app.Service} objects. Some test cases also provide mock
-    {@link android.content.Intent} objects. You use these mocks both to isolate tests
-    from the rest of the system and to facilitate dependency injection for testing. These classes
-    are found in the Java packages {@link android.test} and {@link android.test.mock}.
-</p>
-<p>
-    Mock objects isolate tests from a running system by stubbing out or overriding
-    normal operations. For example, a {@link android.test.mock.MockContentResolver}
-    replaces the normal resolver framework with its own local framework, which is isolated
-    from the rest of the system. MockContentResolver also stubs out the
-    {@link android.content.ContentResolver#notifyChange(Uri, ContentObserver, boolean)} method
-    so that observer objects outside the test environment are not accidentally triggered.
-</p>
-<p>
-    Mock object classes also facilitate dependency injection by providing a subclass of the
-    normal object that is non-functional except for overrides you define. For example, the
-    {@link android.test.mock.MockResources} object provides a subclass of
-    {@link android.content.res.Resources} in which all the methods throw Exceptions when called.
-    To use it, you override only those methods that must provide information.
-</p>
-<p>
-    These are the mock object classes available in Android:
-</p>
-<h4 id="SimpleMocks">Simple mock object classes</h4>
-<p>
-    {@link android.test.mock.MockApplication}, {@link android.test.mock.MockContext},
-    {@link android.test.mock.MockContentProvider}, {@link android.test.mock.MockCursor},
-    {@link android.test.mock.MockDialogInterface}, {@link android.test.mock.MockPackageManager}, and
-    {@link android.test.mock.MockResources} provide a simple and useful mock strategy. They are
-    stubbed-out versions of the corresponding system object class, and all of their methods throw an
-    {@link java.lang.UnsupportedOperationException} exception if called. To use them, you override
-    the methods you need in order to provide mock dependencies.
-</p>
-<p class="Note"><strong>Note:</strong>
-    {@link android.test.mock.MockContentProvider}
-    and {@link android.test.mock.MockCursor} are new as of API level 8.
-</p>
-<h4 id="ResolverMocks">Resolver mock objects</h4>
-<p>
-    {@link android.test.mock.MockContentResolver} provides isolated testing of content providers by
-    masking out the normal system resolver framework. Instead of looking in the system to find a
-    content provider given an authority string, MockContentResolver uses its own internal table. You
-    must explicitly add providers to this table using
-    {@link android.test.mock.MockContentResolver#addProvider(String,ContentProvider)}.
-</p>
-<p>
-    With this feature, you can associate a mock content provider with an authority. You can create
-    an instance of a real provider but use test data in it. You can even set the provider for an
-    authority to <code>null</code>. In effect, a MockContentResolver object isolates your test
-    from providers that contain real data. You can control the
-    function of the provider, and you can prevent your test from affecting real data.
-</p>
-<h3 id="ContextMocks">Contexts for testing</h3>
-<p>
-    Android provides two Context classes that are useful for testing:
-</p>
-<ul>
-    <li>
-        {@link android.test.IsolatedContext} provides an isolated {@link android.content.Context},
-        File, directory, and database operations that use this Context take place in a test area.
-        Though its functionality is limited, this Context has enough stub code to respond to
-        system calls.
-        <p>
-            This class allows you to test an application's data operations without affecting real
-            data that may be present on the device.
-        </p>
-    </li>
-    <li>
-        {@link android.test.RenamingDelegatingContext} provides a Context in which
-        most functions are handled by an existing {@link android.content.Context}, but
-        file and database operations are handled by a {@link android.test.IsolatedContext}.
-        The isolated part uses a test directory and creates special file and directory names.
-        You can control the naming yourself, or let the constructor determine it automatically.
-        <p>
-            This object provides a quick way to set up an isolated area for data operations,
-            while keeping normal functionality for all other Context operations.
-        </p>
-    </li>
-</ul>
-<h2 id="InstrumentationTestRunner">Running Tests</h2>
-<p>
-    Test cases are run by a test runner class that loads the test case class, set ups,
-    runs, and tears down each test. An Android test runner must also be instrumented, so that
-    the system utility for starting applications can control how the test package
-    loads test cases and the application under test. You tell the Android platform
-    which instrumented test runner to use by setting a value in the test package's manifest file.
-</p>
-<p>
-    {@link android.test.InstrumentationTestRunner} is the primary Android test runner class. It
-    extends the JUnit test runner framework and is also instrumented. It can run any of the test
-    case classes provided by Android and supports all possible types of testing.
-</p>
-<p>
-    You specify <code>InstrumentationTestRunner</code> or a subclass in your test package's
-    manifest file, in the <a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">
-    instrumentation</a> element. Also, <code>InstrumentationTestRunner</code> code resides
-    in the shared library <code>android.test.runner</code>,  which is not normally linked to
-    Android code. To include it, you must specify it in a
-    <a href="{@docRoot}guide/topics/manifest/uses-library-element.html">uses-library</a> element.
-    You do not have to set up these elements yourself. Both Eclipse with ADT and the
-    <code>android</code> command-line tool construct them automatically and add them to your
-    test package's manifest file.
-</p>
-<p class="Note">
-    <strong>Note:</strong> If you use a test runner other than
-    <code>InstrumentationTestRunner</code>, you must change the &lt;instrumentation&gt;
-    element to point to the class you want to use.
-</p>
-<p>
-    To run {@link android.test.InstrumentationTestRunner}, you use internal system classes called by
-    Android tools. When you run a test in Eclipse with ADT, the classes are called automatically.
-    When you run a test from the command line, you run these classes with
-    <a href="{@docRoot}guide/developing/tools/adb.html">Android Debug Bridge (adb)</a>.
-</p>
-<p>
-    The system classes load and start the test package, kill any processes that
-    are running an instance of the application under test, and then load a new instance of the
-    application under test. They then pass control to
-    {@link android.test.InstrumentationTestRunner}, which runs
-    each test case class in the test package. You can also control which test cases and
-    methods are run using settings in Eclipse with ADT, or using flags with the command-line tools.
-</p>
-<p>
-    Neither the system classes nor {@link android.test.InstrumentationTestRunner} run
-    the application under test. Instead, the test case does this directly. It either calls methods
-    in the application under test, or it calls its own methods that trigger lifecycle events in
-    the application under test. The application is under the complete control of the test case,
-    which allows it to set up the test environment (the test fixture) before running a test. This
-    is demonstrated in the previous <a href="#ActivitySnippet">code snippet</a> that tests an
-    Activity that displays a Spinner widget.
-</p>
-<p>
-    To learn more about running tests, please read the topics
-    <a href="{@docRoot}guide/developing/testing/testing_eclipse.html"">
-    Testing in Eclipse, with ADT</a> or
-    <a href="{@docRoot}guide/developing/testing/testing_otheride.html">
-    Testing in Other IDes</a>.
-</p>
-<h2 id="TestResults">Seeing Test Results</h2>
-<p>
-    The Android testing framework returns test results back to the tool that started the test.
-    If you run a test in Eclipse with ADT, the results are displayed in a new JUnit view pane. If
-    you run a test from the command line, the results are displayed in <code>STDOUT</code>. In
-    both cases, you see a test summary that displays the name of each test case and method that
-    was run. You also see all the assertion failures that occurred. These include pointers to the
-    line in the test code where the failure occurred. Assertion failures also list the expected
-    value and actual value.
-</p>
-<p>
-    The test results have a format that is specific to the IDE that you are using. The test
-    results format for Eclipse with ADT is described in
-    <a href="{@docRoot}guide/developing/testing/testing_eclipse.html#RunTestEclipse">
-    Testing in Eclipse, with ADT</a>. The test results format for tests run from the
-    command line is described in
-    <a href="{@docRoot}guide/developing/testing/testing_otheride.html#RunTestsCommand">
-    Testing in Other IDEs</a>.
-</p>
-<h2 id="Monkeys">monkey and monkeyrunner</h2>
-<p>
-    The SDK provides two tools for functional-level application testing:
-</p>
-    <ul>
-        <li>
-The <a href="{@docRoot}guide/developing/tools/monkey.html">UI/Application Exerciser Monkey</a>,
-            usually called "monkey", is a command-line tool that sends pseudo-random streams of
-            keystrokes, touches, and gestures to a device. You run it with the
-            <a href="{@docRoot}guide/developing/tools/adb.html">Android Debug Bridge</a> (adb) tool.
-            You use it to stress-test your application and report back errors that are encountered.
-            You can repeat a stream of events by running the tool each time with the same random
-            number seed.
-        </li>
-        <li>
-    The <a href="{@docRoot}guide/developing/tools/monkeyrunner_concepts.html">monkeyrunner</a> tool
-            is an API and execution environment for test programs written in Python. The API
-            includes functions for connecting to a device, installing and uninstalling packages,
-            taking screenshots, comparing two images, and running a test package against an
-            application. Using the API, you can write a wide range of large, powerful, and complex
-            tests. You run programs that use the API with the <code>monkeyrunner</code> command-line
-            tool.
-        </li>
-    </ul>
-<h2 id="PackageNames">Working With Package names</h2>
-<p>
-    In the test environment, you work with both Android application package names and
-    Java package identifiers. Both use the same naming format, but they represent substantially
-    different entities. You need to know the difference to set up your tests correctly.
-</p>
-<p>
-    An Android package name is a unique system name for a <code>.apk</code> file, set by the
-    &quot;android:package&quot; attribute of the &lt;manifest&gt; element in the package's
-    manifest. The Android package name of your test package must be different from the
-    Android package name of the application under test. By default, Android tools create the
-    test package name by appending ".test" to the package name of the application under test.
-</p>
-<p>
-    The test package also uses an Android package name to target the application package it
-    tests. This is set in the &quot;android:targetPackage&quot; attribute of the
-    &lt;instrumentation&gt; element in the test package's manifest.
-</p>
-<p>
-    A Java package identifier applies to a source file. This package name reflects the directory
-    path of the source file. It also affects the visibility of classes and members to each other.
-</p>
-<p>
-    Android tools that create test projects set up an Android test package name for you.
-    From your input, the tools set up the test package name and the target package name for the
-    application under test. For these tools to work, the application project must already exist.
-</p>
-<p>
-    By default, these tools set the Java package identifier for the test class to be the same
-    as the Android package identifier. You may want to change this if you want to expose
-    members in the application under test by giving them package visibility. If you do this,
-    change only the Java package identifier, not the Android package names, and change only the
-    test case source files. Do not change the Java package name of the generated
-    <code>R.java</code> class in your test package, because it will then conflict with the
-    <code>R.java</code> class in the application under test. Do not change the Android package name
-    of your test package to be the same as the application it tests, because then their names
-    will no longer be unique in the system.
-</p>
-<h2 id="WhatToTest">What to Test</h2>
-<p>
-    The topic <a href="{@docRoot}guide/topics/testing/what_to_test.html">What To Test</a>
-    describes the key functionality you should test in an Android application, and the key
-    situations that might affect that functionality.
-</p>
-<p>
-    Most unit testing is specific to the Android component you are testing.
-    The topics <a href="{@docRoot}guide/topics/testing/activity_testing.html">Activity Testing</a>,
-    <a href="{@docRoot}guide/topics/testing/contentprovider_testing.html">
-    Content Provider Testing</a>, and <a href="{@docRoot}guide/topics/testing/service_testing.html">
-    Service Testing</a> each have a section entitled "What To Test" that lists possible testing
-    areas.
-</p>
-<p>
-    When possible, you should run these tests on an actual device. If this is not possible, you can
-    use the <a href="{@docRoot}guide/developing/devices/emulator.html">Android Emulator</a> with
-    Android Virtual Devices configured for the hardware, screens, and versions you want to test.
-</p>
-<h2 id="NextSteps">Next Steps</h2>
-<p>
-    To learn how to set up and run tests in Eclipse, please refer to <a
-    href="{@docRoot}guide/developing/testing/testing_eclipse.html">Testing in
-    Eclipse, with ADT</a>. If you're not working in Eclipse, refer to <a
-    href="{@docRoot}guide/developing/testing/testing_otheride.html">Testing in Other
-    IDEs</a>.
-</p>
-<p>
-    If you want a step-by-step introduction to Android testing, try one of the
-    testing tutorials or sample test packages:
-</p>
-<ul>
-    <li>
-        The <a
-        href="{@docRoot}resources/tutorials/testing/helloandroid_test.html">Hello,
-        Testing</a> tutorial introduces basic testing concepts and procedures in the
-        context of the Hello, World application.
-    </li>
-    <li>
-        The <a href="{@docRoot}resources/tutorials/testing/activity_test.html">Activity
-        Testing</a> tutorial is an excellent follow-up to the Hello, Testing tutorial.
-        It guides you through a more complex testing scenario that you develop against a
-        more realistic application.
-    </li>
-    <!-- sample is not available
-    <li>
-        The sample test package <a href="{@docRoot}resources/samples/AlarmServiceTest/index.html">
-        Alarm Service Test</a> is an example of testing a {@link android.app.Service}. It contains
-        a set of unit tests for the Alarm Service sample application's {@link android.app.Service}.
-    </li>
-    -->
-</ul>
-
diff --git a/docs/html/guide/topics/testing/what_to_test.jd b/docs/html/guide/topics/testing/what_to_test.jd
deleted file mode 100644
index 99061df..0000000
--- a/docs/html/guide/topics/testing/what_to_test.jd
+++ /dev/null
@@ -1,86 +0,0 @@
-page.title=What To Test
-parent.title=Testing
-parent.link=index.html
-@jd:body
-<p>
-    As you develop Android applications, knowing what to test is as important as knowing how to
-    test. This document lists some most common Android-related situations that you should consider
-    when you test, even at the unit test level. This is not an exhaustive list, and you consult the
-    documentation for the features that you use for more ideas. The
-    <a href="http://groups.google.com/group/android-developers">android-developers</a> Google Groups
-    site is another resource for information about testing.
-</p>
-<h2 id="Tests">Ideas for Testing</h2>
-<p>
-    The following sections are organized by behaviors or situations that you should test. Each
-    section contains a scenario that further illustrates the situation and the test or tests you
-    should do.
-</p>
-<h4>Change in orientation</h4>
-<p>
-    For devices that support multiple orientations, Android detects a change in orientation when
-    the user turns the device so that the display is "landscape" (long edge is horizontal) instead
-    of "portrait" (long edge is vertical).
-</p>
-<p>
-    When Android detects a change in orientation, its default behavior is to destroy and then
-    re-start the foreground Activity. You should consider testing the following:
-</p>
-<ul>
-    <li>
-        Is the screen re-drawn correctly? Any custom UI code you have should handle changes in the
-        orientation.
-    </li>
-    <li>
-        Does the application maintain its state? The Activity should not lose anything that the
-        user has already entered into the UI. The application should not "forget" its place in the
-        current transaction.
-    </li>
-</ul>
-<h4>Change in configuration</h4>
-<p>
-    A situation that is more general than a change in orientation is a change in the device's
-    configuration, such as a change in the availability of a keyboard or a change in system
-    language.
-</p>
-<p>
-    A change in configuration also triggers the default behavior of destroying and then restarting
-    the foreground Activity. Besides testing that the application maintains the UI and its
-    transaction state, you should also test that the application updates itself to respond
-    correctly to the new configuration.
-</p>
-<h4>Battery life</h4>
-<p>
-    Mobile devices primarily run on battery power. A device has finite "battery budget", and when it
-    is gone, the device is useless until it is recharged. You need to write your application to
-    minimize battery usage, you need to test its battery performance, and you need to test the
-    methods that manage battery usage.
-</p>
-<p>
-    Techniques for minimizing battery usage were presented at the 2010 Google I/O conference in the
-    presentation
-    <a href="http://code.google.com/events/io/2009/sessions/CodingLifeBatteryLife.html">
-    Coding for Life -- Battery Life, That Is</a>. This presentation describes the impact on battery
-    life of various operations, and the ways you can design your application to minimize these
-    impacts. When you code your application to reduce battery usage, you also write the
-    appropriate unit tests.
-</p>
-<h4>Dependence on external resources</h4>
-<p>
-    If your application depends on network access, SMS, Bluetooth, or GPS, then you should
-    test what happens when the resource or resources are not available.
-</p>
-<p>
-    For example, if your application uses the network,it can notify the user if access is
-    unavailable, or disable network-related features, or do both. For GPS, it can switch to
-    IP-based location awareness. It can also wait for WiFi access before doing large data transfers,
-    since WiFi transfers maximize battery usage compared to transfers over 3G or EDGE.
-</p>
-<p>
-    You can use the emulator to test network access and bandwidth. To learn more, please see
-    <a href="{@docRoot}guide/developing/tools/emulator.html#netspeed">Network Speed Emulation</a>.
-    To test GPS, you can use the emulator console and {@link android.location.LocationManager}. To
-    learn more about the emulator console, please see
-    <a href="{@docRoot}guide/developing/tools/emulator.html#console">
-    Using the Emulator Console</a>.
-</p>
diff --git a/docs/html/guide/topics/clipboard/copy-paste.jd b/docs/html/guide/topics/text/copy-paste.jd
similarity index 100%
rename from docs/html/guide/topics/clipboard/copy-paste.jd
rename to docs/html/guide/topics/text/copy-paste.jd
diff --git a/docs/html/guide/topics/text/creating-input-method.jd b/docs/html/guide/topics/text/creating-input-method.jd
new file mode 100644
index 0000000..e49610f
--- /dev/null
+++ b/docs/html/guide/topics/text/creating-input-method.jd
@@ -0,0 +1,528 @@
+page.title=Creating an Input Method
+parent.title=Articles
+parent.link=../browser.html?tag=article
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>See also</h2>
+<ol>
+    <li>
+        <a href="http://android-developers.blogspot.com/2009/04/updating-applications-for-on-screen.html">Onscreen Input Methods</a>
+    </li>
+    <li>
+        <a href="{@docRoot}resources/samples/SoftKeyboard/index.html">Soft Keyboard sample</a>
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    An input method editor (IME) is a user control that enables users to enter text. Android 
+    provides an extensible input method framework that allows applications to provide users 
+    alternative input methods, such as on-screen keyboards or even speech input. Once installed, 
+    users can select which IME they want to use from the system settings and use it across the 
+    entire system; only one IME may be enabled at a time.
+</p>
+<p>
+    To add an IME to the Android system, you create an Android application
+    containing a class that extends {@link android.inputmethodservice.InputMethodService}. In 
+    addition, you usually create a "settings" activity that passes options to the IME
+    service. You can also define a settings UI that's displayed as part of the system settings.
+</p>
+<p>This article covers the following:</p>
+<ul>
+    <li>The IME lifecycle.</li>
+    <li>Declaring IME components in the application manifest.</li>
+    <li>The IME API.</li>
+    <li>Designing an IME UI.</li>
+    <li>Sending text from an IME to an application.</li>
+    <li>Working with IME subtypes.</li>
+</ul>
+<p>
+    If you haven't worked with IMEs before, you should read the introductory article 
+    <a href="http://android-developers.blogspot.com/2009/04/updating-applications-for-on-screen.html">Onscreen Input Methods</a> first.
+    Also, the Soft Keyboard sample app included in the SDK contains sample code that you can modify
+    to start building your own IME.
+</p>
+<h2 id="InputMethodLifecycle">The IME Lifecycle</h2>
+<p>
+    The following diagram describes the life cycle of an IME:
+</p>
+<img src="{@docRoot}resources/articles/images/inputmethod_lifecycle_image.png" alt="" height="845"
+    id="figure1" />
+<p class="img-caption">
+    <strong>Figure 1.</strong> The life cycle of an IME.
+</p>
+<p>
+    The following sections describe how to implement the UI and code associated with an IME that
+    follows this lifecycle.
+</p>
+<h2 id="DefiningIME">Declaring IME Components in the Manifest</h2>
+<p>
+    In the Android system, an IME is an Android application that contains a special IME service.
+    The application's manifest file must declare the service, request the necessary permissions, 
+    provide an intent filter that matches the action <code>action.view.InputMethod</code>, and 
+    provide metadata that defines characteristics of the IME. In addition, to provide a settings
+    interface that allows the user to modify the behavior of the IME, you can define a "settings"
+    activity that can be launched from System Settings.
+</p>
+<p>
+    The following snippet declares IME service. It requests the permission {@link
+    android.Manifest.permission#BIND_INPUT_METHOD} to allow the service to connect the IME to 
+    the system, sets up an intent filter that matches the action 
+    <code>android.view.InputMethod</code>, and defines metadata for the IME:
+</p>
+<pre>
+&lt;!-- Declares the input method service --&gt;
+    &lt;service android:name="FastInputIME"
+        android:label="&#64;string/fast_input_label"
+        android:permission="android.permission.BIND_INPUT_METHOD"&gt;
+        &lt;intent-filter&gt;
+            &lt;action android:name="android.view.InputMethod" /&gt;
+        &lt;/intent-filter&gt;
+        &lt;meta-data android:name="android.view.im" android:resource="&#64;xml/method" /&gt;
+    &lt;/service&gt;
+</pre>
+<p>
+    This next snippet declares the settings activity for the IME. It has an intent filter for
+    {@link android.content.Intent#ACTION_MAIN} that indicates this activity is the main entry point
+    for the IME application:</p>
+<pre>
+    &lt;!-- Optional: an activity for controlling the IME settings --&gt;
+    &lt;activity android:name="FastInputIMESettings" 
+        android:label="&#64;string/fast_input_settings"&gt;
+        &lt;intent-filter&gt;
+            &lt;action android:name="android.intent.action.MAIN"/&gt;
+        &lt;/intent-filter&gt;
+    &lt;/activity&gt;
+</pre>
+<p>
+    You can also provide access to the IME's settings directly from its UI.
+</p>
+<h2 id="IMEAPI">The Input Method API</h2>
+<p>
+    Classes specific to IMEs are found in the {@link android.inputmethodservice} and {@link
+    android.view.inputmethod} packages. The {@link android.view.KeyEvent} class is important for
+    handling keyboard characters.
+</p>
+<p>
+    The central part of an IME is a service component, a class that extends 
+    {@link android.inputmethodservice.InputMethodService}. In addition to implementing the 
+    normal service lifecycle, this class has callbacks for providing your IME's UI, handling user 
+    input, and delivering text to the field that currently has focus. By default, the
+    {@link android.inputmethodservice.InputMethodService} class provides most of the implementation 
+    for managing the state and visibility of the IME and communicating with the current 
+    input field.
+</p>
+<p>
+    The following classes are also important:
+</p>
+<dl>
+    <dt>{@link android.view.inputmethod.BaseInputConnection}</dt>
+    <dd>
+        Defines the communication channel from an {@link android.view.inputmethod.InputMethod}
+        back to the application that is receiving its input. You use it to read text around the
+        cursor, commit text to the text box, and send raw key events to the application.
+        Applications should extend this class rather than implementing the base interface 
+        {@link android.view.inputmethod.InputConnection}.
+    </dd>
+    <dt>{@link android.inputmethodservice.KeyboardView}</dt>
+    <dd>
+        An extension of {@link android.view.View} that renders a keyboard and responds to user
+        input events. The keyboard layout is specified by an instance of 
+        {@link android.inputmethodservice.Keyboard}, which you can define in an XML file.
+    </dd>
+</dl>
+<h2 id="IMEUI">Designing the Input Method UI</h2>
+<p>
+    There are two main visual elements for an IME: the <strong>input</strong> view and the
+    <strong>candidates</strong> view. You only have to implement the elements that are relevant to
+    the input method you're designing.
+</p>
+<h3 id="InputView">Input view</h3>
+<p>
+    The input view is the UI where the user inputs text, in the form of keyclicks, handwriting or
+    gestures. When the iIME is displayed for the first time, the system calls the 
+    {@link android.inputmethodservice.InputMethodService#onCreateInputView()} callback. In your
+    implementation of this method, you create the layout you want to display in the IME
+    window and return the layout to the system. This snippet is an example of implementing the
+    {@link android.inputmethodservice.InputMethodService#onCreateInputView()} method:
+<pre>
+    &#64;Override 
+    public View onCreateInputView() { 
+        MyKeyboardView inputView = 
+            (MyKeyboardView) getLayoutInflater().inflate( R.layout.input, null);
+    
+        inputView.setOnKeyboardActionListener(this); inputView.setKeyboard(mLatinKeyboard); 
+        
+        return mInputView; 
+    } 
+</pre>
+<p>
+    In this example, {@code MyKeyboardView} is an instance of a custom implementation of 
+    {@link android.inputmethodservice.KeyboardView} that renders a 
+    {@link android.inputmethodservice.Keyboard}. If you’re building a traditional QWERTY keyboard, 
+    see the <a href=”{@docRoot}resources/samples/SoftKeyboard/index.html”>Soft Keyboard</a> sample 
+    app for an example of how to extend the {@link android.inputmethodservice.KeyboardView} class.
+</p>
+<h3 id="CandidateView">Candidates view</h3>
+<p>
+    The candidates view is the UI where the IME displays potential word corrections or
+    suggestions for the user to select. In the IME lifecycle, the system calls 
+    {@link android.inputmethodservice.InputMethodService#onCreateCandidatesView()} when it's ready 
+    to display the candidate view. In your implementation of this method, return a layout that shows
+    word suggestions, or return null if you don’t want to show anything (a null response is the
+    default behavior, so you don’t have to implement this if you don’t provide suggestions).</p>
+<p>
+    For an example implementation that provides user suggestions, see the 
+    <a href=”{@docRoot}resources/samples/SoftKeyboard/index.html”>Soft Keyboard</a> sample app.
+</p>
+<h3 id="DesignConsiderations">UI design considerations</h3>
+<p>
+    This section describes some specific UI design considerations for IMEs.
+</p>
+<h4>Handling multiple screen sizes</h4>
+<p>
+    The UI for your IME must be able to scale for different screen sizes, and it also
+    must handle both landscape and portrait orientations. In non-fullscreen IME mode, leave
+    sufficient space for the application to show the text field and any associated context, so that
+    no more than half the screen is occupied by the IME. In fullscreen IME mode this is not an
+    issue.
+</p>
+<h4>Handling different input types</h4>
+<p>
+    Android text fields allow you to set a specific input type, such as free form text, numbers,
+    URLs, email addresses, and search strings. When you implement a new IME, you need to
+    detect the input type of each field and provide the appropriate interface for it. However, you
+    don't have to set up your IME to check that the user entered text that's valid for the
+    input type; that's the responsibility of the application that owns the text field.
+</p>
+<p>
+    For example, here are screenshots of the interfaces that the Latin IME provided with the
+    Android platform provides for text and phone number inputs:
+</p>
+<img src="{@docRoot}resources/articles/images/inputmethod_text_type_screenshot.png" alt=""
+    height="142" id="figure2" />
+<img src="{@docRoot}resources/articles/images/inputmethod_numeric_type_screenshot.png" alt=""
+    height="120" id="figure2a" />
+<p class="img-caption">
+    <strong>Figure 2.</strong> Latin IME input types.
+</p>
+<p>
+    When an input field receives focus and your IME starts, the system calls 
+    {@link android.inputmethodservice.InputMethodService#onStartInputView(EditorInfo, boolean)
+    onStartInputView()}, passing in an {@link android.view.inputmethod.EditorInfo} object that 
+    contains details about the input type and other attributes of the text field. In this object, 
+    the {@link android.view.inputmethod.EditorInfo#inputType} field contains the text field's input
+    type.
+</p>
+<p>
+    The {@link android.view.inputmethod.EditorInfo#inputType} field is an <code>int</code>
+    that contains bit patterns for various input type settings. To test it for the text field's
+    input type, mask it with the constant {@link android.text.InputType#TYPE_MASK_CLASS}, like
+    this:
+</p>
+<pre>
+inputType &amp; InputType.TYPE_MASK_CLASS 
+</pre>
+<p>
+The input type bit pattern can have one of several values, including:
+</p>
+<dl>
+    <dt>{@link android.text.InputType#TYPE_CLASS_NUMBER}</dt>
+    <dd>
+        A text field for entering numbers. As illustrated in the previous screen shot, the
+        Latin IME displays a number pad for fields of this type.
+    </dd>
+    <dt>{@link android.text.InputType#TYPE_CLASS_DATETIME}</dt>
+    <dd>
+        A text field for entering a date and time.
+    </dd>
+    <dt>{@link android.text.InputType#TYPE_CLASS_PHONE}</dt>
+    <dd>
+        A text field for entering telephone numbers.
+    </dd>
+    <dt>{@link android.text.InputType#TYPE_CLASS_TEXT}</dt>
+    <dd>
+        A text field for entering all supported characters.
+    </dd>
+</dl>
+<p>
+    These constants are described in more detail in the reference documentation for 
+    {@link android.text.InputType}.
+</p>
+<p>
+    The {@link android.view.inputmethod.EditorInfo#inputType} field can contain other bits that
+    indicate a variant of the text field type, such as:
+</p>
+<dl>
+    <dt>{@link android.text.InputType#TYPE_TEXT_VARIATION_PASSWORD}</dt>
+    <dd>
+        A variant of {@link android.text.InputType#TYPE_CLASS_TEXT} for entering passwords. The
+        input method will display dingbats instead of the actual text.
+    </dd>
+    <dt>{@link android.text.InputType#TYPE_TEXT_VARIATION_URI}</dt>
+    <dd>
+        A variant of {@link android.text.InputType#TYPE_CLASS_TEXT} for entering web URLs and
+        other Uniform Resource Identifiers (URIs).
+    </dd>
+    <dt>{@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_COMPLETE}</dt>
+    <dd>
+        A variant of {@link android.text.InputType#TYPE_CLASS_TEXT} for entering text that the
+        application "auto-completes" from a dictionary, search, or other facility.
+    </dd>
+</dl>
+<p>
+    Remember to mask {@link android.view.inputmethod.EditorInfo#inputType} with the appropriate
+    constant when you test for these variants. The available mask constants are listed in the
+    reference documentation for {@link android.text.InputType}.
+</p>
+<p class="caution">
+    <strong>Caution:</strong> In your own IME, make sure you handle text correctly when you send it
+    to a password field. Hide the password in your UI both in the input view and in the candidates
+    view. Also remember that you shouldn't store passwords on a device. To learn more, see the <a
+        href="{@docRoot}guide/practices/security.html">Designing for Security</a> guide.
+</p>
+<h2 id="SendText">Sending Text to the Application</h2>
+<p>
+    As the user inputs text with your IME, you can send text to the application by
+    sending individual key events or by editing the text around the cursor in the application's text
+    field. In either case, you use an instance of {@link android.view.inputmethod.InputConnection} 
+    to deliver the text. To get this instance, call 
+    {@link android.inputmethodservice.InputMethodService#getCurrentInputConnection
+    InputMethodService.getCurrentInputConnection()}.
+</p>
+<h3 id="EditingCursor">Editing the text around the cursor</h3>
+<p>
+    When you're handling the editing of existing text in a text field, some of the more useful
+    methods in {@link android.view.inputmethod.BaseInputConnection} are:
+</p>
+<dl>
+    <dt>
+        {@link android.view.inputmethod.BaseInputConnection#getTextBeforeCursor(int, int)
+        getTextBeforeCursor()}</dt>
+    <dd>
+        Returns a {@link java.lang.CharSequence} containing the number of requested characters
+        before the current cursor position.
+    </dd>
+    <dt>
+        {@link android.view.inputmethod.BaseInputConnection#getTextAfterCursor(int, int)
+        getTextAfterCursor()}
+    </dt>
+    <dd>
+        Returns a {@link java.lang.CharSequence} containing the number of requested characters
+        following the current cursor position.
+    </dd>
+    <dt>
+        {@link android.view.inputmethod.BaseInputConnection#deleteSurroundingText(int, int)
+        deleteSurroundingText()}
+    </dt>
+    <dd>
+        Deletes the specified number of characters before and following the current cursor
+        position.
+    </dd>
+    <dt>
+        {@link android.view.inputmethod.BaseInputConnection#commitText(CharSequence, int)
+        commitText()}
+    </dt>
+    <dd>
+        Commit a {@link java.lang.CharSequence} to the text field and set a new cursor
+        position.
+    </dd>
+</dl>
+<p>
+    For example, the following snippet shows how to replace the text "Fell" to the left of the
+    with the text "Hello!":
+</p>
+<pre>
+    InputConnection ic = getCurrentInputConnection();
+    
+    ic.deleteSurroundingText(4, 0);
+    
+    ic.commitText("Hello", 1);
+    
+    ic.commitText("!", 1);
+</pre>
+<h3 id="ComposeThenCommit">Composing text before committing</h3>
+<p>
+    If your IME does text prediction or requires multiple steps to compose a glyph or
+    word, you can show the progress in the text field until the user commits the word, and then you
+    can replace the partial composition with the completed text. You may give special treatment to 
+    the text by adding a "span" to it when you pass it to InputConnection#setComposingText().
+</p>
+<p>
+    The following snippet shows how to show progress in a text field:
+</p>
+<pre>
+    InputConnection ic = getCurrentInputConnection();
+
+    ic.setComposingText("Composi", 1);
+...
+
+    ic.setComposingText("Composin", 1);
+
+...
+
+    ic.commitText("Composing ", 1);
+</pre>
+<p>
+    The following screenshots show how this appears to the user:
+</p>
+<img src="{@docRoot}resources/articles/images/inputmethod_composing_text_1.png" alt="" height="54"
+    id="figure3a" />
+<img src="{@docRoot}resources/articles/images/inputmethod_composing_text_2.png" alt="" height="53"
+    id="figure3b" />
+<img src="{@docRoot}resources/articles/images/inputmethod_composing_text_3.png" alt="" height="31"
+    id="figure3c" />
+<p class="img-caption">
+    <strong>Figure 3.</strong> Composing text before committing.
+</p>
+<h3 id="HardwareKeyEvents">Intercepting hardware key events</h3>
+<p>
+    Even though the input method window doesn't have explicit focus, it receives hardware key
+    events first and can choose to consume them or forward them along to the application. For
+    example, you may want to consume the directional keys to navigate within your UI for candidate
+    selection during composition. You may also want to trap the back key to dismiss any popups
+    originating from the input method window.</p>
+<p>
+    To intercept hardware keys, override 
+    {@link android.inputmethodservice.InputMethodService#onKeyDown(int, KeyEvent) onKeyDown()}
+    and {@link android.inputmethodservice.InputMethodService#onKeyUp(int, KeyEvent) onKeyUp()}. 
+    See the <a href=”{@docRoot}resources/samples/SoftKeyboard/index.html”>Soft Keyboard</a> sample 
+    app for an example.
+</p>
+<p>
+    Remember to call the <code>super()</code> method for keys you don't want to handle yourself.
+</p>
+<h2 id="IMESubTypes">Creating an IME Subtype</h2>
+<p>
+    Subtypes allow the IME to expose multiple input modes and languages supported by an IME. A 
+    subtype can represent:
+</p>
+<ul>
+    <li>A locale such as en_US or fr_FR</li>
+    <li>An input mode such as voice, keyboard, or handwriting</li>
+    <li>
+        Other input styles, forms, or properties specific to the IME, such as 10-key or qwerty
+        keyboard layouts.
+    </li>
+</ul>
+<p>
+    Basically, the mode can be any text such as "keyboard", "voice", and so forth.
+</p>
+<p>A subtype can also expose a combination of these.</p>
+<p>
+    Subtype information is used for an IME switcher dialog that's available from the notification
+    bar and also for IME settings. The information also allows the framework to bring up a
+    specific subtype of an IME directly. When you build an IME, use the subtype facility, because 
+    it helps the user identify and switch between different IME languages and modes.
+</p>
+<p>
+    You define subtypes in one of the input method's XML resource files, using the
+    <code>&lt;subtype&gt;</code> element. The following snippet defines an IME with two 
+    subtypes: a keyboard subtype for the US English locale, and another keyboard subtype for the 
+    French language locale for France:
+</p>
+<pre>
+&lt;input-method xmlns:android="http://schemas.android.com/apk/res/android"
+        android:settingsActivity="com.example.softkeyboard.Settings"
+        android:icon="&#64;drawable/ime_icon"
+    &lt;subtype android:name="&#64;string/display_name_english_keyboard_ime"
+            android:icon="&#64;drawable/subtype_icon_english_keyboard_ime"
+            android:imeSubtypeLanguage="en_US"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="somePrivateOption=true"
+    /&gt;
+    &lt;subtype android:name="&#64;string/display_name_french_keyboard_ime"
+            android:icon="&#64;drawable/subtype_icon_french_keyboard_ime"
+            android:imeSubtypeLanguage="fr_FR"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="foobar=30,someInternalOption=false"
+    /&gt;
+    &lt;subtype android:name="&#64;string/display_name_german_keyboard_ime"
+            ...
+    /&gt;
+/&gt;
+</pre>
+<p>
+    To ensure that your subtypes are labeled correctly in the UI, use %s to get a subtype label
+    that is the same as the subtype’s locale label. This is demonstrated in the next two snippets.
+    The first snippet shows part of the input method's XML file:
+</p>
+<pre>
+    &lt;subtype
+        android:label="&#64;string/label_subtype_generic"
+        android:imeSubtypeLocale="en_US"
+        android:icon="&#64;drawable/icon_en_us"
+        android:imeSubtypeMode="keyboard" /&gt;
+</pre>
+<p>
+    The next snippet is part of the IME's <code>strings.xml</code> file. The string 
+    resource <code>label_subtype_generic</code>, which is used by the input method UI definition to 
+    set the subtype's label, is defined as:
+</p>
+<pre>
+&lt;string name="label_subtype_generic"&gt;%s&lt;/string&gt;
+</pre>
+<p>
+    This sets the subtype’s display name to “English (United States)” in any English language
+    locale, or to the appropriate localization in other locales.
+</p>
+<h3 id="SubtypeProcessing">Choosing IME subtypes from the notification bar</h3>
+<p>
+    The Android system manages all subtypes exposed by all IMEs. IME subtypes are
+    treated as modes of the IME they belong to. In the notification bar, a user can select an
+    available subtype for the currently-set IME, as shown in the following screenshot:
+</p>
+<img src="{@docRoot}resources/articles/images/inputmethod_subtype_notification.png" alt=""
+    height="85" id="figure4" />
+<p class="img-caption">
+    <strong>Figure 4.</strong> Choosing an IME subtype from the notification bar.
+</p>
+<img src="{@docRoot}resources/articles/images/inputmethod_subtype_preferences.png" alt=""
+    height="165" id="figure5" />
+<p class="img-caption">
+    <strong>Figure 5.</strong> Setting subtype preferences in System Settings.
+</p>
+<h3 id="SubtypeSettings">Choosing IME subtypes from System Settings</h3>
+<p>
+    A user can control how subtypes are used in the “Language &amp; input” settings panel in the
+    System Settings area. In the Soft Keyboard sample, the file 
+    <code>InputMethodSettingsFragment.java</code> contains an implementation that 
+    facilitates a subtype enabler in the IME settings. Please refer to the SoftKeyboard sample in 
+    the Android SDK for more information about how to support Input Method Subtypes in your IME.
+</p>
+<img src="{@docRoot}resources/articles/images/inputmethod_subtype_settings.png" alt=""
+    height="210" id="figure6" />
+<p class="img-caption">
+    <strong>Figure 6.</strong> Choosing a language for the IME.
+</p>
+<h2 id="GeneralDesign">General IME Considerations</h2>
+<p>
+    Here are some other things to consider as you're implementing your IME:
+</p>
+<ul>
+<li>
+    Provide a way for users to set options directly from the IME's UI.
+</li>
+<li>
+    Because multiple IMEs may be installed on the device, provide a way for the user to switch to a 
+    different IME directly from the input method UI.
+</li>
+<li>
+    Bring up the IME's UI quickly. Preload or load on demand any large resources so that users 
+    see the IME as soon as they tap on a text field. Cache resources and views for subsequent 
+    invocations of the input method.
+</li>
+<li>
+    Conversely, you should release large memory allocations soon after the input method window is 
+    hidden, so that applications can have sufficient memory to run. Consider using a delayed message
+    to release resources if the IME is in a hidden state for a few seconds.
+</li>    
+<li>
+    Make sure that users can enter as many characters as possible for the language or locale 
+    associated with the IME. Remember that users may use punctuation in passwords or user 
+    names, so your IME has to provide many different characters to allow users to enter a
+    password and get access to the device.
+</li>
+</ul>
diff --git a/docs/html/guide/topics/text/index.jd b/docs/html/guide/topics/text/index.jd
new file mode 100644
index 0000000..3865f25
--- /dev/null
+++ b/docs/html/guide/topics/text/index.jd
@@ -0,0 +1,40 @@
+page.title=Text and Input
+page.landing=true
+page.landing.intro=Use text services to add conventient features such as copy/paste and spell checking to your app. You can also develop your own text services to offer custom IMEs, dictionaries, and spelling checkers that you can distribute to users as applications.
+page.landing.image=
+
+@jd:body
+
+<div class="landing-docs">
+
+  <div class="col-12">
+    <h3>Blog Articles</h3>
+    
+    <a href="http://android-developers.blogspot.com/2011/12/add-voice-typing-to-your-ime.html">
+      <h4>Add Voice Typing To Your IME</h4>
+      <p>A new feature available in Android 4.0 is voice typing: the difference for users is that
+the recognition results appear in the text box while they are still speaking. If you are an IME
+developer, you can easily integrate with voice typing.</p>
+    </a>
+
+    <a href="http://android-developers.blogspot.com/2010/03/speech-input-api-for-android.html">
+      <h4>Speech Input API for Android</h4>
+      <p>We believe speech can fundamentally change the mobile experience. We would like to invite
+every Android application developer to consider integrating speech input capabilities via the
+Android SDK.</p>
+    </a>
+
+    <a href="http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html">
+      <h4>Making Sense of Multitouch</h4>
+      <p>The word "multitouch" gets thrown around quite a bit and it’s not always clear what people
+are referring to. For some it’s about hardware capability, for others it refers to specific gesture
+support in software. Whatever you decide to call it, today we’re going to look at how to make your
+apps and views behave nicely with multiple fingers on the screen.</p>
+    </a>
+  </div>
+
+  <div class="col-6">
+
+  </div>
+
+</div>
\ No newline at end of file
diff --git a/docs/html/guide/topics/text/spell-checker-framework.jd b/docs/html/guide/topics/text/spell-checker-framework.jd
new file mode 100644
index 0000000..05b68907
--- /dev/null
+++ b/docs/html/guide/topics/text/spell-checker-framework.jd
@@ -0,0 +1,236 @@
+page.title=Spelling Checker Framework
+parent.title=Articles
+parent.link=../browser.html?tag=article
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In This Document</h2>
+<ol>
+    <li>
+        <a href="#SpellCheckLifeCycle">Spell Check Lifecycle</a> 
+    </li>
+    <li>
+        <a href="#SpellCheckImplementation">Implementing a Spell Checker Service</a>
+    </li>
+    <li>
+        <a href="#SpellCheckClient">Implementing a Spell Checker Client</a>
+    </li>
+</ol>
+  <h2>See also</h2>
+  <ol>
+    <li>
+        <a href="{@docRoot}resources/samples/SpellChecker/SampleSpellCheckerService/index.html">
+        Spell Checker Service</a> sample app
+    </li>
+    <li>
+        <a href="{@docRoot}resources/samples/SpellChecker/HelloSpellChecker/index.html">
+        Spell Checker Client</a> sample app
+    </li>
+  </ol>
+</div>
+</div>
+
+<p>
+    The Android platform offers a spelling checker framework that lets you implement   
+    and access spell checking in your application. The framework is one of the 
+    Text Service APIs offered by the Android platform.
+</p>
+<p>
+    To use the framework in your app, you create a special type of Android service that 
+    generates a spelling checker <strong>session</strong> object. Based on text you provide,
+    the session object returns spelling suggestions generated by the spelling checker.
+</p>
+<h2 id="SpellCheckLifeCycle">Spell Checker Lifecycle</h2>
+<p>
+    The following diagram shows the lifecycle of the spelling checker service:
+</p>
+<img src="{@docRoot}resources/articles/images/spellcheck_lifecycle.png" alt="" height="596"
+    id="figure1" />
+<p class="img-caption">
+  <strong>Figure 1.</strong> The spelling checker service lifecycle.
+</p>
+<p>
+    To initiate spell checking, your app starts its implementation of the spelling checker
+    service. Clients in your app, such as activities or individual UI elements, request a
+    spelling checker session from the service, then use the session to get suggestions for text.
+    As a client terminates its operation, it closes its spelling checker session. If necessary, your
+    app can shut down the spelling checker service at any time.
+</p>
+<h2 id="SpellCheckImplementation">Implementing a Spell Checker Service</h2>
+<p>
+    To use the spelling checker framework in your app, add a spelling checker service component including
+    the session object definition. You can also add to your app an optional activity that
+    controls settings. You must also add an XML metadata file that describes
+    the spelling checker service, and add the appropriate elements to your manifest file.
+</p>
+<h3 id="SpellCheckCode">Spell checker classes</h3>
+<p>
+    Define the service and session object with the following classes:
+</p>
+<dl>
+    <dt>
+        A subclass of {@link android.service.textservice.SpellCheckerService}
+    </dt>
+    <dd>
+        The {@link android.service.textservice.SpellCheckerService} implements both the
+        {@link android.app.Service} class and the spelling checker framework interface. Within your
+        subclass, you must implement the following method:
+        <dl>
+            <dt>{@link android.service.textservice.SpellCheckerService#createSession()}</dt>
+            <dd>
+                A factory method that returns a
+                {@link android.service.textservice.SpellCheckerService.Session} object to a
+                client that wants to do spell checking.
+            </dd>
+        </dl>
+        <p>
+            See the
+            <a href="{@docRoot}resources/samples/SpellChecker/SampleSpellCheckerService/index.html">
+            Spell Checker Service</a> sample app to learn more about implementing this class.
+        </p>
+    </dd>
+    <dt>
+        An implementation of {@link android.service.textservice.SpellCheckerService.Session}
+    </dt>
+    <dd>
+        An object that the spelling checker service provides to clients, to let them pass text to
+        the spelling checker and receive suggestions. Within this class, you must implement the
+        following methods:
+        <dl>
+            <dt>
+                {@link android.service.textservice.SpellCheckerService.Session#onCreate()}
+            </dt>
+            <dd>
+                Called by the system in response to
+                {@link android.service.textservice.SpellCheckerService#createSession()}. In this
+                method, you can initialize the
+                {@link android.service.textservice.SpellCheckerService.Session} object based on
+                the current locale and so forth.
+            </dd>
+            <dt>
+     {@link android.service.textservice.SpellCheckerService.Session#onGetSuggestions(TextInfo, int)
+     onGetSuggestions()}
+            </dt>
+            <dd>
+                Does the actual spell checking. This method returns an object containing
+                suggestions for the text passed to it.
+            </dd>
+        </dl>
+        <p>
+            Optionally, you can implement
+            {@link android.service.textservice.SpellCheckerService.Session#onCancel()}, which
+            handles requests to cancel spell checking, or
+{@link android.service.textservice.SpellCheckerService.Session#onGetSuggestionsMultiple(TextInfo[], int, boolean)
+onGetSuggestionsMultiple()}, which handles batches of suggestion requests, or both.
+        </p>
+        <p>
+            See the
+            <a href="{@docRoot}resources/samples/SpellChecker/HelloSpellChecker/index.html">
+            Spell Checker Client</a> sample app to learn more about implementing this class.
+        </p>
+    </dd>
+</dl>
+<p class="note">
+    <strong>Note:</strong> You must implement all aspects of spell checking as asynchronous and
+    thread-safe. A spelling checker may be called simultaneously by different threads running on
+    different cores. The {@link android.service.textservice.SpellCheckerService} and
+    {@link android.service.textservice.SpellCheckerService.Session} take care of this
+    automatically.
+</p>
+<h3 id="SpellCheckXML">Spell checker manifest and metadata</h3>
+<p>
+    In addition to code, you need to provide the appropriate manifest file and a metadata file for
+    the spelling checker.
+</p>
+<p>
+    The manifest file defines the application, the service, and the activity for controlling
+    settings, as shown in the following snippet:
+</p>
+<pre>
+&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.android.samplespellcheckerservice" &gt;
+    &lt;application
+        android:label="&#64;string/app_name" &gt;
+        &lt;service
+            android:label="&#64;string/app_name"
+            android:name=".SampleSpellCheckerService"
+            android:permission="android.permission.BIND_TEXT_SERVICE" &gt;
+            &lt;intent-filter &gt;
+                &lt;action android:name="android.service.textservice.SpellCheckerService" /&gt;
+            &lt;/intent-filter&gt;
+
+            &lt;meta-data
+                android:name="android.view.textservice.scs"
+                android:resource="&#64;xml/spellchecker" /&gt;
+        &lt;/service&gt;
+
+        &lt;activity
+            android:label="&#64;string/sample_settings"
+            android:name="SpellCheckerSettingsActivity" &gt;
+            &lt;intent-filter &gt;
+                &lt;action android:name="android.intent.action.MAIN" /&gt;
+            &lt;/intent-filter&gt;
+        &lt;/activity&gt;
+    &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+<p>
+    Notice that components that want to use the service must request the permission
+    {@link android.Manifest.permission#BIND_TEXT_SERVICE} to ensure that only the system binds to
+    the service. The service's definition also specifies the <code>spellchecker.xml</code> metadata
+    file, which is described in the next section.
+</p>
+<p>
+    The metadata file <code>spellchecker.xml</code> contains the following XML:
+</p>
+<pre>
+&lt;spell-checker xmlns:android="http://schemas.android.com/apk/res/android"
+        android:label="&#64;string/spellchecker_name"
+        android:settingsActivity="com.example.SpellCheckerSettingsActivity"&gt;
+    &lt;subtype
+            android:label="&#64;string/subtype_generic"
+            android:subtypeLocale="en”
+    /&gt;
+    &lt;subtype
+            android:label="&#64;string/subtype_generic"
+            android:subtypeLocale="fr”
+    /&gt;
+&lt;/spell-checker&gt;
+</pre>
+<p>
+    The metadata specifies the activity that the spelling checker uses for controlling settings. It
+    also defines subtypes for the spelling checker; in this case, the subtypes define locales that
+    the spelling checker can handle.
+</p>
+
+
+<!--  Accessing the Spell Checker Service from a Client -->
+<h2 id="SpellCheckClient">Accessing the Spell Checker Service from a Client</h2>
+<p>
+    Applications that use {@link android.widget.TextView} views automatically benefit from spell
+    checking,  because {@link android.widget.TextView} automatically uses a spelling checker. The
+    following screenshots show this:
+</p>
+<img src="{@docRoot}resources/articles/images/textview_spellcheck_screenshot_1.png" alt=""
+    height="45" id="figure2a" />
+<br>
+<img src="{@docRoot}resources/articles/images/textview_spellcheck_screenshot_2.png" alt=""
+    height="121" id="figure2b" />
+<p class="img-caption">
+  <strong>Figure 2.</strong> Spell checking in TextView.
+</p>
+<p>
+    However, you may want to interact directly with a spelling checker service in other cases as well.
+    The following diagram shows the flow of control for interacting with a spelling checker service:
+</p>
+<img src="{@docRoot}resources/articles/images/spellcheck_client_flow.png" alt=""
+    height="394" id="figure3" />
+<p class="img-caption">
+  <strong>Figure 3.</strong> Interacting with a spelling checker service.
+</p>
+<p>
+    The <a href="{@docRoot}resources/samples/SpellChecker/HelloSpellChecker/index.html">
+    Spell Checker Client</a> sample app shows how to interact with a spelling checker service. The
+    LatinIME input method editor in the Android Open Source Project also contains an example of
+    spell checking.
+</p>
\ No newline at end of file
diff --git a/docs/html/guide/topics/ui/accessibility/apps.jd b/docs/html/guide/topics/ui/accessibility/apps.jd
index dc91638..d23512b 100644
--- a/docs/html/guide/topics/ui/accessibility/apps.jd
+++ b/docs/html/guide/topics/ui/accessibility/apps.jd
@@ -328,7 +328,7 @@
   <li>If your application targets Android 4.0 (API level 14) and higher, override and implement the
 accessibility methods listed above directly in your custom view class.</li>
   <li>If your custom view is intended to be compatible with Android 1.6 (API Level 4) and above, add
-the Android <a href="{@docRoot}sdk/compatibility-library.html">Support Library</a>, revision 5 or
+the Android <a href="{@docRoot}tools/extras/support-library.html">Support Library</a>, revision 5 or
 higher, to your project. Then, within your custom view class, call the
 {@link android.support.v4.view.ViewCompat#setAccessibilityDelegate
 ViewCompat.setAccessibilityDelegate()} method to implement the accessibility methods
@@ -467,7 +467,7 @@
 <p>The example code below shows how override these three methods by using
 {@link android.support.v4.view.ViewCompat#setAccessibilityDelegate
 ViewCompat.setAccessibilityDelegate()}. Note that this sample code requires that the Android
-<a href="{@docRoot}sdk/compatibility-library.html">Support Library</a> for API Level 4 (revision 5
+<a href="{@docRoot}tools/extras/support-library.html">Support Library</a> for API Level 4 (revision 5
 or higher) is added to your project.</p>
 
 <pre>
@@ -511,7 +511,7 @@
 
 <p>On applications targeting Android 4.0 (API Level 14) and higher, these methods can be implemented
 directly in your custom view class. For another example of this approach, see the Android
-<a href="{@docRoot}sdk/compatibility-library.html">Support Library</a> (revision 5 or higher) sample
+<a href="{@docRoot}tools/extras/support-library.html">Support Library</a> (revision 5 or higher) sample
 {@code AccessibilityDelegateSupportActivity} in 
 ({@code &lt;sdk&gt;/extras/android/support/v4/samples/Support4Demos/}).</p>
 
@@ -567,7 +567,7 @@
 
 <p>As part of your accessibility testing, you can test navigation of your application using focus,
 even if your test devices does not have a directional controller. The <a
-href="{@docRoot}guide/developing/tools/emulator.html">Android Emulator</a> provides a
+href="{@docRoot}tools/help/emulator.html">Android Emulator</a> provides a
 simulated directional controller that you can easily use to test navigation. You can also use a
 software-based directional controller, such as the one provided by the
 <a href="https://play.google.com/store/apps/details?id=com.googlecode.eyesfree.inputmethod.latin">
diff --git a/docs/html/guide/topics/ui/accessibility/index.jd b/docs/html/guide/topics/ui/accessibility/index.jd
index 414d5f3..6fd71e2 100644
--- a/docs/html/guide/topics/ui/accessibility/index.jd
+++ b/docs/html/guide/topics/ui/accessibility/index.jd
@@ -47,9 +47,9 @@
   <dd>Development practices and API features to ensure your application is accessible to users with
 disabilities.</dd>
 
-  <dt><strong><a href="{@docRoot}guide/topics/ui/accessibility/service.html">Building Accessibility
+  <dt><strong><a href="{@docRoot}guide/topics/ui/accessibility/services.html">Building Accessibility
 Services</a></strong>
   </dt>
   <dd>How to use API features to build services that make other applications more accessible for
 users.</dd>
-</dl>
\ No newline at end of file
+</dl>
diff --git a/docs/html/guide/topics/ui/accessibility/services.jd b/docs/html/guide/topics/ui/accessibility/services.jd
index 0dad4ec..0c1d065 100644
--- a/docs/html/guide/topics/ui/accessibility/services.jd
+++ b/docs/html/guide/topics/ui/accessibility/services.jd
@@ -50,7 +50,7 @@
 Support Library was also updated with the release of Android 4.0 to provide support for these
 enhanced accessibility features back to Android 1.6. Developers aiming for widely compatible
 accessibility services are encouraged to use the
-<a href="{@docRoot}sdk/compatibility-library.html">Support Library</a> and develop for the more
+<a href="{@docRoot}tools/extras/support-library.html">Support Library</a> and develop for the more
 advanced accessibility features introduced in Android 4.0.</p>
 
 
@@ -279,7 +279,7 @@
 accessibility services that are compatible with Android 1.6 (API Level 4) and higher.</li>
   <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/accessibility/TaskBackService.html">TaskBackService</a>
  - This service is based on the enhanced accessibility APIs introduced in Android 4.0 (API Level
-14). However, you can use the Android <a href="{@docRoot}sdk/compatibility-library.html">Support
+14). However, you can use the Android <a href="{@docRoot}tools/extras/support-library.html">Support
 Libary</a> to substitute classes introduced in later API levels (e.g.,
 {@link android.view.accessibility.AccessibilityRecord},
 {@link android.view.accessibility.AccessibilityNodeInfo}
diff --git a/docs/html/guide/topics/ui/actionbar.jd b/docs/html/guide/topics/ui/actionbar.jd
index bf7369a..4842000 100644
--- a/docs/html/guide/topics/ui/actionbar.jd
+++ b/docs/html/guide/topics/ui/actionbar.jd
@@ -6,13 +6,6 @@
 <div id="qv-wrapper">
 <div id="qv">
 
-  <h2>Quickview</h2>
-  <ul>
-    <li>A title bar that includes the application icon and activity title</li>
-    <li>Provides access to menu items and navigation modes such as tabs</li>
-    <li>Requires API level 11 or greater</li>
-  </ul>
-
   <h2>In this document</h2>
 <ol>
   <li><a href="#Adding">Adding the Action Bar</a>
@@ -102,7 +95,7 @@
 
   <li>Provide consistent navigation and view refinement across different applications.
     <p>The action bar provides built-in tab navigation for switching between <a
-href="{@docRoot}guide/topics/fundamentals/fragments.html">fragments</a>. It also offers a drop-down
+href="{@docRoot}guide/components/fragments.html">fragments</a>. It also offers a drop-down
 list you can use as an alternative navigation mode or to refine the current view (such as to sort
 a list by different criteria).</p>
   </li>
@@ -120,7 +113,7 @@
 </li>
 </ul>
 
-<img src="{@docRoot}images/ui/actionbar.png" alt="" />
+<img src="{@docRoot}images/ui/actionbar.png" alt="" width="440" />
 <p class="img-caption"><strong>Figure 1.</strong> Action bar from the <a
 href="{@docRoot}resources/samples/HoneycombGallery/index.html">Honeycomb Gallery</a> app (on a
 landscape handset), showing the logo on the left, navigation tabs, and an action item on the
@@ -510,7 +503,7 @@
 </pre>
 
 <p>For more information about these flags and other back stack behaviors, read the <a
-href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back Stack</a>
+href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back Stack</a>
 developer guide.</p>
 
 <p class="note"><strong>Note:</strong> If you're using the icon to navigate to the home
@@ -955,7 +948,7 @@
 <p>To switch between fragments using the tabs, you must perform a fragment
 transaction each time a tab is selected. If you're not familiar with how to change fragments
 using {@link android.app.FragmentTransaction}, first read the <a
-href="{@docRoot}guide/topics/fundamentals/fragments.html">Fragments</a> developer guide.</p>
+href="{@docRoot}guide/components/fragments.html">Fragments</a> developer guide.</p>
 
 <p>To get started, your layout must include a {@link android.view.ViewGroup} in which you place each
 {@link android.app.Fragment} associated with a tab. Be sure the {@link android.view.ViewGroup} has a
@@ -1092,7 +1085,7 @@
 
 
 <p>If your activity stops, you should retain the currently selected tab with the <a
-href="{@docRoot}guide/topics/fundamentals/activities.html#SavingActivityState">saved instance
+href="{@docRoot}guide/components/activities.html#SavingActivityState">saved instance
 state</a> so you can open the appropriate tab when the user returns. When it's time to save the
 state, you can query the currently selected tab with {@link
 android.app.ActionBar#getSelectedNavigationIndex()}. This returns the index position of the selected
@@ -1101,7 +1094,7 @@
 <p class="caution"><strong>Caution:</strong> It's important that you save the state of each fragment
 as necessary, so that when users switch fragments with the tabs and then return to a previous
 fragment, it looks the way it did when they left. For information about saving the state of your
-fragment, see the <a href="{@docRoot}guide/topics/fundamentals/fragments.html">Fragments</a>
+fragment, see the <a href="{@docRoot}guide/components/fragments.html">Fragments</a>
 developer guide.</p>
 
 
diff --git a/docs/html/guide/topics/ui/binding.jd b/docs/html/guide/topics/ui/binding.jd
index 26364ee..e8b49d5 100644
--- a/docs/html/guide/topics/ui/binding.jd
+++ b/docs/html/guide/topics/ui/binding.jd
@@ -1,4 +1,4 @@
-page.title=Binding to Data with AdapterView
+page.title=AdapterView
 parent.title=User Interface
 parent.link=index.html
 @jd:body
@@ -20,32 +20,7 @@
 </div>
 </div>
 
-<p>The {@link android.widget.AdapterView} is a ViewGroup subclass whose child Views are determined by an {@link android.widget.Adapter Adapter} that 
-binds to data of some type. AdapterView is useful whenever you need to display stored data (as opposed to resource strings or drawables) in your layout.</p>
 
-<p>{@link android.widget.Gallery Gallery}, {@link android.widget.ListView ListView}, and  {@link android.widget.Spinner Spinner} are examples of AdapterView subclasses that you can use to bind to a specific type of data and display it in a certain way. </p>
-
-
-<p>AdapterView objects have two main responsibilities: </p>
-<ul>
-    <li>Filling the layout with data
-    </li>
-    <li>Handling user selections
-    </li>
-</ul>
-
-
-<h2 id="FillingTheLayout">Filling the Layout with Data</h2>
-<p>Inserting data into the layout is typically done by binding the AdapterView class to an {@link
-android.widget.Adapter}, which retrieves data from an external source (perhaps a list that
-the code supplies or query results from the device's database). </p>
-<p>The following code sample does the following:</p>
-<ol>
-  <li>Creates a {@link android.widget.Spinner Spinner} with an existing View and binds it to a new ArrayAdapter
-that reads an array of colors from the local resources.</li>
-  <li>Creates another Spinner object from a View and binds it to a new SimpleCursorAdapter that will read 
-people's names from the device contacts (see {@link android.provider.Contacts.People}).</li>
-</ol>
 
 <pre>
 // Get a Spinner and bind it to an ArrayAdapter that 
diff --git a/docs/html/guide/topics/ui/controls.jd b/docs/html/guide/topics/ui/controls.jd
new file mode 100644
index 0000000..83bb0c8
--- /dev/null
+++ b/docs/html/guide/topics/ui/controls.jd
@@ -0,0 +1,92 @@
+page.title=Input Controls
+parent.title=User Interface
+parent.link=index.html
+@jd:body
+
+<div class="figure" style="margin:0">
+  <img src="{@docRoot}images/ui/ui-controls.png" alt="" style="margin:0" />
+</div>
+
+<p>Input controls are the interactive components in your app's user interface. Android provides a
+wide variety of controls you can use in your UI, such as buttons, text fields, seek bars,
+checkboxes, zoom buttons, toggle buttons, and many more.</p>
+
+<p>Adding an input control to your UI is as simple as adding an XML element to your <a
+href="{@docRoot}guide/topics/ui/declaring-layout.html">XML layout</a>. For example, here's a
+layout with a text field and button:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="horizontal">
+    &lt;EditText android:id="@+id/edit_message"
+        android:layout_weight="1"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:hint="@string/edit_message" />
+    &lt;Button android:id="@+id/button_send"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/button_send"
+        android:onClick="sendMessage" />
+&lt;/LinearLayout>
+</pre>
+
+<p>Each input control supports a specific set of input events so you can handle events such as when
+the user enters text or touches a button.</p>
+
+
+<h2 id="CommonControls">Common Controls</h2>
+<p>Here's a list of some common controls that you can use in your app. Follow the links to learn
+more about using each one.</p>
+
+<p class="note"><strong>Note:</strong> Android provides several more controls than are listed
+here. Browse the {@link android.widget} package to discover more. If your app requires a
+specific kind of input control, you can build your own <a
+href="{@docRoot}guide/topics/ui/custom-components.html">custom components</a>.</p>
+
+<table>
+    <tr>
+        <th scope="col">Control Type</th>
+        <th scope="col">Description</th>
+	<th scope="col">Related Classes</th>
+    </tr>
+    <tr>
+        <td><a href="controls/button.html">Button</a></td>
+        <td>A push-button that can be pressed, or clicked, by the user to perform an action.</td>
+	<td>{@link android.widget.Button Button} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/text.html">Text field</a></td>
+        <td>An editable text field. You can use the <code>AutoCompleteTextView</code> widget to create a text entry widget that provides auto-complete suggestions</td>
+	<td>{@link android.widget.EditText EditText}, {@link android.widget.AutoCompleteTextView}</td>
+    </tr>
+    <tr>
+        <td><a href="controls/checkbox.html">Checkbox</a></td>
+        <td>An on/off switch that can be toggled by the user. You should use checkboxes when presenting users with a group of selectable options that are not mutually exclusive.</td>
+	<td>{@link android.widget.CheckBox CheckBox} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/radiobutton.html">Radio button</a></td>
+        <td>Similar to checkboxes, except that only one option can be selected in the group.</td>
+	<td>{@link android.widget.RadioGroup RadioGroup} 
+	<br>{@link android.widget.RadioButton RadioButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/togglebutton.html" style="white-space:nowrap">Toggle button</a></td>
+        <td>An on/off button with a light indicator.</td>
+	<td>{@link android.widget.ToggleButton ToggleButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/spinner.html">Spinner</a></td>
+        <td>A drop-down list that allows users to select one value from a set.</td>
+	<td>{@link android.widget.Spinner Spinner} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/pickers.html">Pickers</a></td>
+        <td>A dialog for users to select a single value for a set by using up/down buttons or via a swipe gesture. Use a <code>DatePicker</code>code> widget to enter the values for the date (month, day, year) or a <code>TimePicker</code> widget to enter the values for a time (hour, minute, AM/PM), which will be formatted automatically for the user's locale.</td>
+	<td>{@link android.widget.DatePicker}, {@link android.widget.TimePicker}</td>
+    </tr>
+</table>
diff --git a/docs/html/guide/topics/ui/controls/button.jd b/docs/html/guide/topics/ui/controls/button.jd
new file mode 100644
index 0000000..8d48e9c
--- /dev/null
+++ b/docs/html/guide/topics/ui/controls/button.jd
@@ -0,0 +1,245 @@
+page.title=Buttons
+parent.title=Input Controls
+parent.link=../controls.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document</h2>
+<ol>
+  <li><a href="#HandlingEvents">Responding to Click Events</a>
+    <ol>
+      <li><a href="#ClickListener">Using an OnClickListener</a></li>
+    </ol>
+  </li>
+  <li><a href="#Style">Styling Your Button</a>
+    <ol>
+      <li><a href="#Borderless">Borderless button</a></li>
+      <li><a href="#CustomBackground">Custom background</a></li>
+    </ol>
+  </li>
+</ol>
+  <h2>Key classes</h2>
+  <ol>
+    <li>{@link android.widget.Button}</li>
+    <li>{@link android.widget.ImageButton}</li>
+  </ol>
+</div>
+</div>
+
+
+<p>A button consists of text or an icon (or both text and an icon) that communicates what action
+occurs when the user touches it.</p>
+
+<img src="{@docRoot}images/ui/button-types.png" alt="" />
+
+<p>Depending on whether you want a button with text, an icon, or both, you can create the
+button in your layout in three ways:</p>
+<ul>
+  <li>With text, using the {@link android.widget.Button} class:
+<pre>
+&lt;Button
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:text="@string/button_text"
+    ... />
+</pre>
+  </li>
+  <li>With an icon, using the {@link android.widget.ImageButton} class:
+<pre>
+&lt;ImageButton
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:src="@drawable/button_icon"
+    ... />
+</pre>
+  </li>
+  <li>With text and an icon, using the {@link android.widget.Button} class with the <a
+href="{@docRoot}reference/android/widget/TextView.html#attr_android:drawableLeft">{@code
+android:drawableLeft}</a> attribute:
+<pre>
+&lt;Button
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:text="@string/button_text"
+    android:drawableLeft="@drawable/button_icon"
+    ... />
+</pre>
+</li>
+</ul>
+
+<h2 id="HandlingEvents">Responding to Click Events</h2>
+
+<p>When the user clicks a button, the {@link android.widget.Button} object receives
+an on-click event.</p>
+
+<p>To define the click event handler for a button, add the {@link
+android.R.attr#onClick android:onClick} attribute to the {@code &lt;Button&gt;} element in your XML
+layout. The value for this attribute must be the name of the method you want to call in response
+to a click event. The {@link android.app.Activity} hosting the layout must then implement the
+corresponding method.</p>
+
+<p>For example, here's a layout with a button using {@link
+android.R.attr#onClick android:onClick}:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;Button xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/button_send"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:text="@string/button_send"
+    android:onClick="sendMessage" />
+</pre>
+
+<p>Within the {@link android.app.Activity} that hosts this layout, the following method handles
+the click event:</p>
+
+<pre>
+/** Called when the user touches the button */
+public void sendMessage(View view) {
+    // Do something in response to button click
+}
+</pre>
+
+<p>The method you declare in the {@link android.R.attr#onClick android:onClick} attribute must have
+a signature exactly as shown above. Specifically, the method must:</p>
+<ul>
+  <li>Be public</li>
+  <li>Return void</li>
+  <li>Define a {@link android.view.View} as its only parameter (this will be the {@link
+android.view.View} that was clicked)</li>
+</ul>
+
+
+<h3 id="ClickListener">Using an OnClickListener</h3>
+
+<p>You can also declare the click event handler pragmatically rather than in an XML layout. This
+might be necessary if you instantiate the {@link android.widget.Button} at runtime or you need to
+declare the click behavior in a {@link android.app.Fragment} subclass.</p>
+
+<p>To declare the event handler programmatically, create an {@link
+android.view.View.OnClickListener} object and assign it to the button by calling {@link
+android.view.View#setOnClickListener}. For example:</p>
+
+<pre>
+Button button = (Button) findViewById(R.id.button_send);
+button.setOnClickListener(new View.OnClickListener() {
+    public void onClick(View v) {
+        // Do something in response to button click
+    }
+});
+</pre>
+
+
+<h2 id="Style">Styling Your Button</h2>
+
+<p>The appearance of your button (background image and font) may vary from one device to
+another, because devices by different manufacturers often have different default styles for
+input controls.</p>
+
+<p>You can control exactly how your controls are styled using a theme that you apply to your
+entire application. For instance, to ensure that all devices running Android 4.0 and higher use
+the Holo theme in your app, declare {@code android:theme="@android:style/Theme.Holo"} in your
+manifest's {@code &lt;application&gt;} element. Also read the blog post, <a
+href="http://android-developers.blogspot.com/2012/01/holo-everywhere.html">Holo Everywhere</a>
+for information about using the Holo theme while supporting older devices.</p>
+
+<p>To customize individual buttons with a different background, specify the {@link
+android.R.attr#background android:background} attribute with a drawable or color resource.
+Alternatively, you can apply a <em>style</em> for the button, which works in a manner similar to
+HTML styles to define multiple style properties such as the background, font, size, and others.
+For more information about applying styles, see <a
+href="{@docRoot}guide/topics/ui/themes.html">Styles and Themes</a>.</p>
+
+
+<h3 id="Borderless">Borderless button</h3>
+
+<p>One design that can be useful is a "borderless" button. Borderless buttons resemble
+basic buttons except that they have no borders or background but still change appearance during
+different states, such as when clicked.</p>
+
+<p>To create a borderless button, apply the {@link android.R.attr#borderlessButtonStyle}
+style to the button. For example:</p>
+
+<pre>
+&lt;Button
+    android:id="@+id/button_send"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:text="@string/button_send"
+    android:onClick="sendMessage"
+    style="?android:attr/borderlessButtonStyle" />
+</pre>
+
+
+
+<h3 id="CustomBackground">Custom background</h3>
+
+<p>If you want to truly redefine the appearance of your button, you can specify a custom
+background. Instead of supplying a simple bitmap or color, however, your background should be a
+state list resource that changes appearance depending on the button's current state.</p>
+
+<p>You can define the state list in an XML file that defines three different images or colors to use
+for the different button states.</p>
+
+<p>To create a state list drawable for your button background:</p>
+
+<ol>
+  <li>Create three bitmaps for the button background that represent the default, pressed, and
+focused button states.
+    <p>To ensure that your images fit buttons of various sizes, create the bitmaps as <a
+href="{@docRoot}guide/topics/graphics/2d-graphics.html#nine-patch">Nine-patch</a> bitmaps.</p>
+  </li>
+  <li>Place the bitmaps into the <code>res/drawable/</code> directory of
+your project. Be sure each bitmap is named properly to reflect the button state that they each
+represent, such as {@code button_default.9.png}, {@code button_pressed.9.png}, and {@code
+button_focused.9.png}.</li>
+  <li>Create a new XML file in the <code>res/drawable/</code> directory (name it something like
+<code>button_custom.xml</code>). Insert the following XML:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;selector xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;item android:drawable="@drawable/button_pressed"
+          android:state_pressed="true" />
+    &lt;item android:drawable="@drawable/button_focused"
+          android:state_focused="true" />
+    &lt;item android:drawable="@drawable/button_default" />
+&lt;/selector>
+</pre>
+  <p>This defines a single drawable resource, which will change its image based on the current
+state of the button.</p>
+<ul>
+  <li>The first <code>&lt;item></code> defines the bitmap to use when the button is
+pressed (activated).</li>
+  <li>The second <code>&lt;item></code> defines the bitmap to use when the button is
+focused (when the button is highlighted using the trackball or directional
+pad).</li>
+  <li>The third <code>&lt;item></code> defines the bitmap to use when the button is in the 
+default state (it's neither pressed nor focused).</li>
+</ul>
+  <p class="note"><strong>Note:</strong> The order of the <code>&lt;item></code> elements is
+important. When this drawable is referenced, the  <code>&lt;item></code> elements are traversed
+in-order to determine which one is appropriate for the current button state. Because the default
+bitmap is last, it is only applied when the conditions <code>android:state_pressed</code> and
+<code>android:state_focused</code> have both evaluated as false.</p>
+  <p>This XML file now represents a single
+drawable resource and when referenced by a {@link android.widget.Button} for its background,
+the image displayed will change based on these three states.</p>
+</li>
+  <li>Then simply apply the drawable XML file as the button background:
+<pre>
+&lt;Button
+    android:id="@+id/button_send"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:text="@string/button_send"
+    android:onClick="sendMessage"
+    android:background="@drawable/button_custom"  />
+</pre>
+</ol>
+
+  <p>For more information about this XML syntax, including how to define a disabled, hovered, or
+other button states, read about <a
+href="{@docRoot}guide/topics/resources/drawable-resource.html#StateList">State List
+Drawable</a>.</p>
\ No newline at end of file
diff --git a/docs/html/guide/topics/ui/controls/checkbox.jd b/docs/html/guide/topics/ui/controls/checkbox.jd
new file mode 100644
index 0000000..35b8f56
--- /dev/null
+++ b/docs/html/guide/topics/ui/controls/checkbox.jd
@@ -0,0 +1,101 @@
+page.title=Checkboxes
+parent.title=Input Controls
+parent.link=../controls.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document</h2>
+<ol>
+  <li><a href="#HandlingEvents">Responding to Click Events</a></li>
+</ol>
+
+<h2>Key classes</h2>
+<ol>
+  <li>{@link android.widget.CheckBox}</li>
+</ol>
+</div>
+</div>
+
+<p>Checkboxes allow the user to select one or more options from a set. Typically, you should
+present each checkbox option in a vertical list.</p>
+
+<img src="{@docRoot}images/ui/checkboxes.png" alt="" />
+
+<p>To create each checkbox option, create a {@link android.widget.CheckBox} in your layout. Because
+a set of checkbox options allows the user to select multiple items, each checkbox is managed
+separately and you must register a click listener for each one.</p>
+
+<h2 id="HandlingEvents">Responding to Click Events</h2>
+
+<p>When the user selects a checkbox, the {@link android.widget.CheckBox} object receives an
+on-click event.</p>
+
+<p>To define the click event handler for a checkbox, add the <code><a
+href="/reference/android/R.attr.html#onClick">android:onClick</a></code> attribute to the
+<code>&lt;CheckBox&gt;</code> element in your XML
+layout. The value for this attribute must be the name of the method you want to call in response
+to a click event. The {@link android.app.Activity} hosting the layout must then implement the
+corresponding method.</p>
+
+<p>For example, here are a couple {@link android.widget.CheckBox} objects in a list:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent">
+    &lt;CheckBox android:id="&#64;+id/checkbox_meat"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="&#64;string/meat"
+        android:onClick="onCheckboxClicked"/>
+    &lt;CheckBox android:id="&#64;+id/checkbox_cheese"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="&#64;string/cheese"
+        android:onClick="onCheckboxClicked"/>
+&lt;/LinearLayout>
+</pre>
+
+<p>Within the {@link android.app.Activity} that hosts this layout, the following method handles the
+click event for both checkboxes:</p>
+
+<pre>
+public void onCheckboxClicked(View view) {
+    // Is the view now checked?
+    boolean checked = (CheckBox) view).isChecked();
+    
+    // Check which checkbox was clicked
+    switch(view.getId()) {
+        case R.id.checkbox_meat:
+            if (checked)
+                // Put some meat on the sandwich
+            else
+                // Remove the meat
+            break;
+        case R.id.checkbox_cheese:
+            if (checked)
+                // Cheese me
+            else
+                // I'm lactose intolerant
+            break;
+        // TODO: Veggie sandwich
+    }
+}
+</pre>
+
+<p>The method you declare in the {@link android.R.attr#onClick android:onClick} attribute
+must have a signature exactly as shown above. Specifically, the method must:</p>
+<ul>
+  <li>Be public</li>
+  <li>Return void</li>
+  <li>Define a {@link android.view.View} as its only parameter (this will be the {@link
+android.view.View} that was clicked)</li>
+</ul>
+
+<p class="note"><strong>Tip:</strong> If you need to change the radio button state
+yourself (such as when loading a saved {@link android.preference.CheckBoxPreference}),
+use the {@link android.widget.CompoundButton#setChecked(boolean)} or {@link
+android.widget.CompoundButton#toggle()} method.</p>
\ No newline at end of file
diff --git a/docs/html/guide/topics/ui/controls/pickers.jd b/docs/html/guide/topics/ui/controls/pickers.jd
new file mode 100644
index 0000000..cf90f1d
--- /dev/null
+++ b/docs/html/guide/topics/ui/controls/pickers.jd
@@ -0,0 +1,259 @@
+page.title= Pickers
+parent.title=Form Controls
+parent.link=controls-form.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document</h2>
+<ol>
+  <li><a href="#TimePicker">Creating a Time Picker</a>
+    <ol>
+      <li><a href="#TimePickerFragment">Extending DialogFragment for a time picker</a></li>
+      <li><a href="#ShowingTheTimePicker">Showing the time picker</a></li>
+    </ol>
+  </li>
+  <li><a href="#DatePicker">Creating a Date Picker</a>
+    <ol>
+      <li><a href="#DatePickerFragment">Extending DialogFragment for a date picker</a></li>
+      <li><a href="#ShowingTheDatePicker">Showing the date picker</a></li>
+    </ol>
+  </li>
+</ol>
+  <h2>Key classes</h2>
+  <ol>
+    <li>{@link android.app.DatePickerDialog}</li>
+    <li>{@link android.app.TimePickerDialog}</li>
+    <li>{@link android.support.v4.app.DialogFragment}</li>
+  </ol>
+  <h2>See also</h2>
+  <ol>
+    <li><a href="{@docRoot}guide/components/fragments.html">Fragments</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Android provides controls for the user to pick a time or pick a date as ready-to-use dialogs.
+Each picker provides controls for selecting each part of the time (hour, minute, AM/PM) or date
+(month, day, year). Using these pickers helps ensure that your users can pick a time or date that
+is valid, formatted correctly, and adjusted to the user's locale.</p>
+
+<img src="{@docRoot}images/ui/pickers.png" alt="" />
+
+<p>We recommend that you use {@link android.support.v4.app.DialogFragment} to host each time or date
+picker. The {@link android.support.v4.app.DialogFragment} manages the dialog lifecycle for you and
+allows you to display the pickers in different layout configurations,
+such as in a basic dialog on handsets or as an embedded part of the layout on large screens.</p>
+
+<p>Although {@link android.app.DialogFragment} was first added to the platform in Android 3.0 (API
+level 11), if your app supports versions of Android older than 3.0&mdash;even as low as Android
+1.6&mdash;you can use the {@link android.support.v4.app.DialogFragment} class that's available in
+the <a href="{@docRoot}tools/extras/support-library.html">support library</a> for backward
+compatibility.</p>
+
+<p class="note"><strong>Note:</strong> The code samples below show how to create dialogs for a time
+picker and date picker using the <a href="{@docRoot}tools/extras/support-library.html">support
+library</a> APIs for {@link android.support.v4.app.DialogFragment}. If your app's <a
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> is 11 or
+higher, you can instead use the platform version of {@link android.app.DialogFragment}.</p>
+
+
+
+<h2 id="TimePicker">Creating a Time Picker</h2>
+
+<p>To display a {@link android.app.TimePickerDialog} using {@link
+android.support.v4.app.DialogFragment}, you need to define a fragment class that extends {@link
+android.support.v4.app.DialogFragment} and return a {@link android.app.TimePickerDialog} from the
+fragment's {@link android.support.v4.app.DialogFragment#onCreateDialog onCreateDialog()} method.</p>
+
+<p class="note"><strong>Note:</strong> If your app supports versions of Android older than 3.0,
+be sure you've set up your Android project with the support library as described in <a
+href="{@docRoot}tools/extras/support-library.html#SettingUp">Setting Up a Project to Use a
+Library</a>.</p>
+
+<h3 id="TimePickerFragment">Extending DialogFragment for a time picker</h3>
+
+<p>To define a {@link
+android.support.v4.app.DialogFragment} for a {@link android.app.TimePickerDialog}, you
+must:</p>
+<ul>
+  <li>Define the {@link android.support.v4.app.DialogFragment#onCreateDialog onCreateDialog()}
+method to return an instance of {@link android.app.TimePickerDialog}</li>
+  <li>Implement the
+{@link android.app.TimePickerDialog.OnTimeSetListener} interface to receive a callback when the user
+sets the time.</li>
+</ul>
+
+<p>Here's an example:</p>
+
+<pre>
+public static class TimePickerFragment extends DialogFragment
+                            implements TimePickerDialog.OnTimeSetListener {
+
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Use the current time as the default values for the picker
+        final Calendar c = Calendar.getInstance();
+        int hour = c.get(Calendar.HOUR_OF_DAY);
+        int minute = c.get(Calendar.MINUTE);
+
+        // Create a new instance of TimePickerDialog and return it
+        return new TimePickerDialog(getActivity(), this, hour, minute,
+                DateFormat.is24HourFormat(getActivity()));
+    }
+
+    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
+        // Do something with the time chosen by the user
+    }
+}
+</pre>
+
+<p>See the {@link android.app.TimePickerDialog} class for information about the constructor
+arguments.</p>
+
+<p>Now all you need is an event that adds an instance of this fragment to your activity.</p>
+
+
+<h3 id="ShowingTheTimePicker">Showing the time picker</h3>
+
+<p>Once you've defined a {@link android.support.v4.app.DialogFragment} like the one shown above,
+you can display the time picker by creating an instance of the {@link
+android.support.v4.app.DialogFragment} and calling {@link
+android.support.v4.app.DialogFragment#show show()}.</p>
+
+<p>For example, here's a button that, when clicked, calls a method to show the dialog:</p>
+
+<pre>
+&lt;Button 
+    android:layout_width="wrap_content" 
+    android:layout_height="wrap_content"
+    android:text="@string/pick_time" 
+    android:onClick="showTimePickerDialog" />
+</pre>
+
+<p>When the user clicks this button, the system calls the following method:</p>
+  
+<pre>
+public void showTimePickerDialog(View v) {
+    DialogFragment newFragment = new TimePickerFragment();
+    newFragment.show(getSupportFragmentManager(), "timePicker");
+}
+</pre>
+
+<p>This method calls {@link
+android.support.v4.app.DialogFragment#show show()} on a new instance of the {@link
+android.support.v4.app.DialogFragment} defined above. The {@link
+android.support.v4.app.DialogFragment#show show()} method requires an instance of {@link
+android.support.v4.app.FragmentManager} and a unique tag name for the fragment.</p>
+
+<p class="caution"><strong>Caution:</strong> If your app supports versions of Android lower than
+3.0, be sure that you call {@link
+android.support.v4.app.FragmentActivity#getSupportFragmentManager()} to acquire an instance of
+{@link android.support.v4.app.FragmentManager}. Also make sure that your activity that displays the
+time picker extends {@link android.support.v4.app.FragmentActivity} instead of the standard {@link
+android.app.Activity} class.</p>
+
+
+
+
+
+
+
+
+
+<h2 id="DatePicker">Creating a Date Picker</h2>
+
+<p>Creating a {@link android.app.DatePickerDialog} is just like creating a {@link
+android.app.TimePickerDialog}. The only difference is the dialog you create for the fragment.</p>
+
+<p>To display a {@link android.app.DatePickerDialog} using {@link
+android.support.v4.app.DialogFragment}, you need to define a fragment class that extends {@link
+android.support.v4.app.DialogFragment} and return a {@link android.app.DatePickerDialog} from the
+fragment's {@link android.support.v4.app.DialogFragment#onCreateDialog onCreateDialog()} method.</p>
+
+<p class="note"><strong>Note:</strong> If your app supports versions of Android older than 3.0,
+be sure you've set up your Android project with the support library as described in <a
+href="{@docRoot}tools/extras/support-library.html#SettingUp">Setting Up a Project to Use a
+Library</a>.</p>
+
+<h3 id="DatePickerFragment">Extending DialogFragment for a date picker</h3>
+
+<p>To define a {@link
+android.support.v4.app.DialogFragment} for a {@link android.app.DatePickerDialog}, you
+must:</p>
+<ul>
+  <li>Define the {@link android.support.v4.app.DialogFragment#onCreateDialog onCreateDialog()}
+method to return an instance of {@link android.app.DatePickerDialog}</li>
+  <li>Implement the
+{@link android.app.DatePickerDialog.OnDateSetListener} interface to receive a callback when the user
+sets the date.</li>
+</ul>
+
+<p>Here's an example:</p>
+
+<pre>
+public static class DatePickerFragment extends DialogFragment
+                            implements DatePickerDialog.OnDateSetListener {
+
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Use the current date as the default date in the picker
+        final Calendar c = Calendar.getInstance();
+        int year = c.get(Calendar.YEAR);
+        int month = c.get(Calendar.MONTH);
+        int day = c.get(Calendar.DAY_OF_MONTH);
+
+        // Create a new instance of DatePickerDialog and return it
+        return new DatePickerDialog(getActivity(), this, year, month, day);
+    }
+
+    public void onDateSet(DatePicker view, int year, int month, int day) {
+        // Do something with the date chosen by the user
+    }
+}
+</pre>
+
+<p>See the {@link android.app.DatePickerDialog} class for information about the constructor
+arguments.</p>
+
+<p>Now all you need is an event that adds an instance of this fragment to your activity.</p>
+
+
+<h3 id="ShowingTheDatePicker">Showing the date picker</h3>
+
+<p>Once you've defined a {@link android.support.v4.app.DialogFragment} like the one shown above,
+you can display the date picker by creating an instance of the {@link
+android.support.v4.app.DialogFragment} and calling {@link
+android.support.v4.app.DialogFragment#show show()}.</p>
+
+<p>For example, here's a button that, when clicked, calls a method to show the dialog:</p>
+
+<pre>
+&lt;Button 
+    android:layout_width="wrap_content" 
+    android:layout_height="wrap_content"
+    android:text="@string/pick_date" 
+    android:onClick="showDatePickerDialog" />
+</pre>
+
+<p>When the user clicks this button, the system calls the following method:</p>
+  
+<pre>
+public void showDatePickerDialog(View v) {
+    DialogFragment newFragment = new DatePickerFragment();
+    newFragment.show(getSupportFragmentManager(), "datePicker");
+}
+</pre>
+
+<p>This method calls {@link
+android.support.v4.app.DialogFragment#show show()} on a new instance of the {@link
+android.support.v4.app.DialogFragment} defined above. The {@link
+android.support.v4.app.DialogFragment#show show()} method requires an instance of {@link
+android.support.v4.app.FragmentManager} and a unique tag name for the fragment.</p>
+
+<p class="caution"><strong>Caution:</strong> If your app supports versions of Android lower than
+3.0, be sure that you call {@link
+android.support.v4.app.FragmentActivity#getSupportFragmentManager()} to acquire an instance of
+{@link android.support.v4.app.FragmentManager}. Also make sure that your activity that displays the
+time picker extends {@link android.support.v4.app.FragmentActivity} instead of the standard {@link
+android.app.Activity} class.</p>
diff --git a/docs/html/guide/topics/ui/controls/radiobutton.jd b/docs/html/guide/topics/ui/controls/radiobutton.jd
new file mode 100644
index 0000000..f6f6d49
--- /dev/null
+++ b/docs/html/guide/topics/ui/controls/radiobutton.jd
@@ -0,0 +1,103 @@
+page.title=Radio Buttons
+parent.title=Input Controls
+parent.link=../controls.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document</h2>
+<ol>
+  <li><a href="#HandlingEvents">Responding to Click Events</a></li>
+</ol>
+
+<h2>Key classes</h2>
+<ol>
+  <li>{@link android.widget.RadioButton}</li>
+  <li>{@link android.widget.RadioGroup}</li>
+</ol>
+</div>
+</div>
+
+<p>Radio buttons allow the user to select one option from a set. You should use radio buttons for
+optional sets that are mutually exclusive if you think that the user needs to see all available
+options side-by-side. If it's not necessary to show all options side-by-side, use a <a
+href="{@docRoot}guide/topics/ui/controls/spinner.html">spinner</a> instead.</p>
+
+<img src="{@docRoot}images/ui/radiobuttons.png" alt="" />
+
+<p>To create each radio button option, create a {@link android.widget.RadioButton} in your layout.
+However, because radio buttons are mutually exclusive, you must group them together inside a
+{@link android.widget.RadioGroup}. By grouping them together, the system ensures that only one
+radio button can be selected at a time.</p>
+
+<h2 id="HandlingEvents">Responding to Click Events</h2>
+
+<p>When the user selects one of the radio buttons, the corresponding {@link
+android.widget.RadioButton} object receives an on-click event.</p>
+
+<p>To define the click event handler for a button, add the <code><a
+href="/reference/android/R.attr.html#onClick">android:onClick</a></code> attribute to the
+<code>&lt;RadioButton&gt;</code> element in your XML
+layout. The value for this attribute must be the name of the method you want to call in response
+to a click event. The {@link android.app.Activity} hosting the layout must then implement the
+corresponding method.</p>
+
+<p>For example, here are a couple {@link android.widget.RadioButton} objects:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+    &lt;RadioButton android:id="@+id/radio_pirates"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/pirates"
+        android:onClick="onRadioButtonClicked"/>
+    &lt;RadioButton android:id="@+id/radio_ninjas"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/ninjas"
+        android:onClick="onRadioButtonClicked"/>
+&lt;/RadioGroup>
+</pre>
+
+<p class="note"><strong>Note:</strong> The {@link android.widget.RadioGroup} is a subclass of
+{@link android.widget.LinearLayout} that has a vertical orientation by default.</p>
+
+<p>Within the {@link android.app.Activity} that hosts this layout, the following method handles the
+click event for both radio buttons:</p>
+
+<pre>
+public void onRadioButtonClicked(View view) {
+    // Is the button now checked?
+    boolean checked = (RadioButton) view).isChecked();
+    
+    // Check which radio button was clicked
+    switch(view.getId()) {
+        case R.id.radio_pirates:
+            if (checked)
+                // Pirates are the best
+            break;
+        case R.id.radio_ninjas:
+            if (checked)
+                // Ninjas rule
+            break;
+    }
+}
+</pre>
+
+<p>The method you declare in the {@link android.R.attr#onClick android:onClick} attribute
+must have a signature exactly as shown above. Specifically, the method must:</p>
+<ul>
+  <li>Be public</li>
+  <li>Return void</li>
+  <li>Define a {@link android.view.View} as its only parameter (this will be the {@link
+android.view.View} that was clicked)</li>
+</ul>
+
+<p class="note"><strong>Tip:</strong> If you need to change the radio button state
+yourself (such as when loading a saved {@link android.preference.CheckBoxPreference}),
+use the {@link android.widget.CompoundButton#setChecked(boolean)} or {@link
+android.widget.CompoundButton#toggle()} method.</p>
diff --git a/docs/html/guide/topics/ui/controls/spinner.jd b/docs/html/guide/topics/ui/controls/spinner.jd
new file mode 100644
index 0000000..deba3e6
--- /dev/null
+++ b/docs/html/guide/topics/ui/controls/spinner.jd
@@ -0,0 +1,147 @@
+page.title= Spinners
+parent.title=Input Controls
+parent.link=../controls.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  
+<h2>In this document</h2>
+<ol>
+  <li><a href="#Populate">Populate the Spinner with User Choices</a></li>
+  <li><a href="#SelectListener">Responding to User Selections</a></li>
+</ol>
+<h2>Key classes</h2>
+<ol>
+  <li>{@link android.widget.Spinner}</li>
+  <li>{@link android.widget.SpinnerAdapter}</li>
+  <li>{@link android.widget.AdapterView.OnItemSelectedListener}</li>
+</ol>
+
+</div>
+</div>
+
+<p>Spinners provide a quick way to select one value from a set. In the default state, a spinner
+shows its currently selected value. Touching the spinner displays a dropdown menu with all other
+available values, from which the user can select a new one.</p>
+
+<img src="{@docRoot}images/ui/spinner.png" alt="" />
+
+<p>You can add a spinner to your layout with the {@link android.widget.Spinner} object. You
+should usually do so in your XML layout with a {@code &lt;Spinner&gt;} element. For example:</p>
+
+<pre>
+&lt;Spinner
+    android:id="@+id/planets_spinner"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content" />
+</pre>
+
+<p>To populate the spinner with a list of choices, you then need to specify a {@link
+android.widget.SpinnerAdapter} in your {@link android.app.Activity} or {@link android.app.Fragment}
+source code.</p>
+
+<h2 id="Populate">Populate the Spinner with User Choices</h2>
+
+<p>The choices you provide for the spinner can come from any source, but must be provided through
+an {@link android.widget.SpinnerAdapter}, such as an {@link android.widget.ArrayAdapter} if the
+choices are available in an array or a {@link android.widget.CursorAdapter} if the choices are
+available from a database query.</p>
+
+<p>For instance, if the available choices for your spinner are pre-determined, you can provide
+them with a string array defined in a <a
+href="{@docRoot}guide/topics/resources/string-resource.html">string
+resource file</a>:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;string-array name="planets_array">
+        &lt;item>Mercury&lt;/item>
+        &lt;item>Venus&lt;/item>
+        &lt;item>Earth&lt;/item>
+        &lt;item>Mars&lt;/item>
+        &lt;item>Jupiter&lt;/item>
+        &lt;item>Saturn&lt;/item>
+        &lt;item>Uranus&lt;/item>
+        &lt;item>Neptune&lt;/item>
+    &lt;/string-array>
+&lt;/resources>
+</pre>
+
+  <p>With an array such as this one, you can use the following code in your {@link
+android.app.Activity} or {@link android.app.Fragment} to supply the spinner with the array using
+an instance of {@link android.widget.ArrayAdapter}:
+
+<pre>
+Spinner spinner = (Spinner) findViewById(R.id.spinner);
+// Create an ArrayAdapter using the string array and a default spinner layout
+ArrayAdapter&lt;CharSequence> adapter = ArrayAdapter.createFromResource(this,
+        R.array.planets_array, android.R.layout.simple_spinner_item);
+// Specify the layout to use when the list of choices appears
+adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+// Apply the adapter to the spinner
+spinner.setAdapter(adapter);
+</pre>
+
+<p>The {@link
+android.widget.ArrayAdapter#createFromResource(Context,int,int) createFromResource()} method allows
+you to create an {@link  android.widget.ArrayAdapter} from the string array. The third argument for
+this method is a layout resource that defines how the selected choice appears in the
+spinner control. The {@link android.R.layout#simple_spinner_item} layout is provided by the
+platform and is the default layout you should use unless you'd like to define your own layout
+for the spinner's appearance.</p>
+
+<p>You should then call {@link android.widget.ArrayAdapter#setDropDownViewResource(int)} to specify
+the layout the adapter should use to display the list of spinner choices ({@link
+android.R.layout#simple_spinner_dropdown_item} is another standard layout defined by the
+platform).</p>
+
+<p>Call {@link android.widget.AdapterView#setAdapter setAdapter()} to apply the adapter to your
+{@link android.widget.Spinner}.</p>
+
+
+<h2 id="SelectListener">Responding to User Selections</h2>
+
+<p>When the user selects an item from the drop-down, the {@link android.widget.Spinner} object
+receives an on-item-selected event.</p>
+
+<p>To define the selection event handler for a spinner, implement the {@link
+android.widget.AdapterView.OnItemSelectedListener} interface and the corresponding {@link
+android.widget.AdapterView.OnItemSelectedListener#onItemSelected onItemSelected()} callback method.
+For example, here's an implementation of the interface in an {@link android.app.Activity}:</p>
+
+<pre>
+public class SpinnerActivity extends Activity implements OnItemSelectedListener {
+    ...
+    
+    public void onItemSelected(AdapterView&lt;?> parent, View view, 
+            int pos, long id) {
+        // An item was selected. You can retrieve the selected item using
+        // parent.getItemAtPosition(pos)
+    }
+
+    public void onNothingSelected(AdapterView&lt;?> parent) {
+        // Another interface callback
+    }
+}
+</pre>
+
+<p>The {@link android.widget.AdapterView.OnItemSelectedListener} requires the {@link
+android.widget.AdapterView.OnItemSelectedListener#onItemSelected(AdapterView,View,int,long)
+onItemSelected()} and {@link
+android.widget.AdapterView.OnItemSelectedListener#onNothingSelected(AdapterView)
+onNothingSelected()} callback methods.</p>
+
+<p>Then you need to specify the interface implementation by calling {@link
+android.widget.AdapterView#setOnItemSelectedListener setOnItemSelectedListener()}:</p>
+
+<pre>
+Spinner spinner = (Spinner) findViewById(R.id.spinner);
+spinner.setOnItemSelectedListener(this);
+</pre>
+
+<p>If you implement the {@link
+android.widget.AdapterView.OnItemSelectedListener} interface with your {@link
+android.app.Activity} or {@link android.app.Fragment} (such as in the example above), you can pass
+<code>this</code> as the interface instance.</p>
\ No newline at end of file
diff --git a/docs/html/guide/topics/ui/controls/text.jd b/docs/html/guide/topics/ui/controls/text.jd
new file mode 100644
index 0000000..2d9d215
--- /dev/null
+++ b/docs/html/guide/topics/ui/controls/text.jd
@@ -0,0 +1,306 @@
+page.title=Text Fields
+parent.title=Input Controls
+parent.link=../controls.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  
+<h2>In this document</h2>
+<ol>
+  <li><a href="#Keyboard">Specifying the Keyboard Type</a>
+    <ol>
+      <li><a href="#Behaviors">Controlling other behaviors</a></li>
+    </ol>
+  </li>
+  <li><a href="#Actions">Specifying Keyboard Actions</a>
+    <ol>
+      <li><a href="#ActionEvent">Responding to action button events</a></li>
+      <li><a href="#ActionLabel">Setting a custom action button label</a></li>
+    </ol>
+  </li>
+  <li><a href="#Flags">Adding Other Keyboard Flags</a></li>
+  <li><a href="#AutoComplete">Providing Auto-complete Suggestions</a></li>
+</ol>
+<h2>Key classes</h2>
+<ol>
+  <li>{@link android.widget.EditText}</li>
+  <li>{@link android.widget.AutoCompleteTextView}</li>
+</ol>
+
+</div>
+</div>
+
+<p>A text field allows the user to type text into your app. It can be either single line or
+multi-line. Touching a text field places the cursor and automatically displays the keyboard. In
+addition to typing, text fields allow for a variety of other activities, such as text selection
+(cut, copy, paste) and data look-up via auto-completion.</p>
+
+<p>You can add a text field to you layout with the {@link android.widget.EditText} object. You
+should usually do so in your XML layout with a {@code &lt;EditText&gt;} element.</p>
+
+<img src="{@docRoot}images/ui/edittext-noextract.png" alt="" />
+
+
+
+<h2 id="Keyboard">Specifying the Keyboard Type</h2>
+
+<div class="figure" style="width:300px;margin-top:0">
+<img src="{@docRoot}images/ui/edittext-text.png" alt="" />
+<p class="img-caption"><strong>Figure 1.</strong> The default {@code text} input type.</p>
+</div>
+
+<div class="figure" style="width:300px">
+<img src="{@docRoot}images/ui/edittext-email.png" alt="" />
+<p class="img-caption"><strong>Figure 2.</strong> The {@code textEmailAddress} input type.</p>
+</div>
+
+<div class="figure" style="width:300px">
+<img src="{@docRoot}images/ui/edittext-phone.png" alt="" />
+<p class="img-caption"><strong>Figure 3.</strong> The {@code phone} input type.</p>
+</div>
+
+<p>Text fields can have different input types, such as number, date, password, or email address. The
+type determines what kind of characters are allowed inside the field, and may prompt the virtual
+keyboard to optimize its layout for frequently used characters.</p>
+
+<p>You can specify the type of keyboard you want for your {@link android.widget.EditText} object
+with the <a href="{@docRoot}reference/android/widget/TextView.html#attr_android:inputType">{@code
+android:inputType}</a> attribute. For example, if you want the user to input an email address, you
+should use the {@code textEmailAddress} input type:</p>
+
+<pre>
+&lt;EditText
+    android:id="&#64;+id/email_address"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:hint="&#64;string/email_hint"
+    android:inputType="textEmailAddress" />
+</pre>
+
+
+<p>There are several different input types available for different situations. You can find
+them all listed with the documentation for <a
+href="{@docRoot}reference/android/widget/TextView.html#attr_android:inputType">{@code
+android:inputType}</a>.</p>
+
+<p class="note"><strong>Tip:</strong> To allow users to input long strings of text with line
+breaks, use the {@code "textMultiLine"} input type. By default, an {@link android.widget.EditText}
+object is restricted to one line of text and scrolls horizontally when the text exceeds the
+available width.</p>
+
+
+<h3 id="Behaviors">Controlling other behaviors</h3>
+
+<p>The <a href="{@docRoot}reference/android/widget/TextView.html#attr_android:inputType">{@code
+android:inputType}</a> also allows you to specify certain keyboard behaviors, such as whether to
+capitalize all new words or use features like auto-complete and spelling suggestions.</p>
+
+<p>The <a href="{@docRoot}reference/android/widget/TextView.html#attr_android:inputType">{@code
+android:inputType}</a> attribute allows bitwise combinations so you can specify both a keyboard
+layout and one or more behaviors at once. For example, here's how you can collect a postal
+address, capitalize each word, and disable text suggestions:</p>
+
+<pre>
+&lt;EditText
+    android:id="@+id/postal_address"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:hint="&#64;string/postal_address_hint"
+    android:inputType="textPostalAddress|
+                       textCapWords|
+                       textNoSuggestions" />
+</pre>
+
+<p>All behaviors are also listed with the <a
+href="{@docRoot}reference/android/widget/TextView.html#attr_android:inputType">{@code
+android:inputType}</a> documentation.</p>
+
+
+<h2 id="Actions">Specifying Keyboard Actions</h2>
+
+<div class="figure" style="width:300px">
+<img src="{@docRoot}images/ui/edittext-actionsend.png" alt="" />
+<p class="img-caption"><strong>Figure 4.</strong> If you declare {@code
+android:imeOptions="actionSend"}, the keyboard includes the Send action.</p>
+</div>
+
+<p>In addition to changing the keyboard's input type, Android allows you to specify an action to be
+made when users have completed their input. The action specifies the button that appears in place of
+the carriage return key and the action to be made, such as "Search" or "Send."</p>
+
+<p>You can specify the action by setting the <a
+href="{@docRoot}reference/android/widget/TextView.html#attr_android:imeOptions">{@code
+android:imeOptions}</a> attribute. For example, here's how you can specify the Send action:</p>
+
+<pre>
+&lt;EditText
+    android:id="@+id/search"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:hint="@string/search_hint"
+    android:inputType="text"
+    android:imeOptions="actionSend" />
+</pre>
+
+<p>If you do not explicitly specify an input action then the system attempts to determine if there
+are any subsequent <a
+href="{@docRoot}reference/android/view/View.html#attr_android:focusable">{@code
+android:focusable}</a> fields. If any focusable fields are found following this one, the system
+applies the (@code actionNext} action to the current {@link android.widget.EditText} so the user can
+select Next to move to the next field. If there's no subsequent focusable field, the system applies
+the {@code "actionDone"} action. You can override this by setting the <a
+href="{@docRoot}reference/android/widget/TextView.html#attr_android:imeOptions">{@code
+android:imeOptions}</a> attribute to any other value such as {@code "actionSend"} or {@code
+"actionSearch"} or suppress the default behavior by using the {@code "actionNone"} action.</p>
+
+
+<h3 id="ActionEvent">Responding to action button events</h3>
+
+<p>If you have specified a keyboard action for the input method using <a
+href="{@docRoot}reference/android/widget/TextView.html#attr_android:imeOptions">{@code
+android:imeOptions}</a> attribute (such as {@code "actionSend"}), you can listen for the specific
+action event using an {@link android.widget.TextView.OnEditorActionListener}. The {@link
+android.widget.TextView.OnEditorActionListener} interface provides a callback method called {@link
+android.widget.TextView.OnEditorActionListener#onEditorAction onEditorAction()} that indicates the
+action type invoked with an action ID such as {@link
+android.view.inputmethod.EditorInfo#IME_ACTION_SEND} or {@link
+android.view.inputmethod.EditorInfo#IME_ACTION_SEARCH}.</p>
+
+<p>For example, here's how you can listen for when the user clicks the Send button on the
+keyboard:</p>
+
+<pre>
+EditText editText = (EditText) findViewById(R.id.search);
+editText.setOnEditorActionListener(new OnEditorActionListener() {
+    &#64;Override
+    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+        boolean handled = false;
+        if (actionId == EditorInfo.IME_ACTION_SEND) {
+            // Send the user message
+            handled = true;
+        }
+        return handled;
+    }
+});
+</pre>
+
+
+<h3 id="ActionLabel">Setting a custom action button label</h3>
+
+<p>If the keyboard is too large to reasonably share space with the underlying application (such as
+when a handset device is in landscape orientation) then fullscreen ("extract mode") is triggered. In
+this mode, a labeled action button is displayed next to the input. You can customize the text of
+this button by setting the <a
+href="{@docRoot}reference/android/widget/TextView.html#attr_android:imeActionLabel">{@code
+android:imeActionLabel}</a> attribute:</p>
+
+<pre>
+&lt;EditText
+    android:id="&#64;+id/launch_codes"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:hint="&#64;string/enter_launch_codes"
+    android:inputType="number"
+    android:imeActionLabel="&#64;string/launch" />
+</pre>
+
+<img src="{@docRoot}images/ui/edittext-actionlabel.png" alt="" />
+<p class="img-caption"><strong>Figure 5.</strong> A custom action label with <a
+href="{@docRoot}reference/android/widget/TextView.html#attr_android:imeActionLabel">{@code
+android:imeActionLabel}</a>.</p>
+
+
+
+<h2 id="Flags">Adding Other Keyboard Flags</h2>
+
+<p>In addition to the actions you can specify with the <a
+href="{@docRoot}reference/android/widget/TextView.html#attr_android:imeOptions">{@code
+android:imeOptions}</a> attribute, you can add additional flags to specify other keyboard
+behaviors. All available flags are listed along with the actions in the <a
+href="{@docRoot}reference/android/widget/TextView.html#attr_android:imeOptions">{@code
+android:imeOptions}</a> documentation.</p>
+
+<p>For example, figure 5 shows how the system enables a fullscreen text field when a handset device
+is in landscape orientation (or the screen space is otherwise constrained for space). You can
+disable the fullscreen input mode with {@code flagNoExtractUi} in the <a
+href="{@docRoot}reference/android/widget/TextView.html#attr_android:imeOptions">{@code
+android:imeOptions}</a> attribute, as shown in figure 6.</p>
+
+<img src="{@docRoot}images/ui/edittext-noextract.png" alt="" />
+<p class="img-caption"><strong>Figure 6.</strong> The fullscreen text field ("extract mode") is
+disabled with {@code android:imeOptions="flagNoExtractUi"}.</p>
+
+
+
+
+<h2 id="AutoComplete">Providing Auto-complete Suggestions</h2>
+
+<p>If you want to provide suggestions to users as they type, you can use a subclass of {@link
+android.widget.EditText} called {@link android.widget.AutoCompleteTextView}. To implement
+auto-complete, you must specify an (@link android.widget.Adapter) that provides the text
+suggestions. There are several kinds of adapters available, depending on where the data is coming
+from, such as from a database or an array.</p>
+
+<img src="{@docRoot}images/ui/edittext-autocomplete.png" alt="" />
+<p class="img-caption"><strong>Figure 7.</strong> Example of {@link
+android.widget.AutoCompleteTextView} with text suggestions.</p>
+
+<p>The following procedure describes how to set up an {@link android.widget.AutoCompleteTextView}
+that provides suggestions from an array, using {@link android.widget.ArrayAdapter}:
+
+<ol>
+  <li>Add the {@link android.widget.AutoCompleteTextView} to your layout. Here's a
+layout with only the text field:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android" 
+    android:id="&#64;+id/autocomplete_country"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content" />
+</pre>
+</li>
+
+<li>Define the array that contains all text suggestions. For example, here's an array of country
+names that's defined in an XML resource file ({@code res/values/strings.xml}):
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;string-array name="countries_array">
+        &lt;item>Afghanistan&lt;/item>
+        &lt;item>Albania&lt;/item>
+        &lt;item>Algeria&lt;/item>
+        &lt;item>American Samoa&lt;/item>
+        &lt;item>Andorra&lt;/item>
+        &lt;item>Angola&lt;/item>
+        &lt;item>Anguilla&lt;/item>
+        &lt;item>Antarctica&lt;/item>
+        ...
+    &lt;/string-array>
+&lt;/resources>
+</pre>
+</li>
+
+<li>In your {@link android.app.Activity} or {@link android.app.Fragment}, use the following
+code to specify the adapter that supplies the suggestions:
+<pre>
+// Get a reference to the AutoCompleteTextView in the layout
+AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country);
+// Get the string array
+String[] countries = getResources().getStringArray(R.array.countries_array);
+// Create the adapter and set it to the AutoCompleteTextView 
+ArrayAdapter&lt;String> adapter = 
+        new ArrayAdapter&lt;String>(this, android.R.layout.simple_list_item_1, countries);
+textView.setAdapter(adapter);
+</pre>
+
+<p>Here, a new {@link
+android.widget.ArrayAdapter} is initialized to bind each item in the <code>COUNTRIES</code>
+string array to a {@link android.widget.TextView} that exists in the {@code simple_list_item_1}
+layout (this is a layout provided by Android that provides a standard appearance for text in a
+list).</p>
+<p>Then assign the adapter to the {@link android.widget.AutoCompleteTextView} by
+calling {@link android.widget.AutoCompleteTextView#setAdapter setAdapter()}.</p>
+</li>
+</ol>
+
diff --git a/docs/html/guide/topics/ui/controls/togglebutton.jd b/docs/html/guide/topics/ui/controls/togglebutton.jd
new file mode 100644
index 0000000..dd7634b
--- /dev/null
+++ b/docs/html/guide/topics/ui/controls/togglebutton.jd
@@ -0,0 +1,124 @@
+page.title=Toggle Buttons
+parent.title=Input Controls
+parent.link=../controls.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document</h2>
+<ol>
+  <li><a href="#HandlingEvents">Responding to Click Events</a>
+    <ol>
+      <li><a href="#ClickListener">Using an OnCheckedChangeListener</a></li>
+    </ol>
+  </li>
+</ol>
+  <h2>Key classes</h2>
+  <ol>
+    <li>{@link android.widget.ToggleButton}</li>
+    <li>{@link android.widget.Switch}</li>
+  </ol>
+</div>
+</div>
+
+<p>A toggle button allows the user to change a setting between two states.</p>
+
+<p>You can add a basic toggle button to your layout with the {@link android.widget.ToggleButton}
+object. Android 4.0 (API level 14) introduces another kind of toggle button called a switch that
+provides a slider control, which you can add with a {@link android.widget.Switch} object.</p>
+
+<div style="float:left;width:200px">
+<img src="{@docRoot}images/ui/togglebutton.png" alt="" />
+<p class="img-caption"><em>Toggle buttons</em></p>
+</div>
+
+<div style="float:left;width:200px;margin-top:24px">
+<img src="{@docRoot}images/ui/switch.png" alt="" />
+<p class="img-caption"><em>Switches (in Android 4.0+)</em></p>
+</div>
+
+<p style="clear:left">The {@link android.widget.ToggleButton} and {@link android.widget.Switch}
+controls are subclasses of {@link android.widget.CompoundButton} and function in the same manner, so
+you can implement their behavior the same way.</p>
+
+<h2 id="HandlingEvents">Responding to Click Events</h2>
+
+<p>When the user selects a {@link android.widget.ToggleButton} and {@link android.widget.Switch},
+the object receives an on-click event.</p>
+
+<p>To define the click event handler, add the <code><a
+href="/reference/android/R.attr.html#onClick">android:onClick</a></code> attribute to the
+<code>&lt;ToggleButton&gt;</code> or <code>&lt;Switch&gt;</code> element in your XML
+layout. The value for this attribute must be the name of the method you want to call in response
+to a click event. The {@link android.app.Activity} hosting the layout must then implement the
+corresponding method.</p>
+
+<p>For example, here's a {@link android.widget.ToggleButton} with the <code><a
+href="/reference/android/R.attr.html#onClick">android:onClick</a></code> attribute:</p>
+
+<pre>
+&lt;ToggleButton 
+    android:id="@+id/togglebutton"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:textOn="Vibrate on"
+    android:textOff="Vibrate off"
+    android:onClick="onToggleClicked"/>
+</pre>
+
+<p>Within the {@link android.app.Activity} that hosts this layout, the following method handles the
+click event:</p>
+
+<pre>
+public void onToggleClicked(View view) {
+    // Is the toggle on?
+    boolean on = ((ToggleButton) view).isChecked();
+    
+    if (on) {
+        // Enable vibrate
+    } else {
+        // Disable vibrate
+    }
+}
+</pre>
+
+<p>The method you declare in the {@link android.R.attr#onClick android:onClick} attribute
+must have a signature exactly as shown above. Specifically, the method must:</p>
+<ul>
+  <li>Be public</li>
+  <li>Return void</li>
+  <li>Define a {@link android.view.View} as its only parameter (this will be the {@link
+android.view.View} that was clicked)</li>
+</ul>
+
+<p class="note"><strong>Tip:</strong> If you need to change the state
+yourself,
+use the {@link android.widget.CompoundButton#setChecked(boolean)} or {@link
+android.widget.CompoundButton#toggle()} method to change the state.</p>
+
+
+
+<h3 id="ClickListener">Using an OnCheckedChangeListener</h3>
+
+<p>You can also declare a click event handler pragmatically rather than in an XML layout. This
+might be necessary if you instantiate the {@link android.widget.ToggleButton} or {@link
+android.widget.Switch} at runtime or you need to
+declare the click behavior in a {@link android.app.Fragment} subclass.</p>
+
+<p>To declare the event handler programmatically, create an {@link
+android.widget.CompoundButton.OnCheckedChangeListener} object and assign it to the button by calling
+{@link
+android.widget.CompoundButton#setOnCheckedChangeListener}. For example:</p>
+
+<pre>
+ToggleButton toggle = (ToggleButton) findViewById(R.id.togglebutton);
+toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+        if (isChecked) {
+            // The toggle is enabled
+        } else {
+            // The toggle is disabled
+        }
+    }
+});
+</pre>
diff --git a/docs/html/guide/topics/ui/declaring-layout.jd b/docs/html/guide/topics/ui/declaring-layout.jd
index 8af4a1c..3c9faa8 100644
--- a/docs/html/guide/topics/ui/declaring-layout.jd
+++ b/docs/html/guide/topics/ui/declaring-layout.jd
@@ -1,4 +1,4 @@
-page.title=XML Layouts
+page.title=Layouts
 parent.title=User Interface
 parent.link=index.html
 @jd:body
@@ -6,18 +6,25 @@
 <div id="qv-wrapper">
 <div id="qv">
   <h2>In this document</h2>
-  <ol>
-    <li><a href="#write">Write the XML</a></li>
-    <li><a href="#load">Load the XML Resource</a></li>
-    <li><a href="#attributes">Attributes</a>
-      <ol>
-        <li><a href="#id">ID</a></li>
-        <li><a href="#layout-params">Layout Parameters</a></li>
-      </ol>
-    </li>
-    <li><a href="#Position">Position</a></li>
-    <li><a href="#SizePaddingMargins">Size, Padding and Margins</a></li>
-  </ol>
+<ol>
+  <li><a href="#write">Write the XML</a></li>
+  <li><a href="#load">Load the XML Resource</a></li>
+  <li><a href="#attributes">Attributes</a>
+    <ol>
+      <li><a href="#id">ID</a></li>
+      <li><a href="#layout-params">Layout Parameters</a></li>
+    </ol>
+  </li>
+  <li><a href="#Position">Layout Position</a></li>
+  <li><a href="#SizePaddingMargins">Size, Padding and Margins</a></li>
+  <li><a href="#CommonLayouts">Common Layouts</a></li>
+  <li><a href="#AdapterViews">Building Layouts with an Adapter</a>
+    <ol>
+      <li><a href="#FillingTheLayout">Filling an adapter view with data</a></li>
+      <li><a href="#HandlingUserSelections">Handling click events</a></li>
+    </ol>
+  </li>
+</ol>
 
   <h2>Key classes</h2>
   <ol>
@@ -43,15 +50,15 @@
 <div class="sidebox-wrapper">
 <div class="sidebox">
   <ul>
-  <li>The <a href="{@docRoot}sdk/eclipse-adt.html">ADT
+  <li>The <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT
   Plugin for Eclipse</a> offers a layout preview of your XML &mdash; 
   with the XML file opened, select the <strong>Layout</strong> tab.</li>
   <li>You should also try the 
-  <a href="{@docRoot}guide/developing/debugging/debugging-ui.html#hierarchyViewer">Hierarchy Viewer</a> tool, 
+  <a href="{@docRoot}tools/debugging/debugging-ui.html#hierarchyViewer">Hierarchy Viewer</a> tool, 
   for debugging layouts &mdash; it reveals layout property values, 
   draws wireframes with padding/margin indicators, and full rendered views while 
   you debug on the emulator or device.</li>
-  <li>The <a href="{@docRoot}guide/developing/debugging/debugging-ui.html#layoutopt">layoutopt</a> tool lets
+  <li>The <a href="{@docRoot}tools/debugging/debugging-ui.html#layoutopt">layoutopt</a> tool lets
   you quickly analyze your layouts and hierarchies for inefficiencies or other problems.</li>
 </div>
 </div>
@@ -125,7 +132,7 @@
 
 <p>The <code>onCreate()</code> callback method in your Activity is called by the Android framework when
 your Activity is launched (see the discussion about lifecycles, in the 
-<a href="{@docRoot}guide/topics/fundamentals/activities.html#Lifecycle">Activities</a>
+<a href="{@docRoot}guide/components/activities.html#Lifecycle">Activities</a>
 document).</p>
 
 
@@ -300,5 +307,213 @@
    </p>
    
 
+   
+   
+
+
+<style type="text/css">
+div.layout {
+  float:left;
+  width:200px;
+  margin:0 0 20px 20px;
+}
+div.layout.first {
+  margin-left:0;
+  clear:left;
+}
+</style>
+
+
+
+
+<h2 id="CommonLayouts">Common Layouts</h2>
+
+<p>Each subclass of the {@link android.view.ViewGroup} class provides a unique way to display
+the views you nest within it. Below are some of the more common layout types that are built
+into the Android platform.</p>
+
+<p class="note"><strong>Note:</strong> Although you can nest one or more layouts within another
+layout to acheive your UI design, you should strive to keep your layout hierarchy as shallow as
+possible. Your layout draws faster if it has fewer nested layouts (a wide view hierarchy is
+better than a deep view hierarchy).</p>
+
+<!-- 
+<h2 id="framelayout">FrameLayout</h2>
+<p>{@link android.widget.FrameLayout FrameLayout} is the simplest type of layout
+object. It's basically a blank space on your screen that you can
+later fill with a single object &mdash; for example, a picture that you'll swap in and out.
+All child elements of the FrameLayout are pinned to the top left corner of the screen; you cannot
+specify a different location for a child view. Subsequent child views will simply be drawn over
+previous ones,
+partially or totally obscuring them (unless the newer object is transparent).
+</p>
+-->
+
+
+<div class="layout first">
+  <h4><a href="layout/linear.html">Linear Layout</a></h4>
+  <a href="layout/linear.html"><img src="{@docRoot}images/ui/linearlayout-small.png" alt="" /></a>
+  <p>A layout that organizes its children into a single horizontal or vertical row. It
+  creates a scrollbar if the length of the window exceeds the length of the screen.</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/relative.html">Relative Layout</a></h4>
+  <a href="layout/relative.html"><img src="{@docRoot}images/ui/relativelayout-small.png" alt=""
+/></a>
+  <p>Enables you to specify the location of child objects relative to each other (child A to
+the left of child B) or to the parent (aligned to the top of the parent).</p>
+</div>
+      
+<!--
+<div class="layout">
+  <h4><a href="layout/tabs.html">Tabs</a></h4>
+  <a href="layout/tabs.html"><img src="{@docRoot}images/ui/tabs-small.png" alt="" /></a>
+  <p>Provides a tab selection list that monitors clicks and enables the application to change
+the screen whenever a tab is clicked.</p>
+</div>
+      
+<div class="layout first">
+  <h4><a href="layout/grid.html">Table Layout</a></h4>
+  <a href="layout/table.html"><img src="{@docRoot}images/ui/gridlayout-small.png" alt="" /></a>
+  <p>A tabular layout with an arbitrary number of rows and columns, each cell holding the
+widget of your choice. The rows resize to fit the largest column. The cell borders are not
+visible.</p>
+</div>
+-->
+
+<div class="layout">
+  <h4><a href="{@docRoot}guide/webapps/webview.html">Web View</a></h4>
+  <a href="{@docRoot}guide/webapps/webview.html"><img src="{@docRoot}images/ui/webview-small.png"
+alt="" /></a>
+  <p>Displays web pages.</p>
+</div>
+
+
+
+
+<h2 id="AdapterViews" style="clear:left">Building Layouts with an Adapter</h2>
+
+<p>When the content for your layout is dynamic or not pre-determined, you can use a layout that
+subclasses {@link android.widget.AdapterView} to populate the layout with views at runtime. A
+subclass of the {@link android.widget.AdapterView} class uses an {@link android.widget.Adapter} to
+bind data to its layout. The {@link android.widget.Adapter} behaves as a middle-man between the data
+source and the {@link android.widget.AdapterView} layout&mdash;the {@link android.widget.Adapter}
+retreives the data (from a source such as an array or a database query) and converts each entry
+into a view that can be added into the {@link android.widget.AdapterView} layout.</p>
+
+<p>Common layouts backed by an adapter include:</p>
+
+<div class="layout first">
+  <h4><a href="layout/listview.html">List View</a></h4>
+  <a href="layout/list.html"><img src="{@docRoot}images/ui/listview-small.png" alt="" /></a>
+  <p>Displays a scrolling single column list.</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/gridview.html">Grid View</a></h4>
+  <a href="layout/grid.html"><img src="{@docRoot}images/ui/gridview-small.png" alt="" /></a>
+  <p>Displays a scrolling grid of columns and rows.</p>
+</div>
+
+
+
+<h3 id="FillingTheLayout" style="clear:left">Filling an adapter view with data</h3>
+
+<p>You can populate an {@link android.widget.AdapterView} such as {@link android.widget.ListView} or
+{@link android.widget.GridView} by binding the {@link android.widget.AdapterView} instance to an
+{@link android.widget.Adapter}, which retrieves data from an external source and creates a {@link
+android.view.View} that represents each data entry.</p>
+
+<p>Android provides several subclasses of {@link android.widget.Adapter} that are useful for
+retrieving different kinds of data and building views for an {@link android.widget.AdapterView}. The
+two most common adapters are:</p>
+
+<dl>
+  <dt>{@link android.widget.ArrayAdapter}</dt>
+    <dd>Use this adapter when your data source is an array. By default, {@link
+android.widget.ArrayAdapter} creates a view for each array item by calling {@link
+java.lang.Object#toString()} on each item and placing the contents in a {@link
+android.widget.TextView}.
+      <p>For example, if you have an array of strings you want to display in a {@link
+android.widget.ListView}, initialize a new {@link android.widget.ArrayAdapter} using a
+constructor to specify the layout for each string and the string array:</p>
+<pre>
+ArrayAdapter adapter = new ArrayAdapter&lt;String>(this, 
+        android.R.layout.simple_list_item_1, myStringArray);
+</pre>
+<p>The arguments for this constructor are:</p>
+<ul>
+  <li>Your app {@link android.content.Context}</li>
+  <li>The layout that contains a {@link android.widget.TextView} for each string in the array</li>
+  <li>The string array</li>
+</ul>
+<p>Then simply call
+{@link android.widget.ListView#setAdapter setAdapter()} on your {@link android.widget.ListView}:</p>
+<pre>
+ListView listView = (ListView) findViewById(R.id.listview);
+listView.setAdapter(adapter);
+</pre>
+
+      <p>To customize the appearance of each item you can override the {@link
+java.lang.Object#toString()} method for the objects in your array. Or, to create a view for each
+item that's something other than a {@link android.widget.TextView} (for example, if you want an
+{@link android.widget.ImageView} for each array item), extend the {@link
+android.widget.ArrayAdapter} class and override {@link android.widget.ArrayAdapter#getView
+getView()} to return the type of view you want for each item.</p>
+
+</dd>
+
+  <dt>{@link android.widget.SimpleCursorAdapter}</dt>
+    <dd>Use this adapter when your data comes from a {@link android.database.Cursor}. When
+using {@link android.widget.SimpleCursorAdapter}, you must specify a layout to use for each
+row in the {@link android.database.Cursor} and which columns in the {@link android.database.Cursor}
+should be inserted into which views of the layout. For example, if you want to create a list of
+people's names and phone numbers, you can perform a query that returns a {@link
+android.database.Cursor} containing a row for each person and columns for the names and
+numbers. You then create a string array specifying which columns from the {@link
+android.database.Cursor} you want in the layout for each result and an integer array specifying the
+corresponding views that each column should be placed:</p>
+<pre>
+String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME, 
+                        ContactsContract.CommonDataKinds.Phone.NUMBER};
+int[] toViews = {R.id.display_name, R.id.phone_number};
+</pre>
+<p>When you instantiate the {@link android.widget.SimpleCursorAdapter}, pass the layout to use for
+each result, the {@link android.database.Cursor} containing the results, and these two arrays:</p>
+<pre>
+SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
+        R.layout.person_name_and_number, cursor, fromColumns, toViews, 0);
+ListView listView = getListView();
+listView.setAdapter(adapter);
+</pre>
+<p>The {@link android.widget.SimpleCursorAdapter} then creates a view for each row in the
+{@link android.database.Cursor} using the provided layout by inserting each {@code
+fromColumns} item into the corresponding {@code toViews} view.</p>.</dd>
+</dl>
+
+
+<p>If, during the course of your application's life, you change the underlying data that is read by
+your adapter, you should call {@link android.widget.ArrayAdapter#notifyDataSetChanged()}. This will
+notify the attached view that the data has been changed and it should refresh itself.</p>
+
+
+
+<h3 id="HandlingUserSelections">Handling click events</h3>
+
+<p>You can respond to click events on each item in an {@link android.widget.AdapterView} by
+implementing the {@link android.widget.AdapterView.OnItemClickListener} interface. For example:</p>
+
+<pre>
+// Create a message handling object as an anonymous class.
+private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
+    public void onItemClick(AdapterView parent, View v, int position, long id) {
+        // Do something in response to the click
+    }
+};
+
+listView.setOnItemClickListener(mMessageClickedHandler); 
+</pre>
+
 
 
diff --git a/docs/html/guide/topics/ui/dialogs.jd b/docs/html/guide/topics/ui/dialogs.jd
index 82cbfd1..9c28058 100644
--- a/docs/html/guide/topics/ui/dialogs.jd
+++ b/docs/html/guide/topics/ui/dialogs.jd
@@ -313,7 +313,7 @@
 
 <p class="note"><strong>Note:</strong> To save the selection when the user leaves or
 pauses the Activity, you must properly save and restore the setting throughout
-the <a href="{@docRoot}guide/topics/fundamentals/activities.html#Lifecycle">activity lifecycle</a>. 
+the <a href="{@docRoot}guide/components/activities.html#Lifecycle">activity lifecycle</a>. 
 To permanently save the selections, even when the Activity process is completely shutdown, 
 you need to save the settings
 with one of the <a href="{@docRoot}guide/topics/data/data-storage.html">Data
diff --git a/docs/html/guide/topics/ui/images/android_focused.png b/docs/html/guide/topics/ui/images/android_focused.png
new file mode 100644
index 0000000..f84d0fe
--- /dev/null
+++ b/docs/html/guide/topics/ui/images/android_focused.png
Binary files differ
diff --git a/docs/html/guide/topics/ui/images/android_normal.png b/docs/html/guide/topics/ui/images/android_normal.png
new file mode 100644
index 0000000..94a7084
--- /dev/null
+++ b/docs/html/guide/topics/ui/images/android_normal.png
Binary files differ
diff --git a/docs/html/guide/topics/ui/images/android_pressed.png b/docs/html/guide/topics/ui/images/android_pressed.png
new file mode 100644
index 0000000..fe81ff9
--- /dev/null
+++ b/docs/html/guide/topics/ui/images/android_pressed.png
Binary files differ
diff --git a/docs/html/guide/tutorials/views/images/hello-gallery.png b/docs/html/guide/topics/ui/images/hello-gallery.png
similarity index 100%
rename from docs/html/guide/tutorials/views/images/hello-gallery.png
rename to docs/html/guide/topics/ui/images/hello-gallery.png
Binary files differ
diff --git a/docs/html/guide/tutorials/views/images/hello-gridview.png b/docs/html/guide/topics/ui/images/hello-gridview.png
similarity index 100%
rename from docs/html/guide/tutorials/views/images/hello-gridview.png
rename to docs/html/guide/topics/ui/images/hello-gridview.png
Binary files differ
diff --git a/docs/html/guide/tutorials/views/images/hello-linearlayout.png b/docs/html/guide/topics/ui/images/hello-linearlayout.png
similarity index 100%
rename from docs/html/guide/tutorials/views/images/hello-linearlayout.png
rename to docs/html/guide/topics/ui/images/hello-linearlayout.png
Binary files differ
diff --git a/docs/html/guide/topics/ui/images/hello-listview.png b/docs/html/guide/topics/ui/images/hello-listview.png
new file mode 100644
index 0000000..165b1ac
--- /dev/null
+++ b/docs/html/guide/topics/ui/images/hello-listview.png
Binary files differ
diff --git a/docs/html/guide/topics/ui/images/hello-mapview.png b/docs/html/guide/topics/ui/images/hello-mapview.png
new file mode 100644
index 0000000..6bd9740
--- /dev/null
+++ b/docs/html/guide/topics/ui/images/hello-mapview.png
Binary files differ
diff --git a/docs/html/guide/tutorials/views/images/hello-relativelayout.png b/docs/html/guide/topics/ui/images/hello-relativelayout.png
similarity index 100%
rename from docs/html/guide/tutorials/views/images/hello-relativelayout.png
rename to docs/html/guide/topics/ui/images/hello-relativelayout.png
Binary files differ
diff --git a/docs/html/guide/tutorials/views/images/hello-tablelayout.png b/docs/html/guide/topics/ui/images/hello-tablelayout.png
similarity index 100%
rename from docs/html/guide/tutorials/views/images/hello-tablelayout.png
rename to docs/html/guide/topics/ui/images/hello-tablelayout.png
Binary files differ
diff --git a/docs/html/guide/topics/ui/images/hello-tabwidget.png b/docs/html/guide/topics/ui/images/hello-tabwidget.png
new file mode 100644
index 0000000..6580c5b
--- /dev/null
+++ b/docs/html/guide/topics/ui/images/hello-tabwidget.png
Binary files differ
diff --git a/docs/html/guide/topics/ui/images/hello-webview.png b/docs/html/guide/topics/ui/images/hello-webview.png
new file mode 100644
index 0000000..248c6d4
--- /dev/null
+++ b/docs/html/guide/topics/ui/images/hello-webview.png
Binary files differ
diff --git a/docs/html/guide/topics/ui/images/ic_tab_artists_grey.png b/docs/html/guide/topics/ui/images/ic_tab_artists_grey.png
new file mode 100644
index 0000000..9baa30e
--- /dev/null
+++ b/docs/html/guide/topics/ui/images/ic_tab_artists_grey.png
Binary files differ
diff --git a/docs/html/guide/topics/ui/images/ic_tab_artists_white.png b/docs/html/guide/topics/ui/images/ic_tab_artists_white.png
new file mode 100644
index 0000000..3b010d5
--- /dev/null
+++ b/docs/html/guide/topics/ui/images/ic_tab_artists_white.png
Binary files differ
diff --git a/docs/html/guide/topics/ui/index.jd b/docs/html/guide/topics/ui/index.jd
index be07249..f342b06 100644
--- a/docs/html/guide/topics/ui/index.jd
+++ b/docs/html/guide/topics/ui/index.jd
@@ -1,236 +1,61 @@
 page.title=User Interface
+page.landing=true
+page.landing.intro=Your app's user interface is everything that the user can see and interact with. Android provides a variety of pre-build UI components such as structured layout objects and UI controls that allow you to build the graphical user interface for your app. Android also provides other UI modules for special interfaces such as dialogs, notifications, and menus.  
+page.landing.image=images/ui/ui_index.png
+page.landing.next=overview.html
+
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
+<div class="landing-docs">
 
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#ViewHierarchy">View Hierarchy</a></li>
-    <li><a href="#Layout">Layout</a></li>
-    <li><a href="#Widgets">Widgets</a></li>
-    <li><a href="#Events">Input Events</a></li>
-    <li><a href="#Menus">Menus</a></li>
-    <li><a href="#Advanced">Advanced Topics</a>
-      <ol>
-        <li><a href="#Adapters">Adapters</a></li>
-        <li><a href="#StylesAndThemes">Styles and Themes</a></li>
-      </ol>
-    </li>
-  </ol>
+  <div class="col-6">
+    <h3>Blog Articles</h3>
+    
+    <a href="http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html">
+      <h4>Say Goodbye to the Menu Button</h4>
+      <p>As Ice Cream Sandwich rolls out to more devices, it’s important that you begin to migrate
+your designs to the action bar in order to promote a consistent Android user experience.</p> </a>
 
-  <h2>Key classes</h2>
-  <ol>
-    <li>{@link android.view.View}</li>
-    <li>{@link android.view.ViewGroup}</li>
-    <li>{@link android.widget Widget classes}</li>
-  </ol>
-</div>
+    <a href="http://android-developers.blogspot.com/2011/11/new-layout-widgets-space-and-gridlayout.html">
+      <h4>New Layout Widgets: Space and GridLayout</h4>
+      <p>Ice Cream Sandwich (ICS) sports two new widgets that have been designed to support the
+richer user interfaces made possible by larger displays: Space and GridLayout.</p> </a>
+
+    <a href="http://android-developers.blogspot.com/2011/04/customizing-action-bar.html">
+      <h4>Customizing the Action Bar</h4>
+      <p>By using the Action Bar in your Honeycomb-targeted apps, you'll give your users a familiar
+way to interact with your application.</p> </a>
+
+    <a href="http://android-developers.blogspot.com/2011/08/horizontal-view-swiping-with-viewpager.html">
+      <h4>Horizontal View Swiping with ViewPager</h4>
+      <p>Whether you have just started out in Android app development or are a veteran of the craft,
+it probably won’t be too long before you’ll need to implement horizontally scrolling sets of views.
+</p> </a>
+  </div>
+
+  <div class="col-6">
+    <h3>Training</h3>
+    
+    <a href="http://developer.android.com/training/implementing-navigation/index.html">
+      <h4>Implementing Effective Navigation</h4>
+      <p>This class shows you how to plan out the high-level screen hierarchy for your application
+and then choose appropriate forms of navigation to allow users to effectively and intuitively
+traverse your content.</p> </a>
+
+    <a href="http://developer.android.com/training/multiscreen/index.html">
+      <h4>Designing for Multiple Screens</h4>
+      <p>Android powers hundreds of device types with several different screen sizes, ranging from
+small phones to large TV sets. This class shows you how to implement a user interface that's
+optimized for several screen configurations.</p>
+    </a>
+
+    <a href="http://developer.android.com/training/improving-layouts/index.html">
+      <h4>Improving Layout Performance</h4>
+      <p>Layouts are a key part of Android applications that directly affect the user experience. If
+implemented poorly, your layout can lead to a memory hungry application with slow UIs. This
+class shows you how to avoid such problems.</p>
+    </a>
+  </div>
+
 </div>
 
-<p>In an Android application, the user interface is built using {@link android.view.View} and 
-{@link android.view.ViewGroup} objects. There are many types of views and view groups, each of which 
-is a descendant of the {@link android.view.View} class.</p>
-
-<p>View objects are the basic units of user interface expression on the Android platform. 
-The View class serves as the base for subclasses called "widgets," which offer fully implemented
-UI objects, like text fields and buttons. The ViewGroup class serves as the base for subclasses called "layouts,"
-which offer different kinds of layout architecture, like linear, tabular and relative.</p>
-
-<p>A View object is a data structure whose properties store the layout parameters and content for a specific 
-rectangular area of the screen. A View object handles its own measurement, layout, drawing, focus change, 
-scrolling, and key/gesture interactions for the rectangular area of the screen in which it resides. As an
-object in the user interface, a View is also a point of interaction for the user and the receiver
-of the interaction events.</p>
-
-
-<h2 id="ViewHierarchy">View Hierarchy</h2>
-
-<p>On the Android platform, you define an Activity's UI using a hierarchy of View and ViewGroup nodes, 
-as shown in the diagram below. This hierarchy tree can be as simple or complex as you need it to be, and you 
-can build it up using Android's set of predefined widgets and layouts, or with custom Views that you 
-create yourself.</p>
-
-<img src="{@docRoot}images/viewgroup.png" alt="" />
-
-<p>
-In order to attach the view hierarchy tree to the screen for rendering, your Activity must call the
-<code>{@link android.app.Activity#setContentView(int) setContentView()}</code> 
-method and pass a reference to the root node object. The Android system
-receives this reference and uses it to invalidate, measure, and draw the tree. The root node of the hierarchy requests 
-that its child nodes draw themselves &mdash; in turn, each view group node is responsible for calling 
-upon each of its own child views to draw themselves.
-The children may request a size and location within the parent, but the parent object has the final 
-decision on where how big each child can be.  Android parses 
-the elements of your layout in-order (from the top of the hierarchy tree), instantiating the Views and 
-adding them to their parent(s). Because these are drawn in-order, if there are elements that
-overlap positions, the last one to be drawn will lie on top of others previously drawn to that space.</p>
-
-<p>For a more detailed discussion on how view hierarchies are measured
-and drawn, read <a href="how-android-draws.html">How Android Draws Views</a>.</p>
-
-
-<h2 id="Layout">Layout</h2>
-
-<p>The most common way to define your layout and express the view hierarchy is with an XML layout file.
-XML offers a human-readable structure for the layout, much like HTML. Each element in XML is 
-either a View or ViewGroup object (or descendant thereof). View objects are leaves in the tree, 
-ViewGroup objects are branches in the tree (see the View Hierarchy figure above).</p>
-<p>The name of an XML element
-is respective to the Java class that it represents. So a <code>&lt;TextView></code> element creates
-a {@link android.widget.TextView} in your UI, and a <code>&lt;LinearLayout></code> element creates
-a {@link android.widget.LinearLayout} view group. When you load a layout resource, 
-the Android system initializes these run-time objects, corresponding to the elements in your layout.</p>
-
-<p>For example, a simple vertical layout with a text view and a button looks like this:</p>
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              android:layout_width="fill_parent" 
-              android:layout_height="fill_parent"
-              android:orientation="vertical" >
-    &lt;TextView android:id="@+id/text"
-              android:layout_width="wrap_content"
-              android:layout_height="wrap_content"
-              android:text="Hello, I am a TextView" />
-    &lt;Button android:id="@+id/button"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="Hello, I am a Button" />
-&lt;/LinearLayout>
-</pre>
-
-<p>Notice that the LinearLayout element contains both the TextView and the Button. You can nest
-another LinearLayout (or other type of view group) inside here, to lengthen the view hierarchy and create a more
-complex layout.</p>
-
-<p>For more on building a UI layout, read <a href="declaring-layout.html">XML Layouts</a>.
-
-<div class="sidebox-wrapper">
-<div class="sidebox">
-  <p><b>Tip:</b> You can also draw View and ViewGroups objects in Java code, 
-  using the <code>{@link android.view.ViewGroup#addView(View)}</code> methods 
-  to dynamically insert new View and ViewGroup objects.</p>
-</div>
-</div>
-
-<p>There are a variety of ways in which you can layout your views. Using more and different kinds of view groups,
-you can structure child views and view groups in an infinite number of ways.
-Some pre-defined view groups offered by Android (called layouts) include LinearLayout, RelativeLayout,
-TableLayout, GridLayout and others. Each offers a unique set of layout parameters that are used to define the
-positions of child views and layout structure.</p>
-<p>To learn about some of the different kinds of view groups used for a layout, 
-read <a href="layout-objects.html">Common Layout Objects</a>.</p>
-
-
-<h2 id="Widgets">Widgets</h2>
-
-<p>A widget is a View object that serves as an interface for interaction with the user. 
-Android provides a set of fully implemented 
-widgets, like buttons, checkboxes, and text-entry fields, so you can quickly build your UI. 
-Some widgets provided by Android are more complex, like a date picker, a clock, and zoom controls.
-But you're not limited to the kinds of widgets provided by the Android platform. If you'd
-like to do something more customized and create your own actionable elements, you can, by defining your own 
-View object or by extending and combining existing widgets.</p>
-<p>Read more in the <a href="custom-components.html">Custom Components</a> developer guide.</p>
-
-<p>For a list of the widgets provided by Android, see the {@link android.widget} package.</p>
-
-
-<h2 id="Events">Input Events</h2>
-
-<p>Once you've added some Views/widgets to the UI, you probably want to know about the 
-user's interaction with them, so you can perform actions. To be informed of user input events, you
-need to do one of two things:</p>
-<ul>
-  <li><strong>Define an event listener and register it with the View.</strong> More often than not,
-this is how you'll listen for events. The View class contains a collection of nested interfaces named
-On<em>&lt;something></em>Listener, each with a callback method called <code>On<em>&lt;something></em>()</code>.
-For example, {@link android.view.View.OnClickListener} (for handling "clicks" on a View),
-{@link android.view.View.OnTouchListener} (for handling touch screen events in a View), and
-{@link android.view.View.OnKeyListener} if you want to handle hardware key presses within a View. So if you want your View
-to be notified when it is "clicked" (such as when a button is selected), implement OnClickListener and define
-its <code>onClick()</code> callback method (where you perform the action upon click), and register it
-to the View with <code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>.
-</li>
-  <li><strong>Override an existing callback method for the View.</strong> This is
-what you should do when you've implemented your own View class and want to listen for specific events 
-that occur within it. Example events you can handle include when the
-screen is touched (<code>{@link android.view.View#onTouchEvent(MotionEvent) onTouchEvent()}</code>), when
-the trackball is moved (<code>{@link android.view.View#onTrackballEvent(MotionEvent) onTrackballEvent()}</code>), 
-or when a <em>hardware</em> key on the device is pressed (<code>{@link android.view.View#onKeyDown(int, KeyEvent)
-onKeyDown()}</code>). This allows you to define the default behavior for each event inside your custom View and determine
-whether the event should be passed on to some other child View. Again, these are callbacks to the View class,
-so your only chance to define them is when you 
-<a href="{@docRoot}guide/topics/ui/custom-components.html">build a custom component</a>.
-</li>
-</ul>
-
-<p>Continue reading about handling user interaction with Views in the <a
-href="ui-events.html">Input Events</a> document.</p>
-
-
-<h2 id="Menus">Menus</h2>
-
-<p>Application menus are another important part of an application's UI. Menus offers a reliable interface that reveals
-application functions and settings. The most common application menu is revealed by pressing
-the <em>Menu</em> button on the device. However, you can also add Context Menus, which may be
-revealed when the user presses
-and holds down on an item.</p>
-
-<p>Menus are also structured using a View hierarchy, but you don't define this structure yourself. Instead,
-you define the <code>{@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}</code> or 
-<code>{@link android.app.Activity#onCreateContextMenu(ContextMenu,View,ContextMenu.ContextMenuInfo) onCreateContextMenu()}</code> 
-callback methods for your Activity and declare the items that you want to include in your menu. 
-At the appropriate time, Android will automatically create the necessary View hierarchy for the menu and 
-draw each of your menu items in it.</p>
-
-<p>Menus also handle their own events, so there's no need to register event listeners on the items in your menu.
-When an item in your menu is selected, the <code>{@link android.app.Activity#onOptionsItemSelected(MenuItem) 
-onOptionsItemSelected()}</code> or 
-<code>{@link android.app.Activity#onContextItemSelected(MenuItem) onContextItemSelected()}</code>
-method will be called by the framework.</p>
-
-<p>And just like your application layout, you have the option to declare the items for you menu in an XML file.</p>
-
-<p>Read <a href="{@docRoot}guide/topics/ui/menus.html">Menus</a> to learn more.</p>
-
-
-<h2 id="Advanced">Advanced Topics</h2>
-
-<p>Once you've grappled the fundamentals of creating a user interface, you can explore
-some advanced features for creating a more complex application interface.</p>
-
-<h3 id="Adapters">Adapters</h3>
-
-<p>Sometimes you'll want to populate a view group with some information that can't be hard-coded, instead, 
-you want to bind your view to an external source of data. To do this, you use an AdapterView as
-your view group and each child View is initialized and populated with data from the Adapter.</p>
-<p>The AdapterView object is an implementation of ViewGroup that determines its child views
-based on a given Adapter object. The Adapter acts like a courier between your data source (perhaps an
-array of external strings) and the AdapterView, which displays it. There are several implementations
-of the Adapter class, for specific tasks, such as the CursorAdapter for reading database data from a Cursor,
-or an ArrayAdapter for reading from an arbitrary array.</p>
-<p>To learn more about using an Adapter to populate your views, read 
-<a href="binding.html">Binding to Data with AdapterView</a>.</p>
-
-
-<h3 id="StylesAndThemes">Styles and Themes</h3>
-
-<p>Perhaps you're not satisfied with the look of the standard widgets. To revise them, you can create some 
-of your own styles and themes.</p>
-
-<ul>
-  <li>A style is a set of one or more formatting attributes that you can apply as a unit to individual elements 
-in your layout. For example, you could define a style that specifies a certain text size and color, then 
-apply it to only specific View elements.</li>
-  <li>A theme is a set of one or more formatting attributes that you can apply as a unit to all activities in 
-an application, or just a single activity. For example, you could define a theme that sets specific colors for 
-the window frame and the panel background, and sets text sizes and colors for menus. This theme can then be 
-applied to specific activities or the entire application.</li>
-</ul>
-
-<p>Styles and themes are resources. Android provides some default style and theme resources that you can use, 
-or you can declare your own custom style and theme resources.</p>
-<p>Learn more about using styles and themes in the
-<a href="themes.html">Styles and Themes</a> document.</p>
diff --git a/docs/html/guide/topics/ui/layout-objects.jd b/docs/html/guide/topics/ui/layout-objects.jd
index e251fe9..1d15ad60 100644
--- a/docs/html/guide/topics/ui/layout-objects.jd
+++ b/docs/html/guide/topics/ui/layout-objects.jd
@@ -1,291 +1,6 @@
-page.title=Common Layout Objects
+page.title=Layouts
 parent.title=User Interface
 parent.link=index.html
 @jd:body
 
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#framelayout">FrameLayout</a></li>
-    <li><a href="#linearlayout">LinearLayout</a></li>
-    <li><a href="#tablelayout">TableLayout</a></li>
-    <li><a href="#relativelayout">RelativeLayout</a></li>
-    <li><a href="#viewgroupsummary">Summary of Important View Groups</a></li>
-  </ol>
-</div>
-</div>
-
-<p>This section describes some of the more common types of layout objects
-to use in your applications. Like all layouts, they are subclasses of {@link android.view.ViewGroup ViewGroup}.</p>
-
-<p>Also see the <a href="{@docRoot}resources/tutorials/views/index.html">Hello Views</a> tutorials for
-some guidance on using more Android View layouts.</p>
-
-<h2 id="framelayout">FrameLayout</h2>
-<p>{@link android.widget.FrameLayout FrameLayout} is the simplest type of layout
-object. It's basically a blank space on your screen that you can
-later fill with a single object &mdash; for example, a picture that you'll swap in and out.
-All child elements of the FrameLayout are pinned to the top left corner of the screen; you cannot
-specify a different location for a child view. Subsequent child views will simply be drawn over previous ones,
-partially or totally obscuring them (unless the newer object is transparent).
-</p>
-
-
-<h2 id="linearlayout">LinearLayout</h2>
-<p>{@link android.widget.LinearLayout LinearLayout} aligns all children in a
-single direction &mdash; vertically or horizontally, depending on how you 
-define the <code>orientation</code> attribute. All children are
-stacked one after the other, so a vertical list will only have one child per
-row, no matter how wide they are, and a horizontal list will only be one row
-high (the height of the tallest child, plus padding). A {@link
-android.widget.LinearLayout LinearLayout} respects <em>margin</em>s between children
-and the <em>gravity</em> (right, center, or left alignment) of each child. </p>
-
-<p>{@link android.widget.LinearLayout LinearLayout} also supports assigning a
-<em>weight</em> to individual children. This attribute assigns an "importance" value to a view,
-and allows it to expand to fill any remaining space in the parent view. 
-Child views can specify an integer weight value, and then any remaining space in the view group is
-assigned to children in the proportion of their declared weight. Default
-weight is zero. For example, if there are three text boxes and two of
-them declare a weight of 1, while the other is given no weight (0), the third text box without weight
-will not grow and will only occupy the area required by its content.
-The other two will expand equally to fill the space remaining after all three boxes are measured. 
-If the third box is then given a weight of 2 (instead of 0), then it is now declared 
-"more important" than both the others, so it gets half the total remaining space, while the first two
-share the rest equally.</p>
-
-<div class="sidebox-wrapper">
-<div class="sidebox">
-<p><strong>Tip</strong>: To create a proportionate size
-layout on the screen, create a container view group object with the 
-<code>layout_width</code> and <code>layout_height</code> attributes set to <var>fill_parent</var>; assign
-the children <code>height</code> or <code>width</code> to <code>0</code> (zero); then assign relative 
-<code>weight</code> values
-to each child, depending on what proportion of the screen each should
-have.</p>
-</div>
-</div>
-
-<p>The following two forms represent a {@link android.widget.LinearLayout LinearLayout} with a set of elements: a
-button, some labels and text boxes. The text boxes have their width set to <var>fill_parent</var>; other
-elements are set to <var>wrap_content</var>. The gravity, by default, is left. 
-The difference between the two versions of the form is that the form
-on the left has weight values unset (0 by default), while the form on the right has
-the comments text box weight set to 1. If the Name textbox had also been set
-to 1, the Name and Comments text boxes would be the same height. </p>
-
-<img src="{@docRoot}images/linearlayout.png" alt="" />
-
-<p>Within a horizontal {@link android.widget.LinearLayout LinearLayout}, items are aligned by the position of
-their text base line (the first line of the first list element &mdash; topmost or
-leftmost &mdash; is considered the reference line). This is so that people scanning
-elements in a form shouldn't have to jump up and down to read element text in
-neighboring elements. This can be turned off by setting
-<code>android:baselineAligned=&quot;false&quot;</code> in the layout XML. </p>
-
-<p>To view other sample code, see the 
-<a href="{@docRoot}resources/tutorials/views/hello-linearlayout.html">Hello LinearLayout</a> tutorial.</p>
-
-
-<h2 id="tablelayout">TableLayout</h2>
-<p>{@link android.widget.TableLayout} positions its children into rows
-    and columns. TableLayout containers do not display border lines for their rows, columns,
-    or cells. The table will have as many columns as the row with the most cells. A table can leave
-cells empty, but cells cannot span columns, as they can in HTML.</p>
-<p>{@link android.widget.TableRow} objects are the child views of a TableLayout
-(each TableRow defines a single row in the table).
-Each row has zero or more cells, each of which is defined by any kind of other View. So, the cells of a row may be
-composed of a variety of View objects, like ImageView or TextView objects.
-A cell may also be a ViewGroup object (for example, you can nest another TableLayout as a cell).</p>
-<p>The following sample layout has two rows and two cells in each. The accompanying screenshot shows the 
-result, with cell borders displayed as dotted lines (added for visual effect). </p>
-
-<table class="columns">
-    <tr>
-        <td>
-        <pre>
-&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
-&lt;TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
-    android:stretchColumns="1">
-    &lt;TableRow>
-        &lt;TextView
-            android:text="@string/table_layout_4_open"
-            android:padding="3dip" />
-        &lt;TextView
-            android:text="@string/table_layout_4_open_shortcut"
-            android:gravity="right"
-            android:padding="3dip" />
-    &lt;/TableRow>
-
-    &lt;TableRow>
-        &lt;TextView
-            android:text="@string/table_layout_4_save"
-            android:padding="3dip" />
-        &lt;TextView
-            android:text="@string/table_layout_4_save_shortcut"
-            android:gravity="right"
-            android:padding="3dip" />
-    &lt;/TableRow>
-&lt;/TableLayout>
-</pre></td>
-        <td><img src="{@docRoot}images/table_layout.png" alt="" style="margin:0" /></td>
-    </tr>
-</table>
-
-<p>Columns can be hidden, marked to stretch and fill the available screen space,
-    or can be marked as shrinkable to force the column to shrink until the table
-    fits the screen. See the {@link android.widget.TableLayout TableLayout reference} 
-documentation for more details. </p>
-
-<p>To view sample code, see the <a href="{@docRoot}resources/tutorials/views/hello-tablelayout.html">Hello
-TableLayout</a> tutorial.</p>
-
-
-<h2 id="relativelayout">RelativeLayout</h2>
-<p>{@link android.widget.RelativeLayout} lets child views specify their
-    position relative to the parent view or to each other (specified by ID). So you can
-    align two elements by right border, or make one below another, centered in
-    the screen, centered left, and so on. Elements are rendered in the order given, so if the first element
-    is centered in the screen, other elements aligning themselves to that element
-    will be aligned relative to screen center. Also, because of this ordering, if using XML to specify this layout, 
-    the element that you will reference (in order to position other view objects) must be listed in the XML 
-file before you refer to it from the other views via its reference ID. </p>
-<p>The example below shows an XML file and the resulting screen in the UI. 
-Note that the attributes that refer to relative elements (e.g., <var>layout_toLeft</var>)
-refer to the ID using the syntax of a relative resource
-(<var>@id/<em>id</em></var>). </p>
-
-<table class="columns">
-    <tr>
-        <td>
-        <pre>
-&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
-&lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android"
-                android:layout_width=&quot;fill_parent&quot; 
-                android:layout_height=&quot;wrap_content&quot;
-                android:background=&quot;@drawable/blue&quot;
-                android:padding=&quot;10px&quot; &gt;
-
-    &lt;TextView android:id=&quot;@+id/label&quot; 
-              android:layout_width=&quot;fill_parent&quot; 
-              android:layout_height=&quot;wrap_content&quot; 
-              android:text=&quot;Type here:&quot; /&gt;
-
-    &lt;EditText android:id=&quot;@+id/entry&quot; 
-              android:layout_width=&quot;fill_parent&quot; 
-              android:layout_height=&quot;wrap_content&quot; 
-              android:background=&quot;@android:drawable/editbox_background&quot;
-              android:layout_below=&quot;@id/label&quot; /&gt;
-  
-    &lt;Button android:id=&quot;@+id/ok&quot; 
-            android:layout_width=&quot;wrap_content&quot; 
-            android:layout_height=&quot;wrap_content&quot; 
-            android:layout_below=&quot;@id/entry&quot;
-            android:layout_alignParentRight=&quot;true&quot;
-            android:layout_marginLeft=&quot;10px&quot;
-            android:text=&quot;OK&quot; /&gt;
-
-    &lt;Button android:layout_width=&quot;wrap_content&quot; 
-            android:layout_height=&quot;wrap_content&quot;
-            android:layout_toLeftOf=&quot;@id/ok&quot;
-            android:layout_alignTop=&quot;@id/ok&quot;
-            android:text=&quot;Cancel&quot; /&gt;
-&lt;/RelativeLayout&gt;
-</pre></td>
-        <td><img src="{@docRoot}images/designing_ui_layout_example.png" alt="" style="margin:0"  /></td>
-    </tr>
-</table>
-
-
-<p>Some of these properties are supported directly by
-    the element, and some are supported by its LayoutParams member (subclass RelativeLayout
-    for all the elements in this screen, because all elements are children of a RelativeLayout
-    parent object). The defined RelativeLayout parameters are: <code>width</code>, <code>height</code>, 
-    <code>below</code>, <code>alignTop</code>, <code>toLeft</code>, <code>padding[Bottom|Left|Right|Top]</code>, 
-    and <code>margin[Bottom|Left|Right|Top]</code>. Note that some of these parameters specifically support
-    relative layout positions &mdash; their values must be the ID of the element to which you'd like this view laid relative.
-    For example, assigning the parameter <code>toLeft="my_button"</code> to a TextView would place the TextView to 
-    the left of the View with the ID <var>my_button</var> (which must be written in the XML <em>before</em> the TextView). </p>
-
-<p>To view this sample code, see the <a href="{@docRoot}resources/tutorials/views/hello-relativelayout.html">Hello
-RelativeLayout</a> tutorial.</p>
-
-
-<h2 id="viewgroupsummary">Summary of Important View Groups</h2>
-<p>These objects all hold child UI elements. Some provide their own form of a visible UI, while others
-    are invisible structures that only manage the layout of their child views.  </p>
-<table width="100%" border="1">
-    <tr>
-        <th scope="col">Class</th>
-        <th scope="col">Description</th>
-    </tr>
-    <tr>
-        <td>{@link android.widget.FrameLayout FrameLayout}</td>
-        <td>Layout that acts as a view frame to display
-            a single object. </td>
-    </tr>
-    <tr>
-        <td>{@link android.widget.Gallery Gallery} </td>
-        <td>A horizontal scrolling display of images, from a bound list. </td>
-    </tr>
-    <tr>
-        <td>{@link android.widget.GridView GridView} </td>
-        <td>Displays a scrolling grid of m columns and n rows.</td>
-    </tr>
-    <tr>
-        <td>{@link android.widget.LinearLayout LinearLayout} </td>
-        <td>A layout that organizes its children into a single horizontal or vertical
-            row. It creates a scrollbar if the length of the window exceeds the length
-            of the screen. </td>
-    </tr>
-    <tr>
-        <td>{@link android.widget.ListView ListView} </td>
-        <td>Displays a scrolling single column list. </td>
-    </tr>
-    <tr>
-        <td>{@link android.widget.RelativeLayout RelativeLayout} </td>
-        <td>Enables you to specify the location of child objects relative to each
-            other (child A to the left of child B) or to the parent (aligned to the
-            top of the parent). </td>
-    </tr>
-    <tr>
-        <td>{@link android.widget.ScrollView ScrollView} </td>
-        <td>A vertically scrolling column of elements. </td>
-    </tr>
-    <tr>
-        <td>{@link android.widget.Spinner Spinner} </td>
-        <td>Displays a single item at a time from a bound list, inside a one-row
-            textbox. Rather like a one-row listbox that can scroll either horizontally
-            or vertically. </td>
-    </tr>
-    <tr>
-        <td>{@link android.view.SurfaceView SurfaceView} </td>
-        <td>Provides direct access to a dedicated drawing surface. It can hold child
-            views layered on top of the surface, but is intended for applications
-            that need to draw pixels, rather than using widgets. </td>
-    </tr>
-    <tr>
-        <td>{@link android.widget.TabHost TabHost} </td>
-        <td>Provides a tab selection list that monitors clicks and enables the application
-            to change the screen whenever a tab is clicked. </td>
-    </tr>
-	<tr>
-        <td>{@link android.widget.TableLayout TableLayout} </td>
-        <td>A tabular layout with an arbitrary number of rows and columns, each cell
-            holding the widget of your choice. The rows resize to fit the largest
-            column. The cell borders are not
-            visible. </td>
-    </tr>
-    <tr>
-        <td>{@link android.widget.ViewFlipper ViewFlipper} </td>
-        <td>A list that displays one item at a time, inside a one-row textbox. It
-            can be set to swap items at timed intervals, like a slide show. </td>
-    </tr>
-    <tr>
-        <td>{@link android.widget.ViewSwitcher ViewSwitcher} </td>
-        <td>Same as ViewFlipper. </td>
-    </tr>
-</table>
+<p>You should have been redirected to <a href="declaring-layout.html">Layouts</a>.</p>
\ No newline at end of file
diff --git a/docs/html/guide/topics/ui/layout/grid.jd b/docs/html/guide/topics/ui/layout/grid.jd
new file mode 100644
index 0000000..52f453b
--- /dev/null
+++ b/docs/html/guide/topics/ui/layout/grid.jd
@@ -0,0 +1,187 @@
+page.title=Table
+parent.title=Layouts
+parent.link=layout-objects.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document</h2>
+  <ol>
+    <li><a href="#example">Example</a></li>
+  </ol>
+  <h2>Key classes</h2>
+  <ol>
+  <li>{@link android.widget.TableLayout}</li>
+  <li>{@link android.widget.TableRow}</li>
+  <li>{@link android.widget.TextView}</li>
+  </ol>
+</div>
+</div>
+<p>{@link android.widget.TableLayout} is a {@link android.view.ViewGroup} that
+displays child {@link android.view.View} elements in rows and columns.</p>
+
+
+<img src="{@docRoot}images/ui/gridlayout.png" alt="" />
+
+<p>{@link android.widget.TableLayout} positions its children into rows
+    and columns. TableLayout containers do not display border lines for their rows, columns,
+    or cells. The table will have as many columns as the row with the most cells. A table can leave
+cells empty, but cells cannot span columns, as they can in HTML.</p>
+<p>{@link android.widget.TableRow} objects are the child views of a TableLayout
+(each TableRow defines a single row in the table).
+Each row has zero or more cells, each of which is defined by any kind of other View. So, the cells of a row may be
+composed of a variety of View objects, like ImageView or TextView objects.
+A cell may also be a ViewGroup object (for example, you can nest another TableLayout as a cell).</p>
+<p>The following sample layout has two rows and two cells in each. The accompanying screenshot shows the 
+result, with cell borders displayed as dotted lines (added for visual effect). </p>
+
+<table class="columns">
+    <tr>
+        <td>
+        <pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:stretchColumns="1">
+    &lt;TableRow>
+        &lt;TextView
+            android:text="@string/table_layout_4_open"
+            android:padding="3dip" />
+        &lt;TextView
+            android:text="@string/table_layout_4_open_shortcut"
+            android:gravity="right"
+            android:padding="3dip" />
+    &lt;/TableRow>
+
+    &lt;TableRow>
+        &lt;TextView
+            android:text="@string/table_layout_4_save"
+            android:padding="3dip" />
+        &lt;TextView
+            android:text="@string/table_layout_4_save_shortcut"
+            android:gravity="right"
+            android:padding="3dip" />
+    &lt;/TableRow>
+&lt;/TableLayout>
+</pre></td>
+        <td><img src="{@docRoot}images/table_layout.png" alt="" style="margin:0" /></td>
+    </tr>
+</table>
+
+<p>Columns can be hidden, marked to stretch and fill the available screen space,
+    or can be marked as shrinkable to force the column to shrink until the table
+    fits the screen. See the {@link android.widget.TableLayout TableLayout reference} 
+documentation for more details. </p>
+
+
+<h2 id="example">Example</h2>
+<ol>
+  <li>Start a new project named <em>HelloTableLayout</em>.</li>
+  <li>Open the <code>res/layout/main.xml</code> file and insert the following:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:stretchColumns="1">
+
+    &lt;TableRow>
+        &lt;TextView
+            android:layout_column="1"
+            android:text="Open..."
+            android:padding="3dip" />
+        &lt;TextView
+            android:text="Ctrl-O"
+            android:gravity="right"
+            android:padding="3dip" />
+    &lt;/TableRow>
+
+    &lt;TableRow>
+        &lt;TextView
+            android:layout_column="1"
+            android:text="Save..."
+            android:padding="3dip" />
+        &lt;TextView
+            android:text="Ctrl-S"
+            android:gravity="right"
+            android:padding="3dip" />
+    &lt;/TableRow>
+
+    &lt;TableRow>
+        &lt;TextView
+            android:layout_column="1"
+            android:text="Save As..."
+            android:padding="3dip" />
+        &lt;TextView
+            android:text="Ctrl-Shift-S"
+            android:gravity="right"
+            android:padding="3dip" />
+    &lt;/TableRow>
+
+    &lt;View
+        android:layout_height="2dip"
+        android:background="#FF909090" />
+
+    &lt;TableRow>
+        &lt;TextView
+            android:text="X"
+            android:padding="3dip" />
+        &lt;TextView
+            android:text="Import..."
+            android:padding="3dip" />
+    &lt;/TableRow>
+
+    &lt;TableRow>
+        &lt;TextView
+            android:text="X"
+            android:padding="3dip" />
+        &lt;TextView
+            android:text="Export..."
+            android:padding="3dip" />
+        &lt;TextView
+            android:text="Ctrl-E"
+            android:gravity="right"
+            android:padding="3dip" />
+    &lt;/TableRow>
+
+    &lt;View
+        android:layout_height="2dip"
+        android:background="#FF909090" />
+
+    &lt;TableRow>
+        &lt;TextView
+            android:layout_column="1"
+            android:text="Quit"
+            android:padding="3dip" />
+    &lt;/TableRow>
+&lt;/TableLayout>
+</pre>
+<p>Notice how this resembles the structure of an HTML table. The {@link android.widget.TableLayout}
+element is like the HTML <code>&lt;table&gt;</code> element; {@link android.widget.TableRow} is like
+a <code>>&lt;tr>&gt;</code> element;
+but for the cells, you can use any kind of {@link android.view.View} element. In this example, a
+{@link android.widget.TextView} is used for each cell. In between some of the rows, there is also a
+basic {@link android.view.View}, which is used to draw a horizontal line.</p>
+
+</li>
+<li>Make sure your <em>HelloTableLayout</em> Activity loads this layout in the
+{@link android.app.Activity#onCreate(Bundle) onCreate()} method:
+<pre>
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.main);
+}
+</pre>
+<p>The {@link android.app.Activity#setContentView(int)} method loads the
+layout file for the {@link android.app.Activity}, specified by the resource
+ID &mdash; <code>R.layout.main</code> refers to the <code>res/layout/main.xml</code> layout
+file.</p>
+</li>
+<li>Run the application.</li>
+</ol>
+<p>You should see the following:</p>
+<img src="images/hello-tablelayout.png" width="150px" />
+
+
+
diff --git a/docs/html/guide/topics/ui/layout/gridview.jd b/docs/html/guide/topics/ui/layout/gridview.jd
new file mode 100644
index 0000000..284a25a
--- /dev/null
+++ b/docs/html/guide/topics/ui/layout/gridview.jd
@@ -0,0 +1,191 @@
+page.title=Grid
+parent.title=Layouts
+parent.link=layout-objects.html
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document</h2>
+  <ol>
+    <li><a href="#example">Example</a></li>
+  </ol>
+  <h2>Key classes</h2>
+  <ol>
+	<li>{@link android.widget.GridView}</li>
+	<li>{@link android.widget.ImageView}</li>
+	<li>{@link android.widget.BaseAdapter}</li>
+  	<li>{@link android.widget.AdapterView.OnItemClickListener}</li>
+  </ol>
+</div>
+</div>
+<p>{@link android.widget.GridView} is a {@link android.view.ViewGroup} that displays items in a
+two-dimensional,
+scrollable grid. The grid items are automatically inserted to the layout using a {@link
+android.widget.ListAdapter}.</p>
+
+<img src="{@docRoot}images/ui/gridview.png" alt="" />
+
+
+<h2 id="example">Example</h2>
+<p>In this tutorial, you'll create a grid of image thumbnails. When an item is selected, a
+toast message will display the position of the image.</p>
+
+
+<ol>
+  <li>Start a new project named <em>HelloGridView</em>.</li>
+  <li>Find some photos you'd like to use, or <a
+href="{@docRoot}shareables/sample_images.zip">download these sample images</a>. Save the image files
+into the project's
+<code>res/drawable/</code> directory.</li>
+  <li>Open the <code>res/layout/main.xml</code> file and insert the following:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;GridView xmlns:android="http://schemas.android.com/apk/res/android" 
+    android:id="@+id/gridview"
+    android:layout_width="fill_parent" 
+    android:layout_height="fill_parent"
+    android:columnWidth="90dp"
+    android:numColumns="auto_fit"
+    android:verticalSpacing="10dp"
+    android:horizontalSpacing="10dp"
+    android:stretchMode="columnWidth"
+    android:gravity="center"
+/>
+</pre>
+  <p>This {@link android.widget.GridView} will fill the entire screen. The attributes are rather
+self explanatory. For more information about valid attributes, see the {@link
+android.widget.GridView} reference.</p>
+</li>
+  <li>Open <code>HelloGridView.java</code> and insert the following code for the
+{@link android.app.Activity#onCreate(Bundle) onCreate()} method:
+<pre>
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.main);
+
+    GridView gridview = (GridView) findViewById(R.id.gridview);
+    gridview.setAdapter(new ImageAdapter(this));
+
+    gridview.setOnItemClickListener(new OnItemClickListener() {
+        public void onItemClick(AdapterView&lt;?> parent, View v, int position, long id) {
+            Toast.makeText(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show();
+        }
+    });
+}
+</pre>
+  <p>After the {@code main.xml} layout is set for the content view, the
+{@link android.widget.GridView} is captured from the layout with {@link
+android.app.Activity#findViewById(int)}. The {@link
+android.widget.GridView#setAdapter(T) setAdapter()} method then sets a custom adapter ({@code
+ImageAdapter}) as the source for all items to be displayed in the grid. The {@code ImageAdapter} is
+created in the next step.</p>
+<p>To do something when an item in the grid is clicked, the {@link
+android.widget.AdapterView#setOnItemClickListener(OnItemClickListener) setOnItemClickListener()}
+method is passed a new {@link android.widget.AdapterView.OnItemClickListener}. This anonymous
+instance defines the {@link
+android.widget.AdapterView.OnItemClickListener#onItemClick(AdapterView,View,int,long)
+onItemClick()} callback method to show a {@link android.widget.Toast} that displays the index
+position (zero-based) of the selected item (in a real world scenario, the position could be used to
+get the full sized
+image for some other task).</p>
+
+</li>
+<li>Create a new class called <code>ImageAdapter</code> that extends {@link
+android.widget.BaseAdapter}:
+<pre>
+public class ImageAdapter extends BaseAdapter {
+    private Context mContext;
+
+    public ImageAdapter(Context c) {
+        mContext = c;
+    }
+
+    public int getCount() {
+        return mThumbIds.length;
+    }
+
+    public Object getItem(int position) {
+        return null;
+    }
+
+    public long getItemId(int position) {
+        return 0;
+    }
+
+    // create a new ImageView for each item referenced by the Adapter
+    public View getView(int position, View convertView, ViewGroup parent) {
+        ImageView imageView;
+        if (convertView == null) {  // if it's not recycled, initialize some attributes
+            imageView = new ImageView(mContext);
+            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
+            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
+            imageView.setPadding(8, 8, 8, 8);
+        } else {
+            imageView = (ImageView) convertView;
+        }
+
+        imageView.setImageResource(mThumbIds[position]);
+        return imageView;
+    }
+
+    // references to our images
+    private Integer[] mThumbIds = {
+            R.drawable.sample_2, R.drawable.sample_3,
+            R.drawable.sample_4, R.drawable.sample_5,
+            R.drawable.sample_6, R.drawable.sample_7,
+            R.drawable.sample_0, R.drawable.sample_1,
+            R.drawable.sample_2, R.drawable.sample_3,
+            R.drawable.sample_4, R.drawable.sample_5,
+            R.drawable.sample_6, R.drawable.sample_7,
+            R.drawable.sample_0, R.drawable.sample_1,
+            R.drawable.sample_2, R.drawable.sample_3,
+            R.drawable.sample_4, R.drawable.sample_5,
+            R.drawable.sample_6, R.drawable.sample_7
+    };
+}
+</pre>
+<p>First, this implements some required methods inherited from {@link
+android.widget.BaseAdapter}. The constructor and {@link
+android.widget.Adapter#getCount()} are self-explanatory. Normally, {@link
+android.widget.Adapter#getItem(int)} should return the actual object at the specified position in
+the adapter, but it's ignored for this example. Likewise, {@link
+android.widget.Adapter#getItemId(int)} should return the row id of the item, but it's not
+needed here.</p>
+
+<p>The first method necessary is {@link android.widget.Adapter#getView(int,View,ViewGroup)
+getView()}. This method creates a new {@link android.view.View} for each image added to the {@code
+ImageAdapter}. When this is called, a {@link android.view.View} is passed in, which is normally a
+recycled object (at least after this has been called once), so there's a check to see if the
+object is null. If it <em>is</em> null, an {@link android.widget.ImageView} is instantiated and
+configured with desired properties for the image presentation:</p>
+<ul>
+  <li>{@link android.view.View#setLayoutParams(ViewGroup.LayoutParams)} sets
+the height and width for the View&mdash;this ensures that, no matter the size of the drawable, each
+image is resized and cropped to fit in these dimensions, as appropriate.</li>
+  <li>{@link android.widget.ImageView#setScaleType(ImageView.ScaleType)} declares that images should
+be cropped toward the center (if necessary).</li>
+  <li>{@link android.widget.ImageView#setPadding(int,int,int,int)} defines the padding for all
+sides. (Note that, if the images have different aspect-ratios, then less
+padding will cause for more cropping of the image if it does not match
+the dimensions given to the ImageView.)</li>
+</ul>
+
+<p>If the {@link android.view.View} passed to {@link
+android.widget.Adapter#getView(int,View,ViewGroup) getView()} is <em>not</em> null, then the local
+{@link android.widget.ImageView} is initialized with the recycled {@link android.view.View}
+object.</p>
+
+<p>At the end of the {@link android.widget.Adapter#getView(int,View,ViewGroup) getView()} method,
+the {@code
+position} integer passed into the method is used to select an image from the {@code mThumbIds}
+array, which is set as the image resource for the {@link android.widget.ImageView}.</p>
+<p>All that's left is to define the {@code mThumbIds} array of drawable resources.</p>
+</li>
+<li>Run the application.</li>
+</ol>
+
+<p>Try experimenting with the behaviors of the {@link android.widget.GridView} and {@link
+android.widget.ImageView} elements by adjusting their properties. For example, instead of using
+{@link android.view.View#setLayoutParams(ViewGroup.LayoutParams)}, try using
+{@link android.widget.ImageView#setAdjustViewBounds(boolean)}. </p>
+
+
diff --git a/docs/html/guide/topics/ui/layout/linear.jd b/docs/html/guide/topics/ui/layout/linear.jd
new file mode 100644
index 0000000..8e33706
--- /dev/null
+++ b/docs/html/guide/topics/ui/layout/linear.jd
@@ -0,0 +1,116 @@
+page.title=Linear Layout
+parent.title=Layouts
+parent.link=layout-objects.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document</h2>
+<ol>
+  <li><a href="#Weight">Layout Weight</a></li>
+  <li><a href="#Example">Example</a></li>
+</ol>
+
+<h2>Key classes</h2>
+<ol>
+  <li>{@link android.widget.LinearLayout}</li>
+  <li>{@link android.widget.LinearLayout.LayoutParams}</li>
+</ol>
+</div>
+</div>
+
+<p>{@link android.widget.LinearLayout} is a view group that aligns all children in a single
+direction, vertically or horizontally. You can specify the layout direction with the
+<a href="{@docRoot}reference/android/widget/LinearLayout.html#attr_android:orientation">{@code
+android:orientation}</a> attribute.</p>
+
+<img src="{@docRoot}images/ui/linearlayout.png" alt="" />
+
+<p>All children of a {@link android.widget.LinearLayout} are
+stacked one after the other, so a vertical list will only have one child per
+row, no matter how wide they are, and a horizontal list will only be one row
+high (the height of the tallest child, plus padding). A {@link
+android.widget.LinearLayout LinearLayout} respects <em>margin</em>s between children
+and the <em>gravity</em> (right, center, or left alignment) of each child. </p>
+
+
+<h2 id="Weight">Layout Weight</h2>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>Equally weighted children</h3>
+<p>To create a linear layout in which each child uses the same amount of
+space on the screen, set the <a
+href="{@docRoot}reference/android/view/ViewGroup.LayoutParams.html#attr_android:layout_height"
+>{@code android:layout_height}</a> of each view to {@code "0dp"} (for a
+vertical layout) or the <a
+href="{@docRoot}reference/android/view/ViewGroup.LayoutParams.html#attr_android:layout_width"
+>{@code android:layout_width}</a> of each view to {@code "0dp"} (for a
+horizontal
+layout). Then set the <a
+href="{@docRoot}reference/android/widget/LinearLayout.LayoutParams.html#attr_android:layout_weight"
+>{@code android:layout_weight}</a> of each view to {@code "1"}.</p>
+</div>
+</div>
+
+
+<p>{@link android.widget.LinearLayout} also supports assigning a
+<em>weight</em> to individual children with the <a
+href="{@docRoot}reference/android/widget/LinearLayout.LayoutParams.html#attr_android:layout_weight"
+>{@code android:layout_weight}</a> attribute.
+This attribute assigns an "importance" value to a view in
+terms of how much space is should occupy on the screen. A larger weight value allows it to expand
+to fill any remaining space in the parent view. 
+Child views can specify a weight value, and then any remaining space in the view group is
+assigned to children in the proportion of their declared weight. Default
+weight is zero.</p>
+
+<p>For example, if there are three text fields and two of them declare a weight of 1, while the
+other is given no weight, the third text field without weight will not grow and will only occupy the
+area required by its content. The other two will expand equally to fill the space remaining after
+all three fields are measured. If the third field is then given a weight of 2 (instead of 0), then
+it is now declared more important than both the others, so it gets half the total remaining space,
+while the first two
+share the rest equally.</p>
+
+
+<h2 id="Example">Example</h2>
+
+<div class="figure" style="width:220px;margin-top:0">
+<img src="{@docRoot}images/ui/sample-linearlayout.png" alt="" />
+</div>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:paddingLeft="16dp"
+    android:paddingRight="16dp"
+    android:orientation="vertical" >
+    &lt;EditText
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:hint="@string/to" />
+    &lt;EditText
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:hint="@string/subject" />
+    &lt;EditText
+        android:layout_width="fill_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:gravity="top"
+        android:hint="@string/message" />
+    &lt;Button
+        android:layout_width="100dp"
+        android:layout_height="wrap_content"
+        android:layout_gravity="right"
+        android:text="@string/send" />
+&lt;/LinearLayout>
+</pre>
+
+<p>For details about the attributes available to each child view of a {@link
+android.widget.LinearLayout}, see {@link android.widget.LinearLayout.LayoutParams}.</p>
+
+
diff --git a/docs/html/guide/topics/ui/layout/listview.jd b/docs/html/guide/topics/ui/layout/listview.jd
new file mode 100644
index 0000000..26a7597
--- /dev/null
+++ b/docs/html/guide/topics/ui/layout/listview.jd
@@ -0,0 +1,151 @@
+page.title=List View
+parent.title=Layouts
+parent.link=declaring-layout.html
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document</h2>
+  <ol>
+    <li><a href="#Loader">Using a Loader</a></li>
+    <li><a href="#Example">Example</a></li>
+  </ol>
+  <h2>Key classes</h2>
+  <ol>
+    <li>{@link android.widget.ListView}</li>
+    <li>{@link android.widget.Adapter}</li>
+    <li>{@link android.support.v4.content.CursorLoader}</li>
+  </ol>
+  <h2>See also</h2>
+  <ol>
+    <li><a
+href="{@docRoot}guide/components/loaders.html">Loaders</a></li>
+  </ol>
+</div>
+</div>
+
+<p>{@link android.widget.ListView} is a view group that displays a list of
+scrollable items. The list items are automatically inserted to the list using an {@link
+android.widget.Adapter} that pulls content from a source such as an array or database query and
+converts each item result into a view that's placed into the list.</p>
+
+<img src="{@docRoot}images/ui/listview.png" alt="" />
+
+<h2 id="Loader">Using a Loader</h2>
+
+<p>Using a {@link
+android.support.v4.content.CursorLoader} is the standard way to query a {@link
+android.database.Cursor} as an asynchronous task in order to avoid blocking your app's main thread
+with the query. When the {@link android.support.v4.content.CursorLoader} receives the {@link
+android.database.Cursor} result, the {@link android.support.v4.app.LoaderManager.LoaderCallbacks
+LoaderCallbacks} receives a callback to {@link
+android.support.v4.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()}, which is
+where you update your {@link
+android.widget.Adapter} with the new {@link android.database.Cursor} and the list view then
+displays the results.</p>
+
+<p>Although the {@link android.support.v4.content.CursorLoader} APIs were first introduced in
+Android 3.0 (API level 11), they are also available in the <a
+href="{@docRoot}tools/extras/support-library.html">Support Library</a> so that your app may use them
+while supporting devices running Android 1.6 or higher.</p>
+
+<p>For more information about using a {@link
+android.support.v4.content.Loader} to asynchronously load data, see the <a
+href="{@docRoot}guide/components/loaders.html">Loaders</a> guide.</p>
+
+
+<h2 id="Example">Example</h2>
+
+<p>The following example uses {@link android.app.ListActivity}, which is an activity that includes
+a {@link android.widget.ListView} as its only layout element by default. It performs a query to
+the <a
+href="{@docRoot}guide/topics/providers/contacts-provider.html">Contacts
+Provider</a> for a list of names and phone numbers.</p>
+
+<p>The activity implements the {@link android.support.v4.app.LoaderManager.LoaderCallbacks
+LoaderCallbacks} interface in order to use a {@link android.support.v4.content.CursorLoader} that
+dynamically loads the data for the list view.</p>
+
+<pre>
+public class ListViewLoader extends ListActivity
+        implements LoaderManager.LoaderCallbacks&lt;Cursor> {
+
+    // This is the Adapter being used to display the list's data
+    SimpleCursorAdapter mAdapter;
+
+    // These are the Contacts rows that we will retrieve
+    static final String[] PROJECTION = new String[] {ContactsContract.Data._ID,
+            ContactsContract.Data.DISPLAY_NAME};
+
+    // This is the select criteria
+    static final String SELECTION = "((" + 
+            ContactsContract.Data.DISPLAY_NAME + " NOTNULL) AND (" +
+            ContactsContract.Data.DISPLAY_NAME + " != '' ))";
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Create a progress bar to display while the list loads
+        ProgressBar progressBar = new ProgressBar(this);
+        progressBar.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
+                LayoutParams.WRAP_CONTENT, Gravity.CENTER));
+        progressBar.setIndeterminate(true);
+        getListView().setEmptyView(progressBar);
+
+        // Must add the progress bar to the root of the layout
+        ViewGroup root = (ViewGroup) findViewById(android.R.id.content);
+        root.addView(progressBar);
+
+        // For the cursor adapter, specify which columns go into which views
+        String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME};
+        int[] toViews = {android.R.id.text1}; // The TextView in simple_list_item_1
+
+        // Create an empty adapter we will use to display the loaded data.
+        // We pass null for the cursor, then update it in onLoadFinished()
+        mAdapter = new SimpleCursorAdapter(this, 
+                android.R.layout.simple_list_item_1, null,
+                fromColumns, toViews, 0);
+        setListAdapter(mAdapter);
+
+        // Prepare the loader.  Either re-connect with an existing one,
+        // or start a new one.
+        getLoaderManager().initLoader(0, null, this);
+    }
+
+    // Called when a new Loader needs to be created
+    public Loader&lt;Cursor> onCreateLoader(int id, Bundle args) {
+        // Now create and return a CursorLoader that will take care of
+        // creating a Cursor for the data being displayed.
+        return new CursorLoader(this, ContactsContract.Data.CONTENT_URI,
+                PROJECTION, SELECTION, null, null);
+    }
+
+    // Called when a previously created loader has finished loading
+    public void onLoadFinished(Loader&lt;Cursor> loader, Cursor data) {
+        // Swap the new cursor in.  (The framework will take care of closing the
+        // old cursor once we return.)
+        mAdapter.swapCursor(data);
+    }
+
+    // Called when a previously created loader is reset, making the data unavailable
+    public void onLoaderReset(Loader&lt;Cursor> loader) {
+        // This is called when the last Cursor provided to onLoadFinished()
+        // above is about to be closed.  We need to make sure we are no
+        // longer using it.
+        mAdapter.swapCursor(null);
+    }
+
+    &#64;Override 
+    public void onListItemClick(ListView l, View v, int position, long id) {
+        // Do something when a list item is clicked
+    }
+}
+</pre>
+
+<p class="note"><strong>Note:</strong> Because this sample performs a query on the <a
+href="{@docRoot}guide/topics/providers/contacts-provider.html">Contacts
+Provider</a>, if you want to
+try this code, your app must request the {@link android.Manifest.permission#READ_CONTACTS}
+permission in the manifest file:<br/>
+<code>&lt;uses-permission android:name="android.permission.READ_CONTACTS" /></p>
+
diff --git a/docs/html/guide/topics/ui/layout/relative.jd b/docs/html/guide/topics/ui/layout/relative.jd
new file mode 100644
index 0000000..ee6cf02
--- /dev/null
+++ b/docs/html/guide/topics/ui/layout/relative.jd
@@ -0,0 +1,118 @@
+page.title=Relative Layout
+parent.title=Layouts
+parent.link=layout-objects.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document</h2>
+  <ol>
+    <li><a href="#Position">Positioning Views</a></li>
+    <li><a href="#Example">Example</a></li>
+  </ol>
+  <h2>Key classes</h2>
+  <ol>
+  <li>{@link android.widget.RelativeLayout}</li>
+  <li>{@link android.widget.RelativeLayout.LayoutParams}</li>
+  </ol>
+</div>
+</div>
+
+<p>{@link android.widget.RelativeLayout} is a view group that displays child views in relative
+positions. The position of each view can be specified as relative to sibling elements (such as to
+the left-of or below another view) or in positions relative to the parent {@link
+android.widget.RelativeLayout} area (such as aligned to the bottom, left of center).</p>
+
+<img src="{@docRoot}images/ui/relativelayout.png" alt="" />
+
+<p>A {@link android.widget.RelativeLayout} is a very powerful utility for designing a user interface
+because it can eliminate nested view groups and keep your layout hierarchy flat, which improves
+performance. If you find yourself using several nested {@link android.widget.LinearLayout} groups,
+you may be able to replace them with a single {@link android.widget.RelativeLayout}.</p>
+
+
+<h2 id="Position">Positioning Views</h2>
+
+<p>{@link android.widget.RelativeLayout} lets child views specify their position relative to the
+parent view or to each other (specified by ID). So you can align two elements by right border, or
+make one below another, centered in the screen, centered left, and so on. By default, all child
+views are drawn at the top-left of the layout, so you must define the position of each view
+using the various layout properties available from {@link
+android.widget.RelativeLayout.LayoutParams}.</p>
+ 
+<p>Some of the many layout properties available to views in a {@link android.widget.RelativeLayout}
+include:</p>
+<dl>
+  <dt><a
+href="{docRoot}reference/android/widget/RelativeLayout.LayoutParams.html#attr_android:layout_alignParentTop"
+>{@code android:layout_alignParentTop}</a></dt>
+    <dd>If {@code "true"}, makes the top edge of this view match the top edge of the parent. </dd>
+  <dt><a
+href="{docRoot}reference/android/widget/RelativeLayout.LayoutParams.html#attr_android:layout_centerVertical"
+>{@code android:layout_centerVertical}</a></dt>
+    <dd>If {@code "true"}, centers this child vertically within its parent.</dd>
+  <dt><a
+href="{docRoot}reference/android/widget/RelativeLayout.LayoutParams.html#attr_android:layout_below"
+>{@code android:layout_below}</a></dt>
+    <dd>Positions the top edge of this view below the view specified with a resource ID.</dd>
+  <dt><a
+href="{docRoot}reference/android/widget/RelativeLayout.LayoutParams.html#attr_android:layout_toRightOf"
+>{@code android:layout_toRightOf}</a></dt>
+    <dd>Positions the left edge of this view to the right of the view specified with a resource ID.</dd>
+</dl>
+
+<p>These are just a few examples. All layout attributes are documented at {@link
+android.widget.RelativeLayout.LayoutParams}.</p>
+
+<p>The value for each layout property is either a boolean to
+enable a layout position relative to the parent {@link android.widget.RelativeLayout} or an ID that
+references another view in the layout against which the view should be positioned.</p>
+
+<p>In your XML layout, dependencies against other views in the layout can be declared in any order.
+For example, you can declare that "view1" be positioned below "view2" even if "view2" is the last
+view declared in the hierarchy. The example below demonstrates such a scenario.</p>
+
+
+<h2 id="Example">Example</h2>
+
+<p>Each of the attributes that control the relative position of each view are emphasized.</p>
+<div class="figure" style="width:220px;margin-top:0">
+<img src="{@docRoot}images/ui/sample-relativelayout.png" alt="" />
+</div>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:paddingLeft="16dp"
+    android:paddingRight="16dp" >
+    &lt;EditText
+        android:id="@+id/name"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:hint="@string/reminder" />
+    &lt;Spinner
+        android:id="@+id/dates"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        <strong>android:layout_below="@id/name"</strong>
+        <strong>android:layout_alignParentLeft="true"</strong>
+        <strong>android:layout_toLeftOf="@+id/times"</strong> />
+    &lt;Spinner
+        android:id="@id/times"
+        android:layout_width="96dp"
+        android:layout_height="wrap_content"
+        <strong>android:layout_below="@id/name"</strong>
+        <strong>android:layout_alignParentRight="true"</strong> />
+    &lt;Button
+        android:layout_width="96dp"
+        android:layout_height="wrap_content"
+        <strong>android:layout_below="@id/times"</strong>
+        <strong>android:layout_alignParentRight="true"</strong>
+        android:text="@string/done" />
+&lt;/RelativeLayout>
+</pre>
+
+<p>For details about all the layout attributes available to each child view of a {@link
+android.widget.RelativeLayout}, see {@link android.widget.RelativeLayout.LayoutParams}.</p>
\ No newline at end of file
diff --git a/docs/html/guide/topics/ui/layout/tabs.jd b/docs/html/guide/topics/ui/layout/tabs.jd
new file mode 100644
index 0000000..62663de
--- /dev/null
+++ b/docs/html/guide/topics/ui/layout/tabs.jd
@@ -0,0 +1,219 @@
+page.title=Tabbed
+parent.title=Layouts
+parent.link=layout-objects.html
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document</h2>
+  <ol>
+    <li><a href="#example">Example</a></li>
+  </ol>
+  <h2>Key classes</h2>
+  <ol>
+<li>{@link android.widget.TabWidget}</li>
+<li>{@link android.widget.TabHost}</li>
+<li>{@link android.widget.TabHost.TabSpec}</li>
+<li>{@link android.widget.FrameLayout}</li>
+  </ol>
+</div>
+</div>
+<p>To create a tabbed UI, you need to use a {@link android.widget.TabHost} and a {@link
+android.widget.TabWidget}. The {@link android.widget.TabHost} must be the root node for the layout,
+which contains both the {@link android.widget.TabWidget} for displaying the tabs and a {@link
+android.widget.FrameLayout} for displaying the tab content.</p>
+
+<img src="{@docRoot}images/ui/tabs.png" alt="" />
+
+<p>You can implement your tab content in one of two ways: use the tabs to swap
+{@link android.view.View}s within the same {@link android.app.Activity}, or use the tabs to change
+between entirely separate activities. Which method you want for your application will depend on your
+demands, but if each tab provides a distinct user activity, then it probably makes sense to use
+a separate {@link android.app.Activity} for each tab, so that you can better manage the application
+in discrete groups, rather than one massive application and layout.</p>
+<h2 id="example">Example</h2>
+<p>In this tutorial, you'll create a tabbed UI that uses a separate {@link
+android.app.Activity} for each tab.</p>
+
+<ol>
+  <li>Start a new project named <em>HelloTabWidget</em>.</li>
+  <li>First, create three separate {@link android.app.Activity} classes in your project:
+<code>ArtistsActivity</code>, <code>AlbumsActivity</code>, and <code>SongsActivity</code>. These
+will each represent a separate tab. For now, make each one display a simple message using a {@link
+android.widget.TextView}. For example:
+<pre>
+public class ArtistsActivity extends Activity {
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        TextView textview = new TextView(this);
+        textview.setText("This is the Artists tab");
+        setContentView(textview);
+    }
+}
+</pre>
+  <p>Notice that this doesn't use a layout file. Just create a {@link
+android.widget.TextView}, give it some text and set that as the content. Duplicate this for
+each of the three activities, and add the corresponding <code>&lt;activity/&gt;</code> tags to the Android Manifest file.</p>
+
+  <li>You need an icon for each of your tabs. For each icon, you should create two versions: one
+for when the tab is selected and one for when it is unselected. The
+general design recommendation is for the selected icon to be a dark color (grey), and the
+unselected icon to be a light color (white). (See the <a
+href="{@docRoot}guide/practices/ui_guidelines/icon_design.html#tabstructure">Icon Design
+Guidelines</a>.) For example:
+  <p>
+  <img src="images/ic_tab_artists_white.png" title="unselected tab icon"  alt="" />
+  <img src="images/ic_tab_artists_grey.png" title="selected tab icon" alt="" />
+  </p>
+  <p>For this tutorial, you can copy these images and use them for all three tabs. (When you
+create tabs in your own application, you should create customized tab icons.)</p>
+  <p>Now create a <a
+href="{@docRoot}guide/topics/resources/drawable-resource.html#StateList">state-list drawable</a>
+that specifies which image to use for each tab state:</p>
+  <ol>
+    <li>Save the icon images in your project <code>res/drawable/</code> directory.</li>
+    <li>Create a new XML file in <code>res/drawable/</code>
+named <code>ic_tab_artists.xml</code> and insert the following:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;selector xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;!-- When selected, use grey -->
+    &lt;item android:drawable="@drawable/ic_tab_artists_grey"
+          android:state_selected="true" />
+    &lt;!-- When not selected, use white-->
+    &lt;item android:drawable="@drawable/ic_tab_artists_white" />
+&lt;/selector>
+</pre>
+  <p>This is a <a
+href="{@docRoot}guide/topics/resources/drawable-resource.html#StateList">state-list drawable</a>,
+which you will apply as the tab image. When the tab state changes, the tab icon will
+automatically switch between the images defined here.</p>
+    </li>
+  </ol>
+  </li>
+
+  <li>Open the <code>res/layout/main.xml</code> file and insert the following:
+  <pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;TabHost xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@android:id/tabhost"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent">
+    &lt;LinearLayout
+        android:orientation="vertical"
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"
+        android:padding="5dp">
+        &lt;TabWidget
+            android:id="@android:id/tabs"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content" />
+        &lt;FrameLayout
+            android:id="@android:id/tabcontent"
+            android:layout_width="fill_parent"
+            android:layout_height="fill_parent"
+            android:padding="5dp" />
+    &lt;/LinearLayout>
+&lt;/TabHost>
+</pre>
+    <p>This is the layout that will display the tabs and provide navigation between each {@link
+    android.app.Activity} created above.</p>
+    <p>The {@link android.widget.TabHost} requires that a {@link android.widget.TabWidget} and a
+{@link android.widget.FrameLayout} both live somewhere within it. To position the {@link
+android.widget.TabWidget} and {@link android.widget.FrameLayout} vertically, a {@link
+android.widget.LinearLayout} is used. The {@link android.widget.FrameLayout} is where the content
+for each tab goes, which is empty now because the {@link android.widget.TabHost} will automatically
+embed each {@link android.app.Activity} within it.</p>
+    <p>Notice that the {@link android.widget.TabWidget} and the {@link android.widget.FrameLayout}
+    elements have the IDs {@code tabs} and {@code tabcontent}, respectively. These names
+    must be used so that the {@link android.widget.TabHost} can retrieve references to each of
+    them. It expects exactly these names.</p>
+  </li>
+
+  <li>Now open <code>HelloTabWidget.java</code> and make it extend {@link
+  android.app.TabActivity}:</p>
+<pre>
+public class HelloTabWidget extends TabActivity {
+</pre>
+  </li>
+  <li>Use the following code for the {@link android.app.Activity#onCreate(Bundle) onCreate()}
+  method:
+<pre>
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.main);
+
+    Resources res = getResources(); // Resource object to get Drawables
+    TabHost tabHost = getTabHost();  // The activity TabHost
+    TabHost.TabSpec spec;  // Resusable TabSpec for each tab
+    Intent intent;  // Reusable Intent for each tab
+
+    // Create an Intent to launch an Activity for the tab (to be reused)
+    intent = new Intent().setClass(this, ArtistsActivity.class);
+
+    // Initialize a TabSpec for each tab and add it to the TabHost
+    spec = tabHost.newTabSpec("artists").setIndicator("Artists",
+                      res.getDrawable(R.drawable.ic_tab_artists))
+                  .setContent(intent);
+    tabHost.addTab(spec);
+
+    // Do the same for the other tabs
+    intent = new Intent().setClass(this, AlbumsActivity.class);
+    spec = tabHost.newTabSpec("albums").setIndicator("Albums",
+                      res.getDrawable(R.drawable.ic_tab_albums))
+                  .setContent(intent);
+    tabHost.addTab(spec);
+
+    intent = new Intent().setClass(this, SongsActivity.class);
+    spec = tabHost.newTabSpec("songs").setIndicator("Songs",
+                      res.getDrawable(R.drawable.ic_tab_songs))
+                  .setContent(intent);
+    tabHost.addTab(spec);
+
+    tabHost.setCurrentTab(2);
+}
+</pre>
+    <p>This sets up each tab with their text and icon, and assigns each one an {@link
+android.app.Activity}.</p>
+    <p>A reference to the {@link android.widget.TabHost} is first captured with {@link
+android.app.TabActivity#getTabHost()}. Then, for
+each tab, a {@link android.widget.TabHost.TabSpec} is created to define the tab properties. The
+{@link android.widget.TabHost#newTabSpec(String)} method creates a new {@link
+android.widget.TabHost.TabSpec} identified by the given string tag. For each
+{@link android.widget.TabHost.TabSpec}, {@link
+android.widget.TabHost.TabSpec#setIndicator(CharSequence,Drawable)} is called to set the text and
+icon for the tab, and {@link android.widget.TabHost.TabSpec#setContent(Intent)} is called to specify
+the {@link android.content.Intent} to open the appropriate {@link android.app.Activity}. Each
+{@link android.widget.TabHost.TabSpec} is then added to the {@link android.widget.TabHost} by
+calling {@link android.widget.TabHost#addTab(TabHost.TabSpec)}.</p>
+
+    <p>At the very end, {@link
+    android.widget.TabHost#setCurrentTab(int)} opens the tab to be displayed by default, specified
+    by the index position of the tab.</p>
+
+    <p>Notice that not once was the {@link android.widget.TabWidget} object referenced. This is
+    because a {@link android.widget.TabWidget} must always be a child of a {@link
+    android.widget.TabHost}, which is what you use for almost all interaction with the tabs. So when
+    a tab is added to the {@link android.widget.TabHost}, it's automatically added to the child
+    {@link android.widget.TabWidget}.</p>
+  </li>
+
+  <li>Now open the Android Manifest file and add the <code>NoTitleBar</code> theme to the
+<em>HelloTabWidget</em>'s
+  <code>&lt;activity></code> tag. This will remove the default application title from the top
+  of the layout, leaving more space for the tabs, which effectively operate as their own titles.
+  The <code>&lt;activity></code> tag should look like this:
+<pre>
+&lt;activity android:name=".HelloTabWidget" android:label="@string/app_name"
+          android:theme="&#64;android:style/Theme.NoTitleBar">
+</pre>
+  </li>
+
+  <li>Run the application.</li>
+</ol>
+
+
+<p>Your application should look like this (though your icons may be different):</p>
+<img src="images/hello-tabwidget.png" width="150px" />
+
+
diff --git a/docs/html/guide/topics/ui/menus.jd b/docs/html/guide/topics/ui/menus.jd
index d51a378..01d373e 100644
--- a/docs/html/guide/topics/ui/menus.jd
+++ b/docs/html/guide/topics/ui/menus.jd
@@ -1040,7 +1040,7 @@
 </pre>
 
 <p>Read more about writing intent filters in the
-<a href="/guide/topics/intents/intents-filters.html">Intents and Intent Filters</a> document.</p>
+<a href="/guide/components/intents-filters.html">Intents and Intent Filters</a> document.</p>
 
 <p>For a sample application using this technique, see the 
 <a href="{@docRoot}resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html">Note
diff --git a/docs/html/guide/topics/ui/notifiers/index.jd b/docs/html/guide/topics/ui/notifiers/index.jd
index c61d4f0..caf0df7 100644
--- a/docs/html/guide/topics/ui/notifiers/index.jd
+++ b/docs/html/guide/topics/ui/notifiers/index.jd
@@ -21,7 +21,7 @@
 <ul>
   <li>A <a href="#Toast">Toast Notification</a>, for brief messages that come 
   from the background.</li>
-  <li>A <a href="#StatusBar">Status Bar Notification</a>, for persistent reminders 
+  <li>A <a href="#StatusBar">Status Notification</a>, for persistent reminders 
   that come from the background and request the user's response.</li>
   <li>A <a href="#Dialog">Dialog Notification</a>, for Activity-related notifications.</li>
 </ul>
@@ -44,16 +44,16 @@
 when you're fairly certain the user is paying attention 
 to the screen. A toast can not accept user interaction events; if you'd like
 the user to respond and take action, consider using a 
-<a href="#StatusBar">Status Bar Notification</a> instead.</p>
+<a href="#StatusBar">Status Notification</a> instead.</p>
 
 <p>For more information, refer to <a href="toasts.html">Toast Notifications</a>.</p>
 
 
-<h2 id="StatusBar">Status Bar Notification</h2>
+<h2 id="StatusBar">Status Notification</h2>
 
 <img src="{@docRoot}images/notifications_window.png" alt="" style="float:right; clear:right;" />
 
-<p>A status bar notification adds an icon to the system's status bar 
+<p>A status notification adds an icon to the system's status bar 
 (with an optional ticker-text message) and an expanded message in the "Notifications" window.
 When the user selects the expanded message, Android fires an 
 {@link android.content.Intent} that is defined by the notification (usually to launch an 
@@ -68,7 +68,7 @@
 <a href="#Dialog">Dialog Notification</a> instead.</p>
 
 <p>For more information, refer to 
-<a href="notifications.html">Status Bar Notifications</a>.</p>
+<a href="notifications.html">Status Notifications</a>.</p>
 
 
 <h2 id="Dialog">Dialog Notification</h2>
diff --git a/docs/html/guide/topics/ui/notifiers/notifications.jd b/docs/html/guide/topics/ui/notifiers/notifications.jd
index d104b4b..52092f9 100644
--- a/docs/html/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html/guide/topics/ui/notifiers/notifications.jd
@@ -1,4 +1,4 @@
-page.title=Status Bar Notifications
+page.title=Status Notifications
 parent.title=Notifications
 parent.link=index.html
 @jd:body
@@ -7,7 +7,7 @@
   <div id="qv">
     <h2>Quickview</h2>
     <ul>
-      <li>A status bar notification allows your application to notify the user of an event
+      <li>A status notification allows your application to notify the user of an event
 without interupting their current activity</li>
       <li>You can attach an intent to your notification that the system will initiate when the
 user clicks it</li>
@@ -43,7 +43,7 @@
   </div>
 </div>
 
-<p>A status bar notification adds an icon to the system's status bar
+<p>A status notification adds an icon to the system's status bar
 (with an optional ticker-text message) and a notification message in the notifications window.
 When the user selects the notification, Android fires an
 {@link android.content.Intent} that is defined by the {@link android.app.Notification} (usually to
@@ -51,11 +51,11 @@
 You can also configure the notification to alert the user with a sound, a vibration, and flashing
 lights on the device.</p>
 
-<p>A status bar notification should be used for any case in
+<p>A status notification should be used for any case in
 which a background service needs to alert the user about an event that requires a response. A
 background service
 <strong>should never</strong> launch an activity on its own in order to receive user interaction.
-The service should instead create a status bar notification that will launch the activity
+The service should instead create a status notification that will launch the activity
 when selected by the user.</p>
 
 <p>Figure 1 shows the status bar with a notification icon on the left side.</p>
@@ -78,9 +78,9 @@
 
 <h2 id="Basics">The Basics</h2>
 
-<p>An {@link android.app.Activity} or {@link android.app.Service} can initiate a status bar
+<p>An {@link android.app.Activity} or {@link android.app.Service} can initiate a status
 notification. Because an activity can perform actions only while it is
-running in the foreground and its window has focus, you will usually create status bar notifications
+running in the foreground and its window has focus, you will usually create status notifications
 from a
 service. This way, the notification can be created from the background,
 while the user is using another application or
@@ -88,9 +88,9 @@
 classes: {@link android.app.Notification} and {@link android.app.NotificationManager}.</p>
 
 <p>Use an instance of the {@link android.app.Notification} class to define the properties of your
-status bar notification, such as the status bar icon, the notification message, and extra settings
+status notification, such as the status icon, the notification message, and extra settings
 such as a sound to play. The {@link android.app.NotificationManager} is an Android system service
-that executes and manages all status bar notifications. You do not instantiate the
+that executes and manages all status notifications. You do not instantiate the
 {@link android.app.NotificationManager} directly. In order
 to give it your {@link android.app.Notification}, you must retrieve a reference to the
 {@link android.app.NotificationManager} with
@@ -98,7 +98,7 @@
 then, when you want to notify the user, pass it your {@link android.app.Notification} with
 {@link android.app.NotificationManager#notify(int,Notification) notify()}. </p>
 
-<p>To create a status bar notification:</p>
+<p>To create a status notification:</p>
 <ol>
   <li>Get a reference to the {@link android.app.NotificationManager}:
 <pre>
@@ -277,7 +277,7 @@
 NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
 </pre>
 
-<p>When you want to deliver your status bar notification, pass the {@link android.app.Notification}
+<p>When you want to deliver your status notification, pass the {@link android.app.Notification}
 to the {@link android.app.NotificationManager} with {@link
 android.app.NotificationManager#notify(int,Notification)}.
 The first parameter is the unique ID for the notification and the second is the {@link
@@ -287,7 +287,7 @@
 your application manages different kinds of notifications) select the appropriate action
 when the user returns to your application via the intent defined in the notification.</p>
 
-<p>To clear the status bar notification when the user selects it from the notifications
+<p>To clear the status notification when the user selects it from the notifications
 window, add the "FLAG_AUTO_CANCEL" flag to your {@link android.app.Notification}. You can
 also clear it manually with {@link android.app.NotificationManager#cancel(int)}, passing it the
 notification ID, or clear all your notifications with {@link
@@ -300,14 +300,14 @@
 message that is displayed in the status bar and notifications window, and any other
 alert settings, such as sounds and blinking lights.</p>
 
-<p>A status bar notification <em>requires</em> all of the following:</p>
+<p>A status notification <em>requires</em> all of the following:</p>
 <ul>
   <li>An icon for the status bar</li>
   <li>A title and message, unless you define a
     <a href="#CustomExpandedView">custom notification layout</a></li>
   <li>A {@link android.app.PendingIntent}, to be fired when the notification is selected</li>
 </ul>
-<p>Optional settings for the status bar notification include:</p>
+<p>Optional settings for the status notification include:</p>
 <ul>
   <li>A ticker-text message for the status bar</li>
   <li>An alert sound</li>
@@ -339,7 +339,7 @@
 
 <h3 id="Updating">Updating the notification</h3>
 
-<p>You can update the information in your status bar notification as events
+<p>You can update the information in your status notification as events
 continue to occur in your application. For example, when a new SMS text message arrives
 before previous messages have been read, the Messaging application updates the existing
 notification to display the total number of new messages received.
@@ -484,7 +484,7 @@
   your notification is on-going.</dd>
   <dt>{@link android.app.Notification#number} field</dt>
   <dd>This value indicates the current number of events represented by the notification.
-  The appropriate number is overlaid on top of the status bar icon.
+  The appropriate number is overlaid on top of the status icon.
   If you intend to use this field, then you must start with "1" when the Notification is first
   created. (If you change the value from zero to anything greater during an update, the number
   is not shown.)</dd>
diff --git a/docs/html/guide/topics/ui/overview.jd b/docs/html/guide/topics/ui/overview.jd
new file mode 100644
index 0000000..41f7cc7
--- /dev/null
+++ b/docs/html/guide/topics/ui/overview.jd
@@ -0,0 +1,74 @@
+page.title=UI Overview
+@jd:body
+
+
+<p>All user interface elements in an Android app are built using {@link android.view.View} and
+{@link android.view.ViewGroup} objects. A {@link android.view.View} is an object that draws
+something on the screen that the user can interact with. A {@link android.view.ViewGroup} is an
+object that holds other {@link android.view.View} (and {@link android.view.ViewGroup}) objects in
+order to define the layout of the interface.</p>
+
+<p>Android provides a collection of both {@link android.view.View} and {@link
+android.view.ViewGroup} subclasses that offer you common input controls (such as buttons and text
+fields) and various layout models (such as a linear or relative layout).</p>
+
+
+<h2 id="Layout">User Interface Layout</h2>
+
+<p>The user interface for each component of your app is defined using a hierarchy of {@link
+android.view.View} and {@link android.view.ViewGroup} objects, as shown in figure 1. Each view group
+is an invisible container that organizes child views, while the child views may be input
+controls or other widgets that
+draw some part of the UI. This hierarchy tree can be as simple or complex as you need
+it to be (but simplicity is best for performance).</p>
+
+<img src="{@docRoot}images/viewgroup.png" alt="" />
+<p class="img-caption"><strong>Figure 1.</strong> Illustration of a view hierarchy, which defines a
+UI layout.</p>
+
+<p>To declare your layout, you can instantiate {@link android.view.View} objects in code and start
+building a tree, but the easiest and most effective way to define your layout is with an XML file.
+XML offers a human-readable structure for the layout, similar to HTML.</p>
+
+<p>The name of an XML element for a view is respective to the Android class it represents. So a
+<code>&lt;TextView&gt;</code> element creates a {@link android.widget.TextView} widget in your UI,
+and a <code>&lt;LinearLayout&gt;</code> element creates a {@link android.widget.LinearLayout} view
+group. </p>
+
+<p>For example, a simple vertical layout with a text view and a button looks like this:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="fill_parent" 
+              android:layout_height="fill_parent"
+              android:orientation="vertical" >
+    &lt;TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="I am a TextView" />
+    &lt;Button android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="I am a Button" />
+&lt;/LinearLayout>
+</pre>
+
+<p>When you load a layout resource in your app, Android initializes each node of the layout into a
+runtime object you can use to define additional behaviors, query the object state, or modify the
+layout.</p>
+
+<p>For a complete guide to creating a UI layout, see <a href="declaring-layout.html">XML
+Layouts</a>.
+
+  
+<h2 id="UIComponents">User Interface Components</h2>
+
+<p>You don't have to build all of your UI using {@link android.view.View} and {@link
+android.view.ViewGroup} objects. Android provides several app components that offer
+a standard UI layout for which you simply need to define the content. These UI components each
+have a unique set of APIs that are described in their respective documents, such as <a
+href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a>, <a
+href="{@docRoot}guide/topics/ui/dialogs.html">Dialogs</a>, and <a
+href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Status Notifications</a>.</p>
+
+
diff --git a/docs/html/guide/topics/ui/sharables/sample_images.zip b/docs/html/guide/topics/ui/sharables/sample_images.zip
new file mode 100644
index 0000000..007a68a
--- /dev/null
+++ b/docs/html/guide/topics/ui/sharables/sample_images.zip
Binary files differ
diff --git a/docs/html/guide/topics/views/custom-views.jd b/docs/html/guide/topics/views/custom-views.jd
deleted file mode 100644
index 8589b1a..0000000
--- a/docs/html/guide/topics/views/custom-views.jd
+++ /dev/null
@@ -1,544 +0,0 @@
-page.title=Building Custom Views
-parent.title=Views and Layout
-parent.link=index.html
-@jd:body
-
-<p>Android offers a sophisticated and powerful componentized model for building your UI, based on the fundamental building block classes {@link android.view.View} and {@link android.view.ViewGroup}. To start with, the platform includes a variety of prebuilt View and ViewGroup subclasses &mdash; called widgets and layouts, respectively &mdash; that you can use to construct your UI. The widgets and layouts are fully implemented and handle all of their own measuring and drawing, so you can use them right away. You can make new types of UI elements simply by nesting and grouping the widgets and layouts. Using widgets and layouts is the recommended approach to building a UI for your applications.</p>
-
-<p>A partial list of available widgets includes {@link android.widget.Button Button}, 
-{@link android.widget.TextView TextView}, 
-{@link android.widget.EditText EditText}, 
-{@link android.widget.ListView ListView},
-{@link android.widget.CheckBox CheckBox}, 
-{@link android.widget.RadioButton RadioButton}, 
-{@link android.widget.Gallery Gallery}, 
-{@link android.widget.Spinner Spinner}, and the more special-purpose 
-{@link android.widget.AutoCompleteTextView AutoCompleteTextView}, 
-{@link android.widget.ImageSwitcher ImageSwitcher}, and
-{@link android.widget.TextSwitcher TextSwitcher}. </p>
-
-<p>Among the layouts available are {@link android.widget.LinearLayout LinearLayout}, 
-{@link android.widget.FrameLayout FrameLayout}, {@link android.widget.AbsoluteLayout AbsoluteLayout}, and others. For more examples, see <a href="layout">Common Layout Objects</a>.</p>
-
-<p>If none of the prebuilt widgets or layouts meets your needs, you can also create your own View subclass, such as a layout group or compound control. If you only need to make small adjustments to an existing widget or layout, you can simply subclass the widget or layout and override its methods.
-</p>
-
-<p>Creating your own View subclasses gives you precise control over the appearance and function of a screen element. To give an idea of the control you get with custom views, here are some examples of what you could do with them:</p>
- 
-<ul>
-  <li>
-    You could create a completely custom-rendered View type, for example a "volume
-    control" knob rendered using 2D graphics, and which resembles an
-    analog electronic control.
-  </li>
-  <li>
-    You could combine a group of View components into a new single component, perhaps
-    to make something like a ComboBox (a combination of popup list and free
-    entry text field), a dual-pane selector control (a left and right pane
-    with a list in each where you can re-assign which item is in which
-    list), and so on.
-  </li>
-  <li>
-    You could override the way that an EditText component is rendered on the screen
-    (the <a href="{@docRoot}resources/samples/NotePad/">Notepad sample</a> uses this to good effect, 
-    to create a lined-notepad page).
-  </li>
-  <li>
-    You could capture other events like key presses and handle them in some custom
-    way (such as for a game).
-  </li>
-</ul>
-<p>
-The sections below explain how to create custom Views and use them in your application. 
-For detailed reference information, see the {@link android.view.View} class. </p>
-
-<p>This document covers the following:</p>
-<ol class="toc">
-  <li><a href="#basic">The Basic Approach</a></li>
-  <li><a href="#custom">Fully Customized Views</a></li>
-  <li><a href="#customexample">Customized View Example</a></li> 
-  <li><a href="#compound">Compound Controls</a></li>
-  <li><a href="#tweaking">Modifying an Existing Component Type</a></li>
-</ol>
-
-<a name="basic"></a> 
-<h2>The Basic Approach
-</h2>
-<p>
-These steps provide a high level overview of
-what you need to know to get started in creating your own
-View components:</p>
- 
-<ol>
-  <li>
-    Extend an existing {@link android.view.View View} class or subclass 
-	with your own class.
-  </li>
-  <li>
-    Override some of the methods from the superclass: the superclass methods 
-    to override start with '<code>on</code>', for
-    example, {@link android.view.View#onDraw onDraw()}, 
-    {@link android.view.View#onMeasure onMeasure()}, and 
-    {@link android.view.View#onKeyDown onKeyDown()}.
-    <ul>
-      <li>
-        This is similar to the <code>on...</code> events in {@link android.app.Activity
-	    Activity} or {@link android.app.ListActivity ListActivity}
-        that you override for life cycle and other functionality hooks.
-      </li>
-    </ul>
-  <li>
-    Use your new extension class: once completed, your new extension class 
-    can be used in place of the view upon which it was based, but now with the new 
-    functionality.
-  </li>
-</ol>  
-<p class="note"><strong>Tip:</strong>
-    Extension classes can be defined as inner classes inside the activities
-    that use them. This is useful because it controls access to them but
-    isn't necessary (perhaps you want to create a new public View for
-    wider use in your application).
-</p>
-
-<a name="custom"></a> 
-<h2>Fully Customized Components</h2>
-<p>
-Fully customized components can be used to create graphical components that
-appear however you wish. Perhaps a graphical VU
-meter that looks like an old analog gauge, or a sing-a-long text view where
-a bouncing ball moves along the words so you can sing along with a karaoke
-machine. Either way, you want something that the built-in components just
-won't do, no matter how you combine them.</p>
-<p>Fortunately, you can easily create components that look and behave in any
-way you like, limited perhaps only by your imagination, the size of the
-screen, and the available processing power (remember that ultimately your
-application might have to run on something with significantly less power
-than your desktop workstation).</p>
-<p>To create a fully customized component:</p> 
-<ol>
-  <li>
-    The most generic view you can extend is, unsurprisingly, {@link
-    android.view.View View}, so you will usually start by extending this to
-    create your new super component.
-  </li>
-  <li>
-    You can supply a constructor which can
-    take attributes and parameters from the XML, and you can also consume
-    your own such attributes and parameters (perhaps the color and range of
-    the VU meter, or the width and damping of the needle, etc.)
-  </li>
-  <li>
-    You will probably want to create your own event listeners,
-    property accessors and modifiers, and possibly more sophisticated
-    behavior in your component class as well.
-  </li>
-  <li>
-    You will almost certainly want to override <code>onMeasure()</code> and
-    are also likely to need to override <code>onDraw()</code> if you want
-    the component to show something. While both have default behavior,
-    the default <code>onDraw()</code> will do nothing, and the default
-    <code>onMeasure()</code> will always set a size of 100x100 &mdash; which is
-    probably not what you want.
-  </li>
-  <li>
-    Other <code>on...</code> methods may also be overridden as required.
-  </li>
-</ol>
-<h4><code>onDraw()</code> and <code>onMeasure()</code></h4>
-<p><code>onDraw()</code> delivers you a {@link android.graphics.Canvas Canvas}
-upon which you can implement anything you want: 2D graphics, other standard or
-custom components, styled text, or anything else you can think of.</p>
-<p><em>Note:</em>
-Except for 3D graphics. If you want to
-use 3D graphics, you must extend {@link android.view.SurfaceView SurfaceView}
-instead of View, and draw from a separate thread. See the
-GLSurfaceViewActivity sample
-for details.</p>
-<p><code>onMeasure()</code> is a little more involved. <code>onMeasure()</code>
-is a critical piece of the rendering contract between your component and its
-container. <code>onMeasure()</code> should be overridden to efficiently and
-accurately report the measurements of its contained parts. This is made
-slightly more complex by the requirements of limits from the parent
-(which are passed in to the <code>onMeasure()</code> method) and by the
-requirement to call the <code>setMeasuredDimension()</code> method with the
-measured width and height once they have been calculated. If you fail to
-call this method from an overridden <code>onMeasure()</code> method, the 
-result will be an exception at measurement time.</p>
-<p>At a high level, implementing <code>onMeasure()</code> looks something 
- like this:</p>
- 
-<ol>
-  <li>
-    The overridden <code>onMeasure()</code> method is called with width and
-    height measure specifications (<code>widthMeasureSpec</code> and
-    <code>heightMeasureSpec</code> parameters, both are integer codes
-    representing dimensions) which should be treated as requirements for
-    the restrictions on the width and height measurements you should produce. A
-    full reference to the kind of restrictions these specifications can require
-    can be found in the reference documentation under {@link
-    android.view.View#onMeasure View.onMeasure(int, int)} (this reference
-    documentation does a pretty good job of explaining the whole measurement
-    operation as well).
-  </li>
-  <li>
-    Your component's <code>onMeasure()</code> method should calculate a
-    measurement width and height which will be required to render the
-    component. It should try to stay within the specifications passed in,
-    although it can choose to exceed them (in this case, the parent can
-    choose what to do, including clipping, scrolling, throwing an exception, 
-    or asking the <code>onMeasure()</code> to try again, perhaps with
-    different measurement specifications).
-  </li>
-  <li>
-    Once the width and height are calculated, the <code>setMeasuredDimension(int
-    width, int height)</code> method must be called with the calculated
-    measurements. Failure to do this will result in an exception being
-    thrown.
-  </li>
-</ol>
-
-<p>
-Here's a summary of some of the other standard methods that the framework calls on views:
-</p>
-<table border="2" width="85%" align="center" cellpadding="5">
-       <thead>
-           <tr><th>Category</th> <th>Methods</th> <th>Description</th></tr>
-       </thead>
-       
-       <tbody>
-       <tr>
-           <td rowspan="2">Creation</td>
-           <td>Constructors</td>
-           <td>There is a form of the constructor that are called when the view
-           is created from code and a form that is called when the view is
-           inflated from a layout file. The second form should parse and apply
-           any attributes defined in the layout file.
-           </td>
-       </tr>
-       <tr>
-           <td><code>{@link android.view.View#onFinishInflate()}</code></td>
-           <td>Called after a view and all of its children has been inflated
-           from XML.</td>
-       </tr>
-       
-       <tr>
-           <td rowspan="3">Layout</td>
-           <td><code>{@link  android.view.View#onMeasure}</code></td>
-           <td>Called to determine the size requirements for this view and all
-           of its children.
-           </td>
-       </tr>
-       <tr>
-           <td><code>{@link  android.view.View#onLayout}</code></td>
-           <td>Called when this view should assign a size and position to all
-           of its children.
-           </td>
-       </tr>
-       <tr>
-           <td><code>{@link  android.view.View#onSizeChanged}</code></td>
-           <td>Called when the size of this view has changed.
-           </td>
-       </tr>
-       
-       <tr>
-           <td>Drawing</td>
-           <td><code>{@link  android.view.View#onDraw}</code></td>
-           <td>Called when the view should render its content.
-           </td>
-       </tr>
-  
-       <tr>
-           <td rowspan="4">Event processing</td>
-           <td><code>{@link  android.view.View#onKeyDown}</code></td>
-           <td>Called when a new key event occurs.
-           </td>
-       </tr>
-       <tr>
-           <td><code>{@link  android.view.View#onKeyUp}</code></td>
-           <td>Called when a key up event occurs.
-           </td>
-       </tr>   
-       <tr>
-           <td><code>{@link  android.view.View#onTrackballEvent}</code></td>
-           <td>Called when a trackball motion event occurs.
-           </td>
-       </tr>  
-       <tr>
-           <td><code>{@link  android.view.View#onTouchEvent}</code></td>
-           <td>Called when a touch screen motion event occurs.
-           </td>
-       </tr>  
-       
-       <tr>
-           <td rowspan="2">Focus</td>
-           <td><code>{@link  android.view.View#onFocusChanged}</code></td>
-           <td>Called when the view gains or loses focus.
-           </td>
-       </tr>
-       
-       <tr>
-           <td><code>{@link  android.view.View#onWindowFocusChanged}</code></td>
-           <td>Called when the window containing the view gains or loses focus.
-           </td>
-       </tr>
-       
-       <tr>
-           <td rowspan="3">Attaching</td>
-           <td><code>{@link  android.view.View#onAttachedToWindow()}</code></td>
-           <td>Called when the view is attached to a window.
-           </td>
-       </tr>
-  
-       <tr>
-           <td><code>{@link  android.view.View#onDetachedFromWindow}</code></td>
-           <td>Called when the view is detached from its window.
-           </td>
-       </tr>     
-  
-       <tr>
-           <td><code>{@link  android.view.View#onWindowVisibilityChanged}</code></td>
-           <td>Called when the visibility of the window containing the view
-           has changed.
-           </td>
-       </tr>     
-       </tbody>
-       
-   </table>
-
-
-<a name="customexample"></a>
-<h3>A Custom View Example</h3>
-<p>The CustomView sample in the 
-<a href="{@docRoot}samples/ApiDemos/index.html">API Demos</a> provides an example
-of a customized View. The custom View is defined in the
-<a href="{@docRoot}samples/ApiDemos/src/com/example/android/apis/view/LabelView.html">LabelView</a>
-class.</p>
-<p>The LabelView sample demonstrates a number of different aspects of custom components:</p>
-<ul>
-  <li>Extending the View class for a completely custom component.</li>
-  <li>Parameterized constructor that takes the view inflation parameters
-  (parameters defined in the XML). Some of these are passed through to the
-  View superclass, but more importantly, there are some custom attributes defined
-  and used for LabelView.</li>
-  <li>Standard public methods of the type you would expect to see for a label
-  component, for example <code>setText()</code>, <code>setTextSize()</code>,
-  <code>setTextColor()</code> and so on.</li>
-  <li>An overridden <code>onMeasure</code> method to determine and set the
-  rendering size of the component. (Note that in LabelView, the real work is done
-  by a private <code>measureWidth()</code> method.)</li>
-  <li>An overridden <code>onDraw()</code> method to draw the label onto the
-  provided canvas.</li>
-</ul>
-<p>You can see some sample usages of the LabelView custom View in
-<a href="{@docRoot}samples/ApiDemos/res/layout/custom_view_1.html">custom_view_1.xml</a>
-from the samples. In particular, you can see a mix of both <code>android:</code>
-namespace parameters and custom <code>app:</code> namespace parameters. These
-<code>app:</code> parameters are the custom ones that the LabelView recognizes
-and works with, and are defined in a styleable inner class inside of the
-samples R resources definition class.</p>
-
-<a name="compound"></a>  
-<h2>Compound Controls
-</h2>
-<p>If you don't want to create a completely customized component, but instead
-are looking to put together a reusable component that consists of a group of
-existing controls, then creating a Compound Component (or Compound Control) might
-fit the bill. In a nutshell, this brings together a number of more atomic
-controls (or views) into a logical group of items that can be treated as a
-single thing. For example, a Combo Box can be thought of as a
-combination of a single line EditText field and an adjacent button with an attached
- PopupList. If you press the button and select
-something from the list, it populates the EditText field, but the user can
-also type something directly into the EditText if they prefer.</p>
-<p>In Android, there are actually two other Views readily available to do
-this: {@link android.widget.Spinner Spinner} and 
-{@link android.widget.AutoCompleteTextView AutoCompleteTextView}, but 
-regardless, the concept of a Combo Box makes an easy-to-understand 
-example.</p>
-<p>To create a compound component:</p>
-<ol>
-  <li>
-    The usual starting point is a Layout of some kind, so create a class
-    that extends a Layout. Perhaps in the case of a Combo box we might use
-    a LinearLayout with horizontal orientation. Remember that other layouts
-    can be nested inside, so the compound component can be arbitrarily
-    complex and structured. Note that just like with an Activity, you can
-    use either the declarative (XML-based) approach to creating the
-    contained components, or you can nest them programmatically from your
-    code.
-  </li>
-  <li>
-    In the constructor for the new class, take whatever parameters the
-    superclass expects, and pass them through to the superclass constructor
-    first. Then you can set up the other views to use within your new
-    component; this is where you would create the EditText field and the
-    PopupList. Note that you also might introduce your own attributes and
-    parameters into the XML that can be pulled out and used by your
-    constructor.
-  </li>
-  <li>
-    You can also create listeners for events that your contained views might
-    generate, for example, a listener method for the List Item Click Listener
-    to update the contents of the EditText if a list selection is made.
-  </li>
-  <li>
-    You might also create your own properties with accessors and modifiers,
-    for example, allow the EditText value to be set initially in the
-    component and query for its contents when needed.
-  </li>
-  <li>
-    In the case of extending a Layout, you don't need to override the
-    <code>onDraw()</code> and <code>onMeasure()</code> methods since the
-    layout will have default behavior that will likely work just fine. However, 
-    you can still override them if you need to.
-  </li>
-  <li>
-    You might override other <code>on...</code> methods, like
-    <code>onKeyDown()</code>, to perhaps choose certain default values from
-    the popup list of a combo box when a certain key is pressed.
-  </li>
-</ol>
-<p>
- To summarize, the use of a Layout as the basis for a Custom Control has a
-number of advantages, including:</p>
- 
-<ul>
-  <li>
-    You can specify the layout using the declarative XML files just like
-    with an activity screen, or you can create views programmatically and
-    nest them into the layout from your code.
-  </li>
-  <li>
-    The <code>onDraw()</code> and <code>onMeasure()</code> methods (plus
-    most of the other <code>on...</code> methods) will likely have suitable behavior so
-    you don't have to override them.
-  </li>
-  <li>
-    In the end, you can very quickly construct arbitrarily complex compound
-    views and re-use them as if they were a single component.
-  </li>
-</ul>
-<h4>Examples of Compound Controls</h4>
-<p>In the API Demos project
- that comes with the SDK, there are two List
- examples &mdash; Example 4 and Example 6 under Views/Lists demonstrate a
- SpeechView which extends LinearLayout to make a component for displaying
- Speech quotes. The corresponding classes in the sample code are
- <code>List4.java</code> and <code>List6.java</code>.</p>
- 
-<a name="tweaking"></a>  
-<h2>Modifying an Existing View Type
-</h2>
-<p>There is an even easier option for creating a custom View which is
-useful in certain circumstances. If there is a component that is already very
-similar to what you want, you can simply extend that component and just
-override the behavior that you want to change. You can do all of the things
-you would do with a fully customized component, but by starting with a more
-specialized class in the View hierarchy, you can also get a lot of behavior for
-free that probably does exactly what you want.</p>
-<p>For example, the SDK includes a <a
-href="{@docRoot}samples/NotePad/index.html">NotePad application</a> in the
-samples. This demonstrates many aspects of using the Android platform, among
-them is extending an EditText View to make a lined notepad. This is not a
-perfect example, and the APIs for doing this might change from this early
-preview, but it does demonstrate the principles.</p>
-<p>If you haven't done so already, import the 
-NotePad sample into Eclipse (or
-just look at the source using the link provided). In particular look at the definition of
-<code>MyEditText</code> in the <a
-href="{@docRoot}samples/NotePad/src/com/example/android/notepad/NoteEditor.html">NoteEditor.java</a>
-file.</p>
-<p>Some points to note here</p>
-<ol>
-  <li>
-    <strong>The Definition</strong>
-    <p>The class is defined with the following line:</p>
-     <code>public static class MyEditText extends EditText</code><br><br>
-     
-    <ul>
-      <li>
-        It is defined as an inner class within the <code>NoteEditor</code>
-        activity, but it is public so that it could be accessed as
-        <code>NoteEditor.MyEditText</code> from outside of the <code>NoteEditor</code>
-        class if desired.
-      </li>
-      <li>
-        It is <code>static</code>, meaning it does not generate the so-called
-        "synthetic methods" that allow it to access data from the parent
-        class, which in turn means that it really behaves as a separate
-        class rather than something strongly related to <code>NoteEditor</code>.
-        This is a cleaner way to create inner classes if they do not need
-        access to state from the outer class, keeps the generated class
-        small, and allows it to be used easily from other classes.
-      </li>
-      <li>
-        It extends <code>EditText</code>, which is the View we have chosen to
-        customize in this case. When we are finished, the new class will be
-        able to substitute for a normal <code>EditText</code> view.<br>
-        <br>
-      </li>
-    </ul>
-  </li>
-  <li>
-    <strong>Class Initialization</strong>
-    <p>As always, the super is called first. Furthermore, 
-    this is not a default constructor, but a parameterized one. The
-    EditText is created with these parameters when it is inflated from an
-    XML layout file, thus, our constructor needs to both take them and pass them
-    to the superclass constructor as well.</p>
-  </li>
-  <li>
-    <strong>Overridden Methods</strong>
-    <p>In this example, there is only one method to be overridden: 
-    <code>onDraw()</code> &mdash; but there could easily be others needed when you
-    create your own custom components.</p>
-    <p>For the NotePad sample, overriding the <code>onDraw()</code> method allows
-    us to paint the blue lines on the <code>EditText</code> view canvas (the
-    canvas is passed into the overridden <code>onDraw()</code> method). The
-    super.onDraw() method is called before the method ends. The
-    superclass method should be invoked, but in this case, we do it at the
-    end after we have painted the lines we want to include.</p>
-  <li>
-    <strong>Use the Custom Component</strong>
-    <p>We now have our custom component, but how can we use it? In the
-    NotePad example, the custom component is used directly from the
-    declarative layout, so take a look at <code>note_editor.xml</code> in the
-    <code>res/layout</code> folder.</p>
-    <pre>
-&lt;view xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; 
-  class=&quot;com.android.notepad.NoteEditor$MyEditText&quot; 
-  id=&quot;&#64;+id/note&quot;
-  android:layout_width=&quot;fill_parent&quot;
-  android:layout_height=&quot;fill_parent&quot;
-  android:background=&quot;&#64;android:drawable/empty&quot;
-  android:padding=&quot;10dip&quot;
-  android:scrollbars=&quot;vertical&quot;
-  android:fadingEdge=&quot;vertical&quot; /&gt; </pre>
-     
-    <ul>
-      <li>
-        The custom component is created as a generic view in the XML, and
-        the class is specified using the full package. Note also that the
-        inner class we defined is referenced using the
-        <code>NoteEditor$MyEditText</code> notation which is a standard way to
-        refer to inner classes in the Java programming language.
-      </li>
-      <li>
-        The other attributes and parameters in the definition are the ones
-        passed into the custom component constructor, and then passed
-        through to the EditText constructor, so they are the same
-        parameters that you would use for an EditText view. Note that it is
-        possible to add your own parameters as well, and we will touch on
-        this again below.
-      </li>
-    </ul>
-  </li>
-</ol>
-<p>And that's all there is to it. Admittedly this is a simple case, but
-that's the point &mdash; creating custom components is only as complicated as you
-need it to be.</p>
-<p>A more sophisticated component may override even more <code>on...</code> methods and
-introduce some of its own helper methods, substantially customizing its properties and
-behavior. The only limit is your imagination and what you need the component to
-do.</p>
-
diff --git a/docs/html/guide/topics/views/intro.jd b/docs/html/guide/topics/views/intro.jd
deleted file mode 100644
index f49f547..0000000
--- a/docs/html/guide/topics/views/intro.jd
+++ /dev/null
@@ -1,49 +0,0 @@
-page.title=Introduction to Views
-parent.title=Views and Layout
-parent.link=index.html
-@jd:body
-
-<p>The basic functional unit of an Android application is the <em>activity</em> &mdash; an object of the class {@link android.app.Activity android.app.Activity}. An activity can do many things, but by itself it does not have a  presence on the  screen. To give your activity a screen presence and design its UI, you work with <em>views</em> and <em>viewgroups</em> -- basic units of user interface expression on the Android platform.</p>
-
-<h2>Views</h2>
-<p>A view is an object of base class {@link android.view.View android.view.View}. It's a data structure whose   properties store the layout and content for a specific rectangular area of the screen. A View object handles measuring and layout, drawing, focus change, scrolling, and key/gestures for the screen area it represents. </p>
-<p>The View  class serves as a base  class for <em>widgets </em> &mdash; a set of fully implemented subclasses that draw interactive screen elements. Widgets handle their own measuring and drawing, so you can use them to build your UI more quickly. The list of  widgets available includes Text, EditText, InputMethod, MovementMethod, Button, RadioButton, Checkbox, and ScrollView.</p>
-
-<h2>Viewgroups </h2>
-
-<p>A viewgroup is an object of class {@link android.view.ViewGroup android.view.Viewgroup}. As its name indicates, a viewgroup is a special type of view object whose function is to contain and manage a subordinate set of views and other viewgroups, Viewgroups let you add structure to your UI and build up complex screen elements that can be addressed as a single entity. </p>
-
-<p>The Viewgroup class serves as a base class for <em>layouts</em> &mdash; a set of fully implemented subclasses that provide common types of screen layout. The layouts give you a way to build a structure for a set of views. </p>
-
-<h2>A Tree-Structured UI</h2>
-
-<p>On the Android platform, you define an Activity's UI using a tree of view and viewgroup nodes, as shown in the diagram below. The tree can be as simple or complex as you need to make it, and you can build it up using Android's set of predefined widgets and layouts  or  custom view types that you create yourself. </p>
-
-<img src={@docRoot}images/viewgroup.png alt="An example of a tree of views and viewgroups" width="312" height="211" align="center"/>
-
-<p>To attach the tree to the screen for rendering, your Activity calls its  setContentView() method and passes a reference to the root node  object. Once the Android system has the reference to the root node object, it can work directly with the node to invalidate, measure, and draw the tree. When your Activity becomes active and receives focus, the system notifies your activity and requests the root node to measure and draw the tree. The root node then requests that its child nodes draw themselves &mdash; in turn, each viewgroup node in the tree is responsible for drawing its direct children. </p>
-
-<p>As mentioned previously, each view group has the responsibility of
-  measuring its available space, laying out its children, and calling Draw() on
-  each child to let it render itself. The children may request a size and location
-  in the parent, but the parent object has the final decision on where how big
-  each child can be.</p>
-
-<h2>LayoutParams: How a Child Specifies Its Position and Size</h2>
-
-<p>Every viewgroup class uses a nested class that extends {@link
-android.view.ViewGroup.LayoutParams ViewGroup.LayoutParams}. This subclass
-  contains property types that define a child's size and position, in properties
-  appropriate for that view group class. </p>
-
-<img src={@docRoot}images/layoutparams.png alt="An example of layoutparams" width="632" height="369" align="center"/>
-
-<p>Note that every LayoutParams subclass has its own syntax for setting
-values. Each child element must define LayoutParams that are appropriate for its parent, although it may define different LayoutParams for its children. </p>
-
-<p>All viewgroups include width and height. Many also include margins and
-borders. You can specify width and height  exactly, though you probably won't want
-to do this often. More often you will tell your view to size itself either to
-the dimensions of its content, or to become as big as its containing object
-will allow.</p>
-
diff --git a/docs/html/guide/topics/views/ui-xml.jd b/docs/html/guide/topics/views/ui-xml.jd
deleted file mode 100644
index bcfa562..0000000
--- a/docs/html/guide/topics/views/ui-xml.jd
+++ /dev/null
@@ -1,138 +0,0 @@
-page.title=Declaring a UI in XML
-parent.title=Views and Layout
-parent.link=index.html
-@jd:body
-
-<p>You can create your application's user interface in two ways: 
-<ul>
-<li>You can declare UI elements statically, in XML. Android provides a straightforward XML vocabulary that corresponds to the View classes and subclasses, such as those for widgets and layouts. </li>
-<li>You can instantiate screen elements dynamically, at runtime, through code in your application. Your application can refer to or create View or other class objects and manipulate their properties programmatically. </li>
-</ul>
-
-<p>One advantage of declaring your UI in XML is that it enables you to better separate the presentation of your application from the code that controls it's behavior. Your UI description is external to your application code, which means that you can modify or adapt it without having to modify your source code and recompile. For example, you can create XML layouts for different screen orientations and for a variety of device screen sizes or languages. Additionally, declaring in XML makes it easier to see the elements and structure of your UI, so it's easier to debug problems. </p>
-
-<p>The Android framework gives you the flexibility to use either or both of these ways of declaring and managing your application's UI. For example, you could declare your application's default layouts in XML, including the screen elements that will appear in them and their properties. You could then add code in your application that would modify the state of the screen objects, including those declared in XML, at run time. </p>
-
-<p>You build your application's UI in approximately the same way, whether you are declaring it in XML or programmatically. In both cases, your UI will be a tree structure that may include multiple View or Viewgroup subclasses. <p>
-
-<p>In general, the XML vocabulary for declaring UI elements closely follows the structure and naming of the framework's UI-related classes and methods, where element names correspond to class names and attribute names correspond to methods. In fact, the correspondence is often so direct that you can guess what XML attribute corresponds to a class method, or guess what class corresponds to a given xml element. </p>
-
-<p>However, note that the XML vocabulary for defining UI is not entirely identical to the framework's classes and methods. In some cases, there are slight naming differences. For
-example, the EditText element has a <code>text</code> attribute that corresponds to
-EditText.setText. </p>
-
-<div class="sidebox-wrapper">
-<div class="sidebox">
-<p>For your convenience, the API reference documentation for UI related classes
-lists the available XML attributes that correspond to the class methods, including inherited
-attributes.</p>
-
-<p>To learn more about the available XML elements and attributes, as well as the format of the XML file, see <a
-href="{@docRoot}reference/available-resources.html#layoutresources">Layout Resources</a>.</p>
-</div>
-</div>
-
-<p>Using Android's XML vocabulary, you can quickly design UI layouts and the screen elements they contain, in the same way you create HTML files &mdash; as a series of nested tags. </p>
-
-<p>Each layout file must contain exactly one root element, and the root element must be a View or ViewGroup object. Once you've defined the root element, you can add additional layout objects or controls as child elements of the root element, if needed. In the example below, the tree of XML elements evaluates to the outermost LinearLayout object.
-
-<p>After you've declared your layout in XML, you must save the file, with the <code>.xml</code> extension, in the proper location, so that it will be compiled correctly. The proper location for storing layout files is in your application's <code>res/layout/</code> directory. </p>
-
-<p>When you compile your application, each XML layout file is compiled into an
-android.view.View resource. You can then load the layout resource from your application code, by calling <code>setContentView(R.layout.<em>layout_file_name</em>)</code> in your {@link android.app.Activity#onCreate(android.os.Bundle) Activity.onCreate()} 
-implementation.</p>
-
-<p>When you load a layout resource, the Android system initializes run-time objects corresponding to the elements in your layout. It parses the elements of your layout in-order (depth-first), instantiating the Views and adding them to their parent(s). </p>
-
-<p>Attributes named <code>layout_<em>something</em></code> apply to that
-object's LayoutParams member. <a href="{@docRoot}reference/available-resources.html#layoutresources">Layout
-Resources</a> also describes how to learn the syntax for specifying
-LayoutParams properties. </p>
-
-<p>Also note that Android draws elements in the order in which they
-appear in the XML. Therefore, if elements overlap, the last one in the XML
-file will probably be drawn on top of any previously listed elements in that
-same space.</p>
-
-<p>The following values are supported for dimensions (described in {@link
-android.util.TypedValue TypedValue}):</p>
-
-<ul>
-    <li>px (pixels) </li>
-    <li>dip (device independent pixels) </li>
-    <li>sp (scaled pixels &mdash; best for text size) </li>
-    <li>pt (points) </li>
-    <li>in (inches) </li>
-    <li>mm (millimeters) </li>
-</ul>
-
-<p>Example: <code>android:layout_width=&quot;25px&quot;</code> </p>
-
-<p>For more information about these dimensions, see <a href="{@docRoot}reference/available-resources.html#dimension">Dimension Values</a>.</p>
-
-<p>The example below shows an XML file and the resulting screen in the UI. Note that the text on the
-top of the screen was set by calling {@link
-android.app.Activity#setTitle(java.lang.CharSequence) Activity.setTitle}. Note
-that the attributes that refer to relative elements (i.e., layout_toLeft)
-refer to the ID using the syntax of a relative resource
-(@id/<em>id_number</em>). </p>
-
-<table border="1">
-    <tr>
-        <td>
-        <pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
-&lt;!-- Demonstrates using a relative layout to create a form --&gt;
-&lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android
-                android:layout_width=&quot;fill_parent&quot; 
-                android:layout_height=&quot;wrap_content&quot;
-                android:background=&quot;@drawable/blue&quot;
-                android:padding=&quot;10px&quot;&gt;
-
-    &lt;TextView id=&quot;@+id/label&quot; 
-              android:layout_width=&quot;fill_parent&quot; 
-              android:layout_height=&quot;wrap_content&quot; 
-              android:text=&quot;Type here:&quot;/&gt;
-
-    &lt;EditText id=&quot;@+id/entry&quot; 
-              android:layout_width=&quot;fill_parent&quot; 
-              android:layout_height=&quot;wrap_content&quot; 
-              android:background=&quot;@android:drawable/editbox_background&quot;
-              android:layout_below=&quot;@id/label&quot;/&gt;
-  
-    &lt;Button id=&quot;@+id/ok&quot; 
-            android:layout_width=&quot;wrap_content&quot; 
-            android:layout_height=&quot;wrap_content&quot; 
-            android:layout_below=&quot;@id/entry&quot;
-            android:layout_alignParentRight=&quot;true&quot;
-            android:layout_marginLeft=&quot;10px&quot;
-            android:text=&quot;OK&quot; /&gt;
-
-    &lt;Button android:layout_width=&quot;wrap_content&quot; 
-            android:layout_height=&quot;wrap_content&quot;
-            android:layout_toLeftOf=&quot;@id/ok&quot;
-            android:layout_alignTop=&quot;@id/ok&quot;
-            android:text=&quot;Cancel&quot; /&gt;
-&lt;/RelativeLayout&gt;</pre></td>
-        <td><img src="{@docRoot}images/designing_ui_layout_example.png" alt="Screen shot showing how this layout XML file is rendered."  /></td>
-    </tr>
-</table>
-
-<h3>Loading the XML Resource </h3>
-
-<p>Loading the compiled layout resource is very easy, and done with a single
-call in the activity's onCreate() method, as shown here:</p>
-
-<pre>
-protected void onCreate(Bundle savedValues)
-{
-   // Be sure to call the super class.
-   super.onCreate(savedValues);
-
-   // Load the compiled layout resource into the window's
-   // default ViewGroup.
-   // The source file is res/layout/hello_activity.xml
-    setContentView(R.layout.hello_activity);
-  
-   // Retrieve any important stored values.
-   restoreValues(savedValues);
-} </pre>
diff --git a/docs/html/guide/topics/wireless/index.jd b/docs/html/guide/topics/wireless/index.jd
deleted file mode 100644
index 23d2f0f..0000000
--- a/docs/html/guide/topics/wireless/index.jd
+++ /dev/null
@@ -1,23 +0,0 @@
-page.title=Wireless Controls
-@jd:body
-
-Go away.
-
-<!--
-<h2>Wi-Fi</h2>
-<p>The Wi-Fi APIs provide a means by which application can communicate with the lower-level
-wireless stack that provides Wi-Fi network access. Almost all information from the device supplicant
-is available, including the connected network's link speed, IP address, negotiation state, and more. 
-It also provides information about all non-connected available networks. Some of the available network
-interactions include the ability to scan, add, dave, terminate and initiate connections.</p>
-
-
-<h2>Bluetooth</h2>
-<p>The Android platform includes support for the Bluetooth network stack, which allows a device to
-wirelessly exchange data with other Bluetooth devices. The application framework provides access to
-the Bluetooth functionality through the Android Bluetooth APIs. These APIs let applications
-wirelessly connect to other Bluetooth devices, enabling point-to-point and multipoint wireless
-features.</p>
--->
-
-
diff --git a/docs/html/guide/topics/wireless/wifi.jd b/docs/html/guide/topics/wireless/wifi.jd
deleted file mode 100644
index 761e463..0000000
--- a/docs/html/guide/topics/wireless/wifi.jd
+++ /dev/null
@@ -1,18 +0,0 @@
-page.title=Wi-Fi
-parent.title=Wireless Controls
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <h2>In this document</h2>
-  <ol>
-
-  </ol>
-
-</div>
-</div>
-
-
-Go away.
\ No newline at end of file
diff --git a/docs/html/guide/tutorials/hello-world.html b/docs/html/guide/tutorials/hello-world.html
deleted file mode 100644
index 55187bd..0000000
--- a/docs/html/guide/tutorials/hello-world.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/resources/tutorials/hello-world.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should have been redirected. Please <a
-href="http://developer.android.com/resources/tutorials/hello-world.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/tutorials/images/hello_world_0.png b/docs/html/guide/tutorials/images/hello_world_0.png
deleted file mode 100644
index 330a07c..0000000
--- a/docs/html/guide/tutorials/images/hello_world_0.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/images/hello_world_1.png b/docs/html/guide/tutorials/images/hello_world_1.png
deleted file mode 100644
index 1e5f7b0..0000000
--- a/docs/html/guide/tutorials/images/hello_world_1.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/images/hello_world_2.png b/docs/html/guide/tutorials/images/hello_world_2.png
deleted file mode 100644
index 3e9c58b..0000000
--- a/docs/html/guide/tutorials/images/hello_world_2.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/images/hello_world_3.png b/docs/html/guide/tutorials/images/hello_world_3.png
deleted file mode 100644
index 22901a9..0000000
--- a/docs/html/guide/tutorials/images/hello_world_3.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/images/hello_world_4.png b/docs/html/guide/tutorials/images/hello_world_4.png
deleted file mode 100644
index 5c41e80..0000000
--- a/docs/html/guide/tutorials/images/hello_world_4.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/images/hello_world_5.png b/docs/html/guide/tutorials/images/hello_world_5.png
deleted file mode 100644
index 96b830a..0000000
--- a/docs/html/guide/tutorials/images/hello_world_5.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/images/hello_world_8.png b/docs/html/guide/tutorials/images/hello_world_8.png
deleted file mode 100644
index 07db360..0000000
--- a/docs/html/guide/tutorials/images/hello_world_8.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/images/hello_world_9.png b/docs/html/guide/tutorials/images/hello_world_9.png
deleted file mode 100644
index a66526a..0000000
--- a/docs/html/guide/tutorials/images/hello_world_9.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/index.html b/docs/html/guide/tutorials/index.html
deleted file mode 100644
index e412dec..0000000
--- a/docs/html/guide/tutorials/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/resources/browser.html?tag=tutorial">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should have been redirected. Please <a
-href="http://developer.android.com/resources/browser.html?tag=tutorial">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/tutorials/localization/index.html b/docs/html/guide/tutorials/localization/index.html
deleted file mode 100644
index 2ea6661..0000000
--- a/docs/html/guide/tutorials/localization/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>

-<head>

-<meta http-equiv="refresh" content="0;url=http://developer.android.com/resources/tutorials/localization/index.html">

-<title>Redirecting...</title>

-</head>

-<body>

-<p>You should have been redirected. Please <a

-href="http://developer.android.com/resources/tutorials/localization/index.html">click here</a>.</p>

-</body>

-</html>
\ No newline at end of file
diff --git a/docs/html/guide/tutorials/notepad/codelab/NotepadCodeLab.zip b/docs/html/guide/tutorials/notepad/codelab/NotepadCodeLab.zip
deleted file mode 100644
index 24fefc1..0000000
--- a/docs/html/guide/tutorials/notepad/codelab/NotepadCodeLab.zip
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/notepad/index.html b/docs/html/guide/tutorials/notepad/index.html
deleted file mode 100644
index 01e4d09..0000000
--- a/docs/html/guide/tutorials/notepad/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/resources/tutorials/notepad/index.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should have been redirected. Please <a
-href="http://developer.android.com/resources/tutorials/notepad/index.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/tutorials/notepad/notepad-ex1.jd b/docs/html/guide/tutorials/notepad/notepad-ex1.jd
deleted file mode 100644
index cf7765e..0000000
--- a/docs/html/guide/tutorials/notepad/notepad-ex1.jd
+++ /dev/null
@@ -1,582 +0,0 @@
-page.title=Notepad Exercise 1
-parent.title=Notepad Tutorial
-parent.link=index.html
-@jd:body
-
-
-<p><em>In this exercise, you will construct a simple notes list that lets the
-user add new notes but not edit them. The exercise demonstrates:</em></p>
-<ul>
-<li><em>The basics of <code>ListActivities</code> and creating and handling menu
-options. </em></li>
-<li><em>How to use a SQLite database to store the notes.</em></li>
-<li><em>How to bind data from a database cursor into a ListView using a
-SimpleCursorAdapter.</em></li>
-<li><em>The basics of screen layouts, including how to lay out a list view, how
-you can add items to the activity menu, and how the activity handles those menu
-selections. </em></li>
-</ul>
-
-<div style="float:right;white-space:nowrap">
-<span style="color:#BBB;">
-	[<a href="notepad-ex1.html" style="color:#BBB;">Exercise 1</a>]</span>
-	[<a href="notepad-ex2.html">Exercise 2</a>]
-	[<a href="notepad-ex3.html">Exercise 3</a>]
-	[<a href="notepad-extra-credit.html">Extra Credit</a>]
-</div>
-
-
-
-<h2>Step 1</h2>
-
-	<p>Open up the <code>Notepadv1</code> project in Eclipse.</p>
-    
-    <p><code>Notepadv1</code> is a project that is provided as a starting point. It
-    takes care of some of the boilerplate work that you have already seen if you
-    followed the <a href="{@docRoot}resources/tutorials/hello-world.html">Hello,
-    World</a> tutorial.</p>
-    
-  <ol>
-    <li>
-      Start a new Android Project by clicking <strong>File</strong> > 
-      <strong>New</strong> > <strong>Android Project</strong>.</li>
-    <li>
-      In the New Android Project dialog, select <strong>Create project from existing source</strong>.</li>
-    <li>
-      Click <strong>Browse</strong> and navigate to where you copied the <code>NotepadCodeLab</code> 
-      (downloaded during <a href="{@docRoot}resources/tutorials/notepad/index.html#preparing">setup</a>) 
-      and select <code>Notepadv1</code>.</li>
-    <li>
-      The Project Name and other properties should be automatically filled for you. 
-      You must select the Build Target&mdash;we recommend selecting a target with the 
-      lowest platform version available. Also add an integer to the Min SDK Version field 
-      that matches the API Level of the selected Build Target.</li>
-    <li>
-      Click <strong>Finish</strong>. The <code>Notepadv1</code> project should open and be 
-      visible in your Eclipse package explorer.</li>
-  </ol>
-  
-    <p>If you see an error about <code>AndroidManifest.xml</code>, or some
-      problems related to an Android zip file, right click on the project and
-      select <strong>Android Tools</strong> > <strong>Fix Project Properties</strong>.
-      (The project is looking in the wrong location for the library file,
-      this will fix it for you.)</p>
-
-  <h2>Step 2</h2>
-
-  <div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>Accessing and modifying data</h2>
-    <p>For this
-    exercise, we are using a SQLite database to store our data. This is useful
-    if only <em>your</em> application will need to access or modify the data. If you wish for
-    other activities to access or modify the data, you have to expose the data using a 
-    {@link android.content.ContentProvider ContentProvider}.</p>
-    <p>If you are interested, you can find out more about
-    <a href="{@docRoot}guide/topics/providers/content-providers.html">content providers</a> or the
-whole
-    subject of <a href="{@docRoot}guide/topics/data/data-storage.html">Data Storage</a>.
-    The NotePad sample in the <code>samples/</code> folder of the SDK also has an example of how
-    to create a ContentProvider.</p>
-  </div>
-  </div>
-
-    <p>Take a look at the <code>NotesDbAdapter</code> class &mdash; this class is provided to
-    encapsulate data access to a SQLite database that will hold our notes data
-    and allow us to update it.</p>
-    <p>At the top of the class are some constant definitions that will be used in the application
-    to look up data from the proper field names in the database. There is also a database creation
-    string defined, which is used to create a new database schema if one doesn't exist already.</p>
-    <p>Our database will have the name <code>data</code>, and have a single table called 
-    <code>notes</code>, which in turn has three fields: <code>_id</code>, <code>title</code> and 
-    <code>body</code>. The <code>_id</code> is named with an underscore convention used in a number of
-    places inside the Android SDK and helps keep a track of state. The <code>_id</code>
-    usually has to be specified when querying or updating the database (in the column projections
-    and so on). The other two fields are simple text fields that will store data.
-    </p>
-    <p>The constructor for <code>NotesDbAdapter</code> takes a Context, which allows it to communicate with aspects
-    of the Android operating system. This is quite common for classes that need to touch the
-    Android system in some way. The Activity class implements the Context class, so usually you will just pass
-    <code>this</code> from your Activity, when needing a Context.</p>
-    <p>The <code>open()</code> method calls up an instance of DatabaseHelper, which is our local
-    implementation of the SQLiteOpenHelper class. It calls <code>getWritableDatabase()</code>, 
-    which handles creating/opening a database for us.</p>
-    <p><code>close()</code> just closes the database, releasing resources related to the 
-    connection.</p>
-    <p><code>createNote()</code> takes strings for the title and body of a new note,
-    then creates that note in the database. Assuming the new note is created successfully, the
-    method also returns the row <code>_id</code> value for the newly created note.</p>
-    <p><code>deleteNote()</code> takes a <var>rowId</var> for a particular note, and deletes that note from
-    the database.</p>
-
-    <p><code>fetchAllNotes()</code> issues a query to return a {@link android.database.Cursor} over all notes in the
-    database. The <code>query()</code> call is worth examination and understanding. The first field is the 
-    name of the database table to query (in this case <code>DATABASE_TABLE</code> is "notes").
-    The next is the list of columns we want returned, in this case we want the <code>_id</code>, 
-    <code>title</code> and <code>body</code> columns so these are specified in the String array.
-    The remaining fields are, in order: <code>selection</code>, 
-    <code>selectionArgs</code>, <code>groupBy</code>, <code>having</code> and <code>orderBy</code>.
-    Having these all <code>null</code> means we want all data, need no grouping, and will take the default
-    order. See {@link android.database.sqlite.SQLiteDatabase SQLiteDatabase} for more details.</p>
-    <p class="note"><b>Note:</b> A Cursor is returned rather than a collection of rows. This allows
-    Android to use resources efficiently -- instead of putting lots of data straight into memory
-    the cursor will retrieve and release data as it is needed, which is much more efficient for
-    tables with lots of rows.</p>
-
-    <p><code>fetchNote()</code> is similar to <code>fetchAllNotes()</code> but just gets one note
-    with the <var>rowId</var> we specify. It uses a slightly different version of the 
-    {@link android.database.sqlite.SQLiteDatabase} <code>query()</code> method. 
-    The first parameter (set <em>true</em>) indicates that we are interested
-    in one distinct result. The <var>selection</var> parameter (the fourth parameter) has been specified to search
-    only for the row "where _id =" the <var>rowId</var> we passed in. So we are returned a Cursor on
-    the one row.</p>
-    <p>And finally, <code>updateNote()</code> takes a <var>rowId</var>, <var>title</var> and <var>body</var>, and uses a
-    {@link android.content.ContentValues ContentValues} instance to update the note of the given
-    <var>rowId</var>.</p>
-   
-<h2 style="clear:right;">Step 3</h2>
-
-	<div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>Layouts and activities</h2>
-      <p>Most Activity classes will have a layout associated with them. The layout
-    will be the "face" of the Activity to the user. In this case our layout will
-    take over the whole screen and provide a list of notes.</p>
-    <p>Full screen layouts are not the only option for an Activity however. You
-    might also want to use a <a
-href="{@docRoot}resources/faq/commontasks.html#floatingorfull">floating 
-    layout</a> (for example, a <a
-href="{@docRoot}resources/faq/commontasks.html#dialogsandalerts">dialog
-    or alert</a>), 
-    or perhaps you don't need a layout at all (the Activity will be invisible 
-    to the user unless you specify some kind of layout for it to use).</p>
-  </div>
-  </div>
-    
-    <p>Open the <code>notepad_list.xml</code> file in <code>res/layout</code>
-and 
-    take a look at it. (You may have to
-    hit the <em>xml</em> tab, at the bottom, in order to view the XML markup.)</p>
-     
-    <p>This is a mostly-empty layout definition file. Here are some
-    things you should know about a layout file:</p>
-
-   
-  <ul>
-    <li>
-      All Android layout files must start with the XML header line:
-      <code>&lt;?xml version="1.0" encoding="utf-8"?&gt;</code>.    </li>
-    <li>
-      The next definition will often (but not always) be a layout
-      definition of some kind, in this case a <code>LinearLayout</code>.    </li>
-    <li>
-      The XML namespace of Android should always be defined in
-      the top level component or layout in the XML so that <code>android:</code> tags can
-      be used through the rest of the file:
-      <p><code>xmlns:android="http://schemas.android.com/apk/res/android"</code></p>
-    </li>
-  </ul>
-
-  <h2 style="clear:right;">Step 4</h2>
-    <p>We need to create the layout to hold our list. Add code inside
-    of the <code>LinearLayout</code> element so the whole file looks like this: </p>
-    <pre>
-&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
-&lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
-    android:layout_width=&quot;wrap_content&quot;
-    android:layout_height=&quot;wrap_content&quot;&gt;
-
-  &lt;ListView android:id=&quot;@android:id/list&quot;
-        android:layout_width=&quot;wrap_content&quot;
-        android:layout_height=&quot;wrap_content&quot;/&gt;
-  &lt;TextView android:id=&quot;@android:id/empty&quot;
-        android:layout_width=&quot;wrap_content&quot;
-        android:layout_height=&quot;wrap_content&quot;
-        android:text=&quot;@string/no_notes&quot;/&gt;
-
-&lt;/LinearLayout&gt;
-</pre>
-  <ul>
-    <li>
-      The <strong>&#64;</strong> symbol in the id strings of the <code>ListView</code> and 
-      <code>TextView</code> tags means 
-      that the XML parser should parse and expand the rest of
-      the id string and use an ID resource.</li>
-    <li>
-      The <code>ListView</code> and <code>TextView</code> can be
-      thought as two alternative views, only one of which will be displayed at once.
-      ListView will be used when there are notes to be shown, while the TextView
-      (which has a default value of "No Notes Yet!" defined as a string
-      resource in <code>res/values/strings.xml</code>) will be displayed if there 
-      aren't any notes to display.</li>
-    <li>The <code>list</code> and <code>empty</code> IDs are
-      provided for us by the Android platform, so, we must 
-      prefix the <code>id</code> with <code>android:</code> (e.g., <code>@android:id/list</code>).</li>
-    <li>The View with the <code>empty</code> id is used 
-      automatically when the {@link android.widget.ListAdapter} has no data for the ListView. The 
-      ListAdapter knows to look for this name by default. Alternatively, you could change the      
-      default empty view by using {@link android.widget.AdapterView#setEmptyView(View)}
-      on the ListView.
-      <p>
-      More broadly, the <code>android.R</code> class is a set of predefined 
-      resources provided for you by the platform, while your project's 
-      <code>R</code> class is the set of resources your project has defined.
-      Resources found in the <code>android.R</code> resource class can be
-      used in the XML files by using the <code>android:</code> name space prefix      
-      (as we see here).</p>
-    </li>
-  </ul>
-
-  <h2 style="clear:right;">Step 5</h2>
-
-	<div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>Resources and the R class</h2>
-    <p>The folders under res/ in the Eclipse project are for resources.
-     There is a <a href="{@docRoot}resources/faq/commontasks.html#filelist">specific structure</a>
-to the
-     folders and files under res/.</p>
-    <p>Resources defined in these folders and files will have
-    corresponding entries in the R class allowing them to be easily accessed
-    and used from your application. The R class is automatically generated using the contents
-    of the res/ folder by the eclipse plugin (or by aapt if you use the command line tools).
-    Furthermore, they will be bundled and deployed for you as part of the application.</p>
-    </p>
-  </div>
-  </div>
-
-    <p>To make the list of notes in the ListView, we also need to define a View for each row:</p>
-  <ol>
-    <li>
-      Create a new file under <code>res/layout</code> called 
-      <code>notes_row.xml</code>.    </li>
-    <li>
-      Add the following contents (note: again the XML header is used, and the
-      first node defines the Android XML namespace)<br>
-      <pre style="overflow:auto">
-&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
-&lt;TextView android:id=&quot;&#64;+id/text1&quot;
-    xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
-    android:layout_width=&quot;wrap_content&quot;
-    android:layout_height=&quot;wrap_content&quot;/&gt;</pre>
-    <p>
-      This is the View that will be used for each notes title row &mdash; it has only
-      one text field in it.    </p>
-    <p>In this case we create a new id called <code>text1</code>. The
-      <strong>+</strong> after the <strong>@</strong> in the id string indicates that the id should
-      be automatically created as a resource if it does not already exist, so we are defining
-      <code>text1</code> on the fly and then using it.</p>
-    </li>
-    <li>Save the file.</li>
-  </ol>
-      <p>Open the <code>R.java</code> class in the
-      project and look at it, you should see new definitions for
-      <code>notes_row</code> and <code>text1</code> (our new definitions)
-      meaning we can now gain access to these from the our code. </p>
-
-  <h2 style="clear:right;">Step 6</h2>
-<p>Next, open the <code>Notepadv1</code> class in the source. In the following steps, we are going to
-    alter this class to become a list adapter and display our notes, and also
-    allow us to add new notes.</p>
-
-<p><code>Notepadv1</code> will inherit from a subclass
-    of <code>Activity</code> called a <code>ListActivity</code>, 
-    which has extra functionality to accommodate the kinds of 
-    things you might want to do with a list, for
-    example: displaying an arbitrary number of list items in rows on the screen,
-    moving through the list items, and allowing them to be selected.</p>
-
-<p>Take a look through the existing code in <code>Notepadv1</code> class.
-    There is a currently an unused private field called <code>mNoteNumber</code> that
-    we will use to create numbered note titles.</p>
-    <p>There are also three override methods defined:
-    <code>onCreate</code>, <code>onCreateOptionsMenu</code> and
-    <code>onOptionsItemSelected</code>; we need to fill these
-    out:</p>
-    <ul>
-      <li><code>onCreate()</code> is called when the activity is
-      started &mdash; it is a little like the "main" method for an Activity. We use
-      this to set up resources and state for the activity when it is
-      running.</li>
-     <li><code>onCreateOptionsMenu()</code> is used to populate the
-      menu for the Activity. This is shown when the user hits the menu button,
-and
-      has a list of options they can select (like "Create
-      Note"). </li>
-     <li><code>onOptionsItemSelected()</code> is the other half of the
-      menu equation, it is used to handle events generated from the menu (e.g.,
-      when the user selects the "Create Note" item).
-      </li>
-    </ul>
-    
-  <h2>Step 7</h2>
-    <p>Change the inheritance of <code>Notepadv1</code> from
-<code>Activity</code>
-    to <code>ListActivity</code>:</p> 
-    <pre>public class Notepadv1 extends ListActivity</pre>
-    <p>Note: you will have to import <code>ListActivity</code> into the
-Notepadv1
-    class using Eclipse, <strong>ctrl-shift-O</strong> on Windows or Linux, or
-    <strong>cmd-shift-O</strong> on the Mac (organize imports) will do this for you
-    after you've written the above change.</p>
-
-  <h2>Step 8</h2>
-    <p>Fill out the body of the <code>onCreate()</code> method.</p>
-    <p>Here we will set the title for the Activity (shown at the top of the
-    screen), use the <code>notepad_list</code> layout we created in XML, 
-    set up the <code>NotesDbAdapter</code> instance that will
-    access notes data, and populate the list with the available note
-    titles:</p>
-    <ol>
-    <li>
-      In the <code>onCreate</code> method, call <code>super.onCreate()</code> with the 
-      <code>savedInstanceState</code> parameter that's passed in.</li>
-    <li>
-      Call <code>setContentView()</code> and pass <code>R.layout.notepad_list</code>.</li>
-    <li>
-      At the top of the class, create a new private class field called <code>mDbHelper</code> of class
-      <code>NotesDbAdapter</code>.
-    </li>
-    <li>
-      Back in the <code>onCreate</code> method, construct a new
-<code>NotesDbAdapter</code>
-      instance and assign it to the <code>mDbHelper</code> field (pass
-      <code>this</code> into the constructor for <code>DBHelper</code>)
-    </li>
-    <li>
-      Call the <code>open()</code> method on <code>mDbHelper</code> to open (or create) the
-      database.
-    </li>
-    <li>
-      Finally, call a new method <code>fillData()</code>, which will get the data and
-      populate the ListView using the helper &mdash; we haven't defined this method yet.    </li>
-  </ol>
-    <p>
-      <code>onCreate()</code> should now look like this:</p>
-      <pre>
-    &#64;Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.notepad_list);
-        mDbHelper = new NotesDbAdapter(this);
-        mDbHelper.open();
-        fillData();
-    }</pre>
-      <p>And be sure you have the <code>mDbHelper</code> field definition (right
-      under the mNoteNumber definition): </p>
-      <pre>    private NotesDbAdapter mDbHelper;</pre>
-
-  <h2>Step 9</h2>
-
-  <div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>More about menus</h2>
-    <p>The notepad application we are constructing only scratches the
-     surface with <a href="{@docRoot}resources/faq/commontasks.html#addmenuitems">menus</a>. </p>
-    <p>You can also <a href="{@docRoot}resources/faq/commontasks.html#menukeyshortcuts">add
-shortcut keys for menu items</a>, <a
-href="{@docRoot}resources/faq/commontasks.html#menukeyshortcuts">create
-submenus</a> and even <a href="{@docRoot}resources/faq/commontasks.html#addingtoothermenus">add
-menu items to other applications!</a>. </p>
-  </div>
-  </div>
-
-<p>Fill out the body of the <code>onCreateOptionsMenu()</code> method.</p>
-
-<p>We will now create the "Add Item" button that can be accessed by pressing the menu
-button on the device. We'll specify that it occupy the first position in the menu.</p>
-
-  <ol>
-    <li>
-      In <code>strings.xml</code> resource (under <code>res/values</code>), add
-      a new string named "menu_insert" with its value set to <code>Add Item</code>:
-     <pre>&lt;string name="menu_insert"&gt;Add Item&lt;/string&gt;</pre>
-      <p>Then save the file and return to <code>Notepadv1</code>.</p>
-    </li>
-    <li>Create a menu position constant at the top of the  class:
-      <pre>public static final int INSERT_ID = Menu.FIRST;</pre>
-    </li>
-    <li>In the <code>onCreateOptionsMenu()</code> method, change the 
-    <code>super</code> call so we capture the boolean return as <code>result</code>. We'll return this value at the end.</li>
-    <li>Then add the menu item with <code>menu.add()</code>.</li>
-  </ol>
-  <p>The whole method should now look like this: 
-      <pre>
-    &#64;Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        boolean result = super.onCreateOptionsMenu(menu);
-        menu.add(0, INSERT_ID, 0, R.string.menu_insert);
-        return result;
-    }</pre>
-  <p>The arguments passed to <code>add()</code> indicate: a group identifier for this menu (none,
-  in this case), a unique ID (defined above), the order of the item (zero indicates no preference),
-  and the resource of the string to use for the item.</p>
-
-<h2 style="clear:right;">Step 10</h2>
-    <p>Fill out the body of the <code>onOptionsItemSelected()</code> method:</p>
-    <p>This is going
-    to handle our new "Add Note" menu item.  When this is selected, the
-    <code>onOptionsItemSelected()</code> method will be called with the
-    <code>item.getId()</code> set to <code>INSERT_ID</code> (the constant we
-    used to identify the menu item). We can detect this, and take the
-    appropriate actions:</p>
-  <ol>
-    <li>
-      The <code>super.onOptionsItemSelected(item)</code> method call goes at the
-      end of this method &mdash; we want to catch our events first!    </li>
-    <li>
-      Write a switch statement on <code>item.getItemId()</code>.   
-      <p>In the case of <var>INSERT_ID</var>, call a new method, <code>createNote()</code>,
-      and return true, because we have handled this event and do not want to
-      propagate it through the system.</p>
-    </li>
-    <li>Return the result of the superclass' <code>onOptionsItemSelected()</code>
-    method at the end.</li>
-   </ol>
-    <p>
-      The whole <code>onOptionsItemSelect()</code> method should now look like
-      this:</p>
-      <pre>
-    &#64;Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-        case INSERT_ID:
-            createNote();
-            return true;
-        }
-       
-        return super.onOptionsItemSelected(item);
-    }</pre>
-
-<h2>Step 11</h2>
-    <p>Add a new <code>createNote()</code> method:</p>
-    <p>In this first version of
-    our application, <code>createNote()</code> is not going to be very useful.
-We will simply
-    create a new note with a title assigned to it based on a counter ("Note 1",
-    "Note 2"...) and with an empty body. At present we have no way of editing
-    the contents of a note, so for now we will have to be content making one
-    with some default values:</p>
-  <ol>
-    <li>Construct the name using "Note" and the counter we defined in the class: <code>
-      String noteName = "Note " + mNoteNumber++</code></li>
-    <li>
-      Call <code>mDbHelper.createNote()</code> using <code>noteName</code> as the
-      title and <code>""</code> for the body 
-    </li>
-    <li>
-      Call <code>fillData()</code> to populate the list of notes (inefficient but
-      simple) &mdash; we'll create this method next.</li>
-  </ol>
-    <p>
-      The whole <code>createNote()</code> method should look like this: </p>
-      <pre>
-    private void createNote() {
-        String noteName = &quot;Note &quot; + mNoteNumber++;
-        mDbHelper.createNote(noteName, &quot;&quot;);
-        fillData();
-    }</pre>
-
-
-<h2>Step 12</h2>
-  <div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>List adapters</h2>
-    <p>Our example uses a {@link android.widget.SimpleCursorAdapter
-     SimpleCursorAdapter} to bind a database {@link android.database.Cursor Cursor}
-     into a ListView, and this is a common way to use a {@link android.widget.ListAdapter 
-     ListAdapter}. Other options exist like {@link android.widget.ArrayAdapter ArrayAdapter} which 
-     can be used to take a List or Array of in-memory data and bind it in to
-     a list as well.</p>
-  </div>
-  </div>
-  
-  <p>Define the <code>fillData()</code> method:</p>
-   <p>This
-    method uses <code>SimpleCursorAdapter,</code> which takes a database <code>Cursor</code> 
-    and binds it to fields provided in the layout. These fields define the row elements of our list 
-    (in this case we use the <code>text1</code> field in our
-    <code>notes_row.xml</code> layout), so this allows us to easily populate the list with
-    entries from our database.</p>
-    <p>To do this we have to provide a mapping from the <code>title</code> field in the returned Cursor, to
-    our <code>text1</code> TextView, which is done by defining two arrays: the first a string array
-    with the list of columns to map <em>from</em> (just "title" in this case, from the constant 
-    <code>NotesDbAdapter.KEY_TITLE</code>) and, the second, an int array
-    containing references to the views that we'll bind the data <em>into</em> 
-    (the <code>R.id.text1</code> TextView).</p>
-    <p>This is a bigger chunk of code, so let's first take a look at it:</p>
-
-    <pre>
-    private void fillData() {
-        // Get all of the notes from the database and create the item list
-        Cursor c = mDbHelper.fetchAllNotes();
-        startManagingCursor(c);
-
-        String[] from = new String[] { NotesDbAdapter.KEY_TITLE };
-        int[] to = new int[] { R.id.text1 };
-        
-        // Now create an array adapter and set it to display using our row
-        SimpleCursorAdapter notes =
-            new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to);
-        setListAdapter(notes);
-    }</pre>
-    
-  <p>Here's what we've done:</p>
-  <ol>
-    <li>
-      After obtaining the Cursor from <code>mDbHelper.fetchAllNotes()</code>, we 
-      use an Activity method called
-      <code>startManagingCursor()</code> that allows Android to take care of the
-      Cursor lifecycle instead of us needing to worry about it. (We will cover the implications
-      of the lifecycle in exercise 3, but for now just know that this allows Android to do some
-      of our resource management work for us.)</li>
-    <li>
-      Then we create a string array in which we declare the column(s) we want 
-      (just the title, in this case), and an int array that defines the View(s)
-      to which we'd like to bind the columns (these should be in order, respective to 
-      the string array, but here we only have one for each).</li>
-    <li>
-      Next is the SimpleCursorAdapter instantiation. 
-      Like many classes in Android, the SimpleCursorAdapter needs a Context in order to do its
-      work, so we pass in <code>this</code> for the context (since subclasses of Activity 
-      implement Context). We pass the <code>notes_row</code> View we created as the receptacle
-      for the data, the Cursor we just created, and then our arrays.</li>
-   </ol>
-    <p>
-      In the future, remember that the mapping between the <strong>from</strong> columns and <strong>to</strong> resources
-      is done using the respective ordering of the two arrays. If we had more columns we wanted
-      to bind, and more Views to bind them in to, we would specify them in order, for example we
-      might use <code>{ NotesDbAdapter.KEY_TITLE, NotesDbAdapter.KEY_BODY }</code> and
-      <code>{ R.id.text1, R.id.text2 }</code> to bind two fields into the row (and we would also need
-      to define text2 in the notes_row.xml, for the body text). This is how you can bind multiple fields
-      into a single row (and get a custom row layout as well).</p>
-    <p>
-      If you get compiler errors about classes not being found, ctrl-shift-O or
-      (cmd-shift-O on the mac) to organize imports. 
-    </p>
-    
-<h2 style="clear:right;">Step 13</h2>
-    <p>Run it!
-  <ol>
-    <li>
-      Right click on the <code>Notepadv1</code> project.</li>
-    <li>
-      From the popup menu, select <strong>Run As</strong> &gt; 
-      <strong>Android Application</strong>.</li>
-    <li>
-      If you see a dialog come up, select Android Launcher as the way of running
-      the application (you can also use the link near the top of the dialog to
-      set this as your default for the workspace; this is recommended as it will
-      stop the plugin from asking you this every time).</li>
-    <li>Add new notes by hitting the menu button and selecting <em>Add
-    Item</em> from the menu.</li>
-  </ol>
-
-<h2 style="clear:right;">Solution and Next Steps</h2>
-    <p>You can see the solution to this class in <code>Notepadv1Solution</code>
-from
-the zip file to compare with your own.</p>
-
-<p>Once you are ready, move on to <a href="notepad-ex2.html">Tutorial
-Exercise 2</a> to add the ability to create, edit and delete notes.</p>
-
diff --git a/docs/html/guide/tutorials/notepad/notepad-ex2.jd b/docs/html/guide/tutorials/notepad/notepad-ex2.jd
deleted file mode 100644
index fed40ab..0000000
--- a/docs/html/guide/tutorials/notepad/notepad-ex2.jd
+++ /dev/null
@@ -1,642 +0,0 @@
-Rpage.title=Notepad Exercise 2
-parent.title=Notepad Tutorial
-parent.link=index.html
-@jd:body
-
-
-<p><em>In this exercise, you will add a second Activity to your notepad application, to let the user
-create and edit notes. You will also allow the user to delete existing notes through a context menu.
-The new Activity assumes responsibility for creating new notes by
-collecting user input and packing it into a return Bundle provided by the intent. This exercise
-demonstrates:</em></p>
-<ul>
-<li><em>Constructing a new Activity and adding it to the Android manifest</em></li>
-<li><em>Invoking another Activity asynchronously using <code>startActivityForResult()</code></em></li>
-<li><em>Passing data between Activity in Bundle objects</em></li>
-<li><em>How to use a more advanced screen layout</em></li>
-<li><em>How to create a context menu</em></li>
-</ul>
-
-<div style="float:right;white-space:nowrap">
-	[<a href="notepad-ex1.html">Exercise 1</a>]
-	<span style="color:#BBB;">
-		[<a href="notepad-ex2.html" style="color:#DDD;">Exercise 2</a>]
-	</span>
-	[<a href="notepad-ex3.html">Exercise 3</a>]
-	[<a href="notepad-extra-credit.html">Extra Credit</a>]
-</div>
-
-<h2>Step 1</h2>
-
-<p>Create a new Android project using the sources from <code>Notepadv2</code> under the
-<code>NotepadCodeLab</code> folder, just like you did for the first exercise. If you see an error about
-<code>AndroidManifest.xml</code>, or some problems related to an
-<code>android.zip</code> file, right click on the project and select <strong>Android
-Tools</strong> &gt; <strong>Fix Project Properties</strong>.</p>
-
-<p>Open the <code>Notepadv2</code> project and take a look around:</p>
-<ul>
-    <li>
-      Open and look at the <code>strings.xml</code> file under
-      <code>res/values</code> &mdash; there are several new strings which we will use
-      for our new functionality
-    </li>
-    <li>
-      Also, open and take a look at the top of the <code>Notepadv2</code> class,
-      you will notice several new constants have been defined along with a new <code>mNotesCursor</code>
-      field used to hold the cursor we are using.
-    </li>
-    <li>
-      Note also that the <code>fillData()</code> method has a few more comments and now uses
-      the new field to store the notes Cursor. The <code>onCreate()</code> method is
-      unchanged from the first exercise. Also notice that the member field used to store the
-      notes Cursor is now called <code>mNotesCursor</code>. The <code>m</code> denotes a member
-      field and is part of the Android coding style standards.
-    </li>
-    <li>
-      There are also a couple of new overridden methods
-      (<code>onCreateContextMenu()</code>, <code>onContextItemSelected()</code>,
-      <code>onListItemClick()</code> and <code>onActivityResult()</code>)
-      which we will be filling in below.
-    </li>
-</ul>
-
-
-<h2>Step 2</h2>
-<div class="sidebox-wrapper">
-<div class="sidebox">
-<p>Context menus should always be used when performing actions upon specific elements in the UI.
-When you register a View to a context menu, the context menu is revealed by performing a "long-click"
-on the UI component (press and hold the touchscreen or highlight and hold down the selection key for about two seconds).</p>
-</div>
-</div>
-
-<p>First, let's create the context menu that will allow users to delete individual notes.
-Open the Notepadv2 class.</p>
-
-<ol>
-    <li>In order for each list item in the ListView to register for the context menu, we call
-    <code>registerForContextMenu()</code> and pass it our ListView. So, at the very end of
-    the <code>onCreate()</code> method add this line:
-    <pre>registerForContextMenu(getListView());</pre>
-    <p>Because our Activity extends the ListActivity class, <code>getListView()</code> will return us
-    the local ListView object for the Activity. Now, each list item in this ListView will activate the
-    context menu.
-    <li>
-      Now fill in the <code>onCreateContextMenu()</code> method. This callback is similar to the other
-    menu callback used for the options menu. Here, we add just one line, which will add a menu item
-    to delete a note. Call <code>menu.add()</code> like so:
-      <pre>
-public void onCreateContextMenu(Menu menu, View v,
-        ContextMenu.ContextMenuInfo menuInfo) {
-    super.onCreateContextMenu(menu, v, menuInfo);
-    menu.add(0, DELETE_ID, 0, R.string.menu_delete);
-}</pre>
-    <p>The <code>onCreateContextMenu()</code> callback passes some other information in addition to the Menu object,
-    such as the View that has been triggered for the menu and
-    an extra object that may contain additional information about the object selected. However, we don't care about
-    these here, because we only have one kind of object in the Activity that uses context menus. In the next
-    step, we'll handle the menu item selection.</p>
-    </li>
-</ol>
-
-<h2>Step 3</h2>
-  <p>Now that the we've registered our ListView for a context menu and defined our context menu item, we need
-  to handle the callback when it is selected. For this, we need to identify the list ID of the
-  selected item, then delete it. So fill in the
-  <code>onContextItemSelected()</code> method like this:</p>
-<pre>
-public boolean onContextItemSelected(MenuItem item) {
-    switch(item.getItemId()) {
-    case DELETE_ID:
-        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
-        mDbHelper.deleteNote(info.id);
-        fillData();
-        return true;
-    }
-    return super.onContextItemSelected(item);
-}</pre>
-<p>Here, we retrieve the {@link android.widget.AdapterView.AdapterContextMenuInfo AdapterContextMenuInfo}
-with {@link android.view.MenuItem#getMenuInfo()}. The <var>id</var> field of this object tells us
-the position of the item in the ListView. We then pass this to the <code>deleteNote()</code>
-method of our NotesDbAdapter and the note is deleted. That's it for the context menu &mdash; notes
-can now be deleted.</p>
-
-<h2 style="clear:right;">Step 4</h2>
-  <div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>Starting Other Activities</h2>
-    <p>In this example our Intent uses a class name specifically.
-     As well as
-     <a href="{@docRoot}resources/faq/commontasks.html#intentexamples">starting intents</a> in
-    classes we already know about, be they in our own application or another
-    application, we can also create Intents without knowing exactly which
-    application will handle it.</p>
-    <p>For example, we might want to open a page in a
-    browser, and for this we still use
-    an Intent. But instead of specifying a class to handle it, we use
-    a predefined Intent constant, and a content URI that describes what we
-    want to do. See {@link android.content.Intent
-    android.content.Intent} for more information.</p>
-  </div>
-  </div>
-
-	<p>Fill in the body of the <code>createNote()</code> method:
-    <p>Create a new <code>Intent</code> to create a note
-    (<code>ACTIVITY_CREATE</code>) using the <code>NoteEdit</code> class.
-    Then fire the Intent using the <code>startActivityForResult()</code> method
-    call:</p>
-    <pre style="overflow:auto">
-Intent i = new Intent(this, NoteEdit.class);
-startActivityForResult(i, ACTIVITY_CREATE);</pre>
-      <p>This form of the Intent call targets a specific class in our Activity, in this case
-      <code>NoteEdit</code>. Since the Intent class will need to communicate with the Android
-      operating system to route requests, we also have to provide a Context (<code>this</code>).</p>
-      <p>The <code>startActivityForResult()</code> method fires the Intent in a way that causes a method
-      in our Activity to be called when the new Activity is completed. The method in our Activity
-      that receives the callback is called
-      <code>onActivityResult()</code> and we will implement it in a later step. The other way
-      to call an Activity is using <code>startActivity()</code> but this is a "fire-and-forget" way
-      of calling it &mdash; in this manner, our Activity is not informed when the Activity is completed, and there is
-      no way to return result information from the called Activity with <code>startActivity()</code>.
-      <p>Don't worry about the fact that <code>NoteEdit</code> doesn't exist yet,
-      we will fix that soon. </p>
-  </li>
-
-
-<h2>Step 5</h2>
-
-	<p>Fill in the body of the <code>onListItemClick()</code> override.</p>
-    <p><code>onListItemClick()</code> is a callback method that we'll override. It is called when
-    the user selects an item from the list. It is passed four parameters: the
-    <code>ListView</code> object it was invoked from, the <code>View</code>
-    inside the <code>ListView</code> that was clicked on, the
-    <code>position</code> in the list that was clicked, and the
-    <code>mRowId</code> of the item that was clicked. In this instance we can
-    ignore the first two parameters (we only have one <code>ListView</code> it
-    could be), and we ignore the <code>mRowId</code> as well. All we are
-    interested in is the <code>position</code> that the user selected. We use
-    this to get the data from the correct row, and bundle it up to send to
-    the <code>NoteEdit</code> Activity.</p>
-   <p>In our implementation of the callback, the method creates an
-    <code>Intent</code> to edit the note using
-    the <code>NoteEdit</code> class. It then adds data into the extras Bundle of
-    the Intent, which will be passed to the called Activity. We use it
-    to pass in the title and body text, and the <code>mRowId</code> for the note we are
-    editing. Finally, it will fire the Intent using the
-    <code>startActivityForResult()</code> method call. Here's the code that
-    belongs in <code>onListItemClick()</code>:</p>
-    <pre>
-super.onListItemClick(l, v, position, id);
-Cursor c = mNotesCursor;
-c.moveToPosition(position);
-Intent i = new Intent(this, NoteEdit.class);
-i.putExtra(NotesDbAdapter.KEY_ROWID, id);
-i.putExtra(NotesDbAdapter.KEY_TITLE, c.getString(
-        c.getColumnIndexOrThrow(NotesDbAdapter.KEY_TITLE)));
-i.putExtra(NotesDbAdapter.KEY_BODY, c.getString(
-        c.getColumnIndexOrThrow(NotesDbAdapter.KEY_BODY)));
-startActivityForResult(i, ACTIVITY_EDIT);</pre>
-  <ul>
-    <li>
-      <code>putExtra()</code> is the method to add items into the extras Bundle
-      to pass in to intent invocations. Here, we are
-      using the Bundle to pass in the title, body and mRowId of the note we want to edit.
-    </li>
-    <li>
-      The details of the note are pulled out from our query Cursor, which we move to the
-      proper position for the element that was selected in the list, with
-      the <code>moveToPosition()</code> method.</li>
-    <li>With the extras added to the Intent, we invoke the Intent on the
-      <code>NoteEdit</code> class by passing <code>startActivityForResult()</code>
-      the Intent and the request code. (The request code will be
-      returned to <code>onActivityResult</code> as the <code>requestCode</code> parameter.)</li>
-  </ul>
-    <p class="note"><b>Note:</b> We assign the mNotesCursor field to a local variable at the
-    start of the method. This is done as an optimization of the Android code. Accessing a local
-    variable is much more efficient than accessing a field in the Dalvik VM, so by doing this
-    we make only one access to the field, and five accesses to the local variable, making the
-    routine much more efficient. It is recommended that you use this optimization when possible.</p>
-
-
-<h2>Step 6</h2>
-
-<p>The above <code>createNote()</code> and <code>onListItemClick()</code>
-    methods use an asynchronous Intent invocation. We need a handler for the callback, so here we fill
-    in the body of the <code>onActivityResult()</code>. </p>
-<p><code>onActivityResult()</code> is the overridden method
-    which will be called when an Activity returns with a result. (Remember, an Activity
-    will only return a result if launched with <code>startActivityForResult</code>.) The parameters provided
-    to the callback are: </p>
-  <ul>
-    <li><code>requestCode</code> &mdash; the original request code
-    specified in the Intent invocation (either <code>ACTIVITY_CREATE</code> or
-    <code>ACTIVITY_EDIT</code> for us).
-    </li>
-    <li><code>resultCode</code> &mdash; the result (or error code) of the call, this
-    should be zero if everything was OK, but may have a non-zero code indicating
-    that something failed. There are standard result codes available, and you
-    can also create your own constants to indicate specific problems.
-    </li>
-    <li><code>intent</code> &mdash; this is an Intent created by the Activity returning
-    results. It can be used to return data in the Intent "extras."
-    </li>
-  </ul>
-  <p>The combination of <code>startActivityForResult()</code> and
-  <code>onActivityResult()</code> can be thought of as an asynchronous RPC
-  (remote procedure call) and forms the recommended way for an Activity to invoke
-  another and share services.</p>
-  <p>Here's the code that belongs in your <code>onActivityResult()</code>:</p>
-    <pre>
-super.onActivityResult(requestCode, resultCode, intent);
-Bundle extras = intent.getExtras();
-
-switch(requestCode) {
-case ACTIVITY_CREATE:
-    String title = extras.getString(NotesDbAdapter.KEY_TITLE);
-    String body = extras.getString(NotesDbAdapter.KEY_BODY);
-    mDbHelper.createNote(title, body);
-    fillData();
-    break;
-case ACTIVITY_EDIT:
-    Long mRowId = extras.getLong(NotesDbAdapter.KEY_ROWID);
-    if (mRowId != null) {
-        String editTitle = extras.getString(NotesDbAdapter.KEY_TITLE);
-        String editBody = extras.getString(NotesDbAdapter.KEY_BODY);
-        mDbHelper.updateNote(mRowId, editTitle, editBody);
-    }
-    fillData();
-    break;
-}</pre>
-
-  <ul>
-    <li>
-      We are handling both the <code>ACTIVITY_CREATE</code> and
-      <code>ACTIVITY_EDIT</code> activity results in this method.
-    </li>
-    <li>
-      In the case of a create, we pull the title and body from the extras (retrieved from the
-      returned Intent) and use them to create a new note.
-    </li>
-    <li>
-      In the case of an edit, we pull the mRowId as well, and use that to update
-      the note in the database.
-    </li>
-    <li>
-      <code>fillData()</code> at the end ensures everything is up to date .
-    </li>
-  </ul>
-
-
-<h2>Step 7</h2>
-
-  <div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>The Art of Layout</h2>
-    <p>The provided
-    note_edit.xml layout file is the most sophisticated one in the application we will be building,
-    but that doesn't mean it is even close to the kind of sophistication you will be likely to want
-    in real Android applications.</p>
-    <p>Creating a
-    good UI is part art and part science, and the rest is work. Mastery of <a
-    href="{@docRoot}guide/topics/ui/declaring-layout.html">XML Layouts</a> is an essential part of
-creating
-    a good looking Android application.</p>
-    <p>Take a look at the
-    <a href="{@docRoot}resources/tutorials/views/index.html">Hello Views</a>
-    for some example layouts and how to use them. The ApiDemos sample project is also a
-    great resource from which to learn how to create different layouts.</p>
-  </div>
-  </div>
-
-<p>Open the file <code>note_edit.xml</code> that has been provided and take a
-    look at it. This is the UI code for the Note Editor.</p>
-    <p>This is the most
-    sophisticated UI we have dealt with yet. The file is given to you to avoid
-    problems that may sneak in when typing the code. (The XML is very strict
-    about case sensitivity and structure, mistakes in these are the usual cause
-    of problems with layout.)</p>
-    <p>There is a new parameter used
-    here that we haven't seen before: <code>android:layout_weight</code> (in
-    this case set to use the value 1 in each case).</p>
-    <p><code>layout_weight</code> is used in LinearLayouts
-    to assign "importance" to Views within the layout. All Views have a default
-    <code>layout_weight</code> of zero, meaning they take up only as much room
-    on the screen as they need to be displayed. Assigning a value higher than
-    zero will split up the rest of the available space in the parent View, according
-    to the value of each View's <code>layout_weight</code> and its ratio to the
-    overall <code>layout_weight</code> specified in the current layout for this
-    and other View elements.</p>
-    <p>To give an example: let's say we have a text label
-    and two text edit elements in a horizontal row. The label has no
-    <code>layout_weight</code> specified, so it takes up the minimum space
-    required to render. If the <code>layout_weight</code> of each of the two
-    text edit elements is set to 1, the remaining width in the parent layout will
-    be split equally between them (because we claim they are equally important).
-    If the first one has a <code>layout_weight</code> of 1
-    and the second has a <code>layout_weight</code> of 2, then one third of the
-    remaining space will be given to the first, and two thirds to the
-    second (because we claim the second one is more important).</p>
-    <p>This layout also demonstrates how to nest multiple layouts
-    inside each other to achieve a more complex and pleasant layout. In this
-    example, a horizontal linear layout is nested inside the vertical one to
-    allow the title label and text field to be alongside each other,
-    horizontally.</p>
-
-
-<h2 style="clear:right;">Step 8</h2>
-
-	<p>Create a <code>NoteEdit</code> class that extends
-    <code>android.app.Activity</code>.</p>
-    <p>This is the first time we will have
-    created an Activity without the Android Eclipse plugin doing it for us. When
-    you do so, the <code>onCreate()</code> method is not automatically
-    overridden for you. It is hard to imagine an Activity that doesn't override
-    the <code>onCreate()</code> method, so this should be the first thing you do.</p>
-  <ol>
-    <li>Right click on the <code>com.android.demo.notepad2</code> package
-    in the Package Explorer, and select <strong>New</strong> &gt; <strong>Class</strong> from the popup
-    menu.</li>
-    <li>Fill in <code>NoteEdit</code> for the <code>Name:</code> field in the
-    dialog.</li>
-    <li>In the <code>Superclass:</code> field, enter
-    <code>android.app.Activity</code> (you can also just type Activity and hit
-    Ctrl-Space on Windows and Linux or Cmd-Space on the Mac, to invoke code
-    assist and find the right package and class).</li>
-    <li>Click <strong>Finish</strong>.</li>
-    <li>In the resulting <code>NoteEdit</code> class, right click in the editor
-    window and select <strong>Source</strong> &gt; <strong>Override/Implement Methods...</strong></li>
-    <li>Scroll down through the checklist in the dialog until you see
-    <code>onCreate(Bundle)</code> &mdash; and check the box next to it.</li>
-    <li>Click <strong>OK</strong>.<p>The method should now appear in your class.</p></li>
-  </ol>
-
-<h2>Step 9</h2>
-
-<p>Fill in the body of the <code>onCreate()</code> method for <code>NoteEdit</code>.</p>
-
-<p>This will set the title of our new Activity to say "Edit Note" (one
-    of the strings defined in <code>strings.xml</code>). It will also set the
-    content view to use our <code>note_edit.xml</code> layout file. We can then
-    grab handles to the title and body text edit views, and the confirm button,
-    so that our class can use them to set and get the note title and body,
-    and attach an event to the confirm button for when it is pressed by the
-    user.</p>
-    <p>We can then unbundle the values that were passed in to the Activity
-    with the extras Bundle attached to the calling Intent. We'll use them to pre-populate
-    the title and body text edit views so that the user can edit them.
-    Then we will grab and store the <code>mRowId</code> so we can keep
-    track of what note the user is editing.</p>
-
-  <ol>
-    <li>
-      Inside <code>onCreate()</code>, set up the layout:<br>
-      <pre>setContentView(R.layout.note_edit);</pre>
-    </li>
-    <li>
-      Find the edit and button components we need:
-      <p>These are found by the
-      IDs associated to them in the R class, and need to be cast to the right
-      type of <code>View</code> (<code>EditText</code> for the two text views,
-      and <code>Button</code> for the confirm button):</p>
-      <pre>
-mTitleText = (EditText) findViewById(R.id.title);
-mBodyText = (EditText) findViewById(R.id.body);
-Button confirmButton = (Button) findViewById(R.id.confirm);</pre>
-      <p>Note that <code>mTitleText</code> and <code>mBodyText</code> are member
-      fields (you need to declare them at the top of the class definition).</p>
-    </li>
-    <li>At the top of the class, declare a <code>Long mRowId</code> private field to store
-      the current <code>mRowId</code> being edited (if any).
-    </li>
-    <li>Continuing inside <code>onCreate()</code>,
-      add code to initialize the <code>title</code>, <code>body</code> and
-      <code>mRowId</code> from the extras Bundle in
-      the Intent (if it is present):<br>
-      <pre>
-mRowId = null;
-Bundle extras = getIntent().getExtras();
-if (extras != null) {
-    String title = extras.getString(NotesDbAdapter.KEY_TITLE);
-    String body = extras.getString(NotesDbAdapter.KEY_BODY);
-    mRowId = extras.getLong(NotesDbAdapter.KEY_ROWID);
-
-    if (title != null) {
-        mTitleText.setText(title);
-    }
-    if (body != null) {
-        mBodyText.setText(body);
-    }
-}</pre>
-     <ul>
-      <li>
-        We are pulling the <code>title</code> and
-        <code>body</code> out of the
-        <code>extras</code> Bundle that was set from the
-        Intent invocation.
-      </li><li>
-        We also null-protect the text field setting (i.e., we don't want to set
-        the text fields to null accidentally).</li>
-     </ul>
-    </li>
-    <li>
-      Create an <code>onClickListener()</code> for the button:
-      <p>Listeners can be one of the more confusing aspects of UI
-      implementation, but
-      what we are trying to achieve in this case is simple. We want an
-      <code>onClick()</code> method to be called when the user presses the
-      confirm button, and use that to do some work and return the values
-      of the edited note to the Intent caller. We do this using something called
-      an anonymous inner class. This is a bit confusing to look at unless you
-      have seen them before, but all you really need to take away from this is
-      that you can refer to this code in the future to see how to create a
-      listener and attach it to a button. (Listeners are a common idiom
-      in Java development, particularly for user interfaces.) Here's the empty listener:<br>
-      <pre>
-confirmButton.setOnClickListener(new View.OnClickListener() {
-
-    public void onClick(View view) {
-
-    }
-
-});</pre>
-    </li>
-  </ol>
-<h2>Step 10</h2>
-
-<p>Fill in the body of the <code>onClick()</code> method of the <code>OnClickListener</code> created in the last step.</p>
-
-    <p>This is the code that will be run when the user clicks on the
-    confirm button. We want this to grab the title and body text from the edit
-    text fields, and put them into the return Bundle so that they can be passed
-    back to the Activity that invoked this <code>NoteEdit</code> Activity. If the
-    operation is an edit rather than a create, we also want to put the
-    <code>mRowId</code> into the Bundle so that the
-    <code>Notepadv2</code> class can save the changes back to the correct
-    note.</p>
-  <ol>
-    <li>
-      Create a <code>Bundle</code> and put the title and body text into it using the
-      constants defined in Notepadv2 as keys:<br>
-      <pre>
-Bundle bundle = new Bundle();
-
-bundle.putString(NotesDbAdapter.KEY_TITLE, mTitleText.getText().toString());
-bundle.putString(NotesDbAdapter.KEY_BODY, mBodyText.getText().toString());
-if (mRowId != null) {
-    bundle.putLong(NotesDbAdapter.KEY_ROWID, mRowId);
-}</pre>
-    </li>
-    <li>
-      Set the result information (the Bundle) in a new Intent and finish the Activity:
-      <pre>
-Intent mIntent = new Intent();
-mIntent.putExtras(bundle);
-setResult(RESULT_OK, mIntent);
-finish();</pre>
-      <ul>
-      <li>The Intent is simply our data carrier that carries our Bundle
-      (with the title, body and mRowId).</li>
-      <li>The <code>setResult()</code> method is used to set the result
-      code and return Intent to be passed back to the
-      Intent caller. In this case everything worked, so we return RESULT_OK for the
-      result code.</li>
-      <li>The <code>finish()</code> call is used to signal that the Activity
-      is done (like a return call). Anything set in the Result will then be
-      returned to the caller, along with execution control.</li>
-      </ul>
-    </li>
-   </ol>
-   <p>The full <code>onCreate()</code> method (plus supporting class fields) should
-      now look like this:</p>
-      <pre>
-private EditText mTitleText;
-private EditText mBodyText;
-private Long mRowId;
-
-&#64;Override
-protected void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.note_edit);
-
-    mTitleText = (EditText) findViewById(R.id.title);
-    mBodyText = (EditText) findViewById(R.id.body);
-
-    Button confirmButton = (Button) findViewById(R.id.confirm);
-
-    mRowId = null;
-    Bundle extras = getIntent().getExtras();
-    if (extras != null) {
-        String title = extras.getString(NotesDbAdapter.KEY_TITLE);
-        String body = extras.getString(NotesDbAdapter.KEY_BODY);
-        mRowId = extras.getLong(NotesDbAdapter.KEY_ROWID);
-
-        if (title != null) {
-            mTitleText.setText(title);
-        }
-        if (body != null) {
-            mBodyText.setText(body);
-        }
-    }
-
-    confirmButton.setOnClickListener(new View.OnClickListener() {
-
-        public void onClick(View view) {
-            Bundle bundle = new Bundle();
-
-            bundle.putString(NotesDbAdapter.KEY_TITLE, mTitleText.getText().toString());
-            bundle.putString(NotesDbAdapter.KEY_BODY, mBodyText.getText().toString());
-            if (mRowId != null) {
-                bundle.putLong(NotesDbAdapter.KEY_ROWID, mRowId);
-            }
-
-            Intent mIntent = new Intent();
-            mIntent.putExtras(bundle);
-            setResult(RESULT_OK, mIntent);
-            finish();
-        }
-    });
-}</pre>
-    </li>
-  </ol>
-
-<h2>Step 11</h2>
-
-  <div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>The All-Important Android Manifest File</h2>
-  <p>The AndroidManifest.xml file is the way in which Android sees your
-    application. This file defines the category of the application, where
-    it shows up (or even if it shows up) in the launcher or settings, what
-    activities, services, and content providers it defines, what intents it can
-    receive, and more. </p>
-    <p>For more information, see the reference document
-    <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">The AndroidManifest.xml
-File</a></p>
-  </div>
-  </div>
-
-<p>Finally, the new Activity has to be defined in the manifest file:</p>
-    <p>Before the new Activity can be seen by Android, it needs its own
-    Activity entry in the <code>AndroidManifest.xml</code> file. This is to let
-    the system know that it is there and can be called. We could also specify
-    which IntentFilters the activity implements here, but we are going to skip
-    this for now and just let Android know that the Activity is
-    defined.</p>
-    <p>There is a Manifest editor included in the Eclipse plugin that makes it much easier
-    to edit the AndroidManifest file, and we will use this. If you prefer to edit the file directly
-    or are not using the Eclipse plugin, see the box at the end for information on how to do this
-    without using the new Manifest editor.<p>
-    <ol>
-    <li>Double click on the <code>AndroidManifest.xml</code> file in the package explorer to open it.
-    </li>
-    <li>Click the <strong>Application</strong> tab at the bottom of the Manifest editor.</li>
-    <li>Click <strong>Add...</strong> in the Application Nodes section.
-      <p>If you see a dialog with radiobuttons at the top, select the top radio button:
-      "Create a new element at the top level, in Application".</p></li>
-    <li>Make sure "(A) Activity" is selected in the selection pane of the dialog, and click <strong>OK</strong>.</li>
-    <li>Click on the new "Activity" node, in the Application Nodes section, then
-    type <code>.NoteEdit</code> into the <em>Name*</em>
-    field to the right. Press Return/Enter.</li>
-    </ol>
-    <p>The Android Manifest editor helps you add more complex entries into the AndroidManifest.xml
-    file, have a look around at some of the other options available (but be careful not to select
-    them otherwise they will be added to your Manifest). This editor should help you understand
-    and alter the AndroidManifest.xml file as you move on to more advanced Android applications.</p>
-
-    <p class="note">If you prefer to edit this file directly, simply open the
-    <code>AndroidManifest.xml</code> file and look at the source (use the
-    <code>AndroidManifest.xml</code> tab in the eclipse editor to see the source code directly).
-    Then edit the file as follows:<br>
-    <code>&lt;activity android:name=".NoteEdit" /&gt;</code><br><br>
-    This should be placed just below the line that reads:<br>
-    <code>&lt;/activity&gt;</code> for the <code>.Notepadv2</code> activity.</p>
-
-<h2 style="clear:right;">Step 12</h2>
-
-<p>Now Run it!</p>
-<p>You should now be able to add real notes from
-the menu, as well as delete an existing one. Notice that in order to delete, you must
-first use the directional controls on the device to highlight the note.
-Furthermore, selecting a note title from the list should bring up the note
-editor to let you edit it. Press confirm when finished to save the changes
-back to the database.
-
-<h2>Solution and Next Steps</h2>
-
-<p>You can see the solution to this exercise in  <code>Notepadv2Solution</code>
-from the zip file to compare with your own.</p>
-<p>Now try editing a note, and then hitting the back button on the emulator
-instead of the confirm button (the back button is below the menu button). You
-will see an error come up. Clearly our application still has some problems.
-Worse still, if you did make some changes and hit the back button, when you go
-back into the notepad to look at the note you changed, you will find that all
-your changes have been lost. In the next exercise we will fix these
-problems.</p>
-
-<p>
-Once you are ready, move on to <a href="notepad-ex3.html">Tutorial
-Exercise 3</a> where you will fix the problems with the back button and lost
-edits by introducing a proper life cycle into the NoteEdit Activity.</p>
-
-
diff --git a/docs/html/guide/tutorials/notepad/notepad-ex3.jd b/docs/html/guide/tutorials/notepad/notepad-ex3.jd
deleted file mode 100644
index 557738e..0000000
--- a/docs/html/guide/tutorials/notepad/notepad-ex3.jd
+++ /dev/null
@@ -1,366 +0,0 @@
-page.title=Notepad Exercise 3
-parent.title=Notepad Tutorial
-parent.link=index.html
-@jd:body
-
-
-<p><em>In this exercise, you will use life-cycle event callbacks to store and
-retrieve application state data. This exercise demonstrates:</em></p>
-<ul>
-<li><em>Life-cycle events and how your application can use them</em></li>
-<li><em>Techniques for maintaining application state</em></li>
-</ul>
-
-<div style="float:right;white-space:nowrap">
-	[<a href="notepad-ex1.html">Exercise 1</a>]
-	[<a href="notepad-ex2.html">Exercise 2</a>]
-	<span style="color:#BBB;">
-		[<a href="notepad-ex3.html" style="color:#BBB;">Exercise 3</a>]
-	</span>
-	[<a href="notepad-extra-credit.html">Extra Credit</a>]
-</div>
-
-<h2>Step 1</h2>
-
-<p>Import <code>Notepadv3</code> into Eclipse. If you see an error about
-<code>AndroidManifest.xml,</code> or some problems related to an Android zip
-file, right click on the project and select <strong>Android Tools</strong> &gt;
-<strong>Fix Project Properties</strong> from the popup menu. The starting point for this exercise is
-exactly where we left off at the end of the Notepadv2. </p>
-<p>The current application has some problems &mdash; hitting the back button when editing
-causes a crash, and anything else that happens during editing will cause the
-edits to be lost.</p>
-<p>To fix this, we will move most of the functionality for creating and editing
-the note into the NoteEdit class, and introduce a full life cycle for editing
-notes.</p>
-
-  <ol>
-    <li>Remove the code in <code>NoteEdit</code> that parses the title and body
-    from the extras Bundle.
-    <p>Instead, we are going to use the <code>DBHelper</code> class
-    to access the notes from the database directly. All we need passed into the
-    NoteEdit Activity is a <code>mRowId</code> (but only if we are editing, if creating we pass
-    nothing). Remove these lines:</p>
-      <pre>
-String title = extras.getString(NotesDbAdapter.KEY_TITLE);
-String body = extras.getString(NotesDbAdapter.KEY_BODY);</pre>
-    </li>
-    <li>We will also get rid of the properties that were being passed in
-    the <code>extras</code> Bundle, which we were using to set the title
-    and body text edit values in the UI. So delete:
-    <pre>
-if (title != null) {
-    mTitleText.setText(title);
-}
-if (body != null) {
-    mBodyText.setText(body);
-}</pre>
-    </li>
-  </ol>
-
-<h2>Step 2</h2>
-
-<p>Create a class field for a <code>NotesDbAdapter</code> at the top of the NoteEdit class:</p>
-    <pre>&nbsp;&nbsp;&nbsp; private NotesDbAdapter mDbHelper;</pre>
-<p>Also add an instance of <code>NotesDbAdapter</code> in the
-    <code>onCreate()</code> method (right below the <code>super.onCreate()</code> call):</p>
-    <pre>
-&nbsp;&nbsp;&nbsp; mDbHelper = new NotesDbAdapter(this);<br>
-&nbsp;&nbsp;&nbsp; mDbHelper.open();</pre>
-
-<h2>Step 3</h2>
-
-<p>In <code>NoteEdit</code>, we need to check the <var>savedInstanceState</var> for the
-<code>mRowId</code>, in case the note
-    editing contains a saved state in the Bundle, which we should recover (this would happen
-  if our Activity lost focus and then restarted).</p>
-  <ol>
-    <li>
-      Replace the code that currently initializes the <code>mRowId</code>:<br>
-      <pre>
-        mRowId = null;
-
-        Bundle extras = getIntent().getExtras();
-        if (extras != null) {
-            mRowId = extras.getLong(NotesDbAdapter.KEY_ROWID);
-        }
-        </pre>
-        with this:
-        <pre>
-        mRowId = (savedInstanceState == null) ? null :
-            (Long) savedInstanceState.getSerializable(NotesDbAdapter.KEY_ROWID);
-        if (mRowId == null) {
-            Bundle extras = getIntent().getExtras();
-            mRowId = extras != null ? extras.getLong(NotesDbAdapter.KEY_ROWID)
-                                    : null;
-        }
-        </pre>
-    </li>
-    <li>
-      Note the null check for <code>savedInstanceState</code>, and we still need to load up
-      <code>mRowId</code> from the <code>extras</code> Bundle if it is not
-      provided by the <code>savedInstanceState</code>. This is a ternary operator shorthand
-      to safely either use the value or null if it is not present.
-    </li>
-    <li>
-      Note the use of <code>Bundle.getSerializable()</code> instead of
-      <code>Bundle.getLong()</code>.  The latter encoding returns a <code>long</code> primitive and
-      so can not be used to represent the case when <code>mRowId</code> is <code>null</code>.
-    </li>
-  </ol>
-
-<h2>Step 4</h2>
-
-<p>Next, we need to populate the fields based on the <code>mRowId</code> if we
-    have it:</p>
-    <pre>populateFields();</pre>
-    <p>This goes before the <code>confirmButton.setOnClickListener()</code> line.
-    We'll define this method in a moment.</p>
-
-<h2>Step 5</h2>
-
-<p>Get rid of the Bundle creation and Bundle value settings from the
-    <code>onClick()</code> handler method. The Activity no longer needs to
-    return any extra information to the caller. And because we no longer have
-    an Intent to return, we'll use the shorter version
-    of <code>setResult()</code>:</p>
-    <pre>
-public void onClick(View view) {
-    setResult(RESULT_OK);
-    finish();
-}</pre>
-    <p>We will take care of storing the updates or new notes in the database
-    ourselves, using the life-cycle methods.</p>
-
-    <p>The whole <code>onCreate()</code> method should now look like this:</p>
-    <pre>
-super.onCreate(savedInstanceState);
-
-mDbHelper = new NotesDbAdapter(this);
-mDbHelper.open();
-
-setContentView(R.layout.note_edit);
-
-mTitleText = (EditText) findViewById(R.id.title);
-mBodyText = (EditText) findViewById(R.id.body);
-
-Button confirmButton = (Button) findViewById(R.id.confirm);
-
-mRowId = (savedInstanceState == null) ? null :
-    (Long) savedInstanceState.getSerializable(NotesDbAdapter.KEY_ROWID);
-if (mRowId == null) {
-    Bundle extras = getIntent().getExtras();
-    mRowId = extras != null ? extras.getLong(NotesDbAdapter.KEY_ROWID)
-                            : null;
-}
-
-populateFields();
-
-confirmButton.setOnClickListener(new View.OnClickListener() {
-
-    public void onClick(View view) {
-        setResult(RESULT_OK);
-        finish();
-    }
-
-});</pre>
-
-<h2>Step 6</h2>
-
-<p>Define the <code>populateFields()</code> method.</p>
-    <pre>
-private void populateFields() {
-    if (mRowId != null) {
-        Cursor note = mDbHelper.fetchNote(mRowId);
-        startManagingCursor(note);
-        mTitleText.setText(note.getString(
-	            note.getColumnIndexOrThrow(NotesDbAdapter.KEY_TITLE)));
-        mBodyText.setText(note.getString(
-                note.getColumnIndexOrThrow(NotesDbAdapter.KEY_BODY)));
-    }
-}</pre>
-<p>This method uses the <code>NotesDbAdapter.fetchNote()</code> method to find the right note to
-edit, then it calls <code>startManagingCursor()</code> from the <code>Activity</code> class, which
-is an Android convenience method provided to take care of the Cursor life-cycle. This will release
-and re-create resources as dictated by the Activity life-cycle, so we don't need to worry about
-doing that ourselves. After that, we just look up the title and body values from the Cursor
-and populate the View elements with them.</p>
-
-
-<h2>Step 7</h2>
-
-  <div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>Why handling life-cycle events is important</h2>
-    <p>If you are used to always having control in your applications, you
-    might not understand why all this life-cycle work is necessary. The reason
-    is that in Android, you are not in control of your Activity, the
-    operating system is!</p>
-    <p>As we have already seen, the Android model is based around activities
-    calling each other. When one Activity calls another, the current Activity
-    is paused at the very least, and may be killed altogether if the
-    system starts to run low on resources. If this happens, your Activity will
-    have to store enough state to come back up later, preferably in the same
-    state it was in when it was killed.</p>
-    <p>
-    Activities have a <a
-href="{@docRoot}guide/topics/fundamentals/activities.html#Lifecycle">well-defined life
-cycle</a>.
-    Lifecycle events can happen even if you are not handing off control to
-    another Activity explicitly. For example, perhaps a call comes in to the
-    handset. If this happens, and your Activity is running, it will be swapped
-    out while the call Activity takes over.</p>
-  </div>
-  </div>
-
-<p>Still in the <code>NoteEdit</code> class, we now override the methods
-   <code>onSaveInstanceState()</code>, <code>onPause()</code> and
-   <code>onResume()</code>. These are our life-cycle methods
-   (along with <code>onCreate()</code> which we already have).</p>
-
-<p><code>onSaveInstanceState()</code> is called by Android if the
-    Activity is being stopped and <strong>may be killed before it is
-    resumed!</strong> This means it should store any state necessary to
-    re-initialize to the same condition when the Activity is restarted. It is
-    the counterpart to the <code>onCreate()</code> method, and in fact the
-    <code>savedInstanceState</code> Bundle passed in to <code>onCreate()</code> is the same
-    Bundle that you construct as <code>outState</code> in the
-    <code>onSaveInstanceState()</code> method.</p>
-
-<p><code>onPause()</code> and <code>onResume()</code> are also
-    complimentary methods. <code>onPause()</code> is always called when the
-    Activity ends, even if we instigated that (with a <code>finish()</code> call for example).
-    We will use this to save the current note back to the database. Good
-    practice is to release any resources that can be released during an
-    <code>onPause()</code> as well, to take up less resources when in the
-    passive state. <code>onResume()</code> will call our <code>populateFields()</code> method
-    to read the note out of the database again and populate the fields.</p>
-
-<p>So, add some space after the <code>populateFields()</code> method
-  and add the following life-cycle methods:</p>
-  <ol type="a">
-    <li><code>
-      onSaveInstanceState()</code>:
-      <pre>
-    &#64;Override
-    protected void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-        saveState();
-        outState.putSerializable(NotesDbAdapter.KEY_ROWID, mRowId);
-    }</pre>
-    <p>We'll define <code>saveState()</code> next.</p>
-    </li>
-    <li><code>
-      onPause()</code>:
-      <pre>
-    &#64;Override
-    protected void onPause() {
-        super.onPause();
-        saveState();
-    }</pre>
-    </li>
-    <li><code>
-      onResume()</code>:
-      <pre>
-    &#64;Override
-    protected void onResume() {
-        super.onResume();
-        populateFields();
-    }</pre>
-    </li>
-  </ol>
-<p>Note that <code>saveState()</code> must be called in both <code>onSaveInstanceState()</code>
-and <code>onPause()</code> to ensure that the data is saved.  This is because there is no
-guarantee that <code>onSaveInstanceState()</code> will be called and because when it <em>is</em>
-called, it is called before <code>onPause()</code>.</p>
-
-
-<h2 style="clear:right;">Step 8</h2>
-
-<p>Define the <code>saveState()</code> method to put the data out to the
-database.</p>
-    <pre>
-     private void saveState() {
-        String title = mTitleText.getText().toString();
-        String body = mBodyText.getText().toString();
-
-        if (mRowId == null) {
-            long id = mDbHelper.createNote(title, body);
-            if (id > 0) {
-                mRowId = id;
-            }
-        } else {
-            mDbHelper.updateNote(mRowId, title, body);
-        }
-    }</pre>
-  <p>Note that we capture the return value from <code>createNote()</code> and if a valid row ID is
-  returned, we store it in the <code>mRowId</code> field so that we can update the note in future
-  rather than create a new one (which otherwise might happen if the life-cycle events are
-  triggered).</p>
-
-
-<h2 style="clear:right;">Step 9</h2>
-
-<p>Now pull out the previous handling code from the
-    <code>onActivityResult()</code> method in the <code>Notepadv3</code>
-    class.</p>
-<p>All of the note retrieval and updating now happens within the
-    <code>NoteEdit</code> life cycle, so all the <code>onActivityResult()</code>
-    method needs to do is update its view of the data, no other work is
-    necessary. The resulting method should look like this:</p>
-<pre>
-&#64;Override
-protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
-    super.onActivityResult(requestCode, resultCode, intent);
-    fillData();
-}</pre>
-
-<p>Because the other class now does the work, all this has to do is refresh
-      the data.</p>
-
-<h2>Step 10</h2>
-
-<p>Also remove the lines which set the title and body from the
-    <code>onListItemClick()</code> method (again they are no longer needed,
-    only the <code>mRowId</code> is):</p>
-<pre>
-    Cursor c = mNotesCursor;
-    c.moveToPosition(position);</pre>
-<br>
-and also remove:
-<br>
-<pre>
-    i.putExtra(NotesDbAdapter.KEY_TITLE, c.getString(
-                    c.getColumnIndex(NotesDbAdapter.KEY_TITLE)));
-    i.putExtra(NotesDbAdapter.KEY_BODY, c.getString(
-                    c.getColumnIndex(NotesDbAdapter.KEY_BODY)));</pre>
-<br>
-so that all that should be left in that method is:
-<br>
-<pre>
-    super.onListItemClick(l, v, position, id);
-    Intent i = new Intent(this, NoteEdit.class);
-    i.putExtra(NotesDbAdapter.KEY_ROWID, id);
-    startActivityForResult(i, ACTIVITY_EDIT);</pre>
-
-  <p>You can also now remove the mNotesCursor field from the class, and set it back to using
-  a local variable in the <code>fillData()</code> method:
-<br><pre>
-    Cursor notesCursor = mDbHelper.fetchAllNotes();</pre></p>
-  <p>Note that the <code>m</code> in <code>mNotesCursor</code> denotes a member field, so when we
-  make <code>notesCursor</code> a local variable, we drop the <code>m</code>. Remember to rename the
-  other occurrences of <code>mNotesCursor</code> in your <code>fillData()</code> method.
-</ol>
-<p>
-Run it! (use <em>Run As -&gt; Android Application</em> on the project right
-click menu again)</p>
-
-<h2>Solution and Next Steps</h2>
-
-<p>You can see the solution to this exercise in <code>Notepadv3Solution</code>
-from
-the zip file to compare with your own.</p>
-<p>
-When you are ready, move on to the <a href="notepad-extra-credit.html">Tutorial
-Extra Credit</a> exercise, where you can use the Eclipse debugger to
-examine the life-cycle events as they happen.</p>
diff --git a/docs/html/guide/tutorials/notepad/notepad-extra-credit.jd b/docs/html/guide/tutorials/notepad/notepad-extra-credit.jd
deleted file mode 100644
index 34f7063..0000000
--- a/docs/html/guide/tutorials/notepad/notepad-extra-credit.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Notepad Extra Credit
-parent.title=Notepad Tutorial
-parent.link=index.html
-@jd:body
-
-
-<p><em>In this exercise, you will use the debugger to look at the work you did
-in Exercise 3. This exercise demonstrates:</em></p>
-<ul>
-<li><em>How to set breakpoints to observe execution</em> </li>
-<li><em>How to run your application in debug mode</code></em></li>
-</ul>
-
-<div style="float:right;white-space:nowrap">
-
-	[<a href="notepad-ex1.html">Exercise 1</a>]
-	[<a href="notepad-ex2.html">Exercise 2</a>]
-	[<a href="notepad-ex3.html">Exercise 3</a>]
-	<span style="color:#BBB;">
-		[<a href="notepad-extra-credit.html" style="color:#BBB;">Extra Credit</a>]
-	</span>
-</div>
-
-<h2>Step 1</h2>
-
-<p>Using the working <code>Notepadv3</code>, put breakpoints in the code at the
-    beginning of the <code>onCreate()</code>, <code>onPause()</code>,
-    <code>onSaveInstanceState()</code> and <code>onResume()</code> methods in the
-    <code>NoteEdit</code> class (if you are not familiar with Eclipse, just
-    right click in the narrow grey border on the left of the edit window at the
-    line you want a breakpoint, and select <em>Toggle Breakpoint</em>, you
-should see a blue dot appear).</p>
- 
-<h2>Step 2</h2>
-
-<p>Now start the notepad demo in debug mode:</p>
-
-<ol type="a">
-    <li>
-      Right click on the <code>Notepadv3</code> project and from the Debug menu
-      select <em>Debug As -&gt; Android Application.</em></li>
-    <li>
-      The Android emulator should say <em>"waiting for debugger to connect"</em>
-      briefly and then run the application.</li>
-  <li>
-      If it gets stuck on the waiting... screen, quit the emulator and Eclipse,
-      from the command line do an <code>adb kill-server</code>, and then restart
-Eclipse and try again.</li></ol>
-      
-      <h2>Step 3</h2>
-
-<p>When you edit or create a new note you should see the breakpoints getting
-    hit and the execution stopping.</p>
-    
-    <h2>Step 4</h2>
-
-<p>Hit the Resume button to let execution continue (yellow rectangle with a
-green triangle to its right in the Eclipse toolbars near the top).</p>
-
-<h2>Step 5</h2>
-
-<p>Experiment a bit with the confirm and back buttons, and try pressing Home and
-    making other mode changes. Watch what life-cycle events are generated and
-when.</p>
-
-<p>The Android Eclipse plugin not only offers excellent debugging support for
-your application development, but also superb profiling support. You can also
-try using <a href="{@docRoot}guide/developing/debugging/debugging-tracing.html">Traceview</a> to profile your application. If your application is running too slow, this can help you 
-find the bottlenecks and fix them.</p>
-
diff --git a/docs/html/guide/tutorials/notepad/notepad-index.jd b/docs/html/guide/tutorials/notepad/notepad-index.jd
deleted file mode 100644
index 151c50d..0000000
--- a/docs/html/guide/tutorials/notepad/notepad-index.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=Notepad Tutorial
-@jd:body
-
-
-<p>The  tutorial in this section gives you a &quot;hands-on&quot; introduction
-to the Android framework and the  tools you use to build  applications on it.
-Starting from a preconfigured project file, it guides you through the process of
-developing a simple notepad application and provides concrete examples of how to
-set up the project,  develop the application logic and user interface, and then
-compile and run the application. </p>
-
-<p>The tutorial presents the notepad application development as a set of 
-exercises (see below), each consisting of several steps. You can follow along 
-with the steps in each exercise and gradually build up and refine your  
-application. The exercises explain each step in detail and provide all the 
-sample code you need to complete the application. </p>
-
-<p>When you are finished with the tutorial, you will have created a functioning
-Android application and learned in depth about many of the most important
-concepts in Android development. If you want to add more complex features to
-your application, you can examine the code in an alternative implementation
-of a notepad application, in the 
-<a href="{@docRoot}samples/NotePad/index.html">Sample Code</a> documentation. </p>
-
-
-<a name="who"></a>
-<h2>Who Should Use this Tutorial</h2>
-
-<p>This tutorial is designed for  experienced developers, especially those with 
-knowledge of the Java programming language. If you haven't written Java
-applications before, you can still use the tutorial, but you might need to work
-at a slower pace. </p>
-
-<p>The tutorial  assumes that you have some familiarity with the basic Android
-application concepts and terminology. If you aren't yet familiar with those, you
-should read <a href="{@docRoot}intro/anatomy.html">Overview of an Android 
-Application</a> before continuing. </p>
-
-<p>Also note that this tutorial uses
-the Eclipse development environment, with the Android plugin installed. If you
-are not using Eclipse, you can  follow  the exercises and build the application,
-but you will need to determine how to accomplish the Eclipse-specific
-steps in your environment. </p>
-
-<a name="preparing"></a>
-<h2>Preparing for the Exercises</h2>
-
-<p>This tutorial builds on the information provided in the <a
-href="{@docRoot}intro/installing.html">Installing the SDK</a> and <a 
-href="{@docRoot}intro/hello-android.html">Hello Android</a>
-documents, which explain in detail how to set up your development environment
-for building Android applications. Before you start this tutorial, you should
-read both these documents, have the SDK installed, and your work environment set up.</p>
-
-<p>To prepare for this lesson:</p>
-
-<ol>
-  <li>Download the <a href="codelab/NotepadCodeLab.zip">project
-      exercises archive (.zip)</a></li>
-  <li>Unpack the archive file to a suitable location on your machine</li>
-  <li>Open the <code>NotepadCodeLab</code> folder</li>
-</ol>
-
-<p>Inside the <code>NotepadCodeLab</code> folder, you should see six project
-files: <code>Notepadv1</code>,
-    <code>Notepadv2</code>, <code>Notepadv3</code>,
-    <code>Notepadv1Solution</code>, <code>Notepadv2Solution</code>
-    and <code>Notepadv3Solution</code>. The <code>Notepadv#</code> projects are
-the starting points for each of the exercises, while the
-<code>Notepadv#Solution</code> projects are the exercise
-    solutions. If you are having trouble with a particular exercise, you
-    can compare your current work against the exercise solution.</p>
-
-<a name="exercises"></a>
-<h2> Exercises</h2>
-
-  <p>The table below lists the tutorial exercises and describes the development
-areas that each covers. Each exercise assumes that you have completed any
-previous exercises.</p>
-
-  <table border="0" style="padding:4px;spacing:2px;" summary="This
-table lists the
-tutorial examples and describes what each covers. ">
-    <tr>
-      <th width="120"><a href="{@docRoot}intro/tutorial-ex1.html">Exercise
-1</a></th>
-      <td>Start here. Construct a simple notes list that lets the user add new notes but not
-edit them. Demonstrates the basics of <code>ListActivity</code> and creating
-and handling
-      menu options. Uses a SQLite database to store the notes.</td>
-    </tr>
-    <tr>
-      <th><a href="{@docRoot}intro/tutorial-ex2.html">Exercise 2</a></th>
-      <td>Add a second Activity to the
-application. Demonstrates constructing a
-new Activity, adding it to the Android manifest, passing data between the
-activities, and using more advanced screen layout. Also shows how to
-invoke another Activity to return a result, using
-<code>startActivityForResult()</code>.</td>
-    </tr>
-    <tr>
-      <th><a href="{@docRoot}intro/tutorial-ex3.html">Exercise 3</a></th>
-      <td>Add handling of life-cycle events to
-the application, to let it
-maintain application state across the life cycle. </td>
-    </tr>
-    <tr>
-    <th><a href="{@docRoot}intro/tutorial-extra-credit.html">Extra
-Credit</a></th>
-    <td>Demonstrates how to use the Eclipse
-debugger and how you can use it to
-view life-cycle events as they are generated. This section is optional but
-highly recommended.</td>
-    </tr>
-</table>
-
-
-<a name="other"></a>
-<h2>Other Resources and Further Learning</h2>
-<ul>
-<li>For a lighter but broader introduction to concepts not covered in the
-tutorial,
-take a look at <a href="{@docRoot}kb/commontasks.html">Common Android Tasks</a>.</li>
-<li>The Android SDK includes a variety of fully functioning sample applications
-that make excellent opportunities for further learning. You can find the sample
-applications in the <code>samples/</code> directory of your downloaded SDK.</li>
-<li>This tutorial draws from the full Notepad application included in the
-<code>samples/</code> directory of the SDK, though it does not match it exactly. 
-When you are done with the tutorial,
-it is highly recommended that you take a closer look at this version of the Notepad
-application, 
-as it demonstrates a variety of interesting additions for your application, 
-such as:</li>
-  <ul>
-  <li>Setting up a custom striped list for the list of notes.</li>
-  <li>Creating a custom text edit view that overrides the <code>draw()</code>
-method to
-    make it look like a lined notepad.</li>
-  <li>Implementing a full <code>ContentProvider</code> for notes.</li>
-  <li>Reverting and discarding edits instead of just automatically saving
-them.</li>
-</ul>
-</ul>
diff --git a/docs/html/guide/tutorials/views/hello-autocomplete.jd b/docs/html/guide/tutorials/views/hello-autocomplete.jd
deleted file mode 100644
index 07235a1..0000000
--- a/docs/html/guide/tutorials/views/hello-autocomplete.jd
+++ /dev/null
@@ -1,116 +0,0 @@
-page.title=Hello, AutoCompleteTextView
-parent.title=Hello, Views
-parent.link=index.html
-@jd:body
-
-<p>{@link android.widget.AutoCompleteTextView} is an implementation of the EditText widget that will provide 
-auto-complete suggestions as the user types. The suggestions are extracted from a collection of strings.</p>
-
-
-<ol>
-  <li>Start a new project/Activity called HelloAutoComplete.</li>
-  <li>Open the layout file.
-    Make it like so:
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
-    android:orientation="horizontal"
-    android:layout_width="fill_parent" 
-    android:layout_height="wrap_content">
-
-    &lt;TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="Country" />
-
-    &lt;AutoCompleteTextView android:id="@+id/edit"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"/>
-
-&lt;/LinearLayout>
-</pre>
-</li>
-
-<li>Open HelloAutoComplete.java and insert the following as the <code>onCreate</code> method:
-<pre>
-&#64;Override
-protected void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.main);
-
-    AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.edit);
-    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
-            android.R.layout.simple_dropdown_item_1line, COUNTRIES);
-    textView.setAdapter(adapter);
-}
-</pre>
-	<p>Here, we create an AutoCompleteTextView from our layout. We then 
-	create an {@link android.widget.ArrayAdapter} that binds a <code>simple_dropdown_item_1line</code>
-	layout item to each entry in the <code>COUNTRIES</code> array (which we'll add next).
-	The last part sets the ArrayAdapter to associate with our AutoCompleteTextView.</p>
-</li>
-
-<li>After the <code>onCreate()</code> method, add the String array:
-<pre>
-static final String[] COUNTRIES = new String[] {
-  "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
-  "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
-  "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
-  "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
-  "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
-  "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory",
-  "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi",
-  "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",
-  "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
-  "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",
-  "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic",
-  "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic",
-  "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",
-  "Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland",
-  "Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia",
-  "French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar",
-  "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau",
-  "Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary",
-  "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",
-  "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos",
-  "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
-  "Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands",
-  "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
-  "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia",
-  "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand",
-  "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas",
-  "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru",
-  "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar",
-  "Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena",
-  "Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon",
-  "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal",
-  "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",
-  "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea",
-  "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden",
-  "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas",
-  "The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey",
-  "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda",
-  "Ukraine", "United Arab Emirates", "United Kingdom",
-  "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan",
-  "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara",
-  "Yemen", "Yugoslavia", "Zambia", "Zimbabwe"
-};
-</pre>
-	<p>This is the list of suggestions that will be offered as the user types into the 
-	AutoCompleteTextView.</p>
-</li>
-
-<li>Now run it.</li>
-</ol>
-<p>As you type, you should see something like this:</p>
-<img src="images/hello-autocomplete.png" width="150px" />
-
-
-<h3>References</h3>
-<ul>
-	<li>{@link android.R.layout}</li>
-	<li>{@link android.widget.ArrayAdapter}</li>
-	<li>{@link android.widget.AutoCompleteTextView}</li>
-</ul>
-
-
diff --git a/docs/html/guide/tutorials/views/hello-datepicker.jd b/docs/html/guide/tutorials/views/hello-datepicker.jd
deleted file mode 100644
index fcd43f3..0000000
--- a/docs/html/guide/tutorials/views/hello-datepicker.jd
+++ /dev/null
@@ -1,151 +0,0 @@
-page.title=Hello, DatePicker
-parent.title=Hello, Views
-parent.link=index.html
-@jd:body
-
-<p>A {@link android.widget.DatePicker} is a widget that allows the user to select a month, day and year.</p>
-
-
-<ol>
-  <li>Start a new project/Activity called HelloDatePicker.</li>
-  <li>Open the layout file and make it like so:
-    <pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:orientation="vertical">
-
-    &lt;TextView android:id="@+id/dateDisplay"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text=""/>
-
-    &lt;Button android:id="@+id/pickDate"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="Change the date"/>
-
-&lt;/LinearLayout>
-</pre>
-	<p>For the layout, we're using a vertical LinearLayout, with a {@link android.widget.TextView} that
-	will display the date and a {@link android.widget.Button} that will initiate the DatePicker dialog.
-	With this layout, the TextView will sit above the Button.
-	The text value in the TextView is set empty, as it will be filled 
-	with the current date when our Activity runs.</p>
-    </li> 
-
-  <li>Open HelloDatePicker.java. Insert the following to the HelloDatePicker class:
-<pre>
-    private TextView mDateDisplay;
-    private Button mPickDate;
-
-    private int mYear;
-    private int mMonth;
-    private int mDay;
-
-    static final int DATE_DIALOG_ID = 0;
-
-    &#64;Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.main);
-
-        // capture our View elements
-        mDateDisplay = (TextView) findViewById(R.id.dateDisplay);
-        mPickDate = (Button) findViewById(R.id.pickDate);
-
-        // add a click listener to the button
-        mPickDate.setOnClickListener(new View.OnClickListener() {
-            public void onClick(View v) {
-                showDialog(DATE_DIALOG_ID);
-            }
-        });
-
-        // get the current date
-        final Calendar c = Calendar.getInstance();
-        mYear = c.get(Calendar.YEAR);
-        mMonth = c.get(Calendar.MONTH);
-        mDay = c.get(Calendar.DAY_OF_MONTH);
-
-        // display the current date
-        updateDisplay();
-    }
-</pre>
-<p class="note"><strong>Tip:</strong> Press Ctrl(or Cmd) + Shift + O to import all needed packages.</p>
-	<p>We start by instantiating variables for our Views and date fields.
-	The <code>DATE_DIALOG_ID</code> is a static integer that uniquely identifies the Dialog. In the
-	<code>onCreate()</code> method, we get prepared by setting the layout and capturing the View elements. 
-	Then we create an on-click listener for the Button, so that when it is clicked it will
-	show our DatePicker dialog. The <code>showDialog()</code> method  will pop-up the date picker dialog
-        by calling the <code>onCreateDialog()</code> callback method 
-        (which we'll define in the next section). We then create an
-	instance of {@link java.util.Calendar} and get the current year, month and day. Finally, we call 
-	<code>updateDisplay()</code>&mdash;our own method (defined later) that will fill the TextView.</p>
-</li>
-
-<li>After the <code>onCreate()</code> method, add the <code>onCreateDialog()</code> callback method 
-(which is called by <code>showDialog()</code>)
-<pre>
-&#64;Override
-protected Dialog onCreateDialog(int id) {
-    switch (id) {
-    case DATE_DIALOG_ID:
-        return new DatePickerDialog(this,
-                    mDateSetListener,
-                    mYear, mMonth, mDay);
-    }
-    return null;
-}
-</pre>
-	<p>This method is passed the identifier we gave <code>showDialog()</code> and initializes
-	the DatePicker to the date we retrieved from our Calendar instance.</p>
-</li>
-
-<li>Following that, add the <code>updateDisplay()</code> method:
-<pre>
-    // updates the date we display in the TextView
-    private void updateDisplay() {
-        mDateDisplay.setText(
-            new StringBuilder()
-                    // Month is 0 based so add 1
-                    .append(mMonth + 1).append("-")
-                    .append(mDay).append("-")
-                    .append(mYear).append(" "));
-    }
-</pre>
-<p>This uses the member date values to write the date to our TextView.</p>
-</li>
-<li>Finally, add a listener that will be called when the user sets a new date:
-<pre>
-    // the callback received when the user "sets" the date in the dialog
-    private DatePickerDialog.OnDateSetListener mDateSetListener =
-            new DatePickerDialog.OnDateSetListener() {
-
-                public void onDateSet(DatePicker view, int year, 
-                                      int monthOfYear, int dayOfMonth) {
-                    mYear = year;
-                    mMonth = monthOfYear;
-                    mDay = dayOfMonth;
-                    updateDisplay();
-                }
-            };
-</pre>
-	<p>This <code>OnDateSetListener</code> method listens for when the user is done setting the date
-        (clicks the "Set" button). At that time, this fires and we update our member fields with
-	the new date defined by the user and update our TextView by calling <code>updateDisplay()</code>.</p>
-</li>
-
-<li>Now run it.</li>
-</ol>
-<p>When you press the "Change the date" button, you should see the following:</p>
-<img src="images/hello-datepicker.png" width="150px" />
-
-<h3>References</h3>
-<ul>
-<li>{@link android.widget.DatePicker}</li>
-<li>{@link android.widget.Button}</li>
-<li>{@link android.widget.TextView}</li>
-<li>{@link java.util.Calendar}</li>
-</ul>
-
diff --git a/docs/html/guide/tutorials/views/hello-formstuff.jd b/docs/html/guide/tutorials/views/hello-formstuff.jd
deleted file mode 100644
index b554001..0000000
--- a/docs/html/guide/tutorials/views/hello-formstuff.jd
+++ /dev/null
@@ -1,262 +0,0 @@
-page.title=Hello, Form Stuff
-parent.title=Hello, Views
-parent.link=index.html
-@jd:body
-
-<p>This page introduces a variety of widgets, like image buttons,
-text fields, checkboxes and radio buttons.</p>
-
-
-<ol>
-  <li>Start a new project/Activity called HelloFormStuff.</li>
-  <li>Your layout file should have a basic LinearLayout:
-    <pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent" >
-    	
-&lt;/LinearLayout>
-</pre>
-    <p>For each widget you want to add, just put the respective View inside here.</p>
-</li>
-</ol>
-<p class="note"><strong>Tip:</strong> As you add new Android code, press Ctrl(or Cmd) + Shift + O 
-to import all needed packages.</p>
-
-
-<h2>ImageButton</h2>
-<p>A button with a custom image on it. 
-We'll make it display a message when pressed.</p>
-<ol>
-  <li><img src="images/android.png" align="right"/>
-	Drag the Android image on the right (or your own image) into the
-	res/drawable/ directory of your project. 
-        We'll use this for the button.</li>
-  <li>Open the layout file and, inside the LinearLayout, add the {@link android.widget.ImageButton} element:
-<pre>
-&lt;ImageButton
-    android:id="@+id/android_button"
-    android:layout_width="100dip"
-    android:layout_height="wrap_content"
-    android:src="@drawable/android" />	
-</pre>
-	<p>The source of the button
-	is from the res/drawable/ directory, where we've placed the android.png.</p>
-        <p class="note"><strong>Tip:</strong> You can also reference some of the many built-in
-        images from the Android {@link android.R.drawable} resources, 
-        like <code>ic_media_play</code>, for a "play" button image. To do so, change the source
-        attribute to <code>android:src="@android:drawable/ic_media_play"</code>.</p>
-</li>
-<li>To make the button to actually do something, add the following
-code at the end of the <code>onCreate()</code> method:
-<pre>
-final ImageButton button = (ImageButton) findViewById(R.id.android_button);
-button.setOnClickListener(new OnClickListener() {
-    public void onClick(View v) {
-        // Perform action on clicks
-        Toast.makeText(HelloFormStuff.this, "Beep Bop", Toast.LENGTH_SHORT).show();
-    }
-});
-</pre>
-<p>This captures our ImageButton from the layout, then adds an on-click listener to it.
-The {@link android.view.View.OnClickListener} must define the <code>onClick()</code> method, which
-defines the action to be made when the button is clicked. Here, we show a 
-{@link android.widget.Toast} message when clicked.</p>
-</li>
-<li>Run it.</li>
-</ol>
-
-
-<h2>EditText</h2>
-<p>A text field for user input. We'll make it display the text entered so far when the "Enter" key is pressed.</p>
-
-<ol>
-  <li>Open the layout file and, inside the LinearLayout, add the {@link android.widget.EditText} element:
-<pre>
-&lt;EditText
-    android:id="@+id/edittext"
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content"/>
-</pre>
-</li>
-<li>To do something with the text that the user enters, add the following code
-to the end of the <code>onCreate()</code> method:
-<pre>
-final EditText edittext = (EditText) findViewById(R.id.edittext);
-edittext.setOnKeyListener(new OnKeyListener() {
-    public boolean onKey(View v, int keyCode, KeyEvent event) {
-        if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
-          // Perform action on key press
-          Toast.makeText(HelloFormStuff.this, edittext.getText(), Toast.LENGTH_SHORT).show();
-          return true;
-        }
-        return false;
-    }
-});
-</pre>
-<p>This captures our EditText element from the layout, then adds an on-key listener to it.
-The {@link android.view.View.OnKeyListener} must define the <code>onKey()</code> method, which
-defines the action to be made when a key is pressed. In this case, we want to listen for the
-Enter key (when pressed down), then pop up a {@link android.widget.Toast} message with the 
-text from the EditText field. Be sure to return <var>true</var> after the event is handled, 
-so that the event doesn't bubble-up and get handled by the View (which would result in a
-carriage return in the text field).</p>
-<li>Run it.</li>
-</ol>
-
-
-<h2>CheckBox</h2>
-<p>A checkbox for selecting items. We'll make it display the the current state when pressed.</p>
-
-<ol>
-  <li>Open the layout file and, inside the LinearLayout, add the {@link android.widget.CheckBox} element:
-<pre>
-&lt;CheckBox android:id="@+id/checkbox"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:text="check it out" />
-</pre>
-</li>
-<li>To do something when the state is changed, add the following code
-to the end of the <code>onCreate()</code> method:
-<pre>
-final CheckBox checkbox = (CheckBox) findViewById(R.id.checkbox);
-checkbox.setOnClickListener(new OnClickListener() {
-    public void onClick(View v) {
-        // Perform action on clicks
-        if (checkbox.isChecked()) {
-            Toast.makeText(HelloFormStuff.this, "Selected", Toast.LENGTH_SHORT).show();
-        } else {
-            Toast.makeText(HelloFormStuff.this, "Not selected", Toast.LENGTH_SHORT).show();
-        }
-    }
-});
-</pre>
-<p>This captures our CheckBox element from the layout, then adds an on-click listener to it.
-The {@link android.view.View.OnClickListener} must define the <code>onClick()</code> method, which
-defines the action to be made when the checkbox is clicked. Here, we query the current state of the
-checkbox, then pop up a {@link android.widget.Toast} message that displays the current state. 
-Notice that the CheckBox handles its own state change between checked and un-checked, so we just
-ask which it currently is.</p>
-<li>Run it.</li>
-</ol>
-<p class="note"><strong>Tip:</strong> If you find that you need to change the state
-in another way (such as when loading a saved {@link android.preference.CheckBoxPreference}),
-use <code>setChecked(true)</code> or <code>toggle()</code>.</p>
-
-
-<h2>RadioButton</h2>
-<p>Two mutually-exclusive radio buttons&mdash;enabling one disables the other. 
-When each is pressed, we'll pop up a message.</p>
-
-<ol>
-  <li>Open the layout file and, inside the LinearLayout, add two {@link android.widget.RadioButton}s,
-inside a {@link android.widget.RadioGroup}:
-<pre>
-&lt;RadioGroup
-  android:layout_width="fill_parent"
-  android:layout_height="wrap_content"
-  android:orientation="vertical">
-  
-  &lt;RadioButton android:id="@+id/radio_red"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:text="Red" />
-  
-  &lt;RadioButton android:id="@+id/radio_blue"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:text="Blue" />
-  
-&lt;/RadioGroup>
-</pre>
-</li>
-<li>To do something when each is selected, we'll need an OnClickListener. Unlike the other 
-listeners we've created, instead of creating this one as an anonymous inner class, 
-we'll create it as a new object. This way, we can re-use the OnClickListener for 
-both RadioButtons. So, add the following code in the HelloFormStuff Activity
-(<em>outside</em> the <code>onCreate()</code> method):
-<pre>
-OnClickListener radio_listener = new OnClickListener() {
-    public void onClick(View v) {
-        // Perform action on clicks
-        RadioButton rb = (RadioButton) v;
-        Toast.makeText(HelloFormStuff.this, rb.getText(), Toast.LENGTH_SHORT).show();
-    }
-};
-</pre>
-<p>Our <code>onClick()</code> method will be handed the View clicked, so the first thing to do
-is cast it into a RadioButton. Then we pop up a 
-{@link android.widget.Toast} message that displays the selection.</p>
-<li>Now, at the bottom of the <code>onCreate()</code> method, add the following:
-<pre>
-  final RadioButton radio_red = (RadioButton) findViewById(R.id.radio_red);
-  final RadioButton radio_blue = (RadioButton) findViewById(R.id.radio_blue);
-  radio_red.setOnClickListener(radio_listener);
-  radio_blue.setOnClickListener(radio_listener);
-</pre>
-<p>This captures each of the RadioButtons from our layout and adds the newly-created 
-OnClickListener to each.</p>
-<li>Run it.</li>
-</ol>
-<p class="note"><strong>Tip:</strong> If you find that you need to change the state of a
-RadioButton in another way (such as when loading a saved {@link android.preference.CheckBoxPreference}),
-use <code>setChecked(true)</code> or <code>toggle()</code>.</p>
-
-
-<h2>ToggleButton</h2>
-<p>A button used specifically for toggling something on and off.</p>
-
-<ol>
-  <li>Open the layout file and, inside the LinearLayout, add the {@link android.widget.ToggleButton} element:
-<pre>
-&lt;ToggleButton android:id="@+id/togglebutton"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content" />
-</pre>
-</li>
-<li>To do something when the state is changed, add the following code
-to the end of the <code>onCreate()</code> method:
-<pre>
-final ToggleButton togglebutton = (ToggleButton) findViewById(R.id.togglebutton);
-togglebutton.setOnClickListener(new OnClickListener() {
-    public void onClick(View v) {
-        // Perform action on clicks
-        if (togglebutton.isChecked()) {
-            Toast.makeText(HelloFormStuff.this, "ON", Toast.LENGTH_SHORT).show();
-        } else {
-            Toast.makeText(HelloFormStuff.this, "OFF", Toast.LENGTH_SHORT).show();
-        }
-    }
-});
-</pre>
-<p>This captures our ToggleButton element from the layout, then adds an on-click listener to it.
-The {@link android.view.View.OnClickListener} must define the <code>onClick()</code> method, which
-defines the action to be made when the button is clicked. Here, we query the current state of the
-ToggleButton, then pop up a {@link android.widget.Toast} message that displays the current state. 
-Notice that the ToggleButton handles its own state change between checked and un-checked, so we just
-ask which it is.</p>
-<li>Run it.</li>
-</ol>
-
-<p class="note"><strong>Tip:</strong> By default, the text on the button is "ON" and "OFF", but 
-you can change each of these with <code>setTextOn(<var>CharSequence</var>)</code> and 
-<code>setTextOff(<var>CharSequence</var>)</code>. And, if you find that you need to change the state
-in another way (such as when loading a saved {@link android.preference.CheckBoxPreference}),
-use <code>setChecked(true)</code> or <code>toggle()</code>. </p>
-
-
-<p>If you've added all the form items above, your application should look something like this:</p>
-<img src="images/hello-formstuff.png" width="150px" />
-
-<h3>References</h3>
-<ul>
-	<li>{@link android.widget.ImageButton}</li>
-	<li>{@link android.widget.EditText}</li>
-	<li>{@link android.widget.CheckBox}</li>
-	<li>{@link android.widget.RadioButton}</li>
-	<li>{@link android.widget.ToggleButton}</li>
-</ul>
-
diff --git a/docs/html/guide/tutorials/views/hello-gallery.jd b/docs/html/guide/tutorials/views/hello-gallery.jd
deleted file mode 100644
index 084f912..0000000
--- a/docs/html/guide/tutorials/views/hello-gallery.jd
+++ /dev/null
@@ -1,135 +0,0 @@
-page.title=Hello, Gallery
-parent.title=Hello, Views
-parent.link=index.html
-@jd:body
-
-<p>A {@link android.widget.Gallery} is a View commonly used to display items in a horizontally scrolling list
-that locks the current selection at the center. When one is selected, we'll show a message.</p>
-
-
-<ol>
-  <li>Start a new project/Activity called HelloGallery.</li>
-  <li>Add some images to your res/drawable/ directory.</li>
-  <li>Open the layout file and make it like so:
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;Gallery xmlns:android="http://schemas.android.com/apk/res/android" 
-    android:id="@+id/gallery"
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-/>
-</pre>
-</li>
-
-
-<li>Open the HelloGallery.java file. Insert the following for the <code>onCreate()</code> method:
-<pre>
-&#64;Override
-public void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.main);
-
-    Gallery g = (Gallery) findViewById(R.id.gallery);
-    g.setAdapter(new ImageAdapter(this));
-
-    g.setOnItemClickListener(new OnItemClickListener() {
-        public void onItemClick(AdapterView parent, View v, int position, long id) {
-            Toast.makeText(HelloGallery.this, "" + position, Toast.LENGTH_SHORT).show();
-        }
-    });
-}
-</pre>
-	<p>We start as usual: set the layout and capture the View we want (our Gallery). 
-We then set an Adapter, called ImageAdapter for the Gallery&mdash;this is a new class that
-we'll create next. Then we create an item click listener for the Gallery. This is like a normal
-on-click listener (which you might be familiar with for buttons), but it listens to each item
-that we've added to the Gallery. The <code>onItemClick()</code> callback method 
-receives the AdapterView where the click occurred, the specific View that received the click, the 
-position of the View clicked (zero-based), and the row id of the item clicked (if applicable). All
-that we care about is the position, so that we can pop up a {@link android.widget.Toast} message that 
-tells us the index position of the item clicked. We do this with <code>Toast.makeText().show()</code>.
-</p>
-</li>
-
-<li>After the <code>onCreate()</code> method, add the <code>ImageAdapter</code> class:
-<pre>
-public class ImageAdapter extends BaseAdapter {
-    int mGalleryItemBackground;
-    private Context mContext;
-
-    private Integer[] mImageIds = {
-            R.drawable.sample_1,
-            R.drawable.sample_2,
-            R.drawable.sample_3,
-            R.drawable.sample_4,
-            R.drawable.sample_5,
-            R.drawable.sample_6,
-            R.drawable.sample_7
-    };
-
-    public ImageAdapter(Context c) {
-        mContext = c;
-        TypedArray a = obtainStyledAttributes(android.R.styleable.Theme);
-        mGalleryItemBackground = a.getResourceId(
-                android.R.styleable.Theme_galleryItemBackground, 0);
-        a.recycle();
-    }
-
-    public int getCount() {
-        return mImageIds.length;
-    }
-
-    public Object getItem(int position) {
-        return position;
-    }
-
-    public long getItemId(int position) {
-        return position;
-    }
-
-    public View getView(int position, View convertView, ViewGroup parent) {
-        ImageView i = new ImageView(mContext);
-
-        i.setImageResource(mImageIds[position]);
-        i.setLayoutParams(new Gallery.LayoutParams(150, 100));
-        i.setScaleType(ImageView.ScaleType.FIT_XY);
-        i.setBackgroundResource(mGalleryItemBackground);
-
-        return i;
-    }
-}
-</pre>
-<p>First, there are a few member variables, including an array of IDs that reference
-the images we placed in our drawable resources directory.</p>
-<p>Next is the constructor, where we define the member Context. The rest of the constructor
-sets up a reference for our Gallery them, which adds the nice framing for each Gallery item.
-Once we have our <code>mGalleryItemBackground</code>, it's important to recycle the 
-StyledAttribute for later re-use.</p>
-<p>The next three methods are required for basic member queries. 
-But then we have the <code>getView()</code> method, which is called
-for each item read by our ImageAdapter, when the Gallery is being built. Here, we 
-use our member Context to create a new {@link android.widget.ImageView}. We then define
-the image resource with the current position of the Gallery items (corresponding to our
-array of drawables), set the dimensions for the ImageView, 
-set the image scaling to fit the ImageView dimensions, then finally set the 
-background theme for the ImageView.</p>
-
-<p>See {@link android.widget.ImageView.ScaleType}
-for other image scaling options, in case you want to avoid stretching images that don't 
-exactly match the ImageView dimensions.</p>
-
-<li>Now run it.</li>
-</ol>
-<p>You should see something like this:</p>
-<img src="images/hello-gallery.png" width="150px" />
-
-
-<h3>References</h3>
-<ul>
-	<li>{@link android.widget.BaseAdapter}</li>
-	<li>{@link android.widget.Gallery}</li>
-	<li>{@link android.widget.ImageView}</li>
-	<li>{@link android.widget.Toast}</li>
-</ul>
-
-
diff --git a/docs/html/guide/tutorials/views/hello-gridview.jd b/docs/html/guide/tutorials/views/hello-gridview.jd
deleted file mode 100644
index 186c4e7..0000000
--- a/docs/html/guide/tutorials/views/hello-gridview.jd
+++ /dev/null
@@ -1,129 +0,0 @@
-page.title=Hello, GridView
-parent.title=Hello, Views
-parent.link=index.html
-@jd:body
-
-<p>A {@link android.widget.GridView} displays items in a two-dimensional, scrolling grid. The items
-are acquired from a {@link android.widget.ListAdapter}.</p>
-
-
-<ol>
-  <li>Start a new project/Activity called HelloGridView.</li>
-  <li>Find some photos you'd like to use, or copy some from the SDK samples res/drawable/ 
-    folder of your project.</li>
-  <li>Open the layout and make it like so:
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;GridView xmlns:android="http://schemas.android.com/apk/res/android" 
-    android:id="@+id/gridview"
-    android:layout_width="fill_parent" 
-    android:layout_height="fill_parent"
-    android:numColumns="auto_fit"
-    android:verticalSpacing="10dp"
-    android:horizontalSpacing="10dp"
-    android:columnWidth="90dp"
-    android:stretchMode="columnWidth"
-    android:gravity="center"
-/>
-</pre>
-</li>
-  <li>Open the HelloGridView Java file. Insert the following for the <code>onCreate()</code> method:
-<pre>
-public void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.main);
-
-    GridView gridview = (GridView) findViewById(R.id.gridview);
-    gridview.setAdapter(new ImageAdapter(this));
-}
-</pre>
-    <p>Here, we get a handle on our GridView, from the layout, and give it an Adapter.
-    We're actually going to create our own Adapter called ImageAdapter.</p>
-</li>
-<li>Create a new class (nested or otherwise), called ImageAdapter, which extends {@link android.widget.BaseAdapter}:
-<pre>
-public class ImageAdapter extends BaseAdapter {
-    private Context mContext;
-
-    public ImageAdapter(Context c) {
-        mContext = c;
-    }
-
-    public int getCount() {
-        return mThumbIds.length;
-    }
-
-    public Object getItem(int position) {
-        return null;
-    }
-
-    public long getItemId(int position) {
-        return 0;
-    }
-
-    // create a new ImageView for each item referenced by the Adapter
-    public View getView(int position, View convertView, ViewGroup parent) {
-        ImageView imageView;
-        if (convertView == null) {  // if it's not recycled, initialize some attributes
-            imageView = new ImageView(mContext);
-            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
-            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
-            imageView.setPadding(8, 8, 8, 8);
-        } else {
-            imageView = (ImageView) convertView;
-        }
-
-        imageView.setImageResource(mThumbIds[position]);
-        return imageView;
-    }
-
-    // references to our images
-    private Integer[] mThumbIds = {
-            R.drawable.sample_2, R.drawable.sample_3,
-            R.drawable.sample_4, R.drawable.sample_5,
-            R.drawable.sample_6, R.drawable.sample_7,
-            R.drawable.sample_0, R.drawable.sample_1,
-            R.drawable.sample_2, R.drawable.sample_3,
-            R.drawable.sample_4, R.drawable.sample_5,
-            R.drawable.sample_6, R.drawable.sample_7,
-            R.drawable.sample_0, R.drawable.sample_1,
-            R.drawable.sample_2, R.drawable.sample_3,
-            R.drawable.sample_4, R.drawable.sample_5,
-            R.drawable.sample_6, R.drawable.sample_7
-    };
-}
-</pre>
-    <p>First we take care of some required methods inherited from BaseAdapter.
-    The constructor and <code>getCount()</code> are self-explanatory. Normally, <code>getItem()</code>
-    should return the actual object at the specified position in our Adapter, but for this Hello World,
-    we're not going to bother. Likewise, <code>getItemId()</code> should return the row id of
-    the item, but right now we don't care.</p>
-    <p>However, <code>getView()</code> is the method we care about. This one creates a new View for each image that we
-    put in our ImageAdapter. So we're going to create an ImageView each time. When this is called, we're
-    going to receive a View, which is likely a recycled View object (at least after the first call), so we
-    check for this&mdash;if it's null, we initialize the ImageView and setup all the properties we want.
-    The <code>LayoutParams()</code> initialization sets the height and width of the View&mdash;this ensures
-    that no matter the drawable size, each image is resized and cropped to fit in the ImageView (if necessary).
-    With <code>setScaleType()</code>, we say that images should be cropped toward the center (if necessary).
-    And finally, we set the padding within the ImageView. (Note that, if the images have various aspect-ratios, 
-    as they do in this demo, then less padding will cause for more cropping of the image, if it does not match
-    the dimensions given to the ImageView.) At the end of <code>getView()</code> we set the image resource and 
-    return the ImageView.</p>
-    <p>All that's left is our array or drawable resources at the bottom.</p>
-</li>
-<li>Run it.</li>
-</ol>
-<p>Your grid layout should look something like this:</p>
-<img src="images/hello-gridview.png" width="150px" />
-
-<p>Try experimenting with the behaviors of the GridView and ImageView by adjusting their properties. For example,
-  instead of setting the ImageView LayoutParams, you can try using
-  {@link android.widget.ImageView#setAdjustViewBounds(boolean)}. </p>
-
-<h3>References</h3>
-<ul>
-	<li>{@link android.widget.GridView}</li>
-	<li>{@link android.widget.ImageView}</li>
-	<li>{@link android.widget.BaseAdapter}</li>
-</ul>
-
diff --git a/docs/html/guide/tutorials/views/hello-linearlayout.jd b/docs/html/guide/tutorials/views/hello-linearlayout.jd
deleted file mode 100644
index 0e8947c..0000000
--- a/docs/html/guide/tutorials/views/hello-linearlayout.jd
+++ /dev/null
@@ -1,130 +0,0 @@
-page.title=Hello, LinearLayout
-parent.title=Hello, Views
-parent.link=index.html
-@jd:body
-
-<p>A {@link android.widget.LinearLayout} is a GroupView that will lay child View elements
-vertically or horizontally.</p>
-
-
-<ol>
-  <li>Start a new project/Activity called HelloLinearLayout.</li>
-  <li>Open the layout file.
-    Make it like so:
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
-
-    &lt;LinearLayout
-	android:orientation="horizontal"
-	android:layout_width="fill_parent"
-	android:layout_height="fill_parent"
-	android:layout_weight="1">
-	
-	&lt;TextView
-	    android:text="red"
-	    android:gravity="center_horizontal"
-	    android:background="#aa0000"
-	    android:layout_width="wrap_content"
-	    android:layout_height="fill_parent"
-	    android:layout_weight="1"/>
-	
-	&lt;TextView
-	    android:text="green"
-	    android:gravity="center_horizontal"
-	    android:background="#00aa00"
-	    android:layout_width="wrap_content"
-	    android:layout_height="fill_parent"
-	    android:layout_weight="1"/>
-	
-	&lt;TextView
-	    android:text="blue"
-	    android:gravity="center_horizontal"
-	    android:background="#0000aa"
-	    android:layout_width="wrap_content"
-	    android:layout_height="fill_parent"
-	    android:layout_weight="1"/>
-	
-	&lt;TextView
-	    android:text="yellow"
-	    android:gravity="center_horizontal"
-	    android:background="#aaaa00"
-	    android:layout_width="wrap_content"
-	    android:layout_height="fill_parent"
-	    android:layout_weight="1"/>
-		
-    &lt;/LinearLayout>
-	
-    &lt;LinearLayout
-	android:orientation="vertical"
-	android:layout_width="fill_parent"
-	android:layout_height="fill_parent"
-	android:layout_weight="1">
-	
-	&lt;TextView
-	    android:text="row one"
-	    android:textSize="15pt"
-	    android:layout_width="fill_parent"
-	    android:layout_height="wrap_content"
-	    android:layout_weight="1"/>
-	
-	&lt;TextView
-	    android:text="row two"
-	    android:textSize="15pt"
-	    android:layout_width="fill_parent"
-	    android:layout_height="wrap_content"
-	    android:layout_weight="1"/>
-	
-	&lt;TextView
-	    android:text="row three"
-	    android:textSize="15pt"
-	    android:layout_width="fill_parent"
-	    android:layout_height="wrap_content"
-	    android:layout_weight="1"/>
-	
-	&lt;TextView
-	    android:text="row four"
-	    android:textSize="15pt"
-	    android:layout_width="fill_parent"
-	    android:layout_height="wrap_content"
-	    android:layout_weight="1"/>
-        
-    &lt;/LinearLayout>
-        
-&lt;/LinearLayout>
-</pre>
-        <p>Carefully inspect the XML. You'll notice how this layout works a lot like
-        an HTML layout. There is one parent LinearLayout that is defined to lay
-        its child elements vertically. The first child is another LinearLayout that uses a horizontal layout
-        and the second uses a vertical layout. Each LinearLayout contains several {@link android.widget.TextView}
-        elements.</p>
-</li>
-<li>Now open the HelloLinearLayout Activity and be sure it loads this layout in the <code>onCreate()</code> method:</p>
-<pre>
-public void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.main);
-}
-</pre>
-<p><code>R.layout.main</code> refers to the <code>main.xml</code> layout file.</p>
-</li>
-<li>Run it.</li>
-</ol>
-<p>You should see the following:</p>
-<img src="images/hello-linearlayout.png" width="150px" />
-
-<p>Notice how the various XML attributes define the View's behavior.
-Pay attention to the effect of the <code>layout_weight</code>. Try 
-	experimenting with different values to see how the screen real estate is 
-	distributed based on the weight of each element.</p>
-
-<h3>References</h3>
-<ul>
-	<li>{@link android.widget.LinearLayout}</li>
-<li>{@link android.widget.TextView}</li>
-</ul>
-
-
diff --git a/docs/html/guide/tutorials/views/hello-listview.jd b/docs/html/guide/tutorials/views/hello-listview.jd
deleted file mode 100644
index d90005b..0000000
--- a/docs/html/guide/tutorials/views/hello-listview.jd
+++ /dev/null
@@ -1,90 +0,0 @@
-page.title=Hello, ListView
-parent.title=Hello, Views
-parent.link=index.html
-@jd:body
-
-<p>A {@link android.widget.ListView} is a View that shows items in a vertically scrolling list. The items are
- acquired from a {@link android.widget.ListAdapter}.</p>
-
-
-<ol>
-  <li>Start a new project/ListActivity called HelloListView.</li>
-  <li>Open the HelloListView Java file. Make the class extend ListActivity (instead of Activity).
-	<pre>public class HelloListView extends ListActivity {</pre>
-  </li>
-  <li>Insert the following for the <code>onCreate()</code> method:
-<pre>
-&#64;Override
-public void onCreate(Bundle savedInstanceState) {
-  super.onCreate(savedInstanceState);
-  
-  setListAdapter(new ArrayAdapter&lt;String>(this,
-          android.R.layout.simple_list_item_1, COUNTRIES));
-  getListView().setTextFilterEnabled(true);
-}
-</pre>
-	<p>Notice that we don't need to load a layout (at least, not in this case, because we're using
-	the whole screen for our list). Instead, we just call <code>setListAdapter()</code> (which automatically
-	adds a ListView to the ListActivity), and provide it with an ArrayAdapter that binds a 
-	<code>simple_list_item_1</code> layout item to each entry in the <code>COUNTRIES</code> 
-	array (added next). The next line of code adds a text filter to the ListView, so that when the user
-	begins typing, the list will filter the entire view to display only the items that match the entry.</p>
-  </li>
-  <li>Following the <code>onCreate()</code> method, add the String array:
-<pre>
-  static final String[] COUNTRIES = new String[] {
-    "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
-    "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
-    "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
-    "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
-    "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
-    "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory",
-    "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi",
-    "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",
-    "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
-    "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",
-    "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic",
-    "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic",
-    "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",
-    "Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland",
-    "Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia",
-    "French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar",
-    "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau",
-    "Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary",
-    "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",
-    "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos",
-    "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
-    "Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands",
-    "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
-    "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia",
-    "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand",
-    "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas",
-    "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru",
-    "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar",
-    "Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena",
-    "Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon",
-    "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal",
-    "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",
-    "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea",
-    "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden",
-    "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas",
-    "The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey",
-    "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda",
-    "Ukraine", "United Arab Emirates", "United Kingdom",
-    "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan",
-    "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara",
-    "Yemen", "Yugoslavia", "Zambia", "Zimbabwe"
-  };
-</pre>
-</li>
-<li> Run it.</li>
-</ol>
-<p>You can scroll the list, or type to filter it. You should see something like this:</p>
-<img src="images/hello-listview.png" width="150px" />
-
-<h3>References</h3>
-<ul>
-	<li>{@link android.widget.ListView}</li>
-	<li>{@link android.widget.ListAdapter}</li>
-</ul>
-
diff --git a/docs/html/guide/tutorials/views/hello-mapview.jd b/docs/html/guide/tutorials/views/hello-mapview.jd
deleted file mode 100644
index 5217b6b..0000000
--- a/docs/html/guide/tutorials/views/hello-mapview.jd
+++ /dev/null
@@ -1,245 +0,0 @@
-page.title=Hello, MapView 
-parent.title=Hello, Views
-parent.link=index.html
-@jd:body
-
-<div class="special">
-<p>This tutorial requires that you have the Google Maps external library
-installed in your SDK environment. By default the Android SDK includes the
-Google APIs add-on, which in turn includes the Maps external library. If you
-don't have the Google APIs SDK add-on, you can download it from this
-location:</p>
-
-<p style="margin-left:2em;"><a
-href="http://code.google.com/android/add-ons/google-apis">http://code.google.com/android/add-ons/google-apis</a></p>
-
-<p>The Google APIs add-on requires Android 1.5 SDK or later release. After
-installing the add-on in your SDK, set your project properties to use a <strong>Google
-APIs</strong> build target. See the instructions for setting a build
-target in <a href="{@docRoot}guide/developing/eclipse-adt.html">Developing in
-Eclipse with ADT</a> or <a
-href="{@docRoot}guide/developing/other-ide.html">Developing in Other IDEs</a>,
-as appropriate for your environment. </p>
-
-<p>You will also need to use the android tool to set up an AVD that uses the
-Google APIs deployment target. See <a
-href="{@docRoot}guide/developing/tools/avd.html">Android Virtual Devices</a> for
-more information. Once you have set up your environment, you will be able to
-build and run the project described in this tutorial</a></p>
-
-</div>
-
-<p>A MapView allows you to create your own map-viewing Activity. 
-First, we'll create a simple Activity that can view and navigate a map. Then we will add some overlay items.</p>
-
-<ol>
-  <li>Start a new project/Activity called HelloMapView.
-
-   <li>Because we're using the Google Maps library, 
-   which is not a part of the standard Android library, we need to 
-   declare it in the Android Manifest. Open the AndroidManifest.xml 
-   file and add the following as a child of the <code>&lt;application></code> element:
-
-    <pre>&lt;uses-library android:name="com.google.android.maps" /></pre>
-      </li>
-   <li>We also need access to the internet in order to retrieve the Google Maps tiles,
-    so the application must request the {@link android.Manifest.permission#INTERNET INTERNET} permissions.
-    In the manifest file, add the following as a child of the <code>&lt;manifest></code> element:
-    <pre>&lt;uses-permission android:name="android.permission.INTERNET" /></pre>
-   </li>
-   <li>Now open the main layout file for your project. Define a layout with a com.google.android.maps.MapView 
-    inside a android.widget.RelativeLayout:
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/mainlayout"
-    android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent" >
-
-    &lt;com.google.android.maps.MapView
-        android:id="@+id/mapview"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
-        android:clickable="true"
-        android:apiKey="<em>Your Maps API Key</em>"
-    />
-
-&lt;/RelativeLayout>
-</pre>
-      <p>The <code>clickable</code> attribute defines whether you want to allow user-interaction with the map.
-      In this case, we set it "true" so that the user can navigate.</p>
-
-      <p>The <code>apiKey</code> attribute holds the Google Maps API Key that proves your application and signer
-      certificate has been registered with the Google Maps service. Because MapView uses Google Maps data, this key is required
-      in order to receive the map data, even while you are developing. Registration is free and it only takes a couple
-      minutes to register your certificate and receive a Maps API Key. For instructions on getting a key, read
-      <a href="http://code.google.com/android/add-ons/google-apis/mapkey.html">Obtaining a Maps API Key</a>.
-      (For the purpose of this tutorial, you should register with the fingerprint of the SDK debug certificate.)
-      Once you've acquired the Maps API Key, insert it for the <code>apiKey</code> value.</p></li>
-
-   <li>Now open the HelloMapView.java file. For this Activity, we're going to extend the special sub-class of 
-      Activity called MapActivity, so change the class declaration to extend 
-      MapActivity, instead of Activity:</p>
-
-      <pre>public class HelloMapView extends MapActivity {</pre>
-
-   <li>The <code>isRouteDisplayed()</code> method is required, so add it inside the class:
-<pre>
-&#64;Override
-protected boolean isRouteDisplayed() {
-    return false;
-}
-</pre>
-<p>You can actually run this now, but all it does is allow you to pan around the map.</p>
-
-   <li>Now go back to the HelloMapView class. We'll now retrieve the ZoomControls object from 
-   the MapView and add it to our new layout element. First, at the top of the HelloMapView, 
-   instantiate handles for the MapView and LinearLayout, plus a ZoomControl object:
-<pre>
-LinearLayout linearLayout;
-MapView mapView;
-</pre>
-
-   <li>Then initialize each of these in <code>onCreate()</code>. We'll capture the LinearLayout and 
-   MapView through their layout resources. Then get the ZoomControls from the MapView::
-<pre>
-mapView = (MapView) findViewById(R.id.mapview);
-mapView.setBuiltInZoomControls(true);
-</pre>
-
-      <p>By using the built-in zoom control provided by MapView, we don't have to do any of the work
-      required to actually perform the zoom operations. The controls will appear whenever the user
-      touches the map, then disappear after a few moments of inactivity.</p></li>
-
-   <li>Run it.</li>
-</ol>
-
-<hr/>
-
-<p>So, we now have full interaction controls. All well and good, but what we really want our map 
-for is custom markers and layovers. Let's add some Overlay 
-objects to our map. To do this, we're going to 
-implement the ItemizedOverlay
-class, which can manage a whole set of Overlay items for us.</p>
-
-<ol>   
-  <li>Create a new Java class named HelloItemizedOverlay that implements ItemizedOverlay.
-
-      <p>When using Eclipse, right-click the package name in the Eclipse Package Explorer, and select New > Class. Fill-in 
-      the Name field as <em>HelloItemizedOverlay</em>. For the Superclass, enter 
-      <em>com.google.android.maps.ItemizedOverlay</em>. Click the checkbox for <em>Constructors from 
-      superclass</em>. Click Finish.</p></li>
-
-  <li> First thing, we need an OverlayItem ArrayList, in which we'll put each of the OverlayItem 
-   objects we want on our map. Add this at the top of the HelloItemizedOverlay class:
-
-      <pre>private ArrayList&lt;OverlayItem> mOverlays = new ArrayList&lt;OverlayItem>();</pre></li>
-
-   <li>All the constructor does is define the default marker to be used on each of the OverlayItems. 
-   In order for the Drawable to actually get drawn, it must have its bounds defined. And we want the 
-   center-point at the bottom of the image to be the point at which it's attached to the map 
-   coordinates. We handle all this with the boundCenterBottom() method. Wrap this around our 
-   defaultMarker, so the super constructor call looks like this:
-
-      <pre>super(boundCenterBottom(defaultMarker));</pre></li>
-
-   <li>In order to add new OverlayItems to our ArrayList, we need a new public method. We'll handle 
-   this with the following method:
-
-<pre>
-public void addOverlay(OverlayItem overlay) {
-    mOverlays.add(overlay);
-    populate();
-}</pre>
-
-      <p>Each time we add a new OverlayItem, we must call <code>populate()</code>, which will read each of out 
-      OverlayItems and prepare them to be drawn.</p></li>
-
-   <li>In order for the <code>populate()</code> method to read each OverlayItem, it will make a request to 
-   <code>createItem(int)</code>. We must define this method to properly read from our ArrayList. Replace the 
-   existing contents of the createItem method with a <code>get()</code> call to our ArrayList:
-
-<pre>
-&#64;Override
-protected OverlayItem createItem(int i) {
-  return mOverlays.get(i);
-}
-</pre></li>
-
-   <li>We're also required to override the <code>size()</code> method. Replace the existing contents of the 
-   method with a size request to our ArrayList:
-
-      <pre>return mOverlays.size();</pre></li>
-</ol>
-
-
-<p>That's it for the HelloItemizedOverlay class. We're now ready to use it.</p>
-
-<hr/>
-<p>Go back to the HelloMapView 
-class. We'll start by creating one OverlayItem, adding to an instance of our HelloItemizedOverlay, 
-and then adding this to the MapView.</p>
-
-<img src="images/androidmarker.png" align="right" />
-<p>First, we need the image that we'll use for our map overlay. Here, we'll use the Android on the 
-right as our marker. Drag this image (or your own) to the res/drawable/ directory of your project workspace.</p>
-
-<p>Now we're ready to work in the HelloMapView:</p>
-
-<ol>
-   <li>First we need some more types. Add the following at the top of the HelloMapView class:
-
-<pre>
-List&lt;Overlay> mapOverlays;
-Drawable drawable;
-HelloItemizedOverlay itemizedOverlay;</pre></li>
-
-   <li>Now pick up where we left off in the <code>onCreate()</code> method. Instantiate the 
-   new fields:
-
-<pre>
-mapOverlays = mapView.getOverlays();
-drawable = this.getResources().getDrawable(R.drawable.androidmarker);
-itemizedoverlay = new HelloItemizedOverlay(drawable);</pre>
-
-      <p>All overlay elements on a map are held by the MapView, so when we want to add some, we must 
-      first retrieve the List with <code>getOverlays()</code> methods. We instantiate the Drawable, which will 
-      be used as our map marker, by using our Context resources to get the Drawable we placed in 
-      the res/drawable/ directory (androidmarker.png). Our HelloItemizedOverlay takes the Drawable in order to set the 
-      default marker.</p></li>
-
-   <li>Now let's make our first OverlayItem by creating a GeoPoint
-    that defines our map coordinates, then pass it to a new OverlayItem:
-
-<pre>
-GeoPoint point = new GeoPoint(19240000,-99120000);
-OverlayItem overlayitem = new OverlayItem(point, "", "");</pre>
-
-      <p>GeoPoint coordinates are based in microdegrees (degrees * 1e6). The OverlayItem takes this 
-      GeoPoint and two strings. Here, we won't concern ourselves with the strings, which can display 
-      text when we click our marker, because we haven't yet written the click handler for the OverlayItem.</p></li>
-
-   <li>All that's left is for us to add this OverlayItem to our collection in the HelloItemizedOverlay, 
-   and add this to the List of Overlay objects retrieved from the MapView:
-
-<pre>
-itemizedoverlay.addOverlay(overlayitem);
-mapOverlays.add(itemizedoverlay);</pre></li>
-
-   <li>Run it!</li>
-</ol>
-
-<p>We've sent our droid to Mexico City. Hola, Mundo!</p>
-<p>You should see the following:</p>
-<img src="images/hello-mapview.png" width="150px" />
-
-<p>Because we created our ItemizedOverlay class with an ArrayList, we can continue adding new
-OverlayItems. Try adding another one. Before the <code>addOverlay()</code> method is called, add these lines:</p>
-<pre>
-GeoPoint point2 = new GeoPoint(35410000, 139460000);
-OverlayItem overlayitem2 = new OverlayItem(point2, "", "");
-</pre>
-<p>Run it again... We've sent a new droid to Tokyo. Sekai, konichiwa!</p>
-
diff --git a/docs/html/guide/tutorials/views/hello-relativelayout.jd b/docs/html/guide/tutorials/views/hello-relativelayout.jd
deleted file mode 100644
index 1b91537..0000000
--- a/docs/html/guide/tutorials/views/hello-relativelayout.jd
+++ /dev/null
@@ -1,75 +0,0 @@
-page.title=Hello, RelativeLayout
-parent.title=Hello, Views
-parent.link=index.html
-@jd:body
-
-<p>A {@link android.widget.RelativeLayout} is a ViewGroup that allows you to layout child elements
-in positions relative to the parent or siblings elements.</p>
-
-<ol>
-  <li>Start a new project/Activity called HelloRelativeLayout.</li>
-  <li>Open the layout file. Make it like so:
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
-
-    &lt;TextView
-        android:id="@+id/label"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:text="Type here:"/>
-
-    &lt;EditText
-        android:id="@+id/entry"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:background="@android:drawable/editbox_background"
-        android:layout_below="@id/label"/>
-
-    &lt;Button
-        android:id="@+id/ok"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_below="@id/entry"
-        android:layout_alignParentRight="true"
-        android:layout_marginLeft="10dip"
-        android:text="OK" />
-
-    &lt;Button
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_toLeftOf="@id/ok"
-        android:layout_alignTop="@id/ok"
-        android:text="Cancel" />
-
-&lt;/RelativeLayout>
-</pre>
-<p>Pay attention to each of the additional <code>layout_*</code> attributes (besides the 
-usual width and height, which are required for all elements). When using relative layout,
-we use attributes like <code>layout_below</code> and <code>layout_toLeftOf</code> to describe
-how we'd like to position each View. Naturally, these are different relative positions, and the
-value of the attribute is the id of the element we want the position relative to.</p>
-</li>
-<li>Make sure your Activity loads this layout in the <code>onCreate()</code> method:</p>
-<pre>
-public void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.main);
-}
-</pre>
-<p><code>R.layout.main</code> refers to the <code>main.xml</code> layout file.</p>
-</li>
-<li>Run it.</li>
-</ol>
-<p>You should see the following:</p>
-<img src="images/hello-relativelayout.png" width="150px" />
-
-<h3>Resources</h3>
-<ul>
-  <li>{@link android.widget.RelativeLayout}</li>
-  <li>{@link android.widget.TextView}</li>
-  <li>{@link android.widget.EditText}</li>
-  <li>{@link android.widget.Button}</li>
-</ul>
diff --git a/docs/html/guide/tutorials/views/hello-spinner.jd b/docs/html/guide/tutorials/views/hello-spinner.jd
deleted file mode 100644
index 3a04214..0000000
--- a/docs/html/guide/tutorials/views/hello-spinner.jd
+++ /dev/null
@@ -1,106 +0,0 @@
-page.title=Hello, Spinner
-parent.title=Hello, Views
-parent.link=index.html
-@jd:body
-
-<p>A {@link android.widget.Spinner} is a widget that allows the user to select an item from a group.
-It is similar to a dropdown list and will allow scrolling when the 
-list exceeds the available vertical space on the screen.</p>
-
-
-<ol>
-  <li>Start a new project/Activity called HelloSpinner.</li>
-  <li>Open the layout file.
-    Make it like so:
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:padding="10dip"
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content">
-
-    &lt;TextView
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="10dip"
-        android:text="Please select a planet:"
-    />
-
-    &lt;Spinner 
-        android:id="@+id/spinner"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:drawSelectorOnTop="true"
-        android:prompt="@string/planet_prompt"
-    />
-
-&lt;/LinearLayout>
-</pre>
-	<p>Notice that the Spinner's <code>android:prompt</code> is a string resource. In
-        this case, Android does not allow it to be a string, it must be a reference to a resource. 
-        So...</p>
-</li>
-
-<li>Open the strings.xml file in res/values/ and add the following <code>&lt;string></code> 
-element inside the <code>&lt;resources></code> element:
-<pre>
-&lt;string name="planet_prompt">Choose a planet&lt;/string>
-</pre>
-</li>
-
-<li>Create a new XML file in res/values/ called arrays.xml. Insert the following:
-<pre>
-&lt;resources>
-
-    &lt;string-array name="planets">
-        &lt;item>Mercury&lt;/item>
-        &lt;item>Venus&lt;/item>
-        &lt;item>Earth&lt;/item>
-        &lt;item>Mars&lt;/item>
-        &lt;item>Jupiter&lt;/item>
-        &lt;item>Saturn&lt;/item>
-        &lt;item>Uranus&lt;/item>
-        &lt;item>Neptune&lt;/item>
-    &lt;/string-array>
-    
-&lt;/resources>
-</pre>
-	<p>This is the list of items (planets) that the user can select from in the Spinner widget.</p>
-</li>
-
-<li>Now open the HelloSpinner.java file. Insert the following code into the HelloSpinner class:
-<pre>
-&#64;Override
-public void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.main);
-
-    Spinner s = (Spinner) findViewById(R.id.spinner);
-    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
-            this, R.array.planets, android.R.layout.simple_spinner_item);
-    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
-    s.setAdapter(adapter);
-}
-</pre>
-	<p>That's it. We start by creating a Spinner from our layout. We then create an {@link android.widget.ArrayAdapter} 
-	that binds each element of our string array to a layout view&mdash;we pass <code>createFromResource</code> our Context, 
-	the array of selectable items and the type of layout we'd like each one bound to. We then call
-	<code>setDropDownViewResource()</code> to define the type of layout in which to present the 
-	entire collection. Finally, we set this Adapter to associate with our Spinner, 
-        so the string items have a place to go.</p>
-</li>
-
-<li>Now run it.</li>
-</ol>
-<p>It should look like this:</p>
-<img src="images/hello-spinner.png" width="150px" />
-
-
-<h3>Resources</h3>
-<ul>
-	<li>{@link android.R.layout}</li>
-	<li>{@link android.widget.ArrayAdapter}</li>
-	<li>{@link android.widget.Spinner}</li>
-</ul>
-
diff --git a/docs/html/guide/tutorials/views/hello-tablelayout.jd b/docs/html/guide/tutorials/views/hello-tablelayout.jd
deleted file mode 100644
index 83d6f5d..0000000
--- a/docs/html/guide/tutorials/views/hello-tablelayout.jd
+++ /dev/null
@@ -1,118 +0,0 @@
-page.title=Hello, TableLayout
-parent.title=Hello, Views
-parent.link=index.html
-@jd:body
-
-<p>A {@link android.widget.TableLayout} is a ViewGroup that 
-will lay child View elements into rows and columns.</p>
-
-
-<ol>
-  <li>Start a new project/Activity called HelloTableLayout.</li>
-  <li>Open the layout file.
-    Make it like so:
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
-    android:stretchColumns="1">
-
-    &lt;TableRow>
-        &lt;TextView
-            android:layout_column="1"
-            android:text="Open..."
-            android:padding="3dip" />
-        &lt;TextView
-            android:text="Ctrl-O"
-            android:gravity="right"
-            android:padding="3dip" />
-    &lt;/TableRow>
-
-    &lt;TableRow>
-        &lt;TextView
-            android:layout_column="1"
-            android:text="Save..."
-            android:padding="3dip" />
-        &lt;TextView
-            android:text="Ctrl-S"
-            android:gravity="right"
-            android:padding="3dip" />
-    &lt;/TableRow>
-
-    &lt;TableRow>
-        &lt;TextView
-            android:layout_column="1"
-            android:text="Save As..."
-            android:padding="3dip" />
-        &lt;TextView
-            android:text="Ctrl-Shift-S"
-            android:gravity="right"
-            android:padding="3dip" />
-    &lt;/TableRow>
-
-    &lt;View
-        android:layout_height="2dip"
-        android:background="#FF909090" />
-
-    &lt;TableRow>
-        &lt;TextView
-            android:text="X"
-            android:padding="3dip" />
-        &lt;TextView
-            android:text="Import..."
-            android:padding="3dip" />
-    &lt;/TableRow>
-
-    &lt;TableRow>
-        &lt;TextView
-            android:text="X"
-            android:padding="3dip" />
-        &lt;TextView
-            android:text="Export..."
-            android:padding="3dip" />
-        &lt;TextView
-            android:text="Ctrl-E"
-            android:gravity="right"
-            android:padding="3dip" />
-    &lt;/TableRow>
-
-    &lt;View
-        android:layout_height="2dip"
-        android:background="#FF909090" />
-
-    &lt;TableRow>
-        &lt;TextView
-            android:layout_column="1"
-            android:text="Quit"
-            android:padding="3dip" />
-    &lt;/TableRow>
-&lt;/TableLayout>
-</pre>
-<p>Notice how this resembles the structure of an HTML table. <code>TableLayout</code> is like the
-<code>table</code> element; <code>TableRow</code> is like a <code>tr</code> element; but for our cells like
-the html <code>td</code> element, we can use any kind of View. Here, we use <code>TextView</code> for the cells.</p>
-
-</li>
-<li>Make sure your Activity loads this layout in the <code>onCreate()</code> method:
-<pre>
-public void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.main);
-}
-</pre>
-<p><code>R.layout.main</code> refers to the <code>main.xml</code> layout file.</p>
-</li>
-<li>Run it.</li>
-</ol>
-<p>You should see the following:</p>
-<img src="images/hello-tablelayout.png" width="150px" />
-
-<h3>References</h3>
-<ul>
-  <li>{@link android.widget.TableLayout}</li>
-  <li>{@link android.widget.TableRow}</li>
-  <li>{@link android.widget.TextView}</li>
-</ul>
-
-
diff --git a/docs/html/guide/tutorials/views/hello-tabwidget.jd b/docs/html/guide/tutorials/views/hello-tabwidget.jd
deleted file mode 100644
index 98dddf53..0000000
--- a/docs/html/guide/tutorials/views/hello-tabwidget.jd
+++ /dev/null
@@ -1,124 +0,0 @@
-page.title=Hello, TabWidget
-parent.title=Hello, Views
-parent.link=index.html
-@jd:body
-
-<p>A {@link android.widget.TabWidget} offers the ability to easily draw an interface that uses
-tabs to navigate between different views.</p>
-
-<ol>
-  <li>Start a new project/Activity called HelloTabWidget.</li>
-  <li>Open the layout file and make it like so:</li>
-  <pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;TabHost xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@android:id/tabhost"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
-    &lt;LinearLayout
-        android:orientation="vertical"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent">
-        &lt;TabWidget
-            android:id="@android:id/tabs"
-            android:layout_width="fill_parent"
-            android:layout_height="wrap_content" />
-        &lt;FrameLayout
-            android:id="@android:id/tabcontent"
-            android:layout_width="fill_parent"
-            android:layout_height="fill_parent">
-            &lt;TextView 
-                android:id="@+id/textview1"
-                android:layout_width="fill_parent"
-                android:layout_height="fill_parent" 
-                android:text="this is a tab" />
-            &lt;TextView 
-                android:id="@+id/textview2"
-                android:layout_width="fill_parent"
-                android:layout_height="fill_parent" 
-                android:text="this is another tab" />
-            &lt;TextView 
-                android:id="@+id/textview3"
-                android:layout_width="fill_parent"
-                android:layout_height="fill_parent" 
-                android:text="this is a third tab" />
-    	&lt;/FrameLayout>
-    &lt;/LinearLayout>
-&lt;/TabHost>
-</pre>
-    <p>Here, we've created a {@link android.widget.TabHost} that contains the entire layout of the Activity.
-    A TabHost requires two descendant elements: a {@link android.widget.TabWidget} and a {@link android.widget.FrameLayout}.
-    In order to properly layout these elements, we've put them inside a vertical {@link android.widget.LinearLayout}.
-    The FrameLayout is where we keep the content that will change with each tab. Each child in the FrameLayout will
-    be associated with a different tab.
-    In this case, each tab simply shows a different {@link android.widget.TextView} with some text. </p>
-    <p>Notice that the TabWidget and the FrameLayout elements have specific <code>android</code> namespace IDs. These are necessary
-    so that the TabHost can automatically retrieve references to them, populate the TabWidget with the tabs that we'll define
-    in our code, and swap the views in the FrameLayout. We've also defined our own IDs for each TextView, which we'll use to 
-    associate each tab with the view that it should reveal.</p>
-    <p>Of course, you can 
-    make these child views as large as complex as you'd like &mdash; instead of the TextView elements, 
-    you could start with other layout views and build a unique layout hierarchy for each tab.</p>
-  </li>
-  <li>Now we'll add our code. Open HelloTabWidget.java and make it a <code>TabActivity</code>.
-    <p>By default, Eclipse creates a class that extends <code>Activity</code>. Change it to 
-    extend <code>TabActivity</code>:</p>
-    <pre>
-public class HelloTabWidget extends TabActivity {
-</pre>  
-  </li>
-  <li>Now fill in the the <code>onCreate</code> method like this:
-  <pre>
-public void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.main);
-
-    mTabHost = getTabHost();
-    
-    mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("TAB 1").setContent(R.id.textview1));
-    mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").setContent(R.id.textview2));
-    mTabHost.addTab(mTabHost.newTabSpec("tab_test3").setIndicator("TAB 3").setContent(R.id.textview3));
-    
-    mTabHost.setCurrentTab(0);
-}
-</pre>
-    <p>As usual, we start by setting our layout.</p>
-    <p>We then call the TabActivity method <code>getTabHost()</code>,
-    which returns us a reference to the TabHost we created in our layout. Upon our TabHost, we call <code>addTab()</code>
-    for each of the tabs that we want to add to the TabWidget. Each time we call this, we pass a 
-    {@link android.widget.TabHost.TabSpec} that we build on the fly, and with it, chain together two necessary methods:
-    <code>setIndicator()</code> to set the text for the tab button, and <code>setContent()</code> to define
-    which View we want to associate with the tab and reveal when pressed. Our indicator is just a text string and 
-    our content is an ID reference to the TextView elements we inserted in the FrameLayout.</p>
-    <p>At the end, we call <code>setCurrentTab()</code> to define which tab should be opened by default. The tabs
-    are saved like a zero-based array, so to open the first tab, we pass zero (<var>0</var>).</p>
-  </li>
-  <li>To clean-up the presentation a bit more, let's remove the window title that appears at the top of the layout.
-  Android includes a theme that removes that title for us. To add it, open the Android Manifest file and add
-  the <var>NoTitleBar</var> theme to the <code>&lt;application></code> tag. It should end up like this:
-    <pre>
-&lt;application android:icon="&#64;drawable/icon" android:theme="&#64;android:style/Theme.NoTitleBar">
-</pre>
-  </li>
-  <li>That's it. Run your application.</li>
-
-</ol>
-
-
-<p>Your application should look like this:</p>
-<img src="images/hello-tabwidget.png" width="150px" />
-
-<div class="special"><p>You can include icons in your tabs by passing a 
-{@link android.graphics.drawable.Drawable} when you call <code>setIndicator()</code>. Here's an example
-that uses a Drawable created from an image in the project resources:</p>
-<pre>setIndicator("TAB 1", getResources().getDrawable(R.drawable.tab_icon))</pre>
-</div>
-
-<h3>References</h3>
-<ul>
-<li>{@link android.widget.TabWidget}</li>
-<li>{@link android.widget.TabHost}</li>
-<li>{@link android.widget.TabHost.TabSpec}</li>
-<li>{@link android.widget.FrameLayout}</li>
-</ul>
-
diff --git a/docs/html/guide/tutorials/views/hello-timepicker.jd b/docs/html/guide/tutorials/views/hello-timepicker.jd
deleted file mode 100644
index 1a6c8f9..0000000
--- a/docs/html/guide/tutorials/views/hello-timepicker.jd
+++ /dev/null
@@ -1,159 +0,0 @@
-page.title=Hello, TimePicker
-parent.title=Hello, Views
-parent.link=index.html
-@jd:body
-
-<p>A {@link android.widget.TimePicker} is a widget that allows the 
-user to select the time by hour, minute and AM or PM.</p>
-
-
-<ol>
-  <li>Start a new project/Activity called HelloTimePicker.</li>
-  <li>Open the layout file and make it like so:
-    <pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:orientation="vertical">
-
-    &lt;TextView android:id="@+id/timeDisplay"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text=""/>
-
-    &lt;Button android:id="@+id/pickTime"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="Change the time"/>
-
-&lt;/LinearLayout>
-</pre>
-	<p>For the layout, we're using a vertical LinearLayout, with a {@link android.widget.TextView} that
-	will display the time and a {@link android.widget.Button} that will initiate the 
-        {@link android.widget.TimePicker} dialog.
-	With this layout, the TextView will sit above the Button.
-	The text value in the TextView is set empty, as it will be filled by our Activity
-	with the current time.</p>
-    </li> 
-
-  <li>Open HelloTimePicker.java. Insert the following to the HelloTimePicker class:
-<pre>
-private TextView mTimeDisplay;
-private Button mPickTime;
-
-private int mHour;
-private int mMinute;
-
-static final int TIME_DIALOG_ID = 0;
-
-&#64;Override
-protected void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.main);
-    
-    // capture our View elements
-    mTimeDisplay = (TextView) findViewById(R.id.timeDisplay);
-    mPickTime = (Button) findViewById(R.id.pickTime);
-
-    // add a click listener to the button
-    mPickTime.setOnClickListener(new View.OnClickListener() {
-        public void onClick(View v) {
-            showDialog(TIME_DIALOG_ID);
-        }
-    });
-
-    // get the current time
-    final Calendar c = Calendar.getInstance();
-    mHour = c.get(Calendar.HOUR_OF_DAY);
-    mMinute = c.get(Calendar.MINUTE);
-
-    // display the current date
-    updateDisplay();
-}
-</pre>
-<p class="note"><strong>Tip:</strong> Press Ctrl(or Cmd) + Shift + O to import all needed packages.</p>
-        <p>We start by instantiating variables for our View elements and time fields.
-	The <code>TIME_DIALOG_ID</code> is a static integer that uniquely identifies the dialog. In the
-	<code>onCreate()</code> method, we get prepared by setting the layout and capturing the View elements. 
-	We then set an on-click listener for the Button, so that when it is clicked, it will
-	show our TimePicker dialog. The <code>showDialog()</code> method will perform a callback
-	to our Activity. (We'll define this callback in the next section.) We then create an
-	instance of {@link java.util.Calendar} and get the current hour and minute. Finally, we call 
-	<code>updateDisplay()</code>&mdash;our own method that will fill the TextView with the time.</p>
-</li>
-
-<li>After the <code>onCreate()</code> method, add the <code>onCreateDialog()</code> callback method:
-<pre>
-&#64;Override
-protected Dialog onCreateDialog(int id) {
-    switch (id) {
-    case TIME_DIALOG_ID:
-        return new TimePickerDialog(this,
-                mTimeSetListener, mHour, mMinute, false);
-    }
-    return null;
-}
-</pre>
-	<p>This is passed the identifier we gave <code>showDialog()</code> and initializes
-	the TimePicker to the time we retrieved from our Calendar instance. It will be called by 
-        <code>showDialog()</code>.</p>
-</li>
-
-<li>Now add our <code>updateDisplay()</code> method:
-<pre>
-// updates the time we display in the TextView
-private void updateDisplay() {
-    mTimeDisplay.setText(
-        new StringBuilder()
-                .append(pad(mHour)).append(":")
-                .append(pad(mMinute)));
-}
-</pre>
-	<p>This simply takes our member fields for the time and inserts them in 
-	the <code>mTimeDisplay</code> TextView. Note that we call a new method, <code>pad()</code>,
-	on the hour and minute. (We'll create this method in the last step.)</p>
-</li>
-
-<li>Next, add a listener to be called when the time is reset:
-<pre>
-// the callback received when the user "sets" the time in the dialog
-private TimePickerDialog.OnTimeSetListener mTimeSetListener =
-    new TimePickerDialog.OnTimeSetListener() {
-        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
-            mHour = hourOfDay;
-            mMinute = minute;
-            updateDisplay();
-        }
-    };
-</pre>
-	<p>Now when the user is done setting the time (clicks the "Set" button), we update our member fields with
-	the new time and update our TextView.</p>
-</li>
-<li>Finally, add the <code>pad()</code> method that we called from the <code>updateDisplay()</code>:
-<pre>
-private static String pad(int c) {
-    if (c >= 10)
-        return String.valueOf(c);
-    else
-        return "0" + String.valueOf(c);
-}
-</pre>
-	<p>This method returns the appropriate String representation of the hour or minute.
-	It will prefix a zero to the number if it's a single digit.
-  	</p>
-</li>
-
-<li>Now run it.</li>
-</ol>
-<p>When you press the "Change the time" button, you should see the following:</p>
-<img src="images/hello-timepicker.png" width="150px" />
-
-<h3>References</h3>
-<ol>
-  <li>{@link android.widget.TimePicker}</li>
-  <li>{@link android.widget.Button}</li>
-  <li>{@link android.widget.TextView}</li>
-  <li>{@link java.util.Calendar}</li>
-</ol>
-
diff --git a/docs/html/guide/tutorials/views/hello-webview.jd b/docs/html/guide/tutorials/views/hello-webview.jd
deleted file mode 100644
index a927b04..0000000
--- a/docs/html/guide/tutorials/views/hello-webview.jd
+++ /dev/null
@@ -1,118 +0,0 @@
-page.title=Hello, WebView 
-parent.title=Hello, Views
-parent.link=index.html
-@jd:body
-
-<p>A {@link android.webkit.WebView} allows you to create your own web browser Activity. In this tutorial, 
-we'll create a simple Activity that can view web pages.</p>
-
-<ol>
-   <li>Create a new project/Activity called HelloWebView.</li>
-   <li>Open the layout file. Insert a WebView so it looks like so:
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
-    android:orientation="vertical">
-
-    &lt;WebView 
-        android:id="@+id/webview"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
-    />
-
-&lt;/LinearLayout>
-</pre></li>
-
-   <li>Now open the HelloWebView.java file.
-      At the top of the class, instantiate a WebView object:
-<pre>WebView webview;</pre>
-  <p> Then add the following  at the end of the <code>onCreate()</code> method:</p>
-<pre>
-webview = (WebView) findViewById(R.id.webview);
-webview.getSettings().setJavaScriptEnabled(true);
-webview.loadUrl("http://www.google.com");
-</pre>
-
-      <p>This captures the WebView we created in our layout, then requests a 
-	{@link android.webkit.WebSettings} object and enables JavaScript.
-	Then we load a URL.</p></li>
-
-   <li>Because we're accessing the internet, we need to add the appropriate 
-   permissions to the Android manifest file. So open the AndroidManifest.xml file 
-   and, add the following as a child of the <code>&lt;manifest></code> element:
-
-      <pre>&lt;uses-permission android:name="android.permission.INTERNET" /></pre></li>
-
-   <li>Now run it.</li>
-</ol>
-<p> You now have the world's simplest web page viewer.
-   It's not quite a browser yet. It only loads the page we've requested.</p>
-
-<hr/>
-
-<p>We can load a page, but as soon as we click a link, the default Android web browser 
-handles the Intent, instead of our own WebView handling the action. So now we'll 
-override the {@link android.webkit.WebViewClient} to enable us to handle our own URL loading.</p>
-
-<ol>
-   <li>In the HelloAndroid Activity, add this nested private class:
-<pre>
-private class HelloWebViewClient extends WebViewClient {
-    &#64;Override
-    public boolean shouldOverrideUrlLoading(WebView view, String url) {
-        view.loadUrl(url);
-        return true;
-    }
-}</pre></li>
-
-   <li>Now, in the <code>onCreate()</code> method, set an instance of the <code>HelloWebViewClient</code>
-   as our WebViewClient:
-      <pre>webview.setWebViewClient(new HelloWebViewClient());</pre>
-
-      <p>This line should immediately follow the initialization of our WebView object.</p>
-      <p>What we've done is create a WebViewClient that will load any URL selected in our
-WebView in the same WebView. You can see this in the <code>shouldOverrideUrlLoading()</code>
-method, above&mdash;it is passed the current WebView and the URL, so all we do
-is load the URL in the given view. Returning <var>true</var> says that we've handled the URL
-ourselves and the event should not bubble-up.</p>
-      <p>If you try it again, new pages will now load in the HelloWebView Activity. However, you'll notice that 
-we can't navigate back. We need to handle the back button 
-on the device, so that it will return to the previous page, rather than exit the application.</p>
-    </li>
-
-   <li>To handle the back button key press, add the following method inside the HelloWebView 
-Activity:
-<pre> 
-&#64;Override
-public boolean onKeyDown(int keyCode, KeyEvent event) {
-    if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
-        webview.goBack();
-        return true;
-    }
-    return super.onKeyDown(keyCode, event);
-}</pre>
-      <p>The condition uses a {@link android.view.KeyEvent} to check
-      whether the key pressed is the BACK button and whether the 
-      WebView is actually capable of navigating back (if it has a history). If both are 
-      <em>not</em> true, then we send the event up the chain (and the Activity will close). 
-      But if both <em>are</em> true, then we call <code>goBack()</code>, 
-      which will navigate back one step in the history. We then return true to indicate 
-      that we've handled the event.</p>
-</li>
-</ol>
-<p>When you open the application, it should look like this:</p>
-<img src="images/hello-webview.png" width="150px" />
-
-<h3>Resource</h3>
-<ul>
-<li>{@link android.webkit.WebView}</li>
-<li>{@link android.webkit.WebViewClient}</li>
-<li>{@link android.view.KeyEvent}</li>
-</ul>
-
-      
-
-
-
diff --git a/docs/html/guide/tutorials/views/images/android.png b/docs/html/guide/tutorials/views/images/android.png
deleted file mode 100755
index 39a1ac7..0000000
--- a/docs/html/guide/tutorials/views/images/android.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/views/images/androidmarker.png b/docs/html/guide/tutorials/views/images/androidmarker.png
deleted file mode 100755
index 8c43d46..0000000
--- a/docs/html/guide/tutorials/views/images/androidmarker.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/views/images/hello-autocomplete.png b/docs/html/guide/tutorials/views/images/hello-autocomplete.png
deleted file mode 100755
index e1fd80d..0000000
--- a/docs/html/guide/tutorials/views/images/hello-autocomplete.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/views/images/hello-datepicker.png b/docs/html/guide/tutorials/views/images/hello-datepicker.png
deleted file mode 100755
index 2075066..0000000
--- a/docs/html/guide/tutorials/views/images/hello-datepicker.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/views/images/hello-formstuff.png b/docs/html/guide/tutorials/views/images/hello-formstuff.png
deleted file mode 100755
index 3b4bf54..0000000
--- a/docs/html/guide/tutorials/views/images/hello-formstuff.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/views/images/hello-listview.png b/docs/html/guide/tutorials/views/images/hello-listview.png
deleted file mode 100755
index a1cf7aa..0000000
--- a/docs/html/guide/tutorials/views/images/hello-listview.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/views/images/hello-mapview.png b/docs/html/guide/tutorials/views/images/hello-mapview.png
deleted file mode 100755
index 0956760..0000000
--- a/docs/html/guide/tutorials/views/images/hello-mapview.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/views/images/hello-spinner.png b/docs/html/guide/tutorials/views/images/hello-spinner.png
deleted file mode 100755
index 42e2a91..0000000
--- a/docs/html/guide/tutorials/views/images/hello-spinner.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/views/images/hello-tabwidget.png b/docs/html/guide/tutorials/views/images/hello-tabwidget.png
deleted file mode 100644
index 6a52356..0000000
--- a/docs/html/guide/tutorials/views/images/hello-tabwidget.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/views/images/hello-timepicker.png b/docs/html/guide/tutorials/views/images/hello-timepicker.png
deleted file mode 100755
index bd5a1ee..0000000
--- a/docs/html/guide/tutorials/views/images/hello-timepicker.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/views/images/hello-webview.png b/docs/html/guide/tutorials/views/images/hello-webview.png
deleted file mode 100755
index 283ce7d..0000000
--- a/docs/html/guide/tutorials/views/images/hello-webview.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/guide/tutorials/views/index.html b/docs/html/guide/tutorials/views/index.html
deleted file mode 100644
index 41d6796..0000000
--- a/docs/html/guide/tutorials/views/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/resources/tutorials/views/index.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should have been redirected. Please <a
-href="http://developer.android.com/resources/tutorials/views/index.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/guide/webapps/debugging.jd b/docs/html/guide/webapps/debugging.jd
index c0dce48..1eef1ae 100644
--- a/docs/html/guide/webapps/debugging.jd
+++ b/docs/html/guide/webapps/debugging.jd
@@ -18,7 +18,7 @@
 
 <h2>See also</h2>
 <ol>
-  <li><a href="{@docRoot}guide/developing/debugging/index.html">Debugging</a></li>
+  <li><a href="{@docRoot}tools/debugging/index.html">Debugging</a></li>
 </ol>
 
 </div>
@@ -43,10 +43,10 @@
 those written using JavaScript {@code console} APIs.</p>
   <p>To run logcat and view messages, execute
 {@code adb logcat} from your Android SDK {@code tools/} directory, or, from DDMS, select
-<strong>Device > Run logcat</strong>. When using the <a href="{@docRoot}sdk/eclipse-adt.html">ADT
+<strong>Device > Run logcat</strong>. When using the <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT
 plugin for Eclipse</a>, you can also view logcat messages by opening the Logcat view, available from
 <strong>Window > Show View > Other > Android > Logcat</strong>.</p>
-  <p>See <a href="{@docRoot}guide/developing/debugging/debugging-log.html">Debugging</a>
+  <p>See <a href="{@docRoot}tools/debugging/debugging-log.html">Debugging</a>
   for more information about <codelogcat</code>.</p>
 </div>
 </div>
diff --git a/docs/html/guide/webapps/index.jd b/docs/html/guide/webapps/index.jd
index 069290a..df7ddbe 100644
--- a/docs/html/guide/webapps/index.jd
+++ b/docs/html/guide/webapps/index.jd
@@ -1,71 +1,16 @@
-page.title=Web Apps Overview
+page.title=Web Apps
+page.landing=true
+page.landing.intro=Android has always been about connectivity and providing a great web browsing experience, so building your app with web technologies can be a great opportunity. Not only can you build an app on the web and still optimize your designs for Android's various screen sizes and densities, but you can also embed web-based content into your Android app using WebView.
+page.landing.image=
+
 @jd:body
 
-<div class="figure" style="width:327px">
-  <img src="{@docRoot}images/webapps/webapps.png" alt="" />
-  <p class="img-caption"><strong>Figure 1.</strong> You can make your web content available to
-users in two ways: in a traditional web browser and in an Android application, by
-including a WebView in the layout.</p>
-</div>
+<div class="landing-docs">
 
-<p>There are essentially two ways to deliver an application on Android: as a
-client-side application (developed using the Android SDK and installed on user devices as an {@code
-.apk}) or as a web application (developed using web standards and accessed through a web
-browser&mdash;there's nothing to install on user devices).</p>
+  <div class="col-6">
+  </div>
 
-<p>The approach you choose for your application could depend on several factors, but Android makes
-the decision to develop a web application easier by providing:</p>
-<ul>
-  <li>Support for viewport properties that allow you to properly size your web application
-based on the screen size</li>
-  <li>CSS and JavaScript features that allow you to provide different styles and images
-based on the screen's pixel density (screen resolution)</li>
-</ul>
+  <div class="col-6">
+  </div>
 
-<p>Thus, your decision to develop a web application for Android can exclude consideration for
-screen support, because it's already easy to make your web pages look good on all types of screens
-powered by Android.</p>
-
-<p>Another great feature of Android is that you don't have to build your application purely on
-the client or purely on the web. You can mix the two together by developing a client-side Android
-application that embeds some web pages (using a {@link android.webkit.WebView} in your Android
-application layout). Figure 1 visualizes how you can provide access to your web pages from either
-a web browser or your Android application. However, you shouldn't develop an Android
-application simply as a means to launch your web site. Rather, the web pages you embed in your
-Android application should be designed especially for that environment. You can even define an
-interface between your Android application and your web pages that allows JavaScript in the web
-pages to call upon APIs in your Android application&mdash;providing Android APIs to your web-based
-application.</p>
-
-<p>Since Android 1.0, {@link android.webkit.WebView} has been available for Android
-applications to embed web content in their layout and bind JavaScript to Android APIs. After
-Android added support for more screen densities (adding support for high and low-density
-screens), Android 2.0 added features to the WebKit framework to allow web pages to specify
-viewport properties and query the screen density in order to modify styles
-and image assets, as mentioned above. Because these features are a part of Android's WebKit
-framework, both the Android Browser (the default web browser provided with the platform) and
-{@link android.webkit.WebView} support the same viewport and screen density features.</p>
-
-<p>To develop a web application for Android-powered devices, you should read the
-following documents:</p>
-
-<dl>
-  <dt><a href="{@docRoot}guide/webapps/targeting.html"><strong>Targeting Screens from Web
-Apps</strong></a></dt>
-  <dd>How to properly size your web app on Android-powered devices and support
-multiple screen densities. The information in this document is important if you're building a web
-application that you at least expect to be available on Android-powered devices (which you should
-assume for anything you publish on the web), but especially if you're targeting mobile devices
-or using {@link android.webkit.WebView}.</dd>
-  <dt><a href="{@docRoot}guide/webapps/webview.html"><strong>Building Web Apps in
-WebView</strong></a></dt>
-  <dd>How to embed web pages into your Android application using {@link android.webkit.WebView} and
-bind JavaScript to Android APIs.</dd>
-  <dt><a href="{@docRoot}guide/webapps/debugging.html"><strong>Debugging Web Apps</strong></a></dt>
-  <dd>How to debug web apps using JavaScript Console APIs.</dd>
-  <dt><a href="{@docRoot}guide/webapps/best-practices.html"><strong>Best Practices for Web
-Apps</strong></a></dt>
-  <dd>A list of practices you should follow, in order to provide an effective web application on
-Android-powered devices.</dd>
-</dl>
-
+</div>
\ No newline at end of file
diff --git a/docs/html/guide/webapps/overview.jd b/docs/html/guide/webapps/overview.jd
new file mode 100644
index 0000000..069290a
--- /dev/null
+++ b/docs/html/guide/webapps/overview.jd
@@ -0,0 +1,71 @@
+page.title=Web Apps Overview
+@jd:body
+
+<div class="figure" style="width:327px">
+  <img src="{@docRoot}images/webapps/webapps.png" alt="" />
+  <p class="img-caption"><strong>Figure 1.</strong> You can make your web content available to
+users in two ways: in a traditional web browser and in an Android application, by
+including a WebView in the layout.</p>
+</div>
+
+<p>There are essentially two ways to deliver an application on Android: as a
+client-side application (developed using the Android SDK and installed on user devices as an {@code
+.apk}) or as a web application (developed using web standards and accessed through a web
+browser&mdash;there's nothing to install on user devices).</p>
+
+<p>The approach you choose for your application could depend on several factors, but Android makes
+the decision to develop a web application easier by providing:</p>
+<ul>
+  <li>Support for viewport properties that allow you to properly size your web application
+based on the screen size</li>
+  <li>CSS and JavaScript features that allow you to provide different styles and images
+based on the screen's pixel density (screen resolution)</li>
+</ul>
+
+<p>Thus, your decision to develop a web application for Android can exclude consideration for
+screen support, because it's already easy to make your web pages look good on all types of screens
+powered by Android.</p>
+
+<p>Another great feature of Android is that you don't have to build your application purely on
+the client or purely on the web. You can mix the two together by developing a client-side Android
+application that embeds some web pages (using a {@link android.webkit.WebView} in your Android
+application layout). Figure 1 visualizes how you can provide access to your web pages from either
+a web browser or your Android application. However, you shouldn't develop an Android
+application simply as a means to launch your web site. Rather, the web pages you embed in your
+Android application should be designed especially for that environment. You can even define an
+interface between your Android application and your web pages that allows JavaScript in the web
+pages to call upon APIs in your Android application&mdash;providing Android APIs to your web-based
+application.</p>
+
+<p>Since Android 1.0, {@link android.webkit.WebView} has been available for Android
+applications to embed web content in their layout and bind JavaScript to Android APIs. After
+Android added support for more screen densities (adding support for high and low-density
+screens), Android 2.0 added features to the WebKit framework to allow web pages to specify
+viewport properties and query the screen density in order to modify styles
+and image assets, as mentioned above. Because these features are a part of Android's WebKit
+framework, both the Android Browser (the default web browser provided with the platform) and
+{@link android.webkit.WebView} support the same viewport and screen density features.</p>
+
+<p>To develop a web application for Android-powered devices, you should read the
+following documents:</p>
+
+<dl>
+  <dt><a href="{@docRoot}guide/webapps/targeting.html"><strong>Targeting Screens from Web
+Apps</strong></a></dt>
+  <dd>How to properly size your web app on Android-powered devices and support
+multiple screen densities. The information in this document is important if you're building a web
+application that you at least expect to be available on Android-powered devices (which you should
+assume for anything you publish on the web), but especially if you're targeting mobile devices
+or using {@link android.webkit.WebView}.</dd>
+  <dt><a href="{@docRoot}guide/webapps/webview.html"><strong>Building Web Apps in
+WebView</strong></a></dt>
+  <dd>How to embed web pages into your Android application using {@link android.webkit.WebView} and
+bind JavaScript to Android APIs.</dd>
+  <dt><a href="{@docRoot}guide/webapps/debugging.html"><strong>Debugging Web Apps</strong></a></dt>
+  <dd>How to debug web apps using JavaScript Console APIs.</dd>
+  <dt><a href="{@docRoot}guide/webapps/best-practices.html"><strong>Best Practices for Web
+Apps</strong></a></dt>
+  <dd>A list of practices you should follow, in order to provide an effective web application on
+Android-powered devices.</dd>
+</dl>
+