Merge "docs: nfc ndef helper methods bug 5957772" into jb-dev
diff --git a/cmds/installd/commands.c b/cmds/installd/commands.c
index 96a6438..a509156 100644
--- a/cmds/installd/commands.c
+++ b/cmds/installd/commands.c
@@ -1056,7 +1056,12 @@
         rc = -errno;
         goto out;
     }
-
+    if (chmod(libdir, 0755) < 0) {
+        ALOGE("cannot chmod dir '%s': %s\n", libdir, strerror(errno));
+        unlink(libdir);
+        rc = -errno;
+        goto out;
+    }
     if (chown(libdir, AID_SYSTEM, AID_SYSTEM) < 0) {
         ALOGE("cannot chown dir '%s': %s\n", libdir, strerror(errno));
         unlink(libdir);
diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java
index b6001eb..81ee192 100644
--- a/core/java/android/accessibilityservice/AccessibilityService.java
+++ b/core/java/android/accessibilityservice/AccessibilityService.java
@@ -66,7 +66,7 @@
  * accessibility service. Following is an example declaration:
  * </p>
  * <pre> &lt;service android:name=".MyAccessibilityService"
- *         android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE&gt;
+ *         android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"&gt;
  *     &lt;intent-filter&gt;
  *         &lt;action android:name="android.accessibilityservice.AccessibilityService" /&gt;
  *     &lt;/intent-filter&gt;
diff --git a/core/java/android/accounts/AccountManagerService.java b/core/java/android/accounts/AccountManagerService.java
index 079b9bd..22e454f 100644
--- a/core/java/android/accounts/AccountManagerService.java
+++ b/core/java/android/accounts/AccountManagerService.java
@@ -220,8 +220,6 @@
 
         sThis.set(this);
 
-        UserAccounts accounts = initUser(0);
-
         IntentFilter intentFilter = new IntentFilter();
         intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
         intentFilter.addDataScheme("package");
@@ -242,6 +240,11 @@
         }, userFilter);
     }
 
+    public void systemReady() {
+        mAuthenticatorCache.generateServicesMap();
+        initUser(0);
+    }
+
     private UserAccounts initUser(int userId) {
         synchronized (mUsers) {
             UserAccounts accounts = mUsers.get(userId);
diff --git a/core/java/android/accounts/IAccountAuthenticatorCache.java b/core/java/android/accounts/IAccountAuthenticatorCache.java
index 618771f..20dd585 100644
--- a/core/java/android/accounts/IAccountAuthenticatorCache.java
+++ b/core/java/android/accounts/IAccountAuthenticatorCache.java
@@ -60,4 +60,9 @@
      */
     void setListener(RegisteredServicesCacheListener<AuthenticatorDescription> listener,
             Handler handler);
+
+    /**
+     * Refreshes the authenticator cache.
+     */
+    void generateServicesMap();
 }
\ No newline at end of file
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index b902550..411f6d0 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -361,10 +361,10 @@
                     return PolicyManager.makeNewLayoutInflater(ctx.getOuterContext());
                 }});
 
-        registerService(LOCATION_SERVICE, new StaticServiceFetcher() {
-                public Object createStaticService() {
+        registerService(LOCATION_SERVICE, new ServiceFetcher() {
+                public Object createService(ContextImpl ctx) {
                     IBinder b = ServiceManager.getService(LOCATION_SERVICE);
-                    return new LocationManager(ILocationManager.Stub.asInterface(b));
+                    return new LocationManager(ctx, ILocationManager.Stub.asInterface(b));
                 }});
 
         registerService(NETWORK_POLICY_SERVICE, new ServiceFetcher() {
diff --git a/core/java/android/app/DatePickerDialog.java b/core/java/android/app/DatePickerDialog.java
index 3f0b4d4..d168800 100644
--- a/core/java/android/app/DatePickerDialog.java
+++ b/core/java/android/app/DatePickerDialog.java
@@ -33,8 +33,8 @@
 /**
  * A simple dialog containing an {@link android.widget.DatePicker}.
  *
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-datepicker.html">Date Picker
- * tutorial</a>.</p>
+ * <p>See the <a href="{@docRoot}guide/topics/ui/controls/pickers.html">Pickers</a>
+ * guide.</p>
  */
 public class DatePickerDialog extends AlertDialog implements OnClickListener,
         OnDateChangedListener {
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index ceb8cde..cb83dc2 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -897,12 +897,16 @@
      * Builder class for {@link Notification} objects.
      * 
      * Provides a convenient way to set the various fields of a {@link Notification} and generate
-     * content views using the platform's notification layout template. 
+     * content views using the platform's notification layout template. If your app supports
+     * versions of Android as old as API level 4, you can instead use
+     * {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder},
+     * available in the <a href="{@docRoot}tools/extras/support-library.html">Android Support
+     * library</a>.
      * 
-     * Example:
+     * <p>Example:
      * 
      * <pre class="prettyprint">
-     * Notification noti = new Notification.Builder()
+     * Notification noti = new Notification.Builder(mContext)
      *         .setContentTitle(&quot;New mail from &quot; + sender.toString())
      *         .setContentText(subject)
      *         .setSmallIcon(R.drawable.new_mail)
@@ -1731,6 +1735,9 @@
             return this;
         }
 
+        /**
+         * Provide the bitmap to be used as the payload for the BigPicture notification.
+         */
         public BigPictureStyle bigPicture(Bitmap b) {
             mPicture = b;
             return this;
@@ -1809,6 +1816,10 @@
             return this;
         }
 
+        /**
+         * Provide the longer text to be displayed in the big form of the
+         * template in place of the content text.
+         */
         public BigTextStyle bigText(CharSequence cs) {
             mBigText = cs;
             return this;
@@ -1889,6 +1900,9 @@
             return this;
         }
 
+        /**
+         * Append a line to the digest section of the Inbox notification.
+         */
         public InboxStyle addLine(CharSequence cs) {
             mTexts.add(cs);
             return this;
diff --git a/core/java/android/app/Service.java b/core/java/android/app/Service.java
index cb43d4c..02cf3aa 100644
--- a/core/java/android/app/Service.java
+++ b/core/java/android/app/Service.java
@@ -142,7 +142,7 @@
  * to the service.  The service will remain running as long as the connection
  * is established (whether or not the client retains a reference on the
  * service's IBinder).  Usually the IBinder returned is for a complex
- * interface that has been <a href="{@docRoot}guide/developing/tools/aidl.html">written
+ * interface that has been <a href="{@docRoot}guide/components/aidl.html">written
  * in aidl</a>.
  * 
  * <p>A service can be both started and have connections bound to it.  In such
@@ -473,7 +473,7 @@
      * Return the communication channel to the service.  May return null if 
      * clients can not bind to the service.  The returned
      * {@link android.os.IBinder} is usually for a complex interface
-     * that has been <a href="{@docRoot}guide/developing/tools/aidl.html">described using
+     * that has been <a href="{@docRoot}guide/components/aidl.html">described using
      * aidl</a>.
      * 
      * <p><em>Note that unlike other application components, calls on to the
diff --git a/core/java/android/app/TimePickerDialog.java b/core/java/android/app/TimePickerDialog.java
index d773bc8..952227f 100644
--- a/core/java/android/app/TimePickerDialog.java
+++ b/core/java/android/app/TimePickerDialog.java
@@ -30,8 +30,8 @@
 /**
  * A dialog that prompts the user for the time of day using a {@link TimePicker}.
  *
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-timepicker.html">Time Picker
- * tutorial</a>.</p>
+ * <p>See the <a href="{@docRoot}guide/topics/ui/controls/pickers.html">Pickers</a>
+ * guide.</p>
  */
 public class TimePickerDialog extends AlertDialog
         implements OnClickListener, OnTimeChangedListener {
diff --git a/core/java/android/app/backup/FullBackup.java b/core/java/android/app/backup/FullBackup.java
index d7f1c9f..f859599 100644
--- a/core/java/android/app/backup/FullBackup.java
+++ b/core/java/android/app/backup/FullBackup.java
@@ -64,7 +64,9 @@
 
     /**
      * Copy data from a socket to the given File location on permanent storage.  The
-     * modification time and access mode of the resulting file will be set if desired.
+     * modification time and access mode of the resulting file will be set if desired,
+     * although group/all rwx modes will be stripped: the restored file will not be
+     * accessible from outside the target application even if the original file was.
      * If the {@code type} parameter indicates that the result should be a directory,
      * the socket parameter may be {@code null}; even if it is valid, no data will be
      * read from it in this case.
@@ -79,8 +81,9 @@
      * @param type Must be either {@link BackupAgent#TYPE_FILE} for ordinary file data
      *    or {@link BackupAgent#TYPE_DIRECTORY} for a directory.
      * @param mode Unix-style file mode (as used by the chmod(2) syscall) to be set on
-     *    the output file or directory.  If this parameter is negative then neither
-     *    the mode nor the mtime parameters will be used.
+     *    the output file or directory.  group/all rwx modes are stripped even if set
+     *    in this parameter.  If this parameter is negative then neither
+     *    the mode nor the mtime values will be applied to the restored file.
      * @param mtime A timestamp in the standard Unix epoch that will be imposed as the
      *    last modification time of the output file.  if the {@code mode} parameter is
      *    negative then this parameter will be ignored.
@@ -105,8 +108,6 @@
                     if (!parent.exists()) {
                         // in practice this will only be for the default semantic directories,
                         // and using the default mode for those is appropriate.
-                        // TODO: support the edge case of apps that have adjusted the
-                        //       permissions on these core directories
                         parent.mkdirs();
                     }
                     out = new FileOutputStream(outFile);
@@ -146,6 +147,8 @@
         // Now twiddle the state to match the backup, assuming all went well
         if (mode >= 0 && outFile != null) {
             try {
+                // explicitly prevent emplacement of files accessible by outside apps
+                mode &= 0700;
                 Libcore.os.chmod(outFile.getPath(), (int)mode);
             } catch (ErrnoException e) {
                 e.rethrowAsIOException();
diff --git a/core/java/android/appwidget/AppWidgetManager.java b/core/java/android/appwidget/AppWidgetManager.java
index 810e790..2df675e 100644
--- a/core/java/android/appwidget/AppWidgetManager.java
+++ b/core/java/android/appwidget/AppWidgetManager.java
@@ -237,8 +237,9 @@
     /**
      * Sent when the custom extras for an AppWidget change.
      *
-     * @see AppWidgetProvider#onAppWidgetExtrasChanged AppWidgetProvider#onAppWidgetExtrasChanged(
-     *      Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newExtras)
+     * @see AppWidgetProvider#onAppWidgetOptionsChanged 
+     *      AppWidgetProvider.onAppWidgetOptionsChanged(Context context, 
+     *      AppWidgetManager appWidgetManager, int appWidgetId, Bundle newExtras)
      */
     public static final String ACTION_APPWIDGET_OPTIONS_CHANGED = "android.appwidget.action.APPWIDGET_UPDATE_OPTIONS";
 
diff --git a/core/java/android/content/BroadcastReceiver.java b/core/java/android/content/BroadcastReceiver.java
index 9ddb2a6..446f1af 100644
--- a/core/java/android/content/BroadcastReceiver.java
+++ b/core/java/android/content/BroadcastReceiver.java
@@ -735,7 +735,7 @@
     
     /**
      * Control inclusion of debugging help for mismatched
-     * calls to {@ Context#registerReceiver(BroadcastReceiver, IntentFilter)
+     * calls to {@link Context#registerReceiver(BroadcastReceiver, IntentFilter)
      * Context.registerReceiver()}.
      * If called with true, before given to registerReceiver(), then the
      * callstack of the following {@link Context#unregisterReceiver(BroadcastReceiver)
diff --git a/core/java/android/content/ContentService.java b/core/java/android/content/ContentService.java
index f827c3d..1a07504 100644
--- a/core/java/android/content/ContentService.java
+++ b/core/java/android/content/ContentService.java
@@ -132,6 +132,9 @@
     /*package*/ ContentService(Context context, boolean factoryTest) {
         mContext = context;
         mFactoryTest = factoryTest;
+    }
+
+    public void systemReady() {
         getSyncManager();
     }
 
@@ -524,7 +527,7 @@
         }
     }
 
-    public static IContentService main(Context context, boolean factoryTest) {
+    public static ContentService main(Context context, boolean factoryTest) {
         ContentService service = new ContentService(context, factoryTest);
         ServiceManager.addService(ContentResolver.CONTENT_SERVICE_NAME, service);
         return service;
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 6de69b0..7e96ae6 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -1610,7 +1610,7 @@
      *
      * @param flags Additional option flags. Use any combination of
      * {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES},
-     * {link #GET_UNINSTALLED_PACKAGES} to modify the data returned.
+     * {@link #GET_UNINSTALLED_PACKAGES} to modify the data returned.
      *
      * @return A List of ApplicationInfo objects, one for each application that
      *         is installed on the device.  In the unlikely case of there being
diff --git a/core/java/android/content/pm/RegisteredServicesCache.java b/core/java/android/content/pm/RegisteredServicesCache.java
index b1fc788..d8f9204 100644
--- a/core/java/android/content/pm/RegisteredServicesCache.java
+++ b/core/java/android/content/pm/RegisteredServicesCache.java
@@ -251,7 +251,7 @@
         return false;
     }
 
-    void generateServicesMap() {
+    public void generateServicesMap() {
         PackageManager pm = mContext.getPackageManager();
         ArrayList<ServiceInfo<V>> serviceInfos = new ArrayList<ServiceInfo<V>>();
         List<ResolveInfo> resolveInfos = pm.queryIntentServices(new Intent(mInterfaceName),
diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java
index c630bb5..ab2fe1c 100755
--- a/core/java/android/content/res/Resources.java
+++ b/core/java/android/content/res/Resources.java
@@ -1120,8 +1120,8 @@
          * Return a StyledAttributes holding the values defined by
          * <var>Theme</var> which are listed in <var>attrs</var>.
          * 
-         * <p>Be sure to call StyledAttributes.recycle() when you are done with
-         * the array.
+         * <p>Be sure to call {@link TypedArray#recycle() TypedArray.recycle()} when you are done
+         * with the array.
          * 
          * @param attrs The desired attributes.
          *
@@ -1148,8 +1148,8 @@
          * Return a StyledAttributes holding the values defined by the style
          * resource <var>resid</var> which are listed in <var>attrs</var>.
          * 
-         * <p>Be sure to call StyledAttributes.recycle() when you are done with
-         * the array.
+         * <p>Be sure to call {@link TypedArray#recycle() TypedArray.recycle()} when you are done
+         * with the array.
          * 
          * @param resid The desired style resource.
          * @param attrs The desired attributes in the style.
@@ -1208,8 +1208,8 @@
          * AttributeSet specifies a style class (through the "style" attribute),
          * that style will be applied on top of the base attributes it defines.
          * 
-         * <p>Be sure to call StyledAttributes.recycle() when you are done with
-         * the array.
+         * <p>Be sure to call {@link TypedArray#recycle() TypedArray.recycle()} when you are done
+         * with the array.
          * 
          * <p>When determining the final value of a particular attribute, there
          * are four inputs that come into play:</p>
diff --git a/core/java/android/content/res/TypedArray.java b/core/java/android/content/res/TypedArray.java
index 2df492e..2968fbb 100644
--- a/core/java/android/content/res/TypedArray.java
+++ b/core/java/android/content/res/TypedArray.java
@@ -684,7 +684,7 @@
     }
 
     /**
-     * Give back a previously retrieved StyledAttributes, for later re-use.
+     * Give back a previously retrieved array, for later re-use.
      */
     public void recycle() {
         synchronized (mResources.mTmpValue) {
diff --git a/core/java/android/hardware/usb/UsbManager.java b/core/java/android/hardware/usb/UsbManager.java
index c40504a7..f64ef87 100644
--- a/core/java/android/hardware/usb/UsbManager.java
+++ b/core/java/android/hardware/usb/UsbManager.java
@@ -257,7 +257,7 @@
      * data using {@link android.hardware.usb.UsbRequest}.
      *
      * @param device the device to open
-     * @return true if we successfully opened the device
+     * @return a {@link UsbDeviceConnection}, or {@code null} if open failed
      */
     public UsbDeviceConnection openDevice(UsbDevice device) {
         try {
diff --git a/core/java/android/net/DummyDataStateTracker.java b/core/java/android/net/DummyDataStateTracker.java
index 9f0f9cd..ccd96ff 100644
--- a/core/java/android/net/DummyDataStateTracker.java
+++ b/core/java/android/net/DummyDataStateTracker.java
@@ -123,7 +123,7 @@
      * Record the detailed state of a network, and if it is a
      * change from the previous state, send a notification to
      * any listeners.
-     * @param state the new @{code DetailedState}
+     * @param state the new {@code DetailedState}
      * @param reason a {@code String} indicating a reason for the state change,
      * if one was supplied. May be {@code null}.
      * @param extraInfo optional {@code String} providing extra information about the state change
diff --git a/core/java/android/net/MobileDataStateTracker.java b/core/java/android/net/MobileDataStateTracker.java
index 54a89ad..57f8d48 100644
--- a/core/java/android/net/MobileDataStateTracker.java
+++ b/core/java/android/net/MobileDataStateTracker.java
@@ -376,7 +376,7 @@
      * Record the detailed state of a network, and if it is a
      * change from the previous state, send a notification to
      * any listeners.
-     * @param state the new @{code DetailedState}
+     * @param state the new {@code DetailedState}
      * @param reason a {@code String} indicating a reason for the state change,
      * if one was supplied. May be {@code null}.
      * @param extraInfo optional {@code String} providing extra information about the state change
diff --git a/core/java/android/nfc/NdefRecord.java b/core/java/android/nfc/NdefRecord.java
index 8872335..ed1c5b3 100644
--- a/core/java/android/nfc/NdefRecord.java
+++ b/core/java/android/nfc/NdefRecord.java
@@ -70,7 +70,7 @@
  * indicate location with an NDEF message, provide support for chunking of
  * NDEF records, and to pack optional fields. This class does not expose
  * those details. To write an NDEF Record as binary you must first put it
- * into an @{link NdefMessage}, then call {@link NdefMessage#toByteArray()}.
+ * into an {@link NdefMessage}, then call {@link NdefMessage#toByteArray()}.
  * <p class="note">
  * {@link NdefMessage} and {@link NdefRecord} implementations are
  * always available, even on Android devices that do not have NFC hardware.
diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java
index 577fc43..7b51119 100644
--- a/core/java/android/os/Binder.java
+++ b/core/java/android/os/Binder.java
@@ -32,7 +32,7 @@
  * the standard support creating a local implementation of such an object.
  * 
  * <p>Most developers will not implement this class directly, instead using the
- * <a href="{@docRoot}guide/developing/tools/aidl.html">aidl</a> tool to describe the desired
+ * <a href="{@docRoot}guide/components/aidl.html">aidl</a> tool to describe the desired
  * interface, having it generate the appropriate Binder subclass.  You can,
  * however, derive directly from Binder to implement your own custom RPC
  * protocol or simply instantiate a raw Binder object directly to use as a
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java
index fbf512c..cb6c1dc 100644
--- a/core/java/android/os/storage/StorageManager.java
+++ b/core/java/android/os/storage/StorageManager.java
@@ -289,7 +289,7 @@
      * Constructs a StorageManager object through which an application can
      * can communicate with the systems mount service.
      * 
-     * @param tgtLooper The {@android.os.Looper} which events will be received on.
+     * @param tgtLooper The {@link android.os.Looper} which events will be received on.
      *
      * <p>Applications can get instance of this class by calling
      * {@link android.content.Context#getSystemService(java.lang.String)} with an argument
diff --git a/core/java/android/preference/Preference.java b/core/java/android/preference/Preference.java
index 8df4339..336960e 100644
--- a/core/java/android/preference/Preference.java
+++ b/core/java/android/preference/Preference.java
@@ -55,6 +55,13 @@
  * {@link SharedPreferences}. It is up to the subclass to decide how to store
  * the value.
  * 
+ * <div class="special reference">
+ * <h3>Developer Guides</h3>
+ * <p>For information about building a settings UI with Preferences,
+ * read the <a href="{@docRoot}guide/topics/ui/settings.html">Settings</a>
+ * guide.</p>
+ * </div>
+ * 
  * @attr ref android.R.styleable#Preference_icon
  * @attr ref android.R.styleable#Preference_key
  * @attr ref android.R.styleable#Preference_title
diff --git a/core/java/android/preference/PreferenceActivity.java b/core/java/android/preference/PreferenceActivity.java
index 140bff0..9bfa8c0 100644
--- a/core/java/android/preference/PreferenceActivity.java
+++ b/core/java/android/preference/PreferenceActivity.java
@@ -84,6 +84,13 @@
  * items.  Doing this implicitly switches the class into its new "headers
  * + fragments" mode rather than the old style of just showing a single
  * preferences list.
+ * 
+ * <div class="special reference">
+ * <h3>Developer Guides</h3>
+ * <p>For information about using {@code PreferenceActivity},
+ * read the <a href="{@docRoot}guide/topics/ui/settings.html">Settings</a>
+ * guide.</p>
+ * </div>
  *
  * <a name="SampleCode"></a>
  * <h3>Sample Code</h3>
diff --git a/core/java/android/preference/PreferenceCategory.java b/core/java/android/preference/PreferenceCategory.java
index 237c5ce..d8af3248 100644
--- a/core/java/android/preference/PreferenceCategory.java
+++ b/core/java/android/preference/PreferenceCategory.java
@@ -24,6 +24,13 @@
 /**
  * Used to group {@link Preference} objects
  * and provide a disabled title above the group.
+ * 
+ * <div class="special reference">
+ * <h3>Developer Guides</h3>
+ * <p>For information about building a settings UI with Preferences,
+ * read the <a href="{@docRoot}guide/topics/ui/settings.html">Settings</a>
+ * guide.</p>
+ * </div>
  */
 public class PreferenceCategory extends PreferenceGroup {
     private static final String TAG = "PreferenceCategory";
diff --git a/core/java/android/preference/PreferenceFragment.java b/core/java/android/preference/PreferenceFragment.java
index bdd858b..11d8878 100644
--- a/core/java/android/preference/PreferenceFragment.java
+++ b/core/java/android/preference/PreferenceFragment.java
@@ -74,6 +74,13 @@
  * As a convenience, this fragment implements a click listener for any
  * preference in the current hierarchy, see
  * {@link #onPreferenceTreeClick(PreferenceScreen, Preference)}.
+ * 
+ * <div class="special reference">
+ * <h3>Developer Guides</h3>
+ * <p>For information about using {@code PreferenceFragment},
+ * read the <a href="{@docRoot}guide/topics/ui/settings.html">Settings</a>
+ * guide.</p>
+ * </div>
  *
  * <a name="SampleCode"></a>
  * <h3>Sample Code</h3>
diff --git a/core/java/android/preference/PreferenceGroup.java b/core/java/android/preference/PreferenceGroup.java
index d008fd6..f33a6be 100644
--- a/core/java/android/preference/PreferenceGroup.java
+++ b/core/java/android/preference/PreferenceGroup.java
@@ -33,6 +33,13 @@
  * {@link Preference} objects. It is a base class for  Preference objects that are
  * parents, such as {@link PreferenceCategory} and {@link PreferenceScreen}.
  * 
+ * <div class="special reference">
+ * <h3>Developer Guides</h3>
+ * <p>For information about building a settings UI with Preferences,
+ * read the <a href="{@docRoot}guide/topics/ui/settings.html">Settings</a>
+ * guide.</p>
+ * </div>
+ * 
  * @attr ref android.R.styleable#PreferenceGroup_orderingFromXml
  */
 public abstract class PreferenceGroup extends Preference implements GenericInflater.Parent<Preference> {
diff --git a/core/java/android/preference/PreferenceManager.java b/core/java/android/preference/PreferenceManager.java
index 6562de90..5ca7d79 100644
--- a/core/java/android/preference/PreferenceManager.java
+++ b/core/java/android/preference/PreferenceManager.java
@@ -415,19 +415,20 @@
     }
     
     /**
-     * Sets the default values from a preference hierarchy in XML. This should
+     * Sets the default values from an XML preference file by reading the values defined
+     * by each {@link Preference} item's {@code android:defaultValue} attribute. This should
      * be called by the application's main activity.
      * <p>
-     * If {@code readAgain} is false, this will only set the default values if this
-     * method has never been called in the past (or the
+     * 
+     * @param context The context of the shared preferences.
+     * @param resId The resource ID of the preference XML file.
+     * @param readAgain Whether to re-read the default values.
+     * If false, this method sets the default values only if this
+     * method has never been called in the past (or if the
      * {@link #KEY_HAS_SET_DEFAULT_VALUES} in the default value shared
      * preferences file is false). To attempt to set the default values again
      * bypassing this check, set {@code readAgain} to true.
-     * 
-     * @param context The context of the shared preferences.
-     * @param resId The resource ID of the preference hierarchy XML file.
-     * @param readAgain Whether to re-read the default values.
-     *            <p>
+     *            <p class="note">
      *            Note: this will NOT reset preferences back to their default
      *            values. For that functionality, use
      *            {@link PreferenceManager#getDefaultSharedPreferences(Context)}
@@ -445,6 +446,25 @@
      * Similar to {@link #setDefaultValues(Context, int, boolean)} but allows
      * the client to provide the filename and mode of the shared preferences
      * file.
+     *
+     * @param context The context of the shared preferences.
+     * @param sharedPreferencesName A custom name for the shared preferences file.
+     * @param sharedPreferencesMode The file creation mode for the shared preferences file, such
+     * as {@link android.content.Context#MODE_PRIVATE} or {@link
+     * android.content.Context#MODE_PRIVATE}
+     * @param resId The resource ID of the preference XML file.
+     * @param readAgain Whether to re-read the default values.
+     * If false, this method will set the default values only if this
+     * method has never been called in the past (or if the
+     * {@link #KEY_HAS_SET_DEFAULT_VALUES} in the default value shared
+     * preferences file is false). To attempt to set the default values again
+     * bypassing this check, set {@code readAgain} to true.
+     *            <p class="note">
+     *            Note: this will NOT reset preferences back to their default
+     *            values. For that functionality, use
+     *            {@link PreferenceManager#getDefaultSharedPreferences(Context)}
+     *            and clear it followed by a call to this method with this
+     *            parameter set to true.
      * 
      * @see #setDefaultValues(Context, int, boolean)
      * @see #setSharedPreferencesName(String)
diff --git a/core/java/android/preference/PreferenceScreen.java b/core/java/android/preference/PreferenceScreen.java
index c17111a..db80676 100644
--- a/core/java/android/preference/PreferenceScreen.java
+++ b/core/java/android/preference/PreferenceScreen.java
@@ -75,6 +75,13 @@
  * clicked will show another screen of preferences such as "Prefer WiFi" (and
  * the other preferences that are children of the "second_preferencescreen" tag).
  * 
+ * <div class="special reference">
+ * <h3>Developer Guides</h3>
+ * <p>For information about building a settings UI with Preferences,
+ * read the <a href="{@docRoot}guide/topics/ui/settings.html">Settings</a>
+ * guide.</p>
+ * </div>
+ *
  * @see PreferenceCategory
  */
 public final class PreferenceScreen extends PreferenceGroup implements AdapterView.OnItemClickListener,
diff --git a/core/java/android/provider/CalendarContract.java b/core/java/android/provider/CalendarContract.java
index 1ef0916..a28585c 100644
--- a/core/java/android/provider/CalendarContract.java
+++ b/core/java/android/provider/CalendarContract.java
@@ -1442,9 +1442,9 @@
                         attendeeValues.put(Attendees.ATTENDEE_STATUS,
                                 subCursor.getInt(COLUMN_ATTENDEE_STATUS));
                         attendeeValues.put(Attendees.ATTENDEE_IDENTITY,
-                                subCursor.getInt(COLUMN_ATTENDEE_IDENTITY));
+                                subCursor.getString(COLUMN_ATTENDEE_IDENTITY));
                         attendeeValues.put(Attendees.ATTENDEE_ID_NAMESPACE,
-                                subCursor.getInt(COLUMN_ATTENDEE_ID_NAMESPACE));
+                                subCursor.getString(COLUMN_ATTENDEE_ID_NAMESPACE));
                         entity.addSubValue(Attendees.CONTENT_URI, attendeeValues);
                     }
                 } finally {
diff --git a/core/java/android/view/GestureDetector.java b/core/java/android/view/GestureDetector.java
index 0114a41..4bbdd4e 100644
--- a/core/java/android/view/GestureDetector.java
+++ b/core/java/android/view/GestureDetector.java
@@ -226,17 +226,12 @@
      */
     private boolean mIsDoubleTapping;
 
-    private float mLastMotionY;
-    private float mLastMotionX;
+    private float mLastFocusX;
+    private float mLastFocusY;
+    private float mDownFocusX;
+    private float mDownFocusY;
 
     private boolean mIsLongpressEnabled;
-    
-    /**
-     * True if we are at a target API level of >= Froyo or the developer can
-     * explicitly set it. If true, input events with > 1 pointer will be ignored
-     * so we can work side by side with multitouch gesture detectors.
-     */
-    private boolean mIgnoreMultitouch;
 
     /**
      * Determines speed during touch scrolling
@@ -349,8 +344,16 @@
      * @throws NullPointerException if {@code listener} is null.
      */
     public GestureDetector(Context context, OnGestureListener listener, Handler handler) {
-        this(context, listener, handler, context != null &&
-                context.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.FROYO);
+        if (handler != null) {
+            mHandler = new GestureHandler(handler);
+        } else {
+            mHandler = new GestureHandler();
+        }
+        mListener = listener;
+        if (listener instanceof OnDoubleTapListener) {
+            setOnDoubleTapListener((OnDoubleTapListener) listener);
+        }
+        init(context);
     }
     
     /**
@@ -362,31 +365,19 @@
      * @param listener the listener invoked for all the callbacks, this must
      * not be null.
      * @param handler the handler to use
-     * @param ignoreMultitouch whether events involving more than one pointer should
-     * be ignored.
      *
      * @throws NullPointerException if {@code listener} is null.
      */
     public GestureDetector(Context context, OnGestureListener listener, Handler handler,
-            boolean ignoreMultitouch) {
-        if (handler != null) {
-            mHandler = new GestureHandler(handler);
-        } else {
-            mHandler = new GestureHandler();
-        }
-        mListener = listener;
-        if (listener instanceof OnDoubleTapListener) {
-            setOnDoubleTapListener((OnDoubleTapListener) listener);
-        }
-        init(context, ignoreMultitouch);
+            boolean unused) {
+        this(context, listener, handler);
     }
 
-    private void init(Context context, boolean ignoreMultitouch) {
+    private void init(Context context) {
         if (mListener == null) {
             throw new NullPointerException("OnGestureListener must not be null");
         }
         mIsLongpressEnabled = true;
-        mIgnoreMultitouch = ignoreMultitouch;
 
         // Fallback to support pre-donuts releases
         int touchSlop, doubleTapSlop, doubleTapTouchSlop;
@@ -456,34 +447,41 @@
         }
 
         final int action = ev.getAction();
-        final float y = ev.getY();
-        final float x = ev.getX();
 
         if (mVelocityTracker == null) {
             mVelocityTracker = VelocityTracker.obtain();
         }
         mVelocityTracker.addMovement(ev);
 
+        final boolean pointerUp =
+                (action & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_POINTER_UP;
+        final int skipIndex = pointerUp ? ev.getActionIndex() : -1;
+
+        // Determine focal point
+        float sumX = 0, sumY = 0;
+        final int count = ev.getPointerCount();
+        for (int i = 0; i < count; i++) {
+            if (skipIndex == i) continue;
+            sumX += ev.getX(i);
+            sumY += ev.getY(i);
+        }
+        final int div = pointerUp ? count - 1 : count;
+        final float focusX = sumX / div;
+        final float focusY = sumY / div;
+
         boolean handled = false;
 
         switch (action & MotionEvent.ACTION_MASK) {
         case MotionEvent.ACTION_POINTER_DOWN:
-            if (mIgnoreMultitouch) {
-                // Multitouch event - abort.
-                cancel();
-            }
+            mDownFocusX = mLastFocusX = focusX;
+            mDownFocusY = mLastFocusY = focusY;
+            // Cancel long press and taps
+            cancelTaps();
             break;
 
         case MotionEvent.ACTION_POINTER_UP:
-            // Ending a multitouch gesture and going back to 1 finger
-            if (mIgnoreMultitouch && ev.getPointerCount() == 2) {
-                int index = (((action & MotionEvent.ACTION_POINTER_INDEX_MASK)
-                        >> MotionEvent.ACTION_POINTER_INDEX_SHIFT) == 0) ? 1 : 0;
-                mLastMotionX = ev.getX(index);
-                mLastMotionY = ev.getY(index);
-                mVelocityTracker.recycle();
-                mVelocityTracker = VelocityTracker.obtain();
-            }
+            mDownFocusX = mLastFocusX = focusX;
+            mDownFocusY = mLastFocusY = focusY;
             break;
 
         case MotionEvent.ACTION_DOWN:
@@ -504,8 +502,8 @@
                 }
             }
 
-            mLastMotionX = x;
-            mLastMotionY = y;
+            mDownFocusX = mLastFocusX = focusX;
+            mDownFocusY = mLastFocusY = focusY;
             if (mCurrentDownEvent != null) {
                 mCurrentDownEvent.recycle();
             }
@@ -525,22 +523,22 @@
             break;
 
         case MotionEvent.ACTION_MOVE:
-            if (mInLongPress || (mIgnoreMultitouch && ev.getPointerCount() > 1)) {
+            if (mInLongPress) {
                 break;
             }
-            final float scrollX = mLastMotionX - x;
-            final float scrollY = mLastMotionY - y;
+            final float scrollX = mLastFocusX - focusX;
+            final float scrollY = mLastFocusY - focusY;
             if (mIsDoubleTapping) {
                 // Give the move events of the double-tap
                 handled |= mDoubleTapListener.onDoubleTapEvent(ev);
             } else if (mAlwaysInTapRegion) {
-                final int deltaX = (int) (x - mCurrentDownEvent.getX());
-                final int deltaY = (int) (y - mCurrentDownEvent.getY());
+                final int deltaX = (int) (focusX - mDownFocusX);
+                final int deltaY = (int) (focusY - mDownFocusY);
                 int distance = (deltaX * deltaX) + (deltaY * deltaY);
                 if (distance > mTouchSlopSquare) {
                     handled = mListener.onScroll(mCurrentDownEvent, ev, scrollX, scrollY);
-                    mLastMotionX = x;
-                    mLastMotionY = y;
+                    mLastFocusX = focusX;
+                    mLastFocusY = focusY;
                     mAlwaysInTapRegion = false;
                     mHandler.removeMessages(TAP);
                     mHandler.removeMessages(SHOW_PRESS);
@@ -551,8 +549,8 @@
                 }
             } else if ((Math.abs(scrollX) >= 1) || (Math.abs(scrollY) >= 1)) {
                 handled = mListener.onScroll(mCurrentDownEvent, ev, scrollX, scrollY);
-                mLastMotionX = x;
-                mLastMotionY = y;
+                mLastFocusX = focusX;
+                mLastFocusY = focusY;
             }
             break;
 
@@ -571,9 +569,10 @@
 
                 // A fling must travel the minimum tap distance
                 final VelocityTracker velocityTracker = mVelocityTracker;
+                final int pointerId = ev.getPointerId(0);
                 velocityTracker.computeCurrentVelocity(1000, mMaximumFlingVelocity);
-                final float velocityY = velocityTracker.getYVelocity();
-                final float velocityX = velocityTracker.getXVelocity();
+                final float velocityY = velocityTracker.getYVelocity(pointerId);
+                final float velocityX = velocityTracker.getXVelocity(pointerId);
 
                 if ((Math.abs(velocityY) > mMinimumFlingVelocity)
                         || (Math.abs(velocityX) > mMinimumFlingVelocity)){
@@ -622,6 +621,18 @@
         }
     }
 
+    private void cancelTaps() {
+        mHandler.removeMessages(SHOW_PRESS);
+        mHandler.removeMessages(LONG_PRESS);
+        mHandler.removeMessages(TAP);
+        mIsDoubleTapping = false;
+        mAlwaysInTapRegion = false;
+        mAlwaysInBiggerTapRegion = false;
+        if (mInLongPress) {
+            mInLongPress = false;
+        }
+    }
+
     private boolean isConsideredDoubleTap(MotionEvent firstDown, MotionEvent firstUp,
             MotionEvent secondDown) {
         if (!mAlwaysInBiggerTapRegion) {
diff --git a/core/java/android/view/ScaleGestureDetector.java b/core/java/android/view/ScaleGestureDetector.java
index 73f94bc..bcb8800 100644
--- a/core/java/android/view/ScaleGestureDetector.java
+++ b/core/java/android/view/ScaleGestureDetector.java
@@ -17,14 +17,13 @@
 package android.view;
 
 import android.content.Context;
-import android.util.DisplayMetrics;
 import android.util.FloatMath;
-import android.util.Log;
 
 /**
- * Detects transformation gestures involving more than one pointer ("multitouch")
- * using the supplied {@link MotionEvent}s. The {@link OnScaleGestureListener}
- * callback will notify users when a particular gesture event has occurred.
+ * Detects scaling transformation gestures using the supplied {@link MotionEvent}s.
+ * The {@link OnScaleGestureListener} callback will notify users when a particular
+ * gesture event has occurred.
+ *
  * This class should only be used with {@link MotionEvent}s reported via touch.
  *
  * To use this class:
@@ -87,8 +86,8 @@
          * pointers going up.
          *
          * Once a scale has ended, {@link ScaleGestureDetector#getFocusX()}
-         * and {@link ScaleGestureDetector#getFocusY()} will return the location
-         * of the pointer remaining on the screen.
+         * and {@link ScaleGestureDetector#getFocusY()} will return focal point
+         * of the pointers remaining on the screen.
          *
          * @param detector The detector reporting the event - use this to
          *          retrieve extended info about event state.
@@ -121,43 +120,23 @@
         }
     }
 
-    /**
-     * This value is the threshold ratio between our previous combined pressure
-     * and the current combined pressure. We will only fire an onScale event if
-     * the computed ratio between the current and previous event pressures is
-     * greater than this value. When pressure decreases rapidly between events
-     * the position values can often be imprecise, as it usually indicates
-     * that the user is in the process of lifting a pointer off of the device.
-     * Its value was tuned experimentally.
-     */
-    private static final float PRESSURE_THRESHOLD = 0.67f;
-
     private final Context mContext;
     private final OnScaleGestureListener mListener;
-    private boolean mGestureInProgress;
-
-    private MotionEvent mPrevEvent;
-    private MotionEvent mCurrEvent;
 
     private float mFocusX;
     private float mFocusY;
-    private float mPrevFingerDiffX;
-    private float mPrevFingerDiffY;
-    private float mCurrFingerDiffX;
-    private float mCurrFingerDiffY;
-    private float mCurrLen;
-    private float mPrevLen;
-    private float mScaleFactor;
-    private float mCurrPressure;
-    private float mPrevPressure;
-    private long mTimeDelta;
 
-    private boolean mInvalidGesture;
-
-    // Pointer IDs currently responsible for the two fingers controlling the gesture
-    private int mActiveId0;
-    private int mActiveId1;
-    private boolean mActive0MostRecent;
+    private float mCurrSpan;
+    private float mPrevSpan;
+    private float mInitialSpan;
+    private float mCurrSpanX;
+    private float mCurrSpanY;
+    private float mPrevSpanX;
+    private float mPrevSpanY;
+    private long mCurrTime;
+    private long mPrevTime;
+    private boolean mInProgress;
+    private int mSpanSlop;
 
     /**
      * Consistency verifier for debugging purposes.
@@ -169,8 +148,21 @@
     public ScaleGestureDetector(Context context, OnScaleGestureListener listener) {
         mContext = context;
         mListener = listener;
+        mSpanSlop = ViewConfiguration.get(context).getScaledTouchSlop() * 2;
     }
 
+    /**
+     * Accepts MotionEvents and dispatches events to a {@link OnScaleGestureListener}
+     * when appropriate.
+     *
+     * <p>Applications should pass a complete and consistent event stream to this method.
+     * A complete and consistent event stream involves all MotionEvents from the initial
+     * ACTION_DOWN to the final ACTION_UP or ACTION_CANCEL.</p>
+     *
+     * @param event The event to process
+     * @return true if the event was processed and the detector wants to receive the
+     *         rest of the MotionEvents in this event stream.
+     */
     public boolean onTouchEvent(MotionEvent event) {
         if (mInputEventConsistencyVerifier != null) {
             mInputEventConsistencyVerifier.onTouchEvent(event, 0);
@@ -178,265 +170,115 @@
 
         final int action = event.getActionMasked();
 
-        if (action == MotionEvent.ACTION_DOWN) {
-            reset(); // Start fresh
-        }
-
-        boolean handled = true;
-        if (mInvalidGesture) {
-            handled = false;
-        } else if (!mGestureInProgress) {
-            switch (action) {
-                case MotionEvent.ACTION_DOWN: {
-                    mActiveId0 = event.getPointerId(0);
-                    mActive0MostRecent = true;
-                }
-                break;
-
-                case MotionEvent.ACTION_UP:
-                    reset();
-                    break;
-
-                case MotionEvent.ACTION_POINTER_DOWN: {
-                    // We have a new multi-finger gesture
-                    if (mPrevEvent != null) mPrevEvent.recycle();
-                    mPrevEvent = MotionEvent.obtain(event);
-                    mTimeDelta = 0;
-
-                    int index1 = event.getActionIndex();
-                    int index0 = event.findPointerIndex(mActiveId0);
-                    mActiveId1 = event.getPointerId(index1);
-                    if (index0 < 0 || index0 == index1) {
-                        // Probably someone sending us a broken event stream.
-                        index0 = findNewActiveIndex(event, mActiveId1, -1);
-                        mActiveId0 = event.getPointerId(index0);
-                    }
-                    mActive0MostRecent = false;
-
-                    setContext(event);
-
-                    mGestureInProgress = mListener.onScaleBegin(this);
-                    break;
-                }
-            }
-        } else {
-            // Transform gesture in progress - attempt to handle it
-            switch (action) {
-                case MotionEvent.ACTION_POINTER_DOWN: {
-                    // End the old gesture and begin a new one with the most recent two fingers.
-                    mListener.onScaleEnd(this);
-                    final int oldActive0 = mActiveId0;
-                    final int oldActive1 = mActiveId1;
-                    reset();
-
-                    mPrevEvent = MotionEvent.obtain(event);
-                    mActiveId0 = mActive0MostRecent ? oldActive0 : oldActive1;
-                    mActiveId1 = event.getPointerId(event.getActionIndex());
-                    mActive0MostRecent = false;
-
-                    int index0 = event.findPointerIndex(mActiveId0);
-                    if (index0 < 0 || mActiveId0 == mActiveId1) {
-                        // Probably someone sending us a broken event stream.
-                        Log.e(TAG, "Got " + MotionEvent.actionToString(action) +
-                                " with bad state while a gesture was in progress. " +
-                                "Did you forget to pass an event to " +
-                                "ScaleGestureDetector#onTouchEvent?");
-                        index0 = findNewActiveIndex(event, mActiveId1, -1);
-                        mActiveId0 = event.getPointerId(index0);
-                    }
-
-                    setContext(event);
-
-                    mGestureInProgress = mListener.onScaleBegin(this);
-                }
-                break;
-
-                case MotionEvent.ACTION_POINTER_UP: {
-                    final int pointerCount = event.getPointerCount();
-                    final int actionIndex = event.getActionIndex();
-                    final int actionId = event.getPointerId(actionIndex);
-
-                    boolean gestureEnded = false;
-                    if (pointerCount > 2) {
-                        if (actionId == mActiveId0) {
-                            final int newIndex = findNewActiveIndex(event, mActiveId1, actionIndex);
-                            if (newIndex >= 0) {
-                                mListener.onScaleEnd(this);
-                                mActiveId0 = event.getPointerId(newIndex);
-                                mActive0MostRecent = true;
-                                mPrevEvent = MotionEvent.obtain(event);
-                                setContext(event);
-                                mGestureInProgress = mListener.onScaleBegin(this);
-                            } else {
-                                gestureEnded = true;
-                            }
-                        } else if (actionId == mActiveId1) {
-                            final int newIndex = findNewActiveIndex(event, mActiveId0, actionIndex);
-                            if (newIndex >= 0) {
-                                mListener.onScaleEnd(this);
-                                mActiveId1 = event.getPointerId(newIndex);
-                                mActive0MostRecent = false;
-                                mPrevEvent = MotionEvent.obtain(event);
-                                setContext(event);
-                                mGestureInProgress = mListener.onScaleBegin(this);
-                            } else {
-                                gestureEnded = true;
-                            }
-                        }
-                        mPrevEvent.recycle();
-                        mPrevEvent = MotionEvent.obtain(event);
-                        setContext(event);
-                    } else {
-                        gestureEnded = true;
-                    }
-
-                    if (gestureEnded) {
-                        // Gesture ended
-                        setContext(event);
-
-                        // Set focus point to the remaining finger
-                        final int activeId = actionId == mActiveId0 ? mActiveId1 : mActiveId0;
-                        final int index = event.findPointerIndex(activeId);
-                        mFocusX = event.getX(index);
-                        mFocusY = event.getY(index);
-
-                        mListener.onScaleEnd(this);
-                        reset();
-                        mActiveId0 = activeId;
-                        mActive0MostRecent = true;
-                    }
-                }
-                break;
-
-                case MotionEvent.ACTION_CANCEL:
-                    mListener.onScaleEnd(this);
-                    reset();
-                    break;
-
-                case MotionEvent.ACTION_UP:
-                    reset();
-                    break;
-
-                case MotionEvent.ACTION_MOVE: {
-                    setContext(event);
-
-                    // Only accept the event if our relative pressure is within
-                    // a certain limit - this can help filter shaky data as a
-                    // finger is lifted.
-                    if (mCurrPressure / mPrevPressure > PRESSURE_THRESHOLD) {
-                        final boolean updatePrevious = mListener.onScale(this);
-
-                        if (updatePrevious) {
-                            mPrevEvent.recycle();
-                            mPrevEvent = MotionEvent.obtain(event);
-                        }
-                    }
-                }
-                break;
-            }
-        }
-
-        if (!handled && mInputEventConsistencyVerifier != null) {
-            mInputEventConsistencyVerifier.onUnhandledEvent(event, 0);
-        }
-        return handled;
-    }
-
-    private int findNewActiveIndex(MotionEvent ev, int otherActiveId, int removedPointerIndex) {
-        final int pointerCount = ev.getPointerCount();
-
-        // It's ok if this isn't found and returns -1, it simply won't match.
-        final int otherActiveIndex = ev.findPointerIndex(otherActiveId);
-
-        // Pick a new id and update tracking state.
-        for (int i = 0; i < pointerCount; i++) {
-            if (i != removedPointerIndex && i != otherActiveIndex) {
-                return i;
-            }
-        }
-        return -1;
-    }
-
-    private void setContext(MotionEvent curr) {
-        if (mCurrEvent != null) {
-            mCurrEvent.recycle();
-        }
-        mCurrEvent = MotionEvent.obtain(curr);
-
-        mCurrLen = -1;
-        mPrevLen = -1;
-        mScaleFactor = -1;
-
-        final MotionEvent prev = mPrevEvent;
-
-        final int prevIndex0 = prev.findPointerIndex(mActiveId0);
-        final int prevIndex1 = prev.findPointerIndex(mActiveId1);
-        final int currIndex0 = curr.findPointerIndex(mActiveId0);
-        final int currIndex1 = curr.findPointerIndex(mActiveId1);
-
-        if (prevIndex0 < 0 || prevIndex1 < 0 || currIndex0 < 0 || currIndex1 < 0) {
-            mInvalidGesture = true;
-            Log.e(TAG, "Invalid MotionEvent stream detected.", new Throwable());
-            if (mGestureInProgress) {
+        final boolean streamComplete = action == MotionEvent.ACTION_UP ||
+                action == MotionEvent.ACTION_CANCEL;
+        if (action == MotionEvent.ACTION_DOWN || streamComplete) {
+            // Reset any scale in progress with the listener.
+            // If it's an ACTION_DOWN we're beginning a new event stream.
+            // This means the app probably didn't give us all the events. Shame on it.
+            if (mInProgress) {
                 mListener.onScaleEnd(this);
+                mInProgress = false;
+                mInitialSpan = 0;
             }
-            return;
+
+            if (streamComplete) {
+                return true;
+            }
         }
 
-        final float px0 = prev.getX(prevIndex0);
-        final float py0 = prev.getY(prevIndex0);
-        final float px1 = prev.getX(prevIndex1);
-        final float py1 = prev.getY(prevIndex1);
-        final float cx0 = curr.getX(currIndex0);
-        final float cy0 = curr.getY(currIndex0);
-        final float cx1 = curr.getX(currIndex1);
-        final float cy1 = curr.getY(currIndex1);
+        final boolean configChanged =
+                action == MotionEvent.ACTION_POINTER_UP ||
+                action == MotionEvent.ACTION_POINTER_DOWN;
+        final boolean pointerUp = action == MotionEvent.ACTION_POINTER_UP;
+        final int skipIndex = pointerUp ? event.getActionIndex() : -1;
 
-        final float pvx = px1 - px0;
-        final float pvy = py1 - py0;
-        final float cvx = cx1 - cx0;
-        final float cvy = cy1 - cy0;
-        mPrevFingerDiffX = pvx;
-        mPrevFingerDiffY = pvy;
-        mCurrFingerDiffX = cvx;
-        mCurrFingerDiffY = cvy;
-
-        mFocusX = cx0 + cvx * 0.5f;
-        mFocusY = cy0 + cvy * 0.5f;
-        mTimeDelta = curr.getEventTime() - prev.getEventTime();
-        mCurrPressure = curr.getPressure(currIndex0) + curr.getPressure(currIndex1);
-        mPrevPressure = prev.getPressure(prevIndex0) + prev.getPressure(prevIndex1);
-    }
-
-    private void reset() {
-        if (mPrevEvent != null) {
-            mPrevEvent.recycle();
-            mPrevEvent = null;
+        // Determine focal point
+        float sumX = 0, sumY = 0;
+        final int count = event.getPointerCount();
+        for (int i = 0; i < count; i++) {
+            if (skipIndex == i) continue;
+            sumX += event.getX(i);
+            sumY += event.getY(i);
         }
-        if (mCurrEvent != null) {
-            mCurrEvent.recycle();
-            mCurrEvent = null;
+        final int div = pointerUp ? count - 1 : count;
+        final float focusX = sumX / div;
+        final float focusY = sumY / div;
+
+        // Determine average deviation from focal point
+        float devSumX = 0, devSumY = 0;
+        for (int i = 0; i < count; i++) {
+            if (skipIndex == i) continue;
+            devSumX += Math.abs(event.getX(i) - focusX);
+            devSumY += Math.abs(event.getY(i) - focusY);
         }
-        mGestureInProgress = false;
-        mActiveId0 = -1;
-        mActiveId1 = -1;
-        mInvalidGesture = false;
+        final float devX = devSumX / div;
+        final float devY = devSumY / div;
+
+        // Span is the average distance between touch points through the focal point;
+        // i.e. the diameter of the circle with a radius of the average deviation from
+        // the focal point.
+        final float spanX = devX * 2;
+        final float spanY = devY * 2;
+        final float span = FloatMath.sqrt(spanX * spanX + spanY * spanY);
+
+        // Dispatch begin/end events as needed.
+        // If the configuration changes, notify the app to reset its current state by beginning
+        // a fresh scale event stream.
+        final boolean wasInProgress = mInProgress;
+        mFocusX = focusX;
+        mFocusY = focusY;
+        if (mInProgress && (span == 0 || configChanged)) {
+            mListener.onScaleEnd(this);
+            mInProgress = false;
+            mInitialSpan = span;
+        }
+        if (configChanged) {
+            mPrevSpanX = mCurrSpanX = spanX;
+            mPrevSpanY = mCurrSpanY = spanY;
+            mInitialSpan = mPrevSpan = mCurrSpan = span;
+        }
+        if (!mInProgress && span != 0 &&
+                (wasInProgress || Math.abs(span - mInitialSpan) > mSpanSlop)) {
+            mPrevSpanX = mCurrSpanX = spanX;
+            mPrevSpanY = mCurrSpanY = spanY;
+            mPrevSpan = mCurrSpan = span;
+            mInProgress = mListener.onScaleBegin(this);
+        }
+
+        // Handle motion; focal point and span/scale factor are changing.
+        if (action == MotionEvent.ACTION_MOVE) {
+            mCurrSpanX = spanX;
+            mCurrSpanY = spanY;
+            mCurrSpan = span;
+
+            boolean updatePrev = true;
+            if (mInProgress) {
+                updatePrev = mListener.onScale(this);
+            }
+
+            if (updatePrev) {
+                mPrevSpanX = mCurrSpanX;
+                mPrevSpanY = mCurrSpanY;
+                mPrevSpan = mCurrSpan;
+            }
+        }
+
+        return true;
     }
 
     /**
-     * Returns {@code true} if a two-finger scale gesture is in progress.
-     * @return {@code true} if a scale gesture is in progress, {@code false} otherwise.
+     * Returns {@code true} if a scale gesture is in progress.
      */
     public boolean isInProgress() {
-        return mGestureInProgress;
+        return mInProgress;
     }
 
     /**
      * Get the X coordinate of the current gesture's focal point.
-     * If a gesture is in progress, the focal point is directly between
-     * the two pointers forming the gesture.
-     * If a gesture is ending, the focal point is the location of the
-     * remaining pointer on the screen.
+     * If a gesture is in progress, the focal point is between
+     * each of the pointers forming the gesture.
+     *
      * If {@link #isInProgress()} would return false, the result of this
      * function is undefined.
      *
@@ -448,10 +290,9 @@
 
     /**
      * Get the Y coordinate of the current gesture's focal point.
-     * If a gesture is in progress, the focal point is directly between
-     * the two pointers forming the gesture.
-     * If a gesture is ending, the focal point is the location of the
-     * remaining pointer on the screen.
+     * If a gesture is in progress, the focal point is between
+     * each of the pointers forming the gesture.
+     *
      * If {@link #isInProgress()} would return false, the result of this
      * function is undefined.
      *
@@ -462,73 +303,63 @@
     }
 
     /**
-     * Return the current distance between the two pointers forming the
-     * gesture in progress.
+     * Return the average distance between each of the pointers forming the
+     * gesture in progress through the focal point.
      *
      * @return Distance between pointers in pixels.
      */
     public float getCurrentSpan() {
-        if (mCurrLen == -1) {
-            final float cvx = mCurrFingerDiffX;
-            final float cvy = mCurrFingerDiffY;
-            mCurrLen = FloatMath.sqrt(cvx*cvx + cvy*cvy);
-        }
-        return mCurrLen;
+        return mCurrSpan;
     }
 
     /**
-     * Return the current x distance between the two pointers forming the
-     * gesture in progress.
+     * Return the average X distance between each of the pointers forming the
+     * gesture in progress through the focal point.
      *
      * @return Distance between pointers in pixels.
      */
     public float getCurrentSpanX() {
-        return mCurrFingerDiffX;
+        return mCurrSpanX;
     }
 
     /**
-     * Return the current y distance between the two pointers forming the
-     * gesture in progress.
+     * Return the average Y distance between each of the pointers forming the
+     * gesture in progress through the focal point.
      *
      * @return Distance between pointers in pixels.
      */
     public float getCurrentSpanY() {
-        return mCurrFingerDiffY;
+        return mCurrSpanY;
     }
 
     /**
-     * Return the previous distance between the two pointers forming the
-     * gesture in progress.
+     * Return the previous average distance between each of the pointers forming the
+     * gesture in progress through the focal point.
      *
      * @return Previous distance between pointers in pixels.
      */
     public float getPreviousSpan() {
-        if (mPrevLen == -1) {
-            final float pvx = mPrevFingerDiffX;
-            final float pvy = mPrevFingerDiffY;
-            mPrevLen = FloatMath.sqrt(pvx*pvx + pvy*pvy);
-        }
-        return mPrevLen;
+        return mPrevSpan;
     }
 
     /**
-     * Return the previous x distance between the two pointers forming the
-     * gesture in progress.
+     * Return the previous average X distance between each of the pointers forming the
+     * gesture in progress through the focal point.
      *
      * @return Previous distance between pointers in pixels.
      */
     public float getPreviousSpanX() {
-        return mPrevFingerDiffX;
+        return mPrevSpanX;
     }
 
     /**
-     * Return the previous y distance between the two pointers forming the
-     * gesture in progress.
+     * Return the previous average Y distance between each of the pointers forming the
+     * gesture in progress through the focal point.
      *
      * @return Previous distance between pointers in pixels.
      */
     public float getPreviousSpanY() {
-        return mPrevFingerDiffY;
+        return mPrevSpanY;
     }
 
     /**
@@ -539,10 +370,7 @@
      * @return The current scaling factor.
      */
     public float getScaleFactor() {
-        if (mScaleFactor == -1) {
-            mScaleFactor = getCurrentSpan() / getPreviousSpan();
-        }
-        return mScaleFactor;
+        return mPrevSpan > 0 ? mCurrSpan / mPrevSpan : 1;
     }
 
     /**
@@ -552,7 +380,7 @@
      * @return Time difference since the last scaling event in milliseconds.
      */
     public long getTimeDelta() {
-        return mTimeDelta;
+        return mCurrTime - mPrevTime;
     }
 
     /**
@@ -561,6 +389,6 @@
      * @return Current event time in milliseconds.
      */
     public long getEventTime() {
-        return mCurrEvent.getEventTime();
+        return mCurrTime;
     }
 }
diff --git a/core/java/android/view/SurfaceHolder.java b/core/java/android/view/SurfaceHolder.java
index 2a16725..015a78e 100644
--- a/core/java/android/view/SurfaceHolder.java
+++ b/core/java/android/view/SurfaceHolder.java
@@ -155,7 +155,7 @@
 
     /**
      * Make the surface a fixed size.  It will never change from this size.
-     * When working with a {link SurfaceView}, this must be called from the
+     * When working with a {@link SurfaceView}, this must be called from the
      * same thread running the SurfaceView's window.
      * 
      * @param width The surface's width.
@@ -167,14 +167,14 @@
      * Allow the surface to resized based on layout of its container (this is
      * the default).  When this is enabled, you should monitor
      * {@link Callback#surfaceChanged} for changes to the size of the surface.
-     * When working with a {link SurfaceView}, this must be called from the
+     * When working with a {@link SurfaceView}, this must be called from the
      * same thread running the SurfaceView's window.
      */
     public void setSizeFromLayout();
 
     /**
      * Set the desired PixelFormat of the surface.  The default is OPAQUE.
-     * When working with a {link SurfaceView}, this must be called from the
+     * When working with a {@link SurfaceView}, this must be called from the
      * same thread running the SurfaceView's window.
      * 
      * @param format A constant from PixelFormat.
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index b1caa2f..f0ca302f 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -2362,7 +2362,7 @@
      * with a stable layout.  (Note that you should avoid using
      * {@link #SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION} by itself.)
      *
-     * If you have set the window flag {@ WindowManager.LayoutParams#FLAG_FULLSCREEN}
+     * If you have set the window flag {@link WindowManager.LayoutParams#FLAG_FULLSCREEN}
      * to hide the status bar (instead of using {@link #SYSTEM_UI_FLAG_FULLSCREEN}),
      * then a hidden status bar will be considered a "stable" state for purposes
      * here.  This allows your UI to continually hide the status bar, while still
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 6ec0955..0c83a73 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -5206,7 +5206,7 @@
     }
 
     /**
-     * If {link #addStatesFromChildren} is true, refreshes this group's
+     * If {@link #addStatesFromChildren} is true, refreshes this group's
      * drawable state (to include the states from its children).
      */
     public void childDrawableStateChanged(View child) {
diff --git a/core/java/android/view/textservice/TextServicesManager.java b/core/java/android/view/textservice/TextServicesManager.java
index 161e8fb..81b36db 100644
--- a/core/java/android/view/textservice/TextServicesManager.java
+++ b/core/java/android/view/textservice/TextServicesManager.java
@@ -91,11 +91,11 @@
 
     /**
      * Get a spell checker session for the specified spell checker
-     * @param locale the locale for the spell checker. If {@param locale} is null and
+     * @param locale the locale for the spell checker. If {@code locale} is null and
      * referToSpellCheckerLanguageSettings is true, the locale specified in Settings will be
-     * returned. If {@param locale} is not null and referToSpellCheckerLanguageSettings is true,
-     * the locale specified in Settings will be returned only when it is same as {@param locale}.
-     * Exceptionally, when referToSpellCheckerLanguageSettings is true and {@param locale} is
+     * returned. If {@code locale} is not null and referToSpellCheckerLanguageSettings is true,
+     * the locale specified in Settings will be returned only when it is same as {@code locale}.
+     * Exceptionally, when referToSpellCheckerLanguageSettings is true and {@code locale} is
      * only language (e.g. "en"), the specified locale in Settings (e.g. "en_US") will be
      * selected.
      * @param listener a spell checker session lister for getting results from a spell checker.
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 119fcd3..e493653 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -65,8 +65,8 @@
  * href="{@docRoot}guide/topics/manifest/manifest-element.html">{@code <manifest>}</a>
  * element.</p>
  *
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-webview.html">Web View
- * tutorial</a>.</p>
+ * <p>For more information, read
+ * <a href="{@docRoot}guide/webapps/webview.html">Building Web Apps in WebView</a>.</p>
  *
  * <h3>Basic usage</h3>
  *
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java
index 84a6129..501db7d 100644
--- a/core/java/android/webkit/WebViewClassic.java
+++ b/core/java/android/webkit/WebViewClassic.java
@@ -1336,20 +1336,40 @@
 
     private void onHandleUiTouchEvent(MotionEvent ev) {
         final ScaleGestureDetector detector =
-                mZoomManager.getMultiTouchGestureDetector();
+                mZoomManager.getScaleGestureDetector();
 
-        float x = ev.getX();
-        float y = ev.getY();
+        int action = ev.getActionMasked();
+        final boolean pointerUp = action == MotionEvent.ACTION_POINTER_UP;
+        final boolean configChanged =
+            action == MotionEvent.ACTION_POINTER_UP ||
+            action == MotionEvent.ACTION_POINTER_DOWN;
+        final int skipIndex = pointerUp ? ev.getActionIndex() : -1;
+
+        // Determine focal point
+        float sumX = 0, sumY = 0;
+        final int count = ev.getPointerCount();
+        for (int i = 0; i < count; i++) {
+            if (skipIndex == i) continue;
+            sumX += ev.getX(i);
+            sumY += ev.getY(i);
+        }
+        final int div = pointerUp ? count - 1 : count;
+        float x = sumX / div;
+        float y = sumY / div;
+
+        if (configChanged) {
+            mLastTouchX = Math.round(x);
+            mLastTouchY = Math.round(y);
+            mLastTouchTime = ev.getEventTime();
+            mWebView.cancelLongPress();
+            mPrivateHandler.removeMessages(SWITCH_TO_LONGPRESS);
+        }
 
         if (detector != null) {
             detector.onTouchEvent(ev);
             if (detector.isInProgress()) {
                 mLastTouchTime = ev.getEventTime();
-                x = detector.getFocusX();
-                y = detector.getFocusY();
 
-                mWebView.cancelLongPress();
-                mPrivateHandler.removeMessages(SWITCH_TO_LONGPRESS);
                 if (!mZoomManager.supportsPanDuringZoom()) {
                     return;
                 }
@@ -1360,14 +1380,9 @@
             }
         }
 
-        int action = ev.getActionMasked();
         if (action == MotionEvent.ACTION_POINTER_DOWN) {
             cancelTouch();
             action = MotionEvent.ACTION_DOWN;
-        } else if (action == MotionEvent.ACTION_POINTER_UP && ev.getPointerCount() >= 2) {
-            // set mLastTouchX/Y to the remaining points for multi-touch.
-            mLastTouchX = Math.round(x);
-            mLastTouchY = Math.round(y);
         } else if (action == MotionEvent.ACTION_MOVE) {
             // negative x or y indicate it is on the edge, skip it.
             if (x < 0 || y < 0) {
@@ -4345,7 +4360,7 @@
 
         // A multi-finger gesture can look like a long press; make sure we don't take
         // long press actions if we're scaling.
-        final ScaleGestureDetector detector = mZoomManager.getMultiTouchGestureDetector();
+        final ScaleGestureDetector detector = mZoomManager.getScaleGestureDetector();
         if (detector != null && detector.isInProgress()) {
             return false;
         }
@@ -4513,11 +4528,11 @@
     private void ensureSelectionHandles() {
         if (mSelectHandleCenter == null) {
             mSelectHandleCenter = mContext.getResources().getDrawable(
-                    com.android.internal.R.drawable.text_select_handle_middle);
+                    com.android.internal.R.drawable.text_select_handle_middle).mutate();
             mSelectHandleLeft = mContext.getResources().getDrawable(
-                    com.android.internal.R.drawable.text_select_handle_left);
+                    com.android.internal.R.drawable.text_select_handle_left).mutate();
             mSelectHandleRight = mContext.getResources().getDrawable(
-                    com.android.internal.R.drawable.text_select_handle_right);
+                    com.android.internal.R.drawable.text_select_handle_right).mutate();
             mHandleAlpha.setAlpha(mHandleAlpha.getAlpha());
             mSelectHandleCenterOffset = new Point(0,
                     -mSelectHandleCenter.getIntrinsicHeight());
@@ -5752,7 +5767,7 @@
     * and the middle point for multi-touch.
     */
     private void handleTouchEventCommon(MotionEvent event, int action, int x, int y) {
-        ScaleGestureDetector detector = mZoomManager.getMultiTouchGestureDetector();
+        ScaleGestureDetector detector = mZoomManager.getScaleGestureDetector();
 
         long eventTime = event.getEventTime();
 
diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java
index 8830119..80a6782 100644
--- a/core/java/android/webkit/ZoomManager.java
+++ b/core/java/android/webkit/ZoomManager.java
@@ -204,7 +204,7 @@
      */
     private boolean mAllowPanAndScale;
 
-    // use the framework's ScaleGestureDetector to handle multi-touch
+    // use the framework's ScaleGestureDetector to handle scaling gestures
     private ScaleGestureDetector mScaleDetector;
     private boolean mPinchToZoomAnimating = false;
 
@@ -768,7 +768,7 @@
         return isZoomAnimating();
     }
 
-    public ScaleGestureDetector getMultiTouchGestureDetector() {
+    public ScaleGestureDetector getScaleGestureDetector() {
         return mScaleDetector;
     }
 
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index 19aef8e..437da59 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -16,8 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.TypedArray;
@@ -69,6 +67,8 @@
 import android.view.inputmethod.InputConnectionWrapper;
 import android.view.inputmethod.InputMethodManager;
 
+import com.android.internal.R;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -1813,6 +1813,10 @@
         }
         ss.checkedItemCount = mCheckedItemCount;
 
+        if (mRemoteAdapter != null) {
+            mRemoteAdapter.saveRemoteViewsCache();
+        }
+
         return ss;
     }
 
@@ -5974,6 +5978,9 @@
         mDeferNotifyDataSetChanged = false;
         // Otherwise, create a new RemoteViewsAdapter for binding
         mRemoteAdapter = new RemoteViewsAdapter(getContext(), intent, this);
+        if (mRemoteAdapter.isDataReady()) {
+            setAdapter(mRemoteAdapter);
+        }
     }
 
     /**
diff --git a/core/java/android/widget/AdapterViewAnimator.java b/core/java/android/widget/AdapterViewAnimator.java
index c557963b..2266cea 100644
--- a/core/java/android/widget/AdapterViewAnimator.java
+++ b/core/java/android/widget/AdapterViewAnimator.java
@@ -813,6 +813,9 @@
     @Override
     public Parcelable onSaveInstanceState() {
         Parcelable superState = super.onSaveInstanceState();
+        if (mRemoteViewsAdapter != null) {
+            mRemoteViewsAdapter.saveRemoteViewsCache();
+        }
         return new SavedState(superState, mWhichChild);
     }
 
@@ -984,6 +987,9 @@
         mDeferNotifyDataSetChanged = false;
         // Otherwise, create a new RemoteViewsAdapter for binding
         mRemoteViewsAdapter = new RemoteViewsAdapter(getContext(), intent, this);
+        if (mRemoteViewsAdapter.isDataReady()) {
+            setAdapter(mRemoteViewsAdapter);
+        }
     }
 
     @Override
diff --git a/core/java/android/widget/AnalogClock.java b/core/java/android/widget/AnalogClock.java
index 63a0870..c7da818 100644
--- a/core/java/android/widget/AnalogClock.java
+++ b/core/java/android/widget/AnalogClock.java
@@ -36,6 +36,10 @@
 /**
  * This widget display an analogic clock with two hands for hours and
  * minutes.
+ *
+ * @attr ref android.R.styleable#AnalogClock_dial
+ * @attr ref android.R.styleable#AnalogClock_hand_hour
+ * @attr ref android.R.styleable#AnalogClock_hand_minute
  */
 @RemoteView
 public class AnalogClock extends View {
diff --git a/core/java/android/widget/AutoCompleteTextView.java b/core/java/android/widget/AutoCompleteTextView.java
index e5199f6..30dd17d 100644
--- a/core/java/android/widget/AutoCompleteTextView.java
+++ b/core/java/android/widget/AutoCompleteTextView.java
@@ -75,8 +75,8 @@
  * }
  * </pre>
  *
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-autocomplete.html">Auto Complete
- * tutorial</a>.</p>
+ * <p>See the <a href="{@docRoot}guide/topics/ui/controls/text.html">Text Fields</a>
+ * guide.</p>
  *
  * @attr ref android.R.styleable#AutoCompleteTextView_completionHint
  * @attr ref android.R.styleable#AutoCompleteTextView_completionThreshold
diff --git a/core/java/android/widget/Button.java b/core/java/android/widget/Button.java
index 99f4cae..2ac56ac 100644
--- a/core/java/android/widget/Button.java
+++ b/core/java/android/widget/Button.java
@@ -83,8 +83,8 @@
  * href="{@docRoot}guide/topics/resources/drawable-resource.html#StateList">State List
  * Drawable</a>.</p>
  *
- * <p>Also see the <a href="{@docRoot}resources/tutorials/views/hello-formstuff.html">Form Stuff
- * tutorial</a> for an example implementation of a button.</p>
+ * <p>See the <a href="{@docRoot}guide/topics/ui/controls/button.html">Buttons</a>
+ * guide.</p>
  *
  * <p><strong>XML attributes</strong></p>
  * <p>
diff --git a/core/java/android/widget/CheckBox.java b/core/java/android/widget/CheckBox.java
index 858c415..f1804f8 100644
--- a/core/java/android/widget/CheckBox.java
+++ b/core/java/android/widget/CheckBox.java
@@ -44,8 +44,8 @@
  * }
  * </pre>
  *
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-formstuff.html">Form Stuff
- * tutorial</a>.</p>
+ * <p>See the <a href="{@docRoot}guide/topics/ui/controls/checkbox.html">Checkboxes</a>
+ * guide.</p>
  *  
  * <p><strong>XML attributes</strong></p> 
  * <p>
diff --git a/core/java/android/widget/DatePicker.java b/core/java/android/widget/DatePicker.java
index 108b720..ac3bedb 100644
--- a/core/java/android/widget/DatePicker.java
+++ b/core/java/android/widget/DatePicker.java
@@ -53,8 +53,8 @@
  * displayed. Also the minimal and maximal date from which dates to be selected
  * can be customized.
  * <p>
- * See the <a href="{@docRoot}resources/tutorials/views/hello-datepicker.html">Date
- * Picker tutorial</a>.
+ * See the <a href="{@docRoot}guide/topics/ui/controls/pickers.html">Pickers</a>
+ * guide.
  * </p>
  * <p>
  * For a dialog using this view, see {@link android.app.DatePickerDialog}.
diff --git a/core/java/android/widget/EditText.java b/core/java/android/widget/EditText.java
index 2fd8768..57e51c2 100644
--- a/core/java/android/widget/EditText.java
+++ b/core/java/android/widget/EditText.java
@@ -38,8 +38,8 @@
  * EditText is a thin veneer over TextView that configures itself
  * to be editable.
  *
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-formstuff.html">Form Stuff
- * tutorial</a>.</p>
+ * <p>See the <a href="{@docRoot}guide/topics/ui/controls/text.html">Text Fields</a>
+ * guide.</p>
  * <p>
  * <b>XML attributes</b>
  * <p>
diff --git a/core/java/android/widget/GridView.java b/core/java/android/widget/GridView.java
index 8975109..ff8c0a1 100644
--- a/core/java/android/widget/GridView.java
+++ b/core/java/android/widget/GridView.java
@@ -37,8 +37,8 @@
  * A view that shows items in two-dimensional scrolling grid. The items in the
  * grid come from the {@link ListAdapter} associated with this view.
  *
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-gridview.html">Grid
- * View tutorial</a>.</p>
+ * <p>See the <a href="{@docRoot}guide/topics/ui/layout/gridview.html">Grid
+ * View</a> guide.</p>
  * 
  * @attr ref android.R.styleable#GridView_horizontalSpacing
  * @attr ref android.R.styleable#GridView_verticalSpacing
diff --git a/core/java/android/widget/ImageButton.java b/core/java/android/widget/ImageButton.java
index 59a8f28..379354ca 100644
--- a/core/java/android/widget/ImageButton.java
+++ b/core/java/android/widget/ImageButton.java
@@ -64,8 +64,8 @@
  * it will only be applied after {@code android:state_pressed} and {@code
  * android:state_focused} have both evaluated false.</p>
  *
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-formstuff.html">Form Stuff
- * tutorial</a>.</p>
+ * <p>See the <a href="{@docRoot}guide/topics/ui/controls/button.html">Buttons</a>
+ * guide.</p>
  *
  * <p><strong>XML attributes</strong></p>
  * <p>
diff --git a/core/java/android/widget/LinearLayout.java b/core/java/android/widget/LinearLayout.java
index 2391898d..09c0129 100644
--- a/core/java/android/widget/LinearLayout.java
+++ b/core/java/android/widget/LinearLayout.java
@@ -41,8 +41,8 @@
  * {@link android.widget.LinearLayout.LayoutParams LinearLayout.LayoutParams}.
  * The default orientation is horizontal.
  *
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-linearlayout.html">Linear Layout
- * tutorial</a>.</p>
+ * <p>See the <a href="{@docRoot}guide/topics/ui/layout/linear.html">Linear Layout</a>
+ * guide.</p>
  *
  * <p>
  * Also see {@link LinearLayout.LayoutParams android.widget.LinearLayout.LayoutParams}
diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java
index d2e55d9..e011c13 100644
--- a/core/java/android/widget/ListView.java
+++ b/core/java/android/widget/ListView.java
@@ -57,8 +57,8 @@
  * A view that shows items in a vertically scrolling list. The items
  * come from the {@link ListAdapter} associated with this view.
  *
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-listview.html">List View
- * tutorial</a>.</p>
+ * <p>See the <a href="{@docRoot}guide/topics/ui/layout/listview.html">List View</a>
+ * guide.</p>
  *
  * @attr ref android.R.styleable#ListView_entries
  * @attr ref android.R.styleable#ListView_divider
diff --git a/core/java/android/widget/RadioButton.java b/core/java/android/widget/RadioButton.java
index b1bb1c0..a0fef7d 100644
--- a/core/java/android/widget/RadioButton.java
+++ b/core/java/android/widget/RadioButton.java
@@ -38,8 +38,8 @@
  * a radio group, checking one radio button unchecks all the others.</p>
  * </p>
  *
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-formstuff.html">Form Stuff
- * tutorial</a>.</p>
+ * <p>See the <a href="{@docRoot}guide/topics/ui/controls/radiobutton.html">Radio Buttons</a>
+ * guide.</p>
  *
  * <p><strong>XML attributes</strong></p>
  * <p> 
diff --git a/core/java/android/widget/RatingBar.java b/core/java/android/widget/RatingBar.java
index 524d272..4d3c56c 100644
--- a/core/java/android/widget/RatingBar.java
+++ b/core/java/android/widget/RatingBar.java
@@ -43,9 +43,6 @@
  * <p>
  * The secondary progress should not be modified by the client as it is used
  * internally as the background for a fractionally filled star.
- *
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-formstuff.html">Form Stuff
- * tutorial</a>.</p>
  * 
  * @attr ref android.R.styleable#RatingBar_numStars
  * @attr ref android.R.styleable#RatingBar_rating
diff --git a/core/java/android/widget/RelativeLayout.java b/core/java/android/widget/RelativeLayout.java
index 29cf000..569cf99 100644
--- a/core/java/android/widget/RelativeLayout.java
+++ b/core/java/android/widget/RelativeLayout.java
@@ -56,8 +56,8 @@
  * {@link #ALIGN_PARENT_BOTTOM}.
  * </p>
  *
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-relativelayout.html">Relative
- * Layout tutorial</a>.</p>
+ * <p>See the <a href="{@docRoot}guide/topics/ui/layout/relative.html">Relative
+ * Layout</a> guide.</p>
  *
  * <p>
  * Also see {@link android.widget.RelativeLayout.LayoutParams RelativeLayout.LayoutParams} for
diff --git a/core/java/android/widget/RemoteViewsAdapter.java b/core/java/android/widget/RemoteViewsAdapter.java
index 46ec923a..f0109ce 100644
--- a/core/java/android/widget/RemoteViewsAdapter.java
+++ b/core/java/android/widget/RemoteViewsAdapter.java
@@ -17,10 +17,10 @@
 package android.widget;
 
 import java.lang.ref.WeakReference;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedList;
-
 import android.appwidget.AppWidgetManager;
 import android.content.Context;
 import android.content.Intent;
@@ -31,6 +31,7 @@
 import android.os.Message;
 import android.os.RemoteException;
 import android.util.Log;
+import android.util.Pair;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.MeasureSpec;
@@ -47,7 +48,7 @@
 public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback {
     private static final String TAG = "RemoteViewsAdapter";
 
-    // The max number of items in the cache
+    // The max number of items in the cache 
     private static final int sDefaultCacheSize = 40;
     // The delay (in millis) to wait until attempting to unbind from a service after a request.
     // This ensures that we don't stay continually bound to the service and that it can be destroyed
@@ -58,7 +59,7 @@
     private static final int sDefaultLoadingViewHeight = 50;
 
     // Type defs for controlling different messages across the main and worker message queues
-    private static final int sDefaultMessageType = 0;
+    private static final int sDefaultMessageType = 0; 
     private static final int sUnbindServiceMessageType = 1;
 
     private final Context mContext;
@@ -83,6 +84,26 @@
     private Handler mWorkerQueue;
     private Handler mMainQueue;
 
+    // We cache the FixedSizeRemoteViewsCaches across orientation. These are the related data
+    // structures;
+    private static final HashMap<Pair<Intent.FilterComparison, Integer>, FixedSizeRemoteViewsCache>
+            sCachedRemoteViewsCaches = new HashMap<Pair<Intent.FilterComparison, Integer>,
+                    FixedSizeRemoteViewsCache>();
+    private static final HashMap<Pair<Intent.FilterComparison, Integer>, Runnable>
+            sRemoteViewsCacheRemoveRunnables = new HashMap<Pair<Intent.FilterComparison, Integer>,
+            Runnable>();
+    private static HandlerThread sCacheRemovalThread;
+    private static Handler sCacheRemovalQueue;
+
+    // We keep the cache around for a duration after onSaveInstanceState for use on re-inflation.
+    // If a new RemoteViewsAdapter with the same intent / widget id isn't constructed within this
+    // duration, the cache is dropped.
+    private static final int REMOTE_VIEWS_CACHE_DURATION = 5000;
+
+    // Used to indicate to the AdapterView that it can use this Adapter immediately after
+    // construction (happens when we have a cached FixedSizeRemoteViewsCache).
+    private boolean mDataReady = false;
+
     /**
      * An interface for the RemoteAdapter to notify other classes when adapters
      * are actually connected to/disconnected from their actual services.
@@ -246,7 +267,7 @@
      * A FrameLayout which contains a loading view, and manages the re/applying of RemoteViews when
      * they are loaded.
      */
-    private class RemoteViewsFrameLayout extends FrameLayout {
+    private static class RemoteViewsFrameLayout extends FrameLayout {
         public RemoteViewsFrameLayout(Context context) {
             super(context);
         }
@@ -301,7 +322,7 @@
          * Notifies each of the RemoteViewsFrameLayouts associated with a particular position that
          * the associated RemoteViews has loaded.
          */
-        public void notifyOnRemoteViewsLoaded(int position, RemoteViews view, int typeId) {
+        public void notifyOnRemoteViewsLoaded(int position, RemoteViews view) {
             if (view == null) return;
 
             final Integer pos = position;
@@ -331,7 +352,7 @@
     /**
      * The meta-data associated with the cache in it's current state.
      */
-    private class RemoteViewsMetaData {
+    private static class RemoteViewsMetaData {
         int count;
         int viewTypeCount;
         boolean hasStableIds;
@@ -390,14 +411,23 @@
             }
         }
 
+        public boolean isViewTypeInRange(int typeId) {
+            int mappedType = getMappedViewType(typeId);
+            if (mappedType >= viewTypeCount) {
+                return false;
+            } else {
+                return true;
+            }
+        }
+
         private RemoteViewsFrameLayout createLoadingView(int position, View convertView,
-                ViewGroup parent) {
+                ViewGroup parent, Object lock, LayoutInflater layoutInflater) {
             // Create and return a new FrameLayout, and setup the references for this position
             final Context context = parent.getContext();
             RemoteViewsFrameLayout layout = new RemoteViewsFrameLayout(context);
 
             // Create a new loading view
-            synchronized (mCache) {
+            synchronized (lock) {
                 boolean customLoadingViewAvailable = false;
 
                 if (mUserLoadingView != null) {
@@ -425,7 +455,7 @@
                             mFirstViewHeight = firstView.getMeasuredHeight();
                             mFirstView = null;
                         } catch (Exception e) {
-                            float density = mContext.getResources().getDisplayMetrics().density;
+                            float density = context.getResources().getDisplayMetrics().density;
                             mFirstViewHeight = (int)
                                     Math.round(sDefaultLoadingViewHeight * density);
                             mFirstView = null;
@@ -434,7 +464,7 @@
                     }
 
                     // Compose the loading view text
-                    TextView loadingTextView = (TextView) mLayoutInflater.inflate(
+                    TextView loadingTextView = (TextView) layoutInflater.inflate(
                             com.android.internal.R.layout.remote_views_adapter_default_loading_view,
                             layout, false);
                     loadingTextView.setHeight(mFirstViewHeight);
@@ -451,29 +481,28 @@
     /**
      * The meta-data associated with a single item in the cache.
      */
-    private class RemoteViewsIndexMetaData {
+    private static class RemoteViewsIndexMetaData {
         int typeId;
         long itemId;
-        boolean isRequested;
 
-        public RemoteViewsIndexMetaData(RemoteViews v, long itemId, boolean requested) {
-            set(v, itemId, requested);
+        public RemoteViewsIndexMetaData(RemoteViews v, long itemId) {
+            set(v, itemId);
         }
 
-        public void set(RemoteViews v, long id, boolean requested) {
+        public void set(RemoteViews v, long id) {
             itemId = id;
-            if (v != null)
+            if (v != null) {
                 typeId = v.getLayoutId();
-            else
+            } else {
                 typeId = 0;
-            isRequested = requested;
+            }
         }
     }
 
     /**
      *
      */
-    private class FixedSizeRemoteViewsCache {
+    private static class FixedSizeRemoteViewsCache {
         private static final String TAG = "FixedSizeRemoteViewsCache";
 
         // The meta data related to all the RemoteViews, ie. count, is stable, etc.
@@ -535,10 +564,11 @@
             mLoadIndices = new HashSet<Integer>();
         }
 
-        public void insert(int position, RemoteViews v, long itemId, boolean isRequested) {
+        public void insert(int position, RemoteViews v, long itemId,
+                ArrayList<Integer> visibleWindow) {
             // Trim the cache if we go beyond the count
             if (mIndexRemoteViews.size() >= mMaxCount) {
-                mIndexRemoteViews.remove(getFarthestPositionFrom(position));
+                mIndexRemoteViews.remove(getFarthestPositionFrom(position, visibleWindow));
             }
 
             // Trim the cache if we go beyond the available memory size constraints
@@ -549,15 +579,15 @@
                 // remove based on both its position as well as it's current memory usage, as well
                 // as whether it was directly requested vs. whether it was preloaded by our caching
                 // mechanism.
-                mIndexRemoteViews.remove(getFarthestPositionFrom(pruneFromPosition));
+                mIndexRemoteViews.remove(getFarthestPositionFrom(pruneFromPosition, visibleWindow));
             }
 
             // Update the metadata cache
             if (mIndexMetaData.containsKey(position)) {
                 final RemoteViewsIndexMetaData metaData = mIndexMetaData.get(position);
-                metaData.set(v, itemId, isRequested);
+                metaData.set(v, itemId);
             } else {
-                mIndexMetaData.put(position, new RemoteViewsIndexMetaData(v, itemId, isRequested));
+                mIndexMetaData.put(position, new RemoteViewsIndexMetaData(v, itemId));
             }
             mIndexRemoteViews.put(position, v);
         }
@@ -600,29 +630,30 @@
             }
             return mem;
         }
-        private int getFarthestPositionFrom(int pos) {
+
+        private int getFarthestPositionFrom(int pos, ArrayList<Integer> visibleWindow) {
             // Find the index farthest away and remove that
             int maxDist = 0;
             int maxDistIndex = -1;
-            int maxDistNonRequested = 0;
-            int maxDistIndexNonRequested = -1;
+            int maxDistNotVisible = 0;
+            int maxDistIndexNotVisible = -1;
             for (int i : mIndexRemoteViews.keySet()) {
                 int dist = Math.abs(i-pos);
-                if (dist > maxDistNonRequested && !mIndexMetaData.get(i).isRequested) {
-                    // maxDistNonRequested/maxDistIndexNonRequested will store the index of the
-                    // farthest non-requested position
-                    maxDistIndexNonRequested = i;
-                    maxDistNonRequested = dist;
+                if (dist > maxDistNotVisible && !visibleWindow.contains(i)) {
+                    // maxDistNotVisible/maxDistIndexNotVisible will store the index of the
+                    // farthest non-visible position
+                    maxDistIndexNotVisible = i;
+                    maxDistNotVisible = dist;
                 }
                 if (dist >= maxDist) {
                     // maxDist/maxDistIndex will store the index of the farthest position
-                    // regardless of whether it was directly requested or not
+                    // regardless of whether it is visible or not
                     maxDistIndex = i;
                     maxDist = dist;
                 }
             }
-            if (maxDistIndexNonRequested > -1) {
-                return maxDistIndexNonRequested;
+            if (maxDistIndexNotVisible > -1) {
+                return maxDistIndexNotVisible;
             }
             return maxDistIndex;
         }
@@ -737,11 +768,36 @@
         mWorkerQueue = new Handler(mWorkerThread.getLooper());
         mMainQueue = new Handler(Looper.myLooper(), this);
 
+        if (sCacheRemovalThread == null) {
+            sCacheRemovalThread = new HandlerThread("RemoteViewsAdapter-cachePruner");
+            sCacheRemovalThread.start();
+            sCacheRemovalQueue = new Handler(sCacheRemovalThread.getLooper());
+        }
+
         // Initialize the cache and the service connection on startup
-        mCache = new FixedSizeRemoteViewsCache(sDefaultCacheSize);
         mCallback = new WeakReference<RemoteAdapterConnectionCallback>(callback);
         mServiceConnection = new RemoteViewsAdapterServiceConnection(this);
-        requestBindService();
+
+        Pair<Intent.FilterComparison, Integer> key = new Pair<Intent.FilterComparison, Integer>
+                (new Intent.FilterComparison(mIntent), mAppWidgetId);
+
+        synchronized(sCachedRemoteViewsCaches) {
+            if (sCachedRemoteViewsCaches.containsKey(key)) {
+                mCache = sCachedRemoteViewsCaches.get(key);
+                synchronized (mCache.mMetaData) {
+                    if (mCache.mMetaData.count > 0) {
+                        // As a precautionary measure, we verify that the meta data indicates a
+                        // non-zero count before declaring that data is ready.
+                        mDataReady = true;
+                    }
+                }
+            } else {
+                mCache = new FixedSizeRemoteViewsCache(sDefaultCacheSize);
+            }
+            if (!mDataReady) {
+                requestBindService();
+            }
+        }
     }
 
     @Override
@@ -755,6 +811,51 @@
         }
     }
 
+    public boolean isDataReady() {
+        return mDataReady;
+    }
+
+    public void saveRemoteViewsCache() {
+        final Pair<Intent.FilterComparison, Integer> key = new Pair<Intent.FilterComparison,
+                Integer> (new Intent.FilterComparison(mIntent), mAppWidgetId);
+
+        synchronized(sCachedRemoteViewsCaches) {
+            // If we already have a remove runnable posted for this key, remove it.
+            if (sRemoteViewsCacheRemoveRunnables.containsKey(key)) {
+                sCacheRemovalQueue.removeCallbacks(sRemoteViewsCacheRemoveRunnables.get(key));
+                sRemoteViewsCacheRemoveRunnables.remove(key);
+            }
+
+            int metaDataCount = 0;
+            int numRemoteViewsCached = 0;
+            synchronized (mCache.mMetaData) {
+                metaDataCount = mCache.mMetaData.count;
+            }
+            synchronized (mCache) {
+                numRemoteViewsCached = mCache.mIndexRemoteViews.size();
+            }
+            if (metaDataCount > 0 && numRemoteViewsCached > 0) {
+                sCachedRemoteViewsCaches.put(key, mCache);
+            }
+
+            Runnable r = new Runnable() {
+                @Override
+                public void run() {
+                    synchronized (sCachedRemoteViewsCaches) {
+                        if (sCachedRemoteViewsCaches.containsKey(key)) {
+                            sCachedRemoteViewsCaches.remove(key);
+                        }
+                        if (sRemoteViewsCacheRemoveRunnables.containsKey(key)) {
+                            sRemoteViewsCacheRemoveRunnables.remove(key);
+                        }
+                    }
+                }
+            };
+            sRemoteViewsCacheRemoveRunnables.put(key, r);
+            sCacheRemovalQueue.postDelayed(r, REMOTE_VIEWS_CACHE_DURATION);
+        }
+    }
+
     private void loadNextIndexInBackground() {
         mWorkerQueue.post(new Runnable() {
             @Override
@@ -762,15 +863,13 @@
                 if (mServiceConnection.isConnected()) {
                     // Get the next index to load
                     int position = -1;
-                    boolean isRequested = false;
                     synchronized (mCache) {
                         int[] res = mCache.getNextIndexToLoad();
                         position = res[0];
-                        isRequested = res[1] > 0;
                     }
                     if (position > -1) {
                         // Load the item, and notify any existing RemoteViewsFrameLayouts
-                        updateRemoteViews(position, isRequested, true);
+                        updateRemoteViews(position, true);
 
                         // Queue up for the next one to load
                         loadNextIndexInBackground();
@@ -832,8 +931,7 @@
         }
     }
 
-    private void updateRemoteViews(final int position, boolean isRequested, boolean
-            notifyWhenLoaded) {
+    private void updateRemoteViews(final int position, boolean notifyWhenLoaded) {
         IRemoteViewsFactory factory = mServiceConnection.getRemoteViewsFactory();
 
         // Load the item information from the remote service
@@ -861,21 +959,40 @@
                     "returned from RemoteViewsFactory.");
             return;
         }
-        synchronized (mCache) {
-            // Cache the RemoteViews we loaded
-            mCache.insert(position, remoteViews, itemId, isRequested);
 
-            // Notify all the views that we have previously returned for this index that
-            // there is new data for it.
-            final RemoteViews rv = remoteViews;
-            final int typeId = mCache.getMetaDataAt(position).typeId;
-            if (notifyWhenLoaded) {
-                mMainQueue.post(new Runnable() {
-                    @Override
-                    public void run() {
-                        mRequestedViews.notifyOnRemoteViewsLoaded(position, rv, typeId);
-                    }
-                });
+        int layoutId = remoteViews.getLayoutId();
+        RemoteViewsMetaData metaData = mCache.getMetaData();
+        boolean viewTypeInRange;
+        int cacheCount;
+        synchronized (metaData) {
+            viewTypeInRange = metaData.isViewTypeInRange(layoutId);
+            cacheCount = mCache.mMetaData.count;
+        }
+        synchronized (mCache) {
+            if (viewTypeInRange) {
+                ArrayList<Integer> visibleWindow = getVisibleWindow(mVisibleWindowLowerBound,
+                        mVisibleWindowUpperBound, cacheCount);
+                // Cache the RemoteViews we loaded
+                mCache.insert(position, remoteViews, itemId, visibleWindow);
+
+                // Notify all the views that we have previously returned for this index that
+                // there is new data for it.
+                final RemoteViews rv = remoteViews;
+                if (notifyWhenLoaded) {
+                    mMainQueue.post(new Runnable() {
+                        @Override
+                        public void run() {
+                            mRequestedViews.notifyOnRemoteViewsLoaded(position, rv);
+                        }
+                    });
+                }
+            } else {
+                // We need to log an error here, as the the view type count specified by the
+                // factory is less than the number of view types returned. We don't return this
+                // view to the AdapterView, as this will cause an exception in the hosting process,
+                // which contains the associated AdapterView.
+                Log.e(TAG, "Error: widget's RemoteViewsFactory returns more view types than " +
+                        " indicated by getViewTypeCount() ");
             }
         }
     }
@@ -979,7 +1096,6 @@
                 Context context = parent.getContext();
                 RemoteViews rv = mCache.getRemoteViewsAt(position);
                 RemoteViewsIndexMetaData indexMetaData = mCache.getMetaDataAt(position);
-                indexMetaData.isRequested = true;
                 int typeId = indexMetaData.typeId;
 
                 try {
@@ -1010,7 +1126,8 @@
                     RemoteViewsFrameLayout loadingView = null;
                     final RemoteViewsMetaData metaData = mCache.getMetaData();
                     synchronized (metaData) {
-                        loadingView = metaData.createLoadingView(position, convertView, parent);
+                        loadingView = metaData.createLoadingView(position, convertView, parent,
+                                mCache, mLayoutInflater);
                     }
                     return loadingView;
                 } finally {
@@ -1022,7 +1139,8 @@
                 RemoteViewsFrameLayout loadingView = null;
                 final RemoteViewsMetaData metaData = mCache.getMetaData();
                 synchronized (metaData) {
-                    loadingView = metaData.createLoadingView(position, convertView, parent);
+                    loadingView = metaData.createLoadingView(position, convertView, parent,
+                            mCache, mLayoutInflater);
                 }
 
                 mRequestedViews.add(position, loadingView);
@@ -1076,18 +1194,21 @@
         // Re-request the new metadata (only after the notification to the factory)
         updateTemporaryMetaData();
         int newCount;
+        ArrayList<Integer> visibleWindow;
         synchronized(mCache.getTemporaryMetaData()) {
             newCount = mCache.getTemporaryMetaData().count;
+            visibleWindow = getVisibleWindow(mVisibleWindowLowerBound,
+                    mVisibleWindowUpperBound, newCount);
         }
 
         // Pre-load (our best guess of) the views which are currently visible in the AdapterView.
         // This mitigates flashing and flickering of loading views when a widget notifies that
         // its data has changed.
-        for (int i = mVisibleWindowLowerBound; i <= mVisibleWindowUpperBound; i++) {
+        for (int i: visibleWindow) {
             // Because temporary meta data is only ever modified from this thread (ie.
             // mWorkerThread), it is safe to assume that count is a valid representation.
             if (i < newCount) {
-                updateRemoteViews(i, false, false);
+                updateRemoteViews(i, false);
             }
         }
 
@@ -1108,6 +1229,31 @@
         mNotifyDataSetChangedAfterOnServiceConnected = false;
     }
 
+    private ArrayList<Integer> getVisibleWindow(int lower, int upper, int count) {
+        ArrayList<Integer> window = new ArrayList<Integer>();
+
+        // In the case that the window is invalid or uninitialized, return an empty window.
+        if ((lower == 0 && upper == 0) || lower < 0 || upper < 0) {
+            return window;
+        }
+
+        if (lower <= upper) {
+            for (int i = lower;  i <= upper; i++){
+                window.add(i);
+            }
+        } else {
+            // If the upper bound is less than the lower bound it means that the visible window
+            // wraps around.
+            for (int i = lower; i < count; i++) {
+                window.add(i);
+            }
+            for (int i = 0; i <= upper; i++) {
+                window.add(i);
+            }
+        }
+        return window;
+    }
+
     public void notifyDataSetChanged() {
         // Dequeue any unbind messages
         mMainQueue.removeMessages(sUnbindServiceMessageType);
diff --git a/core/java/android/widget/Spinner.java b/core/java/android/widget/Spinner.java
index 36d1ee0..64834b2 100644
--- a/core/java/android/widget/Spinner.java
+++ b/core/java/android/widget/Spinner.java
@@ -39,10 +39,16 @@
  * The items in the Spinner come from the {@link Adapter} associated with
  * this view.
  *
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-spinner.html">Spinner
- * tutorial</a>.</p>
+ * <p>See the <a href="{@docRoot}guide/topics/ui/controls/spinner.html">Spinners</a> guide.</p>
  *
+ * @attr ref android.R.styleable#Spinner_dropDownHorizontalOffset
+ * @attr ref android.R.styleable#Spinner_dropDownSelector
+ * @attr ref android.R.styleable#Spinner_dropDownVerticalOffset
+ * @attr ref android.R.styleable#Spinner_dropDownWidth
+ * @attr ref android.R.styleable#Spinner_gravity
+ * @attr ref android.R.styleable#Spinner_popupBackground
  * @attr ref android.R.styleable#Spinner_prompt
+ * @attr ref android.R.styleable#Spinner_spinnerMode
  */
 @Widget
 public class Spinner extends AbsSpinner implements OnClickListener {
@@ -409,6 +415,7 @@
     /**
      * <p>A spinner does not support item click events. Calling this method
      * will raise an exception.</p>
+     * <p>Instead use {@link AdapterView#setOnItemSelectedListener}.
      *
      * @param l this listener will be ignored
      */
diff --git a/core/java/android/widget/Switch.java b/core/java/android/widget/Switch.java
index 471f259..56f6651 100644
--- a/core/java/android/widget/Switch.java
+++ b/core/java/android/widget/Switch.java
@@ -53,6 +53,17 @@
  * {@link #setSwitchTextAppearance(android.content.Context, int) switchTextAppearance} and
  * the related seSwitchTypeface() methods control that of the thumb.
  *
+ * <p>See the <a href="{@docRoot}guide/topics/ui/controls/togglebutton.html">Toggle Buttons</a>
+ * guide.</p>
+ *
+ * @attr ref android.R.styleable#Switch_textOn
+ * @attr ref android.R.styleable#Switch_textOff
+ * @attr ref android.R.styleable#Switch_switchMinWidth
+ * @attr ref android.R.styleable#Switch_switchPadding
+ * @attr ref android.R.styleable#Switch_switchTextAppearance
+ * @attr ref android.R.styleable#Switch_thumb
+ * @attr ref android.R.styleable#Switch_thumbTextPadding
+ * @attr ref android.R.styleable#Switch_track
  */
 public class Switch extends CompoundButton {
     private static final int TOUCH_MODE_IDLE = 0;
diff --git a/core/java/android/widget/TimePicker.java b/core/java/android/widget/TimePicker.java
index 18f7a91..cb9ed61 100644
--- a/core/java/android/widget/TimePicker.java
+++ b/core/java/android/widget/TimePicker.java
@@ -48,8 +48,8 @@
  * or 'P' to pick. For a dialog using this view, see
  * {@link android.app.TimePickerDialog}.
  *<p>
- * See the <a href="{@docRoot}resources/tutorials/views/hello-timepicker.html">Time Picker
- * tutorial</a>.
+ * See the <a href="{@docRoot}guide/topics/ui/controls/pickers.html">Pickers</a>
+ * guide.
  * </p>
  */
 @Widget
diff --git a/core/java/android/widget/ToggleButton.java b/core/java/android/widget/ToggleButton.java
index 4beee96..cedc777 100644
--- a/core/java/android/widget/ToggleButton.java
+++ b/core/java/android/widget/ToggleButton.java
@@ -31,8 +31,8 @@
  * Displays checked/unchecked states as a button
  * with a "light" indicator and by default accompanied with the text "ON" or "OFF".
  *
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-formstuff.html">Form Stuff
- * tutorial</a>.</p>
+ * <p>See the <a href="{@docRoot}guide/topics/ui/controls/togglebutton.html">Toggle Buttons</a>
+ * guide.</p>
  * 
  * @attr ref android.R.styleable#ToggleButton_textOn
  * @attr ref android.R.styleable#ToggleButton_textOff
diff --git a/core/res/res/values-mcc208-mnc01/config.xml b/core/res/res/values-mcc208-mnc01/config.xml
new file mode 100755
index 0000000..c1489b1
--- /dev/null
+++ b/core/res/res/values-mcc208-mnc01/config.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+     for different hardware and product builds.  Do not translate. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+    <integer-array translatable="false" name="config_tether_upstream_types">
+        <item>1</item>
+        <item>4</item>
+        <item>7</item>
+        <item>9</item>
+    </integer-array>
+
+    <!-- String containing the apn value for tethering.  May be overriden by secure settings
+         TETHER_DUN_APN.  Value is a comma separated series of strings:
+         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+    <string translatable="false" name="config_tether_apndata">Orange Internet,orange.fr,,,,,,orange,orange,,208,01,,DUN</string>
+</resources>
diff --git a/core/res/res/values-mcc214-mnc03/config.xml b/core/res/res/values-mcc214-mnc03/config.xml
new file mode 100755
index 0000000..02f1475
--- /dev/null
+++ b/core/res/res/values-mcc214-mnc03/config.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+     for different hardware and product builds.  Do not translate. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+    <integer-array translatable="false" name="config_tether_upstream_types">
+        <item>1</item>
+        <item>4</item>
+        <item>7</item>
+        <item>9</item>
+    </integer-array>
+
+    <!-- String containing the apn value for tethering.  May be overriden by secure settings
+         TETHER_DUN_APN.  Value is a comma separated series of strings:
+         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+    <string translatable="false" name="config_tether_apndata">Orange Internet PC,internet,,,,,,orange,orange,,214,03,,DUN</string>
+</resources>
diff --git a/core/res/res/values-mcc214-mnc07/config.xml b/core/res/res/values-mcc214-mnc07/config.xml
new file mode 100755
index 0000000..4e3fa16
--- /dev/null
+++ b/core/res/res/values-mcc214-mnc07/config.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+     for different hardware and product builds.  Do not translate. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+    <integer-array translatable="false" name="config_tether_upstream_types">
+        <item>1</item>
+        <item>4</item>
+        <item>7</item>
+        <item>9</item>
+    </integer-array>
+
+    <!-- String containing the apn value for tethering.  May be overriden by secure settings
+         TETHER_DUN_APN.  Value is a comma separated series of strings:
+         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+    <string translatable="false" name="config_tether_apndata">Conexión compartida,movistar.es,,,,,,MOVISTAR,MOVISTAR,,214,07,,DUN</string>
+</resources>
diff --git a/core/res/res/values-mcc222-mnc01/config.xml b/core/res/res/values-mcc222-mnc01/config.xml
new file mode 100755
index 0000000..6bb1196
--- /dev/null
+++ b/core/res/res/values-mcc222-mnc01/config.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+     for different hardware and product builds.  Do not translate. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+    <integer-array translatable="false" name="config_tether_upstream_types">
+        <item>1</item>
+        <item>4</item>
+        <item>7</item>
+        <item>9</item>
+    </integer-array>
+
+    <!-- String containing the apn value for tethering.  May be overriden by secure settings
+         TETHER_DUN_APN.  Value is a comma separated series of strings:
+         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+    <string translatable="false" name="config_tether_apndata">TIM WEB,ibox.tim.it,,,,,,,,,222,01,,DUN</string>
+</resources>
diff --git a/core/res/res/values-mcc222-mnc10/config.xml b/core/res/res/values-mcc222-mnc10/config.xml
new file mode 100755
index 0000000..24dd71c
--- /dev/null
+++ b/core/res/res/values-mcc222-mnc10/config.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+     for different hardware and product builds.  Do not translate. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+    <integer-array translatable="false" name="config_tether_upstream_types">
+        <item>1</item>
+        <item>4</item>
+        <item>7</item>
+        <item>9</item>
+    </integer-array>
+
+    <!-- String containing the apn value for tethering.  May be overriden by secure settings
+         TETHER_DUN_APN.  Value is a comma separated series of strings:
+         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+    <string translatable="false" name="config_tether_apndata">Tethering Internet,web.omnitel.it,,,,,,,,,222,10,,DUN</string>
+</resources>
diff --git a/core/res/res/values-mcc234-mnc33/config.xml b/core/res/res/values-mcc234-mnc33/config.xml
new file mode 100755
index 0000000..d79d212
--- /dev/null
+++ b/core/res/res/values-mcc234-mnc33/config.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+     for different hardware and product builds.  Do not translate. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+    <integer-array translatable="false" name="config_tether_upstream_types">
+        <item>1</item>
+        <item>4</item>
+        <item>7</item>
+        <item>9</item>
+    </integer-array>
+
+    <!-- String containing the apn value for tethering.  May be overriden by secure settings
+         TETHER_DUN_APN.  Value is a comma separated series of strings:
+         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+    <string translatable="false" name="config_tether_apndata">Consumer Broadband,consumerbroadband,,,,,,,,,234,33,,DUN</string>
+</resources>
diff --git a/core/res/res/values-mcc302-mnc370/config.xml b/core/res/res/values-mcc302-mnc370/config.xml
new file mode 100755
index 0000000..b1d363f
--- /dev/null
+++ b/core/res/res/values-mcc302-mnc370/config.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+     for different hardware and product builds.  Do not translate. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+    <integer-array translatable="false" name="config_tether_upstream_types">
+        <item>1</item>
+        <item>4</item>
+        <item>7</item>
+        <item>9</item>
+    </integer-array>
+
+    <!-- String containing the apn value for tethering.  May be overriden by secure settings
+         TETHER_DUN_APN.  Value is a comma separated series of strings:
+         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+    <string translatable="false" name="config_tether_apndata">Fido Tethering,isp.fido.apn,,,,,,,,,302,370,,DUN</string>
+</resources>
diff --git a/core/res/res/values-mcc302-mnc660/config.xml b/core/res/res/values-mcc302-mnc660/config.xml
new file mode 100755
index 0000000..37853cf
--- /dev/null
+++ b/core/res/res/values-mcc302-mnc660/config.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+     for different hardware and product builds.  Do not translate. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+    <integer-array translatable="false" name="config_tether_upstream_types">
+        <item>1</item>
+        <item>4</item>
+        <item>7</item>
+        <item>9</item>
+    </integer-array>
+
+    <!-- String containing the apn value for tethering.  May be overriden by secure settings
+         TETHER_DUN_APN.  Value is a comma separated series of strings:
+         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+    <string translatable="false" name="config_tether_apndata">MTS -Tethering,internet.mts,,,,,,,,,302,660,,DUN</string>
+</resources>
diff --git a/core/res/res/values-mcc302-mnc720/config.xml b/core/res/res/values-mcc302-mnc720/config.xml
new file mode 100755
index 0000000..40ef939
--- /dev/null
+++ b/core/res/res/values-mcc302-mnc720/config.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+     for different hardware and product builds.  Do not translate. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+    <integer-array translatable="false" name="config_tether_upstream_types">
+        <item>1</item>
+        <item>4</item>
+        <item>7</item>
+        <item>9</item>
+    </integer-array>
+
+    <!-- String containing the apn value for tethering.  May be overriden by secure settings
+         TETHER_DUN_APN.  Value is a comma separated series of strings:
+         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+    <string translatable="false" name="config_tether_apndata">Rogers Tethering,isp.apn,,,,,,,,,302,720,,DUN</string>
+</resources>
diff --git a/core/res/res/values-mcc340-mnc01/config.xml b/core/res/res/values-mcc340-mnc01/config.xml
new file mode 100755
index 0000000..fb71f3bc
--- /dev/null
+++ b/core/res/res/values-mcc340-mnc01/config.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+     for different hardware and product builds.  Do not translate. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+    <integer-array translatable="false" name="config_tether_upstream_types">
+        <item>1</item>
+        <item>4</item>
+        <item>7</item>
+        <item>9</item>
+    </integer-array>
+
+    <!-- String containing the apn value for tethering.  May be overriden by secure settings
+         TETHER_DUN_APN.  Value is a comma separated series of strings:
+         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+    <string translatable="false" name="config_tether_apndata">Orangeweb,orangeweb,,,,,,orange,orange,,340,01,1,DUN</string>
+</resources>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index ccc85a3..a2e15e6 100755
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -249,8 +249,11 @@
     <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
     <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
     <integer-array translatable="false" name="config_tether_upstream_types">
+        <item>0</item>
         <item>1</item>
-        <item>4</item>
+        <item>5</item>
+        <item>7</item>
+        <item>9</item>
     </integer-array>
 
     <!-- If the DUN connection for this CDMA device supports more than just DUN -->
diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml
index 2f18944..481ca7f 100644
--- a/core/res/res/values/themes.xml
+++ b/core/res/res/values/themes.xml
@@ -1422,6 +1422,9 @@
         <item name="preferenceLayoutChild">@android:layout/preference_child_holo</item>
         <item name="detailsElementBackground">@android:drawable/panel_bg_holo_light</item>
 
+        <!-- PreferenceFrameLayout attributes -->
+        <item name="preferenceFrameLayoutStyle">@android:style/Widget.Holo.PreferenceFrameLayout</item>
+
         <!-- Search widget styles -->
         <item name="searchWidgetCorpusItemBackground">@android:color/search_widget_corpus_item_background</item>
 
diff --git a/core/tests/coretests/src/android/accounts/AccountManagerServiceTest.java b/core/tests/coretests/src/android/accounts/AccountManagerServiceTest.java
index 6efc61a..33a73b5 100644
--- a/core/tests/coretests/src/android/accounts/AccountManagerServiceTest.java
+++ b/core/tests/coretests/src/android/accounts/AccountManagerServiceTest.java
@@ -216,6 +216,10 @@
                 final RegisteredServicesCacheListener<AuthenticatorDescription> listener,
                 final Handler handler) {
         }
+
+        @Override
+        public void generateServicesMap() {
+        }
     }
 
     static public class MyMockContext extends MockContext {
diff --git a/data/etc/platform.xml b/data/etc/platform.xml
index 4b93e74..833064e 100644
--- a/data/etc/platform.xml
+++ b/data/etc/platform.xml
@@ -163,6 +163,12 @@
     <assign-permission name="android.permission.FORCE_STOP_PACKAGES" uid="shell" />
     <assign-permission name="android.permission.STOP_APP_SWITCHES" uid="shell" />
     <assign-permission name="android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" uid="shell" />
+    <assign-permission name="android.permission.GRANT_REVOKE_PERMISSIONS" uid="shell" />
+    <assign-permission name="android.permission.SET_KEYBOARD_LAYOUT" uid="shell" />
+    <assign-permission name="android.permission.GET_DETAILED_TASKS" uid="shell" />
+    <assign-permission name="android.permission.SET_SCREEN_COMPATIBILITY" uid="shell" />
+    <assign-permission name="android.permission.READ_EXTERNAL_STORAGE" uid="shell" />
+    <assign-permission name="android.permission.WRITE_EXTERNAL_STORAGE" uid="shell" />
 
     <assign-permission name="android.permission.MODIFY_AUDIO_SETTINGS" uid="media" />
     <assign-permission name="android.permission.ACCESS_DRM" uid="media" />
diff --git a/docs/downloads/README b/docs/downloads/README
new file mode 100644
index 0000000..0e7d790
--- /dev/null
+++ b/docs/downloads/README
@@ -0,0 +1,9 @@
+Files in this directory are not hosted on developer.android.com.
+
+This directory serves as a "master" repository for various
+downloadable files. This provides us consistent version control
+for downloadables that are associated with documentation. 
+
+Once saved here, the files must be uploaded to a separate
+hosting service where they're accessible by users, such as
+Google Cloud Storage.
\ No newline at end of file
diff --git a/docs/downloads/design/Android_Design_Color_Swatches_20120229.zip b/docs/downloads/design/Android_Design_Color_Swatches_20120229.zip
new file mode 100644
index 0000000..81b6522
--- /dev/null
+++ b/docs/downloads/design/Android_Design_Color_Swatches_20120229.zip
Binary files differ
diff --git a/docs/downloads/design/Android_Design_Downloads_20120814.zip b/docs/downloads/design/Android_Design_Downloads_20120814.zip
new file mode 100755
index 0000000..102b011
--- /dev/null
+++ b/docs/downloads/design/Android_Design_Downloads_20120814.zip
Binary files differ
diff --git a/docs/downloads/design/Android_Design_Downloads_20120823.zip b/docs/downloads/design/Android_Design_Downloads_20120823.zip
new file mode 100644
index 0000000..6d31283
--- /dev/null
+++ b/docs/downloads/design/Android_Design_Downloads_20120823.zip
Binary files differ
diff --git a/docs/downloads/design/Android_Design_Fireworks_Stencil_20120814.png b/docs/downloads/design/Android_Design_Fireworks_Stencil_20120814.png
new file mode 100755
index 0000000..9a55143
--- /dev/null
+++ b/docs/downloads/design/Android_Design_Fireworks_Stencil_20120814.png
Binary files differ
diff --git a/docs/downloads/design/Android_Design_Holo_Widgets_20120814.zip b/docs/downloads/design/Android_Design_Holo_Widgets_20120814.zip
new file mode 100755
index 0000000..295affd
--- /dev/null
+++ b/docs/downloads/design/Android_Design_Holo_Widgets_20120814.zip
Binary files differ
diff --git a/docs/downloads/design/Android_Design_Icons_20120814.zip b/docs/downloads/design/Android_Design_Icons_20120814.zip
new file mode 100755
index 0000000..3471438
--- /dev/null
+++ b/docs/downloads/design/Android_Design_Icons_20120814.zip
Binary files differ
diff --git a/docs/downloads/design/Android_Design_Illustrator_Vectors_20120814.ai b/docs/downloads/design/Android_Design_Illustrator_Vectors_20120814.ai
new file mode 100644
index 0000000..928ecfa
--- /dev/null
+++ b/docs/downloads/design/Android_Design_Illustrator_Vectors_20120814.ai
Binary files differ
diff --git a/docs/downloads/design/Android_Design_OmniGraffle_Stencil_20120814.graffle b/docs/downloads/design/Android_Design_OmniGraffle_Stencil_20120814.graffle
new file mode 100755
index 0000000..d575008
--- /dev/null
+++ b/docs/downloads/design/Android_Design_OmniGraffle_Stencil_20120814.graffle
Binary files differ
diff --git a/docs/downloads/design/Roboto_Hinted_20111129.zip b/docs/downloads/design/Roboto_Hinted_20111129.zip
new file mode 100644
index 0000000..abf4942
--- /dev/null
+++ b/docs/downloads/design/Roboto_Hinted_20111129.zip
Binary files differ
diff --git a/docs/downloads/design/Roboto_Hinted_20120823.zip b/docs/downloads/design/Roboto_Hinted_20120823.zip
new file mode 100644
index 0000000..9ead4af
--- /dev/null
+++ b/docs/downloads/design/Roboto_Hinted_20120823.zip
Binary files differ
diff --git a/docs/downloads/design/Roboto_Specimen_Book_20111129.pdf b/docs/downloads/design/Roboto_Specimen_Book_20111129.pdf
new file mode 100644
index 0000000..594a366
--- /dev/null
+++ b/docs/downloads/design/Roboto_Specimen_Book_20111129.pdf
Binary files differ
diff --git a/docs/html/shareables/training/ActivityLifecycle.zip b/docs/downloads/training/ActivityLifecycle.zip
similarity index 100%
rename from docs/html/shareables/training/ActivityLifecycle.zip
rename to docs/downloads/training/ActivityLifecycle.zip
Binary files differ
diff --git a/docs/downloads/training/BitmapFun.zip b/docs/downloads/training/BitmapFun.zip
new file mode 100644
index 0000000..e48bfd3
--- /dev/null
+++ b/docs/downloads/training/BitmapFun.zip
Binary files differ
diff --git a/docs/html/shareables/training/CustomView.zip b/docs/downloads/training/CustomView.zip
similarity index 100%
rename from docs/html/shareables/training/CustomView.zip
rename to docs/downloads/training/CustomView.zip
Binary files differ
diff --git a/docs/html/shareables/training/DeviceManagement.zip b/docs/downloads/training/DeviceManagement.zip
similarity index 100%
rename from docs/html/shareables/training/DeviceManagement.zip
rename to docs/downloads/training/DeviceManagement.zip
Binary files differ
diff --git a/docs/html/shareables/training/EffectiveNavigation.zip b/docs/downloads/training/EffectiveNavigation.zip
similarity index 100%
rename from docs/html/shareables/training/EffectiveNavigation.zip
rename to docs/downloads/training/EffectiveNavigation.zip
Binary files differ
diff --git a/docs/html/shareables/training/FragmentBasics.zip b/docs/downloads/training/FragmentBasics.zip
similarity index 100%
rename from docs/html/shareables/training/FragmentBasics.zip
rename to docs/downloads/training/FragmentBasics.zip
Binary files differ
diff --git a/docs/html/shareables/training/LocationAware.zip b/docs/downloads/training/LocationAware.zip
similarity index 100%
rename from docs/html/shareables/training/LocationAware.zip
rename to docs/downloads/training/LocationAware.zip
Binary files differ
diff --git a/docs/html/shareables/training/MobileAds.zip b/docs/downloads/training/MobileAds.zip
similarity index 100%
rename from docs/html/shareables/training/MobileAds.zip
rename to docs/downloads/training/MobileAds.zip
Binary files differ
diff --git a/docs/html/shareables/training/NetworkUsage.zip b/docs/downloads/training/NetworkUsage.zip
similarity index 100%
rename from docs/html/shareables/training/NetworkUsage.zip
rename to docs/downloads/training/NetworkUsage.zip
Binary files differ
diff --git a/docs/html/shareables/training/NewsReader.zip b/docs/downloads/training/NewsReader.zip
similarity index 100%
rename from docs/html/shareables/training/NewsReader.zip
rename to docs/downloads/training/NewsReader.zip
Binary files differ
diff --git a/docs/html/shareables/training/OpenGLES.zip b/docs/downloads/training/OpenGLES.zip
similarity index 100%
rename from docs/html/shareables/training/OpenGLES.zip
rename to docs/downloads/training/OpenGLES.zip
Binary files differ
diff --git a/docs/html/shareables/training/PhotoIntentActivity.zip b/docs/downloads/training/PhotoIntentActivity.zip
similarity index 100%
rename from docs/html/shareables/training/PhotoIntentActivity.zip
rename to docs/downloads/training/PhotoIntentActivity.zip
Binary files differ
diff --git a/docs/downloads/training/TabCompat.zip b/docs/downloads/training/TabCompat.zip
new file mode 100644
index 0000000..b907b42
--- /dev/null
+++ b/docs/downloads/training/TabCompat.zip
Binary files differ
diff --git a/docs/html/about/dashboards/index.jd b/docs/html/about/dashboards/index.jd
index d115beb..6555733 100644
--- a/docs/html/about/dashboards/index.jd
+++ b/docs/html/about/dashboards/index.jd
@@ -20,43 +20,41 @@
 <p>The following pie chart and table is based on the number of Android devices that have accessed
 Google Play within a 14-day period ending on the data collection date noted below.</p>
 
-<div class="col-6" style="margin-left:0">
+<div class="col-5" style="margin-left:0">
 
 
 <table>
 <tr>
   <th>Version</th>
   <th>Codename</th>
-  <th>API Level</th>
+  <th>API</th>
   <th>Distribution</th>
 </tr>
-<tr><td><a href="/about/versions/android-1.5.html">1.5</a></td><td>Cupcake</td>  <td>3</td><td>0.2%</td></tr>
-<tr><td><a href="/about/versions/android-1.6.html">1.6</a></td><td>Donut</td>    <td>4</td><td>0.5%</td></tr>
-<tr><td><a href="/about/versions/android-2.1.html">2.1</a></td><td>Eclair</td>   <td>7</td><td>4.7%</td></tr>
-<tr><td><a href="/about/versions/android-2.2.html">2.2</a></td><td>Froyo</td>    <td>8</td><td>17.3%</td></tr>
+<tr><td><a href="/about/versions/android-1.5.html">1.5</a></td><td>Cupcake</td>  <td>3</td><td>0.1%</td></tr>
+<tr><td><a href="/about/versions/android-1.6.html">1.6</a></td><td>Donut</td>    <td>4</td><td>0.4%</td></tr>
+<tr><td><a href="/about/versions/android-2.1.html">2.1</a></td><td>Eclair</td>   <td>7</td><td>3.4%</td></tr>
+<tr><td><a href="/about/versions/android-2.2.html">2.2</a></td><td>Froyo</td>    <td>8</td><td>12.9%</td></tr>
 <tr><td><a href="/about/versions/android-2.3.html">2.3 - 2.3.2</a>
-                                   </td><td rowspan="2">Gingerbread</td>    <td>9</td><td>0.4%</td></tr>
+                                   </td><td rowspan="2">Gingerbread</td>    <td>9</td><td>0.3%</td></tr>
 <tr><td><a href="/about/versions/android-2.3.3.html">2.3.3 - 2.3.7
-        </a></td><!-- Gingerbread -->                                       <td>10</td><td>63.6%</td></tr>
+        </a></td><!-- Gingerbread -->                                       <td>10</td><td>55.5%</td></tr>
 <tr><td><a href="/about/versions/android-3.1.html">3.1</a></td>
-                                                   <td rowspan="2">Honeycomb</td>      <td>12</td><td>0.5%</td></tr>
-<tr><td><a href="/about/versions/android-3.2.html">3.2</a></td>      <!-- Honeycomb --><td>13</td><td>1.9%</td></tr> 
-<tr><td><a href="/about/versions/android-4.0.html">4.0 - 4.0.2</a></td>
-                                                <td rowspan="2">Ice Cream Sandwich</td><td>14</td><td>0.2%</td></tr> 
+                                                   <td rowspan="2">Honeycomb</td>      <td>12</td><td>0.4%</td></tr>
+<tr><td><a href="/about/versions/android-3.2.html">3.2</a></td>      <!-- Honeycomb --><td>13</td><td>1.5%</td></tr>
 <tr><td><a href="/about/versions/android-4.0.3.html">4.0.3 - 4.0.4</a></td>
-                                                                     <!-- ICS     -->  <td>15</td><td>10.7%</td></tr> 
+                                                            <td>Ice Cream Sandwich</td><td>15</td><td>23.7%</td></tr> 
+<tr><td><a href="/about/versions/android-4.1.html">4.1</a></td>   <td>Jelly Bean</td><td>16</td><td>1.8%</td></tr> 
 </table>
 
-
 </div>
 
-<div class="col-7" style="margin-right:0">
+<div class="col-8" style="margin-right:0">
 <img alt=""
-src="http://chart.apis.google.com/chart?&cht=p&chs=460x310&chd=t:0.2,0.5,4.7,17.3,0.4,63.6,0.5,1.9,0.2,10.7&chl=Android%201.5|Android%201.6|Android%202.1|Android%202.2|Android%202.3|Android%202.3.3|Android%203.1|Android%203.2|Android%204.0|Android%204.0.3&chco=c4df9b,6fad0c&chf=bg,s,00000000" />
+src="http://chart.apis.google.com/chart?&cht=p&chs=460x245&chd=t:3.9,12.9,55.8,1.9,23.7,1.8&chl=Eclair%20%26%20older|Froyo|Gingerbread|Honeycomb|Ice%20Cream%20Sandwich|Jelly%20Bean&chco=c4df9b,6fad0c&chf=bg,s,00000000" />
 
 </div><!-- end dashboard-panel -->
 
-<p style="clear:both"><em>Data collected during a 14-day period ending on July 2, 2012</em></p>
+<p style="clear:both"><em>Data collected during a 14-day period ending on October 1, 2012</em></p>
 <!--
 <p style="font-size:.9em">* <em>Other: 0.1% of devices running obsolete versions</em></p>
 -->
@@ -81,9 +79,9 @@
 Google Play within a 14-day period ending on the date indicated on the x-axis.</p>
 
 <img alt="" height="250" width="660"
-src="http://chart.apis.google.com/chart?&cht=lc&chs=660x250&chxt=x,x,y,r&chxr=0,0,12|1,0,12|2,0,100|3,0,100&chxl=0%3A%7C01/01%7C01/15%7C02/01%7C02/15%7C03/01%7C03/15%7C04/01%7C04/15%7C05/01%7C05/15%7C06/01%7C06/15%7C07/01%7C1%3A%7C2012%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C2012%7C2%3A%7C0%25%7C25%25%7C50%25%7C75%25%7C100%25%7C3%3A%7C0%25%7C25%25%7C50%25%7C75%25%7C100%25&chxp=0,0,1,2,3,4,5,6,7,8,9,10,11,12&chxtc=0,5&chd=t:98.3,98.2,98.6,98.4,98.4,98.6,98.5,98.6,98.8,98.7,98.9,99.1,99.1|97.2,97.2,97.6,97.5,97.6,97.8,97.8,97.9,98.1,98.1,98.3,98.5,98.6|88.7,89.2,89.9,90.3,90.8,91.4,91.8,92.1,92.5,92.7,93.1,93.5,93.9|58.2,60.1,62.0,63.7,65.2,66.8,68.6,69.9,71.5,72.6,74.0,75.2,76.5|3.5,3.6,4.0,4.1,4.3,4.6,5.5,6.5,7.6,8.2,9.4,11.0,12.8|2.0,2.2,2.6,3.0,3.2,3.5,4.5,5.5,6.6,7.4,8.7,10.4,12.3|0.3,0.4,0.7,0.8,1.1,1.3,2.3,3.3,4.4,5.3,6.7,8.4,10.4&chm=b,c3df9b,0,1,0|b,b6dc7d,1,2,0|tAndroid%202.2,5b831d,2,0,15,,t::-5|b,aadb5e,2,3,0|tAndroid%202.3.3,496c13,3,0,15,,t::-5|b,9ddb3d,3,4,0|b,91da1e,4,5,0|b,80c414,5,6,0|tAndroid%204.0.3,131d02,6,12,15,,t::-5|B,6fad0c,6,7,0&chg=7,25&chdl=Android%201.6|Android%202.1|Android%202.2|Android%202.3.3|Android%203.1|Android%203.2|Android%204.0.3&chco=add274,a0d155,94d134,84c323,73ad18,62960f,507d08&chf=bg,s,00000000" />
+src="http://chart.apis.google.com/chart?&cht=lc&chs=660x250&chxt=x,x,y,r&chf=bg,s,00000000&chxr=0,0,12|1,0,12|2,0,100|3,0,100&chxl=0%3A%7C04/01%7C04/15%7C05/01%7C05/15%7C06/01%7C06/15%7C07/01%7C07/15%7C08/01%7C08/15%7C09/01%7C09/15%7C10/01%7C1%3A%7C2012%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C2012%7C2%3A%7C0%25%7C25%25%7C50%25%7C75%25%7C100%25%7C3%3A%7C0%25%7C25%25%7C50%25%7C75%25%7C100%25&chxp=0,0,1,2,3,4,5,6,7,8,9,10,11,12&chxtc=0,5&chd=t:97.8,97.9,98.1,98.1,98.3,98.5,98.6,98.7,98.9,98.9,99.0,99.1,99.2|91.8,92.1,92.5,92.7,93.1,93.5,93.9,94.2,94.7,94.9,95.3,95.5,95.8|68.6,69.9,71.5,72.6,74.0,75.2,76.5,77.8,79.2,80.1,81.1,82.0,82.9|5.5,6.5,7.6,8.2,9.4,11.0,12.8,15.6,18.9,21.2,23.7,25.5,27.4|4.5,5.5,6.6,7.4,8.7,10.4,12.3,15.1,18.4,20.7,23.2,25.1,27.0|2.3,3.3,4.4,5.3,6.7,8.4,10.4,13.2,16.6,19.0,21.5,23.5,25.5|0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.8,0.9,1.1,1.4,1.8&chm=b,c3df9b,0,1,0|tAndroid%202.2,6c9729,1,0,15,,t::-5|b,b6dc7d,1,2,0|tAndroid%202.3.3,5b831d,2,0,15,,t::-5|b,aadb5e,2,3,0|b,9ddb3d,3,4,0|b,91da1e,4,5,0|tAndroid%204.0.3,253a06,5,6,15,,t::-5|b,80c414,5,6,0|B,6fad0c,6,7,0&chg=7,25&chdl=Android%202.1|Android%202.2|Android%202.3.3|Android%203.1|Android%203.2|Android%204.0.3|Android%204.1&chco=add274,a0d155,94d134,84c323,73ad18,62960f,507d08" />
 
-<p><em>Last historical dataset collected during a 14-day period ending on July 2, 2012</em></p>
+<p><em>Last historical dataset collected during a 14-day period ending on October 1, 2012</em></p>
 
 
 
@@ -110,6 +108,14 @@
 
 <h2 id="Screens">Screen Sizes and Densities</h2>
 
+
+<img alt="" style="float:right;"
+src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chf=bg,s,00000000&chco=c4df9b,6fad0c&chl=Xlarge%7CLarge%7CNormal%7CSmall&chd=t%3A4.6,6.1,86.6,2.7" />
+
+
+<img alt="" style="float:right;clear:right"
+src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chf=bg,s,00000000&chco=c4df9b,6fad0c&chl=ldpi%7Cmdpi%7Chdpi%7Cxhdpi&chd=t%3A2.2,18,51.1,28.7" />
+
 <p>This section provides data about the relative number of active devices that have a particular
 screen configuration, defined by a combination of screen size and density. To simplify the way that
 you design your user interfaces for different screen configurations, Android divides the range of
@@ -131,10 +137,7 @@
 ending on the data collection date noted below.</p>
 
 
-<div class="col-6" style="margin-left:0">
-
-
-<table>
+<table style="width:350px">
 <tr>
 <th></th>
 <th scope="col">ldpi</th>
@@ -145,40 +148,30 @@
 <tr><th scope="row">small</th> 
 <td>1.7%</td>     <!-- small/ldpi -->
 <td></td>     <!-- small/mdpi -->
-<td>1.3%</td> <!-- small/hdpi -->
+<td>1.0%</td> <!-- small/hdpi -->
 <td></td>     <!-- small/xhdpi -->
 </tr> 
 <tr><th scope="row">normal</th> 
 <td>0.4%</td>  <!-- normal/ldpi -->
-<td>12.9%</td> <!-- normal/mdpi -->
-<td>57.5%</td> <!-- normal/hdpi -->
-<td>18.0%</td>      <!-- normal/xhdpi -->
+<td>11%</td> <!-- normal/mdpi -->
+<td>50.1%</td> <!-- normal/hdpi -->
+<td>25.1%</td>      <!-- normal/xhdpi -->
 </tr> 
 <tr><th scope="row">large</th> 
-<td>0.2%</td>     <!-- large/ldpi -->
-<td>2.9%</td> <!-- large/mdpi -->
+<td>0.1%</td>     <!-- large/ldpi -->
+<td>2.4%</td> <!-- large/mdpi -->
 <td></td>     <!-- large/hdpi -->
-<td></td>     <!-- large/xhdpi -->
+<td>3.6%</td>     <!-- large/xhdpi -->
 </tr> 
 <tr><th scope="row">xlarge</th> 
 <td></td>     <!-- xlarge/ldpi -->
-<td>5.1%</td> <!-- xlarge/mdpi -->
+<td>4.6%</td> <!-- xlarge/mdpi -->
 <td></td>     <!-- xlarge/hdpi -->
 <td></td>     <!-- xlarge/xhdpi -->
 </tr> 
 </table>
 
-
-</div>
-
-<div class="col-7" style="margin-right:0">
-<img alt=""
-src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chf=bg,s,00000000&chco=c4df9b,6fad0c&chl=Xlarge%20/%20mdpi%7CLarge%20/%20ldpi%7CLarge%20/%20mdpi%7CNormal%20/%20hdpi%7CNormal%20/%20ldpi%7CNormal%20/%20mdpi%7CNormal%20/%20xhdpi%7CSmall%20/%20hdpi%7CSmall%20/%20ldpi&chd=t%3A5.1,0.2,2.9,57.5,0.4,12.9,18.0,1.3,1.7" />
-
-</div>
-
-<p style="clear:both"><em>Data collected during a 7-day period ending on July 2, 2012</em></p>
-
+<p style="clear:both"><em>Data collected during a 7-day period ending on October 1, 2012</em></p>
 
 
 
@@ -196,6 +189,10 @@
 support for any lower version (for example, support for version 2.0 also implies support for
 1.1).</p>
 
+
+<img alt="" style="float:right"
+src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chco=c4df9b,6fad0c&chl=GL%201.1%20only|GL%202.0%20%26%201.1&chd=t%3A9.2,90.8&chf=bg,s,00000000" />
+
 <p>To declare which version of OpenGL ES your application requires, you should use the {@code
 android:glEsVersion} attribute of the <a
 href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code &lt;uses-feature&gt;}</a>
@@ -209,28 +206,21 @@
 ending on the data collection date noted below.</p>
 
 
-<div class="col-6" style="margin-left:0">
-<table>
+<table style="width:350px">
 <tr>
 <th scope="col">OpenGL ES Version</th>
 <th scope="col">Distribution</th>
 </tr>
 <tr>
 <td>1.1 only</th>
-<td>9.7%</td>
+<td>9.2%</td>
 </tr>
 <tr>
 <td>2.0 &amp; 1.1</th>
-<td>90.3%</td>
+<td>90.8%</td>
 </tr>
 </table>
-</div>
-
-<div class="col-7" style="margin-right:0">
-<img alt=""
-src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chco=c4df9b,6fad0c&chl=GL%201.1%20only|GL% 202.0%20%26%201.1&chd=t%3A9.7,90.3&chf=bg,s,00000000" />
-
-</div>
 
 
-<p style="clear:both"><em>Data collected during a 7-day period ending on July 2, 2012</em></p>
+
+<p style="clear:both"><em>Data collected during a 7-day period ending on October 1, 2012</em></p>
diff --git a/docs/html/about/start.jd b/docs/html/about/start.jd
index af8344d..fbe70e3 100644
--- a/docs/html/about/start.jd
+++ b/docs/html/about/start.jd
@@ -29,9 +29,9 @@
 <p>Before you write a single line of code, you need to design the user interface and make it fit
 the Android user experience. Although you may know what a user will <em>do</em> with your app, you
 should pause to focus on how a user will <em>interact</em> with it. Your design should be sleek,
-simple, powereful, and tailored to the Android experience.</p>
+simple, powerful, and tailored to the Android experience.</p>
 
-<p>So whether your a one-man shop or a large team, you should study the <a
+<p>So whether you're a one-man shop or a large team, you should study the <a
 href="{@docRoot}design/index.html">Design</a> guidelines first.</p>
 </div>
 
diff --git a/docs/html/about/versions/android-1.6-highlights.jd b/docs/html/about/versions/android-1.6-highlights.jd
index 2ee1d80..edfd7ff 100644
--- a/docs/html/about/versions/android-1.6-highlights.jd
+++ b/docs/html/about/versions/android-1.6-highlights.jd
@@ -49,17 +49,17 @@
 <!-- screenshots float right -->
 
 <div class="screenshot">
-<img src="images/search.png" class="screenshot" alt="" /><br/>
+<img src="{@docRoot}sdk/images/search.png" class="screenshot" alt="" /><br/>
 Quick Search Box
 </div>
  
 <div class="screenshot">
-<img src="images/camera.png" class="screenshot" alt="" /><br/>
+<img src="{@docRoot}sdk/images/camera.png" class="screenshot" alt="" /><br/>
 New Camera/Camcorder UI
 </div>
 
 <div class="screenshot">
-<img src="images/battery.png" class="screenshot" alt="" /><br/>
+<img src="{@docRoot}sdk/images/battery.png" class="screenshot" alt="" /><br/>
 Battery Usage Indicator
 </div>
 
@@ -121,7 +121,7 @@
 <h2 id="GooglePlayUpdates" style="clear:right">Google Play Updates</h2>
 
 <div class="screenshot" style="margin-top:-35px">
-<img src="images/market.png" class="screenshot" alt="" /><br/>
+<img src="{@docRoot}sdk/images/market.png" class="screenshot" alt="" /><br/>
 New Google Play UI
 </div>
 
diff --git a/docs/html/about/versions/android-2.0-highlights.jd b/docs/html/about/versions/android-2.0-highlights.jd
index 2ba9ac7..58b5fda 100644
--- a/docs/html/about/versions/android-2.0-highlights.jd
+++ b/docs/html/about/versions/android-2.0-highlights.jd
@@ -54,27 +54,27 @@
 <!-- screenshots float right -->
 
 <div class="screenshot">
-  <img src="images/2.0/quick-connect.png" class="screenshot" alt="" /><br/>
+  <img src="{@docRoot}sdk/images/2.0/quick-connect.png" class="screenshot" alt="" /><br/>
   Quick Contact for Android
 </div>
 
 <div class="screenshot second">
-  <img src="images/2.0/multiple-accounts.png" class="screenshot" alt="" /><br/>
+  <img src="{@docRoot}sdk/images/2.0/multiple-accounts.png" class="screenshot" alt="" /><br/>
   Multiple Accounts
 </div>
 
 <div class="screenshot">
-  <img src="images/2.0/mms-search.png" class="screenshot" alt="" /><br/>
+  <img src="{@docRoot}sdk/images/2.0/mms-search.png" class="screenshot" alt="" /><br/>
   Messaging Search
 </div>
 
 <div class="screenshot second">
-  <img src="images/2.0/email-inbox.png" class="screenshot" alt="" /><br/>
+  <img src="{@docRoot}sdk/images/2.0/email-inbox.png" class="screenshot" alt="" /><br/>
   Email Combined Inbox
 </div>
 
 <div class="screenshot">
-  <img src="images/2.0/camera-modes.png" class="screenshot" alt="" /><br/>
+  <img src="{@docRoot}sdk/images/2.0/camera-modes.png" class="screenshot" alt="" /><br/>
   Camera Modes
 </div>
 
diff --git a/docs/html/about/versions/android-2.2-highlights.jd b/docs/html/about/versions/android-2.2-highlights.jd
index 37a20d5..190e301 100644
--- a/docs/html/about/versions/android-2.2-highlights.jd
+++ b/docs/html/about/versions/android-2.2-highlights.jd
@@ -71,7 +71,7 @@
 <table class="columns" style="max-width:800px">
 <tr>
   <td>
-<img src="images/2.2/22home.png" alt="" height=230 />
+<img src="{@docRoot}sdk/images/2.2/22home.png" alt="" height=230 />
   </td>
   <td>
 <p style="margin-top:0">New Home screen <span class="green">tips widget</span> assists new users on
@@ -103,7 +103,7 @@
 application, enabling users to auto-complete recipient names from the directory.</p>
   </td>
   <td>
-<img src="images/2.2/22exchange.png" alt="" height=300 />
+<img src="{@docRoot}sdk/images/2.2/22exchange.png" alt="" height=300 />
   </td>
 </tr>
 </table>
@@ -114,7 +114,7 @@
 <table class="columns" style="max-width:800px">
 <tr>
   <td>
-<img src="images/2.2/22gallery.png" alt="" height=220 />
+<img src="{@docRoot}sdk/images/2.2/22gallery.png" alt="" height=220 />
   </td>
   <td>
 <p>Gallery allows you to <span class="green">peek into picture stacks</span> using a zoom
@@ -141,7 +141,7 @@
 two devices.</p>
   </td>
   <td>
-<img src="images/2.2/22hotspot.png" alt="" height=180 />
+<img src="{@docRoot}sdk/images/2.2/22hotspot.png" alt="" height=180 />
   </td>
 </tr>
 </table>
@@ -152,7 +152,7 @@
 <table class="columns" style="max-width:800px">
 <tr>
   <td>
-<img src="images/2.2/22keyboard.png" alt="" height=220 />
+<img src="{@docRoot}sdk/images/2.2/22keyboard.png" alt="" height=220 />
   </td>
   <td>
 <p>Multi-lingual users can add multiple languages to the keyboard and <span class="green">switch
@@ -179,7 +179,7 @@
 which results in faster app switching and smoother performance on memory-constrained devices.</p>
   </td>
   <td>
-<img src="images/2.2/jit-graph.png" alt="" height=200 />
+<img src="{@docRoot}sdk/images/2.2/jit-graph.png" alt="" height=200 />
   </td>
 </tr>
 </table>
diff --git a/docs/html/about/versions/android-2.2.jd b/docs/html/about/versions/android-2.2.jd
index 361e8b6..64ddca4 100644
--- a/docs/html/about/versions/android-2.2.jd
+++ b/docs/html/about/versions/android-2.2.jd
@@ -1,4 +1,4 @@
-page.title=Android 2.2 Platform
+page.title=Android 2.2 APIs
 sdk.platform.version=2.2
 sdk.platform.apiLevel=8
 sdk.platform.majorMinor=minor
@@ -117,7 +117,7 @@
 <p>For more information about setting a preferred install location for your
 application, including a discussion of what types of applications should and
 should not request external installation, please read the <a
-href="{@docRoot}guide/appendix/install-location.html">App Install Location</a>
+href="{@docRoot}guide/topics/data/install-location.html">App Install Location</a>
 document. </p>
 
 <h3 id="backup-manager">Data backup</h3>
diff --git a/docs/html/about/versions/android-2.3.3.jd b/docs/html/about/versions/android-2.3.3.jd
index 55ff346..7a9711d 100644
--- a/docs/html/about/versions/android-2.3.3.jd
+++ b/docs/html/about/versions/android-2.3.3.jd
@@ -1,4 +1,4 @@
-page.title=Android 2.3.3 Platform
+page.title=Android 2.3.3 APIs
 sdk.platform.version=2.3.3
 sdk.platform.apiLevel=10
 
@@ -122,8 +122,8 @@
 <code>&lt;uses-feature android:name="android.hardware.nfc"
 android:required="true"&gt;</code> to the application's manifest.</p>
 
-<p class="note">To look at sample code for NFC, see
-<a href="{@docRoot}resources/samples/NFCDemo/index.html">NFCDemo app</a>, <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/nfc/TechFilter.html">filtering by tag technology</a></li>, <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.html">using foreground dispatch</a>, and <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundNdefPush.html">foreground NDEF push (P2P)</a>.</p>
+<p class="note">For more information, read the 
+  <a href="{@docRoot}guide/topics/connectivity/nfc/index.html">NFC</a> developer guide.</p>
 
 <h3 id="bluetooth">Bluetooth</h3>
 
diff --git a/docs/html/about/versions/android-2.3.4.jd b/docs/html/about/versions/android-2.3.4.jd
index bb4feec..3bb0d7b 100644
--- a/docs/html/about/versions/android-2.3.4.jd
+++ b/docs/html/about/versions/android-2.3.4.jd
@@ -1,4 +1,4 @@
-page.title=Android 2.3.4 Platform
+page.title=Android 2.3.4 APIs
 sdk.platform.version=2.3.4
 sdk.platform.apiLevel=10
 
diff --git a/docs/html/about/versions/android-2.3.jd b/docs/html/about/versions/android-2.3.jd
index 2afa564..8715973 100644
--- a/docs/html/about/versions/android-2.3.jd
+++ b/docs/html/about/versions/android-2.3.jd
@@ -1,4 +1,4 @@
-page.title=Android 2.3 Platform
+page.title=Android 2.3 APIs
 sdk.platform.version=2.3
 sdk.platform.apiLevel=9
 
@@ -76,8 +76,8 @@
 android:required="true"&gt;</code> and <code>&lt;uses-feature
 android:name="android.software.sip.voip"&gt;</code> to the application manifest.</p>
 
-<p class="note">To look at a sample application that uses the SIP API, see <a
-href="{@docRoot}resources/samples/SipDemo/index.html">SIP Demo</a>.</p>
+<p class="note">For more information, read the <a
+href="{@docRoot}guide/topics/connectivity/sip.html">SIP</a> developer guide.</p>
 
 <h3 id="nfc">Near Field Communications (NFC)</h3>
 
diff --git a/docs/html/about/versions/android-3.0.jd b/docs/html/about/versions/android-3.0.jd
index 76e0795..5bfdffc 100644
--- a/docs/html/about/versions/android-3.0.jd
+++ b/docs/html/about/versions/android-3.0.jd
@@ -1,4 +1,4 @@
-page.title=Android 3.0 Platform
+page.title=Android 3.0 APIs
 sdk.platform.version=3.0
 sdk.platform.apiLevel=11
 @jd:body
diff --git a/docs/html/about/versions/android-3.1.jd b/docs/html/about/versions/android-3.1.jd
index 2a845f0..b0e2f08 100644
--- a/docs/html/about/versions/android-3.1.jd
+++ b/docs/html/about/versions/android-3.1.jd
@@ -1,4 +1,4 @@
-page.title=Android 3.1 Platform
+page.title=Android 3.1 APIs
 sdk.platform.version=3.1
 sdk.platform.apiLevel=12
 @jd:body
diff --git a/docs/html/about/versions/android-3.2.jd b/docs/html/about/versions/android-3.2.jd
index 02111a0..e0f0125 100644
--- a/docs/html/about/versions/android-3.2.jd
+++ b/docs/html/about/versions/android-3.2.jd
@@ -1,4 +1,4 @@
-page.title=Android 3.2 Platform
+page.title=Android 3.2 APIs
 sdk.platform.version=3.2
 sdk.platform.apiLevel=13
 @jd:body
diff --git a/docs/html/about/versions/android-4.0.3.jd b/docs/html/about/versions/android-4.0.3.jd
index a8c7e83..a773b6e 100644
--- a/docs/html/about/versions/android-4.0.3.jd
+++ b/docs/html/about/versions/android-4.0.3.jd
@@ -1,4 +1,4 @@
-page.title=Android 4.0.3 Platform
+page.title=Android 4.0.3 APIs
 sdk.platform.version=4.0.3
 sdk.platform.apiLevel=15
 @jd:body
diff --git a/docs/html/about/versions/android-4.0.jd b/docs/html/about/versions/android-4.0.jd
index 06b63a0c..8595eee 100644
--- a/docs/html/about/versions/android-4.0.jd
+++ b/docs/html/about/versions/android-4.0.jd
@@ -1,4 +1,6 @@
-page.title=Android 4.1 API Overview
+page.title=Android 4.0 APIs
+sdk.platform.version=4.0
+sdk.platform.apiLevel=14
 @jd:body
 
 <div id="qv-wrapper">
diff --git a/docs/html/about/versions/jelly-bean.jd b/docs/html/about/versions/jelly-bean.jd
index db56fa4..0583e12 100644
--- a/docs/html/about/versions/jelly-bean.jd
+++ b/docs/html/about/versions/jelly-bean.jd
@@ -1,29 +1,6 @@
 page.title=Android 4.1 for Developers
 @jd:body
 
-
-<!--<style type="text/css">
-#jd-content {
-  max-width:1024px;
-}
-#jd-content div.screenshot {
-  float:left;
-  clear:left;
-  padding:15px 30px 15px 0;
-}
-
-</style>
-
-<p></p>
-
-
-<div style="float:right;width:230px;padding:0px 0px 60px 34px;margin-top:-40px">
-<div>
-<img src="{@docRoot}images/android-jellybean-sm.png" xheight="402" width="280">
-</div>
-<p class="image-caption">Find out more about the Jelly Bean features for users at <a href="http://www.android.com">android.com</a></p>
-</div>-->
-
 <div style="float:right;width:320px;padding:0px 0px 0px 34px;clear:both">
 <div>
 <img src="{@docRoot}images/jb-android-4.1.png" height="426" width="390">
@@ -35,23 +12,9 @@
 improvements throughout the platform and added great new features
 for users and developers. This document provides a glimpse of what's new for developers.
 
-<p>See the <a href="{@docRoot}about/versions/android-4.1.html">Android 4.1 APIs</a> document for a detailed look at the new developer APIs,</p>
+<p>See the <a href="{@docRoot}about/versions/android-4.1.html">Android 4.1 APIs</a> document for a detailed look at the new developer APIs.</p>
 
-<!--
-<ul>
-  <li><a href="#performance">Fast, Smooth, Responsive</a></li>
-  <li><a href="#accessibility">Enhanced Accessibility</a></li>
-  <li><a href="#intl">Support for International Users</a></li>
-  <li><a href="#ui">Capabilities for Creating Beautiful UI</a></li>
-  <li><a href="#input">New Input Types and Capabilities</a></li>
-  <li><a href="#graphics">Animation and Graphics</a></li>
-  <li><a href="#connectivity">New Types of Connectivity</a></li>
-  <li><a href="#media">Media Capabilities</a></li>
-  <li><a href="#google">Google APIs and services</a></li>
-  </ul>
--->
-
-<p>Find out more about the Jelly Bean features for users at <a href="http://www.android.com/whatsnew">www.android.com</a></p>
+<p>Find out more about the Jelly Bean features for users at <a href="http://www.android.com/whatsnew">www.android.com</a>.</p>
 
 
 <h2 id="performance">Faster, Smoother, More Responsive</h2>
@@ -340,12 +303,12 @@
 
 <p>Smart app updates is a new feature of Google Play that introduces a better way of delivering <strong>app updates</strong> to devices. When developers publish an update, Google Play now delivers only the <strong>bits that have changed</strong> to devices, rather than the entire APK. This makes the updates much lighter-weight in most cases, so they are faster to download, save the device’s battery, and conserve bandwidth usage on users’ mobile data plan. On average, a smart app update is about <strong>1/3 the size</strong> of a full APK update.</p>
 
-<h3 id="gps">Google Play services (coming soon)</h3>
+<h3 id="gps">Google Play services</h3>
 
 <p>Google Play services helps developers to <strong>integrate Google services</strong> such as authentication and Google+ into their apps delivered through Google Play.</p> 
 
-<p>Google Play services will be automatically provisioned to end user devices by Google Play, so all you need is a <strong>thin client library</strong> in your apps.</p>
+<p>Google Play services is automatically provisioned to end user devices by Google Play, so all you need is a <strong>thin client library</strong> in your apps.</p>
 
 <p>Because your app only contains the small client library, you can take advantage of these services without a big increase in download size and storage footprint. Also, Google Play will <strong>deliver regular updates</strong> to the services, without developers needing to publish app updates to take advantage of them.</p>
 
-<p>For more information about the APIs included in Google Play Services, see the <a href="http://developers.google.com/android/google-play-services/index.html">Google Play Services</a> developer page.</p>
+<p>For more information about the APIs included in Google Play Services, see the <a href="http://developers.google.com/android/google-play-services/index.html">Google Play services</a> developer page.</p>
diff --git a/docs/html/design/building-blocks/buttons.jd b/docs/html/design/building-blocks/buttons.jd
index 1c28cbef..82e2477c 100644
--- a/docs/html/design/building-blocks/buttons.jd
+++ b/docs/html/design/building-blocks/buttons.jd
@@ -36,3 +36,10 @@
 than basic buttons and integrate nicely with other content.</p>
 
 <img src="{@docRoot}design/media/buttons_borderless.png">
+
+
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to build and customize buttons in your app,
+  see the <a href="{@docRoot}guide/topics/ui/controls/button.html">Buttons</a> API guide.</p>
+</div>
diff --git a/docs/html/design/building-blocks/dialogs.jd b/docs/html/design/building-blocks/dialogs.jd
index 9b653ee..a2ece2e 100644
--- a/docs/html/design/building-blocks/dialogs.jd
+++ b/docs/html/design/building-blocks/dialogs.jd
@@ -10,28 +10,29 @@
 <div class="with-callouts">
 
 <ol>
-<li>
-<h4>Optional title region</h4>
-<p>The title introduces the content of your dialog. It can, for example, identify the name of a
- setting that the user is about to change, or request a decision.</p>
-</li>
-<li>
-<h4>Content area</h4>
-<p>Dialog content varies widely. For settings dialogs, a dialog may contain UI elements such as
- sliders, text fields, checkboxes, or radio buttons that allow the user to change app or system
- settings. In other cases, such as alerts, the content may consist solely of text that provides
- further context for a user decision.</p>
-</li>
-<li>
-<h4>Action buttons</h4>
-<p>Action buttons are typically Cancel and/or OK, with OK indicating the preferred or most likely
- action. However, if the options consist of specific actions such as Close or Wait rather than
- a confirmation or cancellation of the action described in the content, then all the buttons
- should be active verbs. As a rule, the dismissive action of a dialog is always on the left
- whereas the affirmative actions are on the right.</p>
-</li>
-</ol>
+  <li>
+  <h4>Optional title region</h4>
+  <p>The title introduces the content of your dialog. It can, for example, identify the name of a
+   setting that the user is about to change, or request a decision.</p>
+  </li>
+  <li>
+  <h4>Content area</h4>
+  <p>Dialog content varies widely. For settings dialogs, a dialog may contain UI elements such as
+   sliders, text fields, checkboxes, or radio buttons that allow the user to change app or system
+   settings. In other cases, such as alerts, the content may consist solely of text that provides
+   further context for a user decision.</p>
+  </li>
 
+  <li>
+  <h4>Action buttons</h4>
+  <p>Action buttons are typically Cancel and/or OK, with OK indicating the preferred or most likely action. However, if the options consist of specific actions such as Close or Wait rather than a confirmation or cancellation of the action described in the content, then all the buttons should be active verbs. Order actions following these rules:</p>
+    <ul>
+    
+    <li>The dismissive action of a dialog is always on the left. Dismissive actions return to the user to the previous state.</li>
+    <li>The affirmative actions are on the right. Affirmative actions continue progress toward the user goal that triggered the dialog.</li>
+    </ul>
+  </li>
+</ol>
 </div>
 
 <img src="{@docRoot}design/media/dialogs_examples.png">
@@ -80,7 +81,52 @@
 
   </div>
 </div>
+<p>When crafting a confirmation dialog, make the title meaningful by echoing the requested action.</p>
 
+<div class="layout-content-row">
+  <div class="layout-content-col span-4">
+    <div class="do-dont-label bad">Don't</div>
+      <table class="ui-table bad">
+      <thead>
+        <tr>
+          <th class="label">
+          Are you sure?
+          </th>
+        </tr>
+      </thead>
+      </table>
+  </div>
+  <div class="layout-content-col span-4">
+    <div class="do-dont-label bad">Don't</div>
+      <table class="ui-table bad">
+      <thead>
+        <tr>
+          <th class="label">
+          Warning!
+          </th>
+        </tr>
+      </thead>
+      </table>
+  </div>
+  <div class="layout-content-col span-5">
+    <div class="do-dont-label good">Do</div>
+      <table class="ui-table good">
+      <thead>
+        <tr>
+          <th class="label">
+          Erase USB storage?
+          </th>
+        </tr>
+      </thead>
+      </table>
+  </div>
+</div>
+
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to build dialogs in your app,
+  see the <a href="{@docRoot}guide/topics/ui/dialogs.html">Dialogs</a> API guide.</p>
+</div>
 
 <h2 id="popups">Popups</h2>
 
@@ -110,3 +156,10 @@
 
   </div>
 </div>
+
+
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to create toasts,
+  see the <a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">Toasts</a> API guide.</p>
+</div>
diff --git a/docs/html/design/building-blocks/index.jd b/docs/html/design/building-blocks/index.jd
index d915aae..e554775 100644
--- a/docs/html/design/building-blocks/index.jd
+++ b/docs/html/design/building-blocks/index.jd
@@ -11,7 +11,7 @@
 #text-overlay {
   position: absolute;
   left: 0;
-  top: 472px;
+  top: 520px;
   width: 450px;
 }
 </style>
diff --git a/docs/html/design/building-blocks/pickers.jd b/docs/html/design/building-blocks/pickers.jd
index e3cf642..b328df9 100644
--- a/docs/html/design/building-blocks/pickers.jd
+++ b/docs/html/design/building-blocks/pickers.jd
@@ -29,3 +29,10 @@
 correctly. The format of a time and date picker adjusts automatically to the locale.</p>
 
 <img src="{@docRoot}design/media/picker_datetime.png">
+
+
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to create date and time pickers,
+  see the <a href="{@docRoot}guide/topics/ui/controls/pickers.html">Pickers</a> API guide.</p>
+</div>
diff --git a/docs/html/design/building-blocks/progress.jd b/docs/html/design/building-blocks/progress.jd
index 03fc09c..7342387 100644
--- a/docs/html/design/building-blocks/progress.jd
+++ b/docs/html/design/building-blocks/progress.jd
@@ -1,19 +1,14 @@
-page.title=Progress and Activity
+page.title=Progress &amp; Activity
 @jd:body
 
-<p>When an operation of interest to the user is taking place over a relatively long period of time,
-provide visual feedback that it's still happening and in the process of being completed.</p>
-<h2 id="progress">Progress</h2>
+<p>Progress bars and activity indicators signal to users that something is happening that will take a moment.</p>
+<h2 id="progress">Progress bars</h2>
 
-<p>If you know the percentage of the operation that has been completed, use a determinate progress bar
-to give the user a sense of how much longer it will take.</p>
+<p>Progress bars are for situations where the percentage completed can be determined. They give users a quick sense of how much longer an operation will take.</p>
 
 <img src="{@docRoot}design/media/progress_download.png">
 
-<p>The progress bar should always travel from 0% to 100% completion. Avoid setting the bar to a lower
-value than a previous value, or using the same progress bar to represent the progress of multiple
-events, since doing so makes the display meaningless. If you're not sure how long a particular
-operation will take, use an indeterminate progress indicator.</p>
+<p>A progress bar should always fill from 0% to 100% and never move backwards to a lower value. If multiple operations are happening in sequence, use the progress bar to represent the delay as a whole, so that when the bar reaches 100%, it doesn't return back to 0%.</p>
 
 <div class="vspace size-2">&nbsp;</div>
 
@@ -22,12 +17,11 @@
   Progress bar in Holo Dark and Holo Light.
 </div>
 
-<h2 id="activity">Activity</h2>
+<h2 id="activity">Activity indicators</h2>
 
-<p>If you don't know how much longer an operation will continue, use an indeterminate progress
-indicator. There are two styles available: a flat bar and a circle. Use the one that best fits the
-available space.</p>
+<p>Activity indicators are for operations of an indeterminate length. They ask users to wait a moment while something finishes up, without getting into specifics about what's happening behind the scenes.</p>
 
+<p>Two styles are available: a bar and a circle. Each is offered in a variety of sizes, in both Holo Light and Holo Dark themes. Choose the appropriate style and size for the surrounding context. For example, the largest activity circle works well when displayed in a blank content area, but not in a smaller dialog box. Each operation should only be represented by one activity indicator.</p>
 
 <div class="layout-content-row">
   <div class="layout-content-col span-6">
@@ -38,14 +32,8 @@
   <div class="layout-content-col span-7 with-callouts">
 
     <ol>
-      <li class="value-1"><h4>Activity bar (shown with the Holo Dark theme)</h4>
-        <p>
-
-An indeterminate activity bar is used at the start of an application download because the Play Store
-app hasn't been able to contact the server yet, and it's not possible to determine how long it will
-take for the download to begin.
-
-        </p>
+      <li class="value-1"><h4>Activity bar</h4>
+        <p>In this example, an activity bar (in Holo Dark) appears when a user first requests a download. There's an unknown period of time when the download has not yet started. As soon as the download starts, this activity bar transforms into a progress bar.</p>
       </li>
     </ol>
 
@@ -61,12 +49,19 @@
   <div class="layout-content-col span-7 with-callouts">
 
     <ol>
-      <li class="value-2"><h4>Activity circle (shown with the Holo Light theme)</h4>
+      <li class="value-2"><h4>Activity circle</h4>
+        <p>In this example, an activity circle (in Holo Light) is used in the Gmail application when a message is being loaded because it's not possible to determine how long it will take to download the email.</p>
+        <p>When displaying an activity circle, do not include text to communicate what the app is doing. The moving circle alone provides sufficient feedback about the delay, and does so in an understated way that minimizes the impact.</p>
         <p>
-
-An indeterminate activity circle is used in the Gmail application when a message is being
-loaded because it's not possible to determine how long it will take to download the email.
-
+        <div class="layout-content-col span-3" style="margin-left:0">
+          <div class="do-dont-label bad">Don't</div>
+          <img src="{@docRoot}design/media/progress_activity_dont.png">
+        </div>
+      
+        <div class="layout-content-col span-3">
+          <div class="do-dont-label good">Do</div>
+          <img src="{@docRoot}design/media/progress_activity_do.png">
+        </div>
         </p>
       </li>
     </ol>
@@ -74,6 +69,34 @@
   </div>
 </div>
 
-<p>You should only use one activity indicator on screen per activity, and it should appropriately sized
-for the surrounding context. For example, the largest activity circle works well when displayed in a
-blank content area, but not in a smaller dialog box.</p>
+<h2 id="custom-indicators">Custom indicators</h2>
+<p>The standard progress bar and activity indicators work well for most situations and should be used whenever possible to provide a consistent experience across Android. However, some situations may call for something more custom.</p>
+
+<p>Here's an example:<br>
+In all of the Google Play apps (Music, Books, Movies, Magazines), we wanted the current download state of each item to be visible at all times at the top-level screen. These states are:
+  <ul>
+    <li>Not downloaded</li>
+    <li>Temporarily downloaded (automatically cached by the app)</li>
+    <li>Permanently downloaded on the device at the user's request</li>
+  </ul>
+</p>
+<p>We also needed to indicate progress from one download state to another, because downloading is not instantaneous.</p>
+<p>This presented a challenge, because the Google Play apps use a variety of different layouts, and some of them are highly space-constrained. We didn't want this information to clutter the top-level screens, or compete too much with the cover art.</p>
+<p>So we designed a custom indicator that could show all of the information in a tiny footprint, with the flexibility to appear on top of content if necessary.</p>
+
+<img src="{@docRoot}design/media/progress_activity_custom.png">
+
+<p>The color indicates whether it's downloaded (blue) or not (gray). The appearance of the pin indicates whether the download is permanent (white, upright) or temporary (gray, diagonal). And when state is in the process of changing, progress is indicated by a moving pie chart.</p>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-9">
+    <img src="{@docRoot}design/media/progress_activity_custom_app.png">
+  </div>
+  <div class="layout-content-col span-4">
+    <div class="figure-caption">
+      Across Google Play apps with different layouts, the same custom indicator appears with each item. It communicates download state as well as progress, in a compact package that can be incorporated into any screen design.
+    </div>
+  </div>
+</div>
+
+<p>If you find that the standard indicators aren't meeting your needs (due to space constraints, state complexities), by all means design your own. Make it feel like part of the Android family by injecting some of the visual characteristics of the standard indicators. In this example, we carried over the circular shape, the same shade of blue, and the flat and simple style.</p>
diff --git a/docs/html/design/building-blocks/spinners.jd b/docs/html/design/building-blocks/spinners.jd
index 621a57c..279565f 100644
--- a/docs/html/design/building-blocks/spinners.jd
+++ b/docs/html/design/building-blocks/spinners.jd
@@ -35,3 +35,10 @@
 <div class="figure-caption">
   Spinners in the Holo Dark and Holo Light themes, in various states.
 </div>
+
+
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to create spinners,
+  see the <a href="{@docRoot}guide/topics/ui/controls/spinner.html">Spinners</a> API guide.</p>
+</div>
diff --git a/docs/html/design/building-blocks/switches.jd b/docs/html/design/building-blocks/switches.jd
index c4dfc4b..d9cfd07 100644
--- a/docs/html/design/building-blocks/switches.jd
+++ b/docs/html/design/building-blocks/switches.jd
@@ -23,3 +23,11 @@
 <p>On/off switches toggle the state of a single settings option.</p>
 
   <img src="{@docRoot}design/media/switches_switches.png">
+
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to create these different switches,
+  see the <a href="{@docRoot}guide/topics/ui/controls/checkbox.html">Checkboxes</a>,
+  <a href="{@docRoot}guide/topics/ui/controls/radiobutton.html">Radio Buttons</a>, or
+  <a href="{@docRoot}guide/topics/ui/controls/togglebutton.html">Toggle Buttons</a> API guides.</p>
+</div>
diff --git a/docs/html/design/building-blocks/tabs.jd b/docs/html/design/building-blocks/tabs.jd
index 19ed1c3..0a0f907 100644
--- a/docs/html/design/building-blocks/tabs.jd
+++ b/docs/html/design/building-blocks/tabs.jd
@@ -6,6 +6,7 @@
 <p>Tabs in the action bar make it easy to explore and switch between different views or functional
 aspects of your app, or to browse categorized data sets.</p>
 
+<p>For details on using gestures to move between tabs, see the <a href="{@docRoot}design/patterns/swipe-views.html">Swipe Views</a> pattern.</p>
 
 <h2 id="scrollable">Scrollable Tabs</h2>
 
@@ -34,9 +35,8 @@
 
 
 <h2 id="fixed">Fixed Tabs</h2>
-
-
-<p>Fixed tabs display all items concurrently. To navigate to a different view, touch the tab.</p>
+<p>Fixed tabs display all items concurrently. To navigate to a different view, touch the tab, or swipe left or right.</p>
+<p>Fixed tabs are displayed with equal width, based on the width of the widest tab label. If there is insufficient room to display all tabs, the tab labels themselves will be scrollable. For this reason, fixed tabs are best suited for displaying 3 or fewer tabs.</p>
 
 <img src="{@docRoot}design/media/tabs_standard.png">
 <div class="figure-caption">
@@ -57,3 +57,10 @@
 permits fast view switching even on narrower screens.</p>
 
 <img src="{@docRoot}design/media/tabs_stacked.png">
+
+
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to create tabs,
+  see the <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> API guide.</p>
+</div>
diff --git a/docs/html/design/building-blocks/text-fields.jd b/docs/html/design/building-blocks/text-fields.jd
index 1b10420..563f247 100644
--- a/docs/html/design/building-blocks/text-fields.jd
+++ b/docs/html/design/building-blocks/text-fields.jd
@@ -68,3 +68,11 @@
 
   </div>
 </div>
+
+
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to create text fields, provide auto-complete suggestions,
+  and specify the input mode,
+  see the <a href="{@docRoot}guide/topics/ui/controls/text.html">Text Fields</a> API guide.</p>
+</div>
diff --git a/docs/html/design/design_toc.cs b/docs/html/design/design_toc.cs
index a31fdd3..c3020e1 100644
--- a/docs/html/design/design_toc.cs
+++ b/docs/html/design/design_toc.cs
@@ -26,7 +26,7 @@
   <li class="nav-section">
     <div class="nav-section-header"><a href="<?cs var:toroot ?>design/patterns/index.html">Patterns</a></div>
     <ul>
-      <li><a href="<?cs var:toroot ?>design/patterns/new-4-0.html">New in Android 4.0</a></li>
+      <li><a href="<?cs var:toroot ?>design/patterns/new.html">New in Android</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/gestures.html">Gestures</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/app-structure.html">App Structure</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/navigation.html">Navigation</a></li>
@@ -34,9 +34,13 @@
       <li><a href="<?cs var:toroot ?>design/patterns/multi-pane-layouts.html">Multi-pane Layouts</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/swipe-views.html">Swipe Views</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/selection.html">Selection</a></li>
+      <li><a href="<?cs var:toroot ?>design/patterns/confirming-acknowledging.html">Confirming &amp; Acknowledging</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/notifications.html">Notifications</a></li>
+      <li><a href="<?cs var:toroot ?>design/patterns/widgets.html">Widgets</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/settings.html">Settings</a></li>
+      <li><a href="<?cs var:toroot ?>design/patterns/help.html">Help</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/compatibility.html">Compatibility</a></li>
+      <li><a href="<?cs var:toroot ?>design/patterns/accessibility.html">Accessibility</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/pure-android.html">Pure Android</a></li>
     </ul>
   </li>
@@ -63,4 +67,8 @@
     <div class="nav-section-header empty"><a href="<?cs var:toroot ?>design/downloads/index.html">Downloads</a></div>
   </li>
 
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>design/videos/index.html">Videos</a></div>
+  </li>
+
 </ul>
\ No newline at end of file
diff --git a/docs/html/design/downloads/index.jd b/docs/html/design/downloads/index.jd
index 67dfd79..00f4467 100644
--- a/docs/html/design/downloads/index.jd
+++ b/docs/html/design/downloads/index.jd
@@ -12,7 +12,8 @@
   <div class="layout-content-col span-4">
 
 <p>
-  <a class="download-button" href="https://dl-ssl.google.com/android/design/Android_Design_Downloads_20120229.zip">Download All</a>
+  <a class="download-button" onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'All Design Assets']);"
+    href="{@docRoot}downloads/design/Android_Design_Downloads_20120823.zip">Download All</a>
 </p>
 
   </div>
@@ -37,9 +38,14 @@
   <div class="layout-content-col span-4">
 
 <p>
-  <a class="download-button" href="https://dl-ssl.google.com/android/design/Android_Design_Fireworks_Stencil_20120229.png">Adobe&reg; Fireworks&reg; PNG Stencil</a>
-  <a class="download-button" href="https://dl-ssl.google.com/android/design/Android_Design_OmniGraffle_Stencil_20120229.graffle">Omni&reg; OmniGraffle&reg; Stencil</a>
-  <a class="download-button" href="https://dl-ssl.google.com/android/design/Android_Design_Holo_Widgets_20120302.zip">Adobe&reg; Photoshop&reg; Sources</a>
+  <a class="download-button"  onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Fireworks Stencil']);"
+    href="{@docRoot}downloads/design/Android_Design_Fireworks_Stencil_20120814.png">Adobe&reg; Fireworks&reg; PNG Stencil</a>
+  <a class="download-button"  onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Illustrator Stencil']);"
+    href="{@docRoot}downloads/design/Android_Design_Illustrator_Vectors_20120814.ai">Adobe&reg; Illustrator&reg; Stencil</a>
+  <a class="download-button"  onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'OmniGraffle Stencil']);"
+    href="{@docRoot}downloads/design/Android_Design_OmniGraffle_Stencil_20120814.graffle">Omni&reg; OmniGraffle&reg; Stencil</a>
+  <a class="download-button"  onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Photoshop Sources']);"
+    href="{@docRoot}downloads/design/Android_Design_Holo_Widgets_20120814.zip">Adobe&reg; Photoshop&reg; Sources</a>
 </p>
 
   </div>
@@ -65,7 +71,8 @@
   <div class="layout-content-col span-4">
 
 <p>
-  <a class="download-button" href="https://dl-ssl.google.com/android/design/Android_Design_Icons_20120229.zip">Action Bar Icon Pack</a>
+  <a class="download-button"  onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Action Bar Icons']);"
+    href="{@docRoot}downloads/design/Android_Design_Icons_20120814.zip">Action Bar Icon Pack</a>
 </p>
 
   </div>
@@ -90,8 +97,10 @@
   <div class="layout-content-col span-4">
 
 <p>
-  <a class="download-button" href="https://dl-ssl.google.com/android/design/Roboto_Hinted_20111129.zip">Roboto</a>
-  <a class="download-button" href="https://dl-ssl.google.com/android/design/Roboto_Specimen_Book_20111129.pdf">Specimen Book</a>
+  <a class="download-button"  onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Roboto ZIP']);"
+    href="{@docRoot}downloads/design/Roboto_Hinted_20120823.zip">Roboto</a>
+  <a class="download-button"  onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Roboto Specemin Book']);"
+    href="{@docRoot}downloads/design/Roboto_Specimen_Book_20111129.pdf">Specimen Book</a>
 </p>
 
   </div>
@@ -114,7 +123,8 @@
   <div class="layout-content-col span-4">
 
 <p>
-  <a class="download-button" href="https://dl-ssl.google.com/android/design/Android_Design_Color_Swatches_20120229.zip">Color Swatches</a>
+  <a class="download-button"  onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Color Swatches']);"
+    href="{@docRoot}downloads/design/Android_Design_Color_Swatches_20120229.zip">Color Swatches</a>
 </p>
 
   </div>
diff --git a/docs/html/design/get-started/creative-vision.jd b/docs/html/design/get-started/creative-vision.jd
index 792b97d..c57b185 100644
--- a/docs/html/design/get-started/creative-vision.jd
+++ b/docs/html/design/get-started/creative-vision.jd
@@ -5,13 +5,7 @@
 
 <div class="vspace size-1">&nbsp;</div>
 
-<p>Ice Cream Sandwich (Android 4.0) marks a major milestone for Android design. We touched nearly every
-pixel of the system as we expanded the new design approaches introduced in Honeycomb tablets to all
-types of mobile devices. Starting with the most basic elements, we introduced a new font, Roboto,
-designed for high-resolution displays. Other big changes include framework-level action bars on
-phones and support for new phones without physical buttons.</p>
-<p>We focused the design work with three overarching goals for our core apps and the system at large.
-As you design apps to work with Android, consider these goals:</p>
+<p>We focused the design of Android around three overarching goals, which apply to our core apps as well as the system at large. As you design apps to work with Android, consider these goals:</p>
 
 <div class="vspace size-1">&nbsp;</div>
 
diff --git a/docs/html/design/get-started/ui-overview.jd b/docs/html/design/get-started/ui-overview.jd
index 34cdd06..bfb9ec9 100644
--- a/docs/html/design/get-started/ui-overview.jd
+++ b/docs/html/design/get-started/ui-overview.jd
@@ -101,8 +101,7 @@
 
     <img src="{@docRoot}design/media/notifications_dismiss.png">
 
-<p>Most notifications have a one-line title and a one-line message. The recommended layout for a
-notification includes two lines. If necessary, you can add a third line. Timestamps are optional.</p>
+<p>Notifications can be expanded to uncover more details and relevant actions. When collapsed, notifications have a one-line title and a one-line message.The recommended layout for a notification includes two lines. If necessary, you can add a third line.</p>
 <p>Swiping a notification right or left removes it from the notification drawer.</p>
 
   </div>
diff --git a/docs/html/design/media/accessibility_contentdesc.png b/docs/html/design/media/accessibility_contentdesc.png
new file mode 100644
index 0000000..6515711
--- /dev/null
+++ b/docs/html/design/media/accessibility_contentdesc.png
Binary files differ
diff --git a/docs/html/design/media/action_bar_pattern_share_pack.png b/docs/html/design/media/action_bar_pattern_share_pack.png
index dde18f3..c8cff61 100644
--- a/docs/html/design/media/action_bar_pattern_share_pack.png
+++ b/docs/html/design/media/action_bar_pattern_share_pack.png
Binary files differ
diff --git a/docs/html/design/media/actionbar_drawer.png b/docs/html/design/media/actionbar_drawer.png
new file mode 100644
index 0000000..95e04f5
--- /dev/null
+++ b/docs/html/design/media/actionbar_drawer.png
Binary files differ
diff --git a/docs/html/design/media/app_structure_book_detail_page_flip.png b/docs/html/design/media/app_structure_book_detail_page_flip.png
index 0cca587..1066094 100644
--- a/docs/html/design/media/app_structure_book_detail_page_flip.png
+++ b/docs/html/design/media/app_structure_book_detail_page_flip.png
Binary files differ
diff --git a/docs/html/design/media/app_structure_gallery_filmstrip.png b/docs/html/design/media/app_structure_gallery_filmstrip.png
index 483bafa..a937533 100644
--- a/docs/html/design/media/app_structure_gallery_filmstrip.png
+++ b/docs/html/design/media/app_structure_gallery_filmstrip.png
Binary files differ
diff --git a/docs/html/design/media/building_blocks_landing.png b/docs/html/design/media/building_blocks_landing.png
index 2da47b7..40ab0da 100644
--- a/docs/html/design/media/building_blocks_landing.png
+++ b/docs/html/design/media/building_blocks_landing.png
Binary files differ
diff --git a/docs/html/design/media/color_spectrum.png b/docs/html/design/media/color_spectrum.png
index 7d2c023..b7ab309 100644
--- a/docs/html/design/media/color_spectrum.png
+++ b/docs/html/design/media/color_spectrum.png
Binary files differ
diff --git a/docs/html/design/media/compatibility_physical_buttons.png b/docs/html/design/media/compatibility_physical_buttons.png
index 30d5ddd..66a23c8 100644
--- a/docs/html/design/media/compatibility_physical_buttons.png
+++ b/docs/html/design/media/compatibility_physical_buttons.png
Binary files differ
diff --git a/docs/html/design/media/compatibility_virtual_nav.png b/docs/html/design/media/compatibility_virtual_nav.png
index ea595a4..27d39b2 100644
--- a/docs/html/design/media/compatibility_virtual_nav.png
+++ b/docs/html/design/media/compatibility_virtual_nav.png
Binary files differ
diff --git a/docs/html/design/media/confirm_ack_acknowledge.png b/docs/html/design/media/confirm_ack_acknowledge.png
new file mode 100644
index 0000000..b78eb14
--- /dev/null
+++ b/docs/html/design/media/confirm_ack_acknowledge.png
Binary files differ
diff --git a/docs/html/design/media/confirm_ack_confirming.png b/docs/html/design/media/confirm_ack_confirming.png
new file mode 100644
index 0000000..20a9c02
--- /dev/null
+++ b/docs/html/design/media/confirm_ack_confirming.png
Binary files differ
diff --git a/docs/html/design/media/confirm_ack_draft_deleted.png b/docs/html/design/media/confirm_ack_draft_deleted.png
new file mode 100644
index 0000000..f189db9
--- /dev/null
+++ b/docs/html/design/media/confirm_ack_draft_deleted.png
Binary files differ
diff --git a/docs/html/design/media/confirm_ack_ex_beam.png b/docs/html/design/media/confirm_ack_ex_beam.png
new file mode 100644
index 0000000..d099912
--- /dev/null
+++ b/docs/html/design/media/confirm_ack_ex_beam.png
Binary files differ
diff --git a/docs/html/design/media/confirm_ack_ex_books.png b/docs/html/design/media/confirm_ack_ex_books.png
new file mode 100644
index 0000000..634d7b9
--- /dev/null
+++ b/docs/html/design/media/confirm_ack_ex_books.png
Binary files differ
diff --git a/docs/html/design/media/confirm_ack_ex_draftsave.png b/docs/html/design/media/confirm_ack_ex_draftsave.png
new file mode 100644
index 0000000..473368d8
--- /dev/null
+++ b/docs/html/design/media/confirm_ack_ex_draftsave.png
Binary files differ
diff --git a/docs/html/design/media/confirm_ack_ex_plus1.png b/docs/html/design/media/confirm_ack_ex_plus1.png
new file mode 100644
index 0000000..6de6710
--- /dev/null
+++ b/docs/html/design/media/confirm_ack_ex_plus1.png
Binary files differ
diff --git a/docs/html/design/media/confirm_ack_ex_removeapp.png b/docs/html/design/media/confirm_ack_ex_removeapp.png
new file mode 100644
index 0000000..0abacce
--- /dev/null
+++ b/docs/html/design/media/confirm_ack_ex_removeapp.png
Binary files differ
diff --git a/docs/html/design/media/confirm_ack_flowchart.png b/docs/html/design/media/confirm_ack_flowchart.png
new file mode 100644
index 0000000..3935d47
--- /dev/null
+++ b/docs/html/design/media/confirm_ack_flowchart.png
Binary files differ
diff --git a/docs/html/design/media/dialogs_popups_example.png b/docs/html/design/media/dialogs_popups_example.png
index 2deb00d..c7536f3 100644
--- a/docs/html/design/media/dialogs_popups_example.png
+++ b/docs/html/design/media/dialogs_popups_example.png
Binary files differ
diff --git a/docs/html/design/media/downloads_stencils.png b/docs/html/design/media/downloads_stencils.png
index 9e09319..9b1a9fe 100644
--- a/docs/html/design/media/downloads_stencils.png
+++ b/docs/html/design/media/downloads_stencils.png
Binary files differ
diff --git a/docs/html/design/media/extras_googleio_12.png b/docs/html/design/media/extras_googleio_12.png
new file mode 100644
index 0000000..7ab994d
--- /dev/null
+++ b/docs/html/design/media/extras_googleio_12.png
Binary files differ
diff --git a/docs/html/design/media/help_better.png b/docs/html/design/media/help_better.png
new file mode 100644
index 0000000..83d7b07
--- /dev/null
+++ b/docs/html/design/media/help_better.png
Binary files differ
diff --git a/docs/html/design/media/help_cling.png b/docs/html/design/media/help_cling.png
new file mode 100644
index 0000000..c91d189
--- /dev/null
+++ b/docs/html/design/media/help_cling.png
Binary files differ
diff --git a/docs/html/design/media/help_dont.png b/docs/html/design/media/help_dont.png
new file mode 100644
index 0000000..3c52c97
--- /dev/null
+++ b/docs/html/design/media/help_dont.png
Binary files differ
diff --git a/docs/html/design/media/help_evenbetter.png b/docs/html/design/media/help_evenbetter.png
new file mode 100644
index 0000000..66b9d162
--- /dev/null
+++ b/docs/html/design/media/help_evenbetter.png
Binary files differ
diff --git a/docs/html/design/media/help_overflow.png b/docs/html/design/media/help_overflow.png
new file mode 100644
index 0000000..fb2bc0a
--- /dev/null
+++ b/docs/html/design/media/help_overflow.png
Binary files differ
diff --git a/docs/html/design/media/help_solo_overflow.png b/docs/html/design/media/help_solo_overflow.png
new file mode 100644
index 0000000..9423ede
--- /dev/null
+++ b/docs/html/design/media/help_solo_overflow.png
Binary files differ
diff --git a/docs/html/design/media/iconography_notification_focal.png b/docs/html/design/media/iconography_notification_focal.png
index 20d5e8f..f21954f1 100644
--- a/docs/html/design/media/iconography_notification_focal.png
+++ b/docs/html/design/media/iconography_notification_focal.png
Binary files differ
diff --git a/docs/html/design/media/index_landing_page.png b/docs/html/design/media/index_landing_page.png
index 3f319b0..2065344 100644
--- a/docs/html/design/media/index_landing_page.png
+++ b/docs/html/design/media/index_landing_page.png
Binary files differ
diff --git a/docs/html/design/media/multipane_expand.png b/docs/html/design/media/multipane_expand.png
index f761e5f..6014cc8 100644
--- a/docs/html/design/media/multipane_expand.png
+++ b/docs/html/design/media/multipane_expand.png
Binary files differ
diff --git a/docs/html/design/media/multipane_show.png b/docs/html/design/media/multipane_show.png
index b10c91c..9993c9b 100644
--- a/docs/html/design/media/multipane_show.png
+++ b/docs/html/design/media/multipane_show.png
Binary files differ
diff --git a/docs/html/design/media/new_accessibility.png b/docs/html/design/media/new_accessibility.png
new file mode 100644
index 0000000..864ee5c
--- /dev/null
+++ b/docs/html/design/media/new_accessibility.png
Binary files differ
diff --git a/docs/html/design/media/new_notifications.png b/docs/html/design/media/new_notifications.png
new file mode 100644
index 0000000..a7293c8
--- /dev/null
+++ b/docs/html/design/media/new_notifications.png
Binary files differ
diff --git a/docs/html/design/media/new_widgets.png b/docs/html/design/media/new_widgets.png
new file mode 100644
index 0000000..7e6201b
--- /dev/null
+++ b/docs/html/design/media/new_widgets.png
Binary files differ
diff --git a/docs/html/design/media/notifications_dismiss.png b/docs/html/design/media/notifications_dismiss.png
index 71bed4f..696a97f 100644
--- a/docs/html/design/media/notifications_dismiss.png
+++ b/docs/html/design/media/notifications_dismiss.png
Binary files differ
diff --git a/docs/html/design/media/notifications_expand_contract_msg.png b/docs/html/design/media/notifications_expand_contract_msg.png
new file mode 100644
index 0000000..056c9f2
--- /dev/null
+++ b/docs/html/design/media/notifications_expand_contract_msg.png
Binary files differ
diff --git a/docs/html/design/media/notifications_pattern_additional_fail.png b/docs/html/design/media/notifications_pattern_additional_fail.png
index 707c98c..4f056db 100644
--- a/docs/html/design/media/notifications_pattern_additional_fail.png
+++ b/docs/html/design/media/notifications_pattern_additional_fail.png
Binary files differ
diff --git a/docs/html/design/media/notifications_pattern_additional_win.png b/docs/html/design/media/notifications_pattern_additional_win.png
index eb193d8..9d69dfd 100644
--- a/docs/html/design/media/notifications_pattern_additional_win.png
+++ b/docs/html/design/media/notifications_pattern_additional_win.png
Binary files differ
diff --git a/docs/html/design/media/notifications_pattern_anatomy.png b/docs/html/design/media/notifications_pattern_anatomy.png
index cacc183..c9fdf85 100644
--- a/docs/html/design/media/notifications_pattern_anatomy.png
+++ b/docs/html/design/media/notifications_pattern_anatomy.png
Binary files differ
diff --git a/docs/html/design/media/notifications_pattern_dialog_toast.png b/docs/html/design/media/notifications_pattern_dialog_toast.png
deleted file mode 100644
index 517d57b..0000000
--- a/docs/html/design/media/notifications_pattern_dialog_toast.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/design/media/notifications_pattern_expand_contract.png b/docs/html/design/media/notifications_pattern_expand_contract.png
new file mode 100644
index 0000000..e89835c
--- /dev/null
+++ b/docs/html/design/media/notifications_pattern_expand_contract.png
Binary files differ
diff --git a/docs/html/design/media/notifications_pattern_expandable.png b/docs/html/design/media/notifications_pattern_expandable.png
new file mode 100644
index 0000000..31cb3f1
--- /dev/null
+++ b/docs/html/design/media/notifications_pattern_expandable.png
Binary files differ
diff --git a/docs/html/design/media/notifications_pattern_ongoing_music.png b/docs/html/design/media/notifications_pattern_ongoing_music.png
index 01039bd..77b24ed 100644
--- a/docs/html/design/media/notifications_pattern_ongoing_music.png
+++ b/docs/html/design/media/notifications_pattern_ongoing_music.png
Binary files differ
diff --git a/docs/html/design/media/notifications_pattern_personal.png b/docs/html/design/media/notifications_pattern_personal.png
new file mode 100644
index 0000000..a7293c8
--- /dev/null
+++ b/docs/html/design/media/notifications_pattern_personal.png
Binary files differ
diff --git a/docs/html/design/media/notifications_pattern_phone_icons.png b/docs/html/design/media/notifications_pattern_phone_icons.png
index 09d8a83..bee66c9 100644
--- a/docs/html/design/media/notifications_pattern_phone_icons.png
+++ b/docs/html/design/media/notifications_pattern_phone_icons.png
Binary files differ
diff --git a/docs/html/design/media/notifications_pattern_priority.png b/docs/html/design/media/notifications_pattern_priority.png
new file mode 100644
index 0000000..e89835c
--- /dev/null
+++ b/docs/html/design/media/notifications_pattern_priority.png
Binary files differ
diff --git a/docs/html/design/media/notifications_pattern_real_time_people.png b/docs/html/design/media/notifications_pattern_real_time_people.png
index 2af40b8..d03b6f0 100644
--- a/docs/html/design/media/notifications_pattern_real_time_people.png
+++ b/docs/html/design/media/notifications_pattern_real_time_people.png
Binary files differ
diff --git a/docs/html/design/media/notifications_pattern_social_fail.png b/docs/html/design/media/notifications_pattern_social_fail.png
index 2c8fddc..aa0e028 100644
--- a/docs/html/design/media/notifications_pattern_social_fail.png
+++ b/docs/html/design/media/notifications_pattern_social_fail.png
Binary files differ
diff --git a/docs/html/design/media/notifications_pattern_two_actions.png b/docs/html/design/media/notifications_pattern_two_actions.png
new file mode 100644
index 0000000..7c19f2e
--- /dev/null
+++ b/docs/html/design/media/notifications_pattern_two_actions.png
Binary files differ
diff --git a/docs/html/design/media/principles_decide_for_me.png b/docs/html/design/media/principles_decide_for_me.png
index 2d8b883..8080b4e 100644
--- a/docs/html/design/media/principles_decide_for_me.png
+++ b/docs/html/design/media/principles_decide_for_me.png
Binary files differ
diff --git a/docs/html/design/media/principles_error.png b/docs/html/design/media/principles_error.png
index 93767660..c867fe6 100644
--- a/docs/html/design/media/principles_error.png
+++ b/docs/html/design/media/principles_error.png
Binary files differ
diff --git a/docs/html/design/media/principles_information_when_need_it.png b/docs/html/design/media/principles_information_when_need_it.png
index c5ef3ca..d78d5c5 100644
--- a/docs/html/design/media/principles_information_when_need_it.png
+++ b/docs/html/design/media/principles_information_when_need_it.png
Binary files differ
diff --git a/docs/html/design/media/principles_keep_it_brief.png b/docs/html/design/media/principles_keep_it_brief.png
index 9c2813b..ee7dbbb 100644
--- a/docs/html/design/media/principles_keep_it_brief.png
+++ b/docs/html/design/media/principles_keep_it_brief.png
Binary files differ
diff --git a/docs/html/design/media/principles_never_lose_stuff.png b/docs/html/design/media/principles_never_lose_stuff.png
index acbefea..84037d9 100644
--- a/docs/html/design/media/principles_never_lose_stuff.png
+++ b/docs/html/design/media/principles_never_lose_stuff.png
Binary files differ
diff --git a/docs/html/design/media/progress_activity_custom.png b/docs/html/design/media/progress_activity_custom.png
new file mode 100644
index 0000000..2bfdd52
--- /dev/null
+++ b/docs/html/design/media/progress_activity_custom.png
Binary files differ
diff --git a/docs/html/design/media/progress_activity_custom_app.png b/docs/html/design/media/progress_activity_custom_app.png
new file mode 100644
index 0000000..e572508
--- /dev/null
+++ b/docs/html/design/media/progress_activity_custom_app.png
Binary files differ
diff --git a/docs/html/design/media/progress_activity_do.png b/docs/html/design/media/progress_activity_do.png
new file mode 100644
index 0000000..fd22436
--- /dev/null
+++ b/docs/html/design/media/progress_activity_do.png
Binary files differ
diff --git a/docs/html/design/media/progress_activity_dont.png b/docs/html/design/media/progress_activity_dont.png
new file mode 100644
index 0000000..08c4b5d
--- /dev/null
+++ b/docs/html/design/media/progress_activity_dont.png
Binary files differ
diff --git a/docs/html/design/media/swipe_views2.png b/docs/html/design/media/swipe_views2.png
index 6479a2f..ee0f2c4 100644
--- a/docs/html/design/media/swipe_views2.png
+++ b/docs/html/design/media/swipe_views2.png
Binary files differ
diff --git a/docs/html/design/media/swipe_views3.png b/docs/html/design/media/swipe_views3.png
new file mode 100644
index 0000000..bdf9994
--- /dev/null
+++ b/docs/html/design/media/swipe_views3.png
Binary files differ
diff --git a/docs/html/design/media/tabs_youtube.png b/docs/html/design/media/tabs_youtube.png
index 69e9268..4ea6c1c 100644
--- a/docs/html/design/media/tabs_youtube.png
+++ b/docs/html/design/media/tabs_youtube.png
Binary files differ
diff --git a/docs/html/design/media/themes_holo_dark.png b/docs/html/design/media/themes_holo_dark.png
index 0a5876a..e1f4477 100644
--- a/docs/html/design/media/themes_holo_dark.png
+++ b/docs/html/design/media/themes_holo_dark.png
Binary files differ
diff --git a/docs/html/design/media/themes_holo_inverse.png b/docs/html/design/media/themes_holo_inverse.png
index 50be4fb..528d119 100644
--- a/docs/html/design/media/themes_holo_inverse.png
+++ b/docs/html/design/media/themes_holo_inverse.png
Binary files differ
diff --git a/docs/html/design/media/themes_holo_light.png b/docs/html/design/media/themes_holo_light.png
index edc7f77..4f34bb3 100644
--- a/docs/html/design/media/themes_holo_light.png
+++ b/docs/html/design/media/themes_holo_light.png
Binary files differ
diff --git a/docs/html/design/media/ui_overview_notifications.png b/docs/html/design/media/ui_overview_notifications.png
index bc0513f..fe4375e 100644
--- a/docs/html/design/media/ui_overview_notifications.png
+++ b/docs/html/design/media/ui_overview_notifications.png
Binary files differ
diff --git a/docs/html/design/media/widgets_collection_bookmarks.png b/docs/html/design/media/widgets_collection_bookmarks.png
new file mode 100644
index 0000000..86d4d88
--- /dev/null
+++ b/docs/html/design/media/widgets_collection_bookmarks.png
Binary files differ
diff --git a/docs/html/design/media/widgets_collection_gmail.png b/docs/html/design/media/widgets_collection_gmail.png
new file mode 100644
index 0000000..bbd538d
--- /dev/null
+++ b/docs/html/design/media/widgets_collection_gmail.png
Binary files differ
diff --git a/docs/html/design/media/widgets_config.png b/docs/html/design/media/widgets_config.png
new file mode 100644
index 0000000..0ac3473
--- /dev/null
+++ b/docs/html/design/media/widgets_config.png
Binary files differ
diff --git a/docs/html/design/media/widgets_control.png b/docs/html/design/media/widgets_control.png
new file mode 100644
index 0000000..a46add8
--- /dev/null
+++ b/docs/html/design/media/widgets_control.png
Binary files differ
diff --git a/docs/html/design/media/widgets_gestures.png b/docs/html/design/media/widgets_gestures.png
new file mode 100644
index 0000000..f991609
--- /dev/null
+++ b/docs/html/design/media/widgets_gestures.png
Binary files differ
diff --git a/docs/html/design/media/widgets_hybrid.png b/docs/html/design/media/widgets_hybrid.png
new file mode 100644
index 0000000..470f75f
--- /dev/null
+++ b/docs/html/design/media/widgets_hybrid.png
Binary files differ
diff --git a/docs/html/design/media/widgets_info.png b/docs/html/design/media/widgets_info.png
new file mode 100644
index 0000000..6621158
--- /dev/null
+++ b/docs/html/design/media/widgets_info.png
Binary files differ
diff --git a/docs/html/design/media/widgets_resizing01.png b/docs/html/design/media/widgets_resizing01.png
new file mode 100644
index 0000000..5c85df6
--- /dev/null
+++ b/docs/html/design/media/widgets_resizing01.png
Binary files differ
diff --git a/docs/html/design/media/widgets_resizing02.png b/docs/html/design/media/widgets_resizing02.png
new file mode 100644
index 0000000..28f9461
--- /dev/null
+++ b/docs/html/design/media/widgets_resizing02.png
Binary files differ
diff --git a/docs/html/design/patterns/accessibility.jd b/docs/html/design/patterns/accessibility.jd
new file mode 100644
index 0000000..2c3333f
--- /dev/null
+++ b/docs/html/design/patterns/accessibility.jd
@@ -0,0 +1,89 @@
+page.title=Accessibility
+@jd:body
+
+<p>One of Android's missions is to organize the world's information and make it universally accessible and useful. Accessibility is the measure of how successfully a product can be used by people with varying abilities. Our mission applies to all users-including people with disabilities such as visual impairment, color deficiency, hearing loss, and limited dexterity.</p>
+<p><a href="https://www.google.com/#hl=en&q=universal+design&fp=1">Universal design</a> is the practice of making products that are inherently accessible to all users, regardless of ability. The Android design patterns were created in accordance with universal design principles, and following them will help your app meet basic usability standards. Adhering to universal design and enabling Android's accessibility tools will make your app as accessible as possible.</p>
+<p>Robust support for accessibility will increase your app's user base. It may also be required for adoption by some organizations.</p>
+<p><a href="http://www.google.com/accessibility/">Learn more about Google and accessibility.</a></p>
+
+<h2 id="tools">Android's Accessibility Tools</h2>
+<p>Android includes several features that support access for users with visual impairments; they don't require drastic visual changes to your app.</p>
+
+<ul>
+  <li><strong><a href="https://play.google.com/store/apps/details?id=com.google.android.marvin.talkback">TalkBack</a></strong> is a pre-installed screen reader service provided by Google. It uses spoken feedback to describe the results of actions such as launching an app, and events such as notifications.</li>
+  <li><strong>Explore by Touch</strong> is a system feature that works with TalkBack, allowing you to touch your device's screen and hear what's under your finger via spoken feedback. This feature is helpful to users with low vision.</li>
+  <li><strong>Accessibility settings</strong> let you modify your device's display and sound options, such as increasing the text size, changing the speed at which text is spoken, and more.</li>
+</ul>
+
+<p>Some users use hardware or software directional controllers (such as a D-pad, trackball, keyboard) to jump from selection to selection on a screen. They interact with the structure of your app in a linear fashion, similar to 4-way remote control navigation on a television.</p>
+
+<h2 id="tools">Guidelines</h2>
+<p>The Android design principle "I should always know where I am" is key for accessibility concerns. As a user navigates through an application, they need feedback and a mental model of where they are. All users benefit from a strong sense of information hierarchy and an architecture that makes sense. Most users benefit from visual and haptic feedback during their navigation (such as labels, colors, icons, touch feedback) Low vision users benefit from explicit verbal descriptions and large visuals with high contrast.</p>
+<p>As you design your app, think about the labels and notations needed to navigate your app by sound. When using Explore by Touch, the user enables an invisible but audible layer of structure in your application. Like any other aspect of app design, this structure can be simple, elegant, and robust. The following are Android's recommended guidelines to enable effective navigation for all users.</p>
+
+<h4>Make navigation intuitive</h4>
+<p>Design well-defined, clear task flows with minimal navigation steps, especially for major user tasks. Make sure those tasks are navigable via focus controls. </p>
+
+<h4>Use recommended touch target sizes</h4>
+<p>48 dp is the recommended touch target size for on screen elements. Read about <a href="{@docRoot}design/style/metrics-grids.html">Android Metrics and Grids</a> to learn about implementation strategies to help most of your users. For certain users, it may be appropriate to use larger touch targets. An example of this is educational apps, where buttons larger than the minimum recommendations are appropriate for children with developing motor skills and people with manual dexterity challenges.</p>
+
+
+<h4>Label visual UI elements meaningfully</h4>
+<p>In your wireframes, <a href="{@docRoot}guide/topics/ui/accessibility/apps.html#label-ui">label functional UI components</a> that have no visible text. Those components might be buttons, icons, tabs with icons, and icons with state (like stars). Developers can use the <code><a href="{@docRoot}guide/topics/ui/accessibility/apps.html#label-ui">contentDescription</a></code> attribute to set the label.</p>
+
+<div class ="layout-content-row">
+    <div class="layout-content-col span-8">
+      <img src="{@docRoot}design/media/accessibility_contentdesc.png">
+    </div>
+    <div class="layout-content-col span-5 with-callouts">
+      <ol>
+        <li class="value-1">group</li>
+        <li class="value-2">all contacts</li>
+        <li class="value-3">favorites</li>
+        <li class="value-4">search</li>
+        <li class="value-5">action overflow button</li>
+        <li class="value-6">
+          <em>when starred:</em> remove from favorites </br>
+          <em>when not starred:</em> add to favorties</li>
+        <li class="value-7">action overflow button</li>
+        <li class="value-8">text message</li>
+        <li class="value-9">video chat</li>
+      </ol>
+  </div>
+</div>
+
+<h4>Provide alternatives to affordances that time out</h4>
+<p>Your app may have icons or controls that disappear after a certain amount of time. For example, five seconds after starting a video, playback controls may fade from the screen.</p>
+
+<p>Due to the way that TalkBack works, those controls are not read out loud unless they are focused on. If they fade out from the screen quickly, your user may not even be aware that they are available. Therefore, make sure that you are not relying on timed out controls for high priority task flows. (This is a good universal design guideline too.) If the controls enable an important function, make sure that the user can turn on the controls again and/or their function is duplicated elsewhere. You can also change the behavior of your app when accessibility services are turned on. Your developer may be able to make sure that timed-out controls won't disappear.</p>
+
+<h4>Use standard framework controls or enable TalkBack for custom controls</h4>
+<p>Standard Android framework controls work automatically with accessibility services and have ContentDescriptions built in by default.</p>
+
+<p>An oft-overlooked system control is font size. Users can turn on a system-wide large font size in Settings; using the default system font size in your application will enable the user's preferences in your app as well. To enable system font size in your app, mark text and their associated containers to be measured in <a href="{@docRoot}guide/practices/screens_support.html#screen-independence">scale pixels</a>.</p>
+
+<p>Also, keep in mind that when users have large fonts enabled or speak a different language than you, their type might be larger than the space you've allotted for it. Read <a href="{@docRoot}design/style/devices-displays.html">Devices and Displays</a> and <a href="http://developer.android.com/guide/practices/screens_support.html">Supporting Multiple Screens</a> for design strategies.</p>
+
+<p>If you use custom controls, Android has the developer tools in place to allow adherence to the above guidelines and provide meaningful descriptions about the UI. Provide adequate notation on your wireframes and direct your developer to the <a href="{@docRoot}guide/topics/ui/accessibility/apps.html#custom-views">Custom Views</a> documentation.</p>
+
+<h4>Try it out yourself</h4>
+<p>Turn on the TalkBack service in <strong>Settings > Accessibility</strong> and navigate your application using directional controls or eyes-free navigation.</p>
+
+
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to properly implement accessibility in your app, see the
+  <a href="{@docRoot}guide/topics/ui/accessibility/index.html">Accessibility</a>
+  API guide.</p>
+</div>
+
+
+<h2>Checklist</h2>
+<ul>
+  <li>Make navigation intuitive</li>
+  <li>Use recommended touch target sizes</li>
+  <li>Label visual UI elements meaningfully</li>
+  <li>Provide alternatives to affordances that time out</li>
+  <li>Use standard framework controls or enable TalkBack for custom controls</li>
+  <li>Try it out yourself</li>
+</ul>
\ No newline at end of file
diff --git a/docs/html/design/patterns/actionbar.jd b/docs/html/design/patterns/actionbar.jd
index 4206301..265ccde 100644
--- a/docs/html/design/patterns/actionbar.jd
+++ b/docs/html/design/patterns/actionbar.jd
@@ -3,20 +3,15 @@
 
 <img src="{@docRoot}design/media/action_bar_pattern_overview.png">
 
-<p>The <em>action bar</em> is arguably the most important structural element of an Android app. It's a
-dedicated piece of real estate at the top of each screen that is generally persistent throughout the
-app.</p>
-<p><strong>The main purpose of the action bar is to</strong>:</p>
+<p>The <em>action bar</em> is a dedicated piece of real estate at the top of each screen that is generally persistent throughout the app.</p>
+<p><strong>It provides several key functions</strong>:</p>
 <ul>
-<li>Make important actions (such as <em>New</em> or <em>Search</em>, etc) prominent and accessible in a predictable
-   way.</li>
-<li>Support consistent navigation and view switching within apps.</li>
-<li>Reduce clutter by providing an action overflow for rarely used actions.</li>
-<li>Provide a dedicated space for giving your app an identity.</li>
+  <li>Makes important actions prominent and accessible in a predictable way (such as <em>New</em> or <em>Search</em>).</li>
+  <li>Supports consistent navigation and view switching within apps.</li>
+  <li>Reduces clutter by providing an action overflow for rarely used actions.</li>
+  <li>Provides a dedicated space for giving your app an identity.</li>
 </ul>
-<p>If you're new to writing Android apps, note that the action bar is one of the most important design
-elements you can implement. Following the guidelines described here will go a long way toward making
-your app's interface consistent with the core Android apps.</p>
+<p>If you're new to writing Android apps, note that the action bar is one of the most important design elements you can implement. Following the guidelines described here will go a long way toward making your app's interface consistent with the core Android apps.</p>
 <h2 id="organization">General Organization</h2>
 
 <p>The action bar is split into four different functional areas that apply to most apps.</p>
@@ -66,7 +61,7 @@
         <p>
 
 Show the most important actions of your app in the actions section. Actions that don't fit in the
-action bar are moved automatically to the action overflow.
+action bar are moved automatically to the action overflow. Long-press on an icon to view the action's name.
 
         </p>
       </li>
@@ -144,28 +139,44 @@
 <p>For more information, refer to the <a href="{@docRoot}design/patterns/selection.html">Selection
 pattern</a>.</p>
 
-<h2 id="elements">Action Bar Elements</h2>
+<h2 id="elements">View Controls</h2>
+<p>If your app displays data in different views, the action bar has three different controls to allow users to switch between them: tabs, spinners, and drawers.</p>
 
 <h4>Tabs</h4>
-<p><em>Tabs</em> display app views concurrently and make it easy to explore and switch between them. Use tabs
-if you expect your users to switch views frequently.</p>
+<p><em>Tabs</em> display app views concurrently and make it easy to explore and switch between them. Tabs may be fixed, where all tabs are simultaneously displayed, or may scroll, allowing a larger number of views to be presented.</p>
 
 <img src="{@docRoot}design/media/tabs_youtube.png">
 
-<p>There are two types of tabs: fixed and scrollable.</p>
+<p><strong>Use tabs if</strong>:</p>
+<ul>
+<li>You expect your app's users to switch views frequently.</li>
+<li>You want the user to be highly aware of the alternate views.</li>
+</ul>
 
+<h4>Fixed tabs</h4>
 <div class="layout-content-row">
   <div class="layout-content-col span-6">
+<p><em>Fixed tabs</em> are always visible on the screen, and can't be moved out of the way like scrollable
+tabs. Fixed tabs in the main action bar can move to the top bar when the screen orientation changes.</p>
+
+<p>Use fixed tabs to support quick changes between two or three app views. Fixed tabs should always allow the user to navigate between the views by swiping left or right on the content area.</p>
+
+  </div>
+  <div class="layout-content-col span-7">
+
+    <img src="{@docRoot}design/media/action_bar_pattern_default_tabs.png">
+    <div class="figure-caption">
+      Default fixed tabs shown in Holo Dark &amp; Light.
+    </div>
+
+  </div>
+</div>
 
 <h4>Scrollable tabs</h4>
-<p><em>Scrollable tabs</em> always take up the entire width of the bar, with the currently active view item in
-the center, and therefore need to live in a dedicated bar. Scrollable tabs can themselves be
-scrolled horizontally to bring more tabs into view.</p>
-<p>Use scrollable tabs if you have a large number of views or if you're unsure how many views will be
-displayed because your app inserts views dynamically (for example, open chats in a messaging app
-that the user can navigate between). Scrollable tabs should always allow the user to navigate
-between the views by swiping left or right on the content area as well as swiping the tabs
-themselves.</p>
+<div class="layout-content-row">
+  <div class="layout-content-col span-6">
+<p><em>Scrollable tabs</em> always take up the entire width of the bar, with the currently active view item in the center, and therefore need to live in a dedicated bar. Scrollable tabs can themselves be scrolled horizontally to bring more tabs into view.</p>
+<p>Use scrollable tabs if you have a large number of views or if you're unsure how many views will be displayed because your app inserts views dynamically (for example, open chats in a messaging app that the user can navigate between). Scrollable tabs should always allow the user to navigate between the views by swiping left or right on the content area as well as swiping the tabs themselves.</p>
 
   </div>
   <div class="layout-content-col span-7">
@@ -186,30 +197,12 @@
 <div class="layout-content-row">
   <div class="layout-content-col span-6">
 
-<h4>Fixed tabs</h4>
-<p><em>Fixed tabs</em> are always visible on the screen, and can't be moved out of the way like scrollable
-tabs. Fixed tabs in the main action bar can move to the top bar when the screen orientation changes.</p>
-
-  </div>
-  <div class="layout-content-col span-7">
-
-    <img src="{@docRoot}design/media/action_bar_pattern_default_tabs.png">
-    <div class="figure-caption">
-      Default fixed tabs shown in Holo Dark &amp; Light.
-    </div>
-
-  </div>
-</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-
 <h4>Spinners</h4>
 <p>A <em>spinner</em> is a drop-down menu that allows users to switch between views of your app. </p>
-<p><strong>Use spinners rather than tabs in the main action bar if</strong>:</p>
+<p><strong>Use a spinner in the main action bar if</strong>:</p>
 <ul>
 <li>You don't want to give up the vertical screen real estate for a dedicated tab bar.</li>
-<li>You expect your app's users to switch views infrequently.</li>
+<li>The user is switching between views of the same data set (for example: calendar events viewed by day, week, or month) or data sets of the same type (such as content for two different accounts).</li>
 </ul>
 
   </div>
@@ -223,7 +216,24 @@
   </div>
 </div>
 
-<h4>Action buttons</h4>
+<h4>Drawers</h4>
+<div class="layout-content-row">
+  <div class="layout-content-col span-6">
+<p>A <em>drawer</em> is a slide-out menu that allows users to switch between views of your app. It can be opened by touching the action bar's app icon (decorated with the Up caret.) Additionally, a drawer can be revealed by an edge swipe from the left of the screen, and dismissed by swiping from the right edge of the drawer. However, because many users will rely on Up navigation to open a drawer, it is only suitable for use at the topmost level of your app's hierarchy.</p>
+
+<p><strong>Open a drawer from the main action bar if</strong>:</p>
+<ul>
+<li>You don't want to give up the vertical screen real estate for a dedicated tab bar.</li>
+<li>You want to provide direct navigation to a number of views within your app which don't have direct relationships between each other.</li>
+</ul>
+
+  </div>
+  <div class="layout-content-col span-7">
+    <img src="{@docRoot}design/media/actionbar_drawer.png">
+  </div>
+</div>
+
+<h2>Action buttons</h2>
 <p><em>Action buttons</em> on the action bar surface your app's most important activities. Think about which
 buttons will get used most often, and order them accordingly. Depending on available screen real
 estate, the system shows your most important actions as action buttons and moves the rest to the
@@ -283,7 +293,8 @@
 </p>
 <p>
 
-<a href="https://dl-ssl.google.com/android/design/Android_Design_Icons_20120229.zip">Download the Action Bar Icon Pack</a>
+<a onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Action Bar Icons (@actionbar page)']);"
+   href="{@docRoot}downloads/design/Android_Design_Icons_20120814.zip">Download the Action Bar Icon Pack</a>
 
 </p>
 
@@ -338,6 +349,17 @@
   The Gallery app's share action provider with extended spinner for additional sharing options.
 </div>
 
+
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to build an action bar
+  see the <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> API guide.
+  For information about contextual action bars, read
+  <a href="{@docRoot}guide/topics/ui/menus.html#context-menu">Creating Contextual Menus</a>.
+  </p>
+</div>
+
+
 <h2 id="checklist">Action Bar Checklist</h2>
 
 <p>When planning your split action bars, ask yourself questions like these:</p>
diff --git a/docs/html/design/patterns/app-structure.jd b/docs/html/design/patterns/app-structure.jd
index e2398ed..04af57b 100644
--- a/docs/html/design/patterns/app-structure.jd
+++ b/docs/html/design/patterns/app-structure.jd
@@ -86,6 +86,9 @@
   through the navigation hierarchy.</li>
 </ul>
 
+<p>For more discussion, see the <a href="{@docRoot}design/patterns/actionbar.html">Action Bar</a>
+design guide.</p>
+
   </div>
   <div class="layout-content-col span-8">
 
@@ -164,6 +167,10 @@
   </div>
 </div>
 
+<p>For more discussion, see the <a href="{@docRoot}design/building-blocks/tabs.html">Tabs</a>
+design guide.</p>
+
+
 <h4>Allow cutting through hierarchies</h4>
 <p>Take advantage of shortcuts that allow people to reach their goals quicker. To allow top-level
 invocation of actions for a data item from within list or grid views, display prominent actions
@@ -183,30 +190,26 @@
 delete multiple items in the category view. Analyze which detail view actions are applicable to
 collections of items. Then use multi-select to allow application of those actions to multiple items
 in a category view.</p>
+
+
+<p>For more discussion, see the <a href="{@docRoot}design/patterns/selection.html">Selection</a>
+design guide.</p>
+
+
 <h2 id="details">Details</h2>
 
-<p>The detail view allows you to view and act on your data. The layout of the detail view depends on
-the data type being displayed, and therefore differs widely among apps.</p>
+<p>The detail view allows you to view and act on your data. The layout of the detail view depends on the data type being displayed, and therefore differs widely among apps.</p>
 
 <div class="layout-content-row">
   <div class="layout-content-col span-4">
 
 <h4>Layout</h4>
-<p>Consider the activities people will perform in the detail view and arrange the layout accordingly.
-For immersive content, make use of the lights-out mode to allow for distraction-free viewing of
-full-screen content.</p>
-
-    <img src="{@docRoot}design/media/app_structure_people_detail.png">
+<p>Consider the activities people will perform in the detail view and arrange the layout accordingly.</p>
 
   </div>
   <div class="layout-content-col span-9">
 
-    <img src="{@docRoot}design/media/app_structure_book_detail_page_flip.png">
-    <div class="figure-caption">
-      Google Books' detail view is all about replicating the experience of reading an actual book.
-      The page-flip animation reinforces that notion. To create an immersive experience the app
-      enters lights-out mode, which hides all system UI affordances.
-    </div>
+    <img src="{@docRoot}design/media/app_structure_people_detail.png">
 
     <div class="figure-caption">
       The purpose of the People app's detail view is to surface communication options. The list view
@@ -217,9 +220,25 @@
   </div>
 </div>
 
+<div class="layout-content-row">
+  <div class="layout-content-col span-4">
+
+<h4>Lights-out mode</h4>
+<p>Immersive content like media and games is best experienced full screen without distractions. But that doesn't mean you can't also offer actions on the content like sharing, commenting, or searching. If the user hasn't interacted with any of the controls after a short period of time, automatically fade away the action bar and all system UI affordances so the user can lean back and enjoy the content. We call this lights-out mode. Later, if the user wants to take some action, they can touch anywhere on the screen to exit lights-out mode and bring back the controls.</p>
+
+  </div>
+  <div class="layout-content-col span-9">
+
+    <img src="{@docRoot}design/media/app_structure_book_detail_page_flip.png">
+    <div class="figure-caption">
+      Google Books' detail view replicates the immersive experience of reading an actual book through lights-out mode and a page-flip animation.
+    </div>
+  </div>
+</div>
+
 <h4>Make navigation between detail views efficient</h4>
 <p>If your users are likely to want to look at multiple items in sequence, allow them to navigate
-between items from within the detail view. Use swipe views or other techniques, such as filmstrips,
+between items from within the detail view. Use swipe views or other techniques, such as thumbnail view controls,
 to achieve this.</p>
 
 <img src="{@docRoot}design/media/app_structure_gmail_swipe.png">
@@ -229,10 +248,14 @@
 
 <img src="{@docRoot}design/media/app_structure_gallery_filmstrip.png">
 <div class="figure-caption">
-  In addition to supporting swipe gestures to move left or right through images, Gallery provides a
-  filmstrip control that lets people quickly jump to specific images.
+  In addition to supporting swipe gestures to move left or right through pages, Magazines provides a
+  thumbnail view control that lets people quickly jump to specific pages.
 </div>
 
+<p>For more discussion, see the <a href="{@docRoot}design/patterns/swipe-views.html">Swipe Views</a>
+design guide.</p>
+
+
 <h2 id="checklist">Checklist</h2>
 
 <ul>
diff --git a/docs/html/design/patterns/confirming-acknowledging.jd b/docs/html/design/patterns/confirming-acknowledging.jd
new file mode 100644
index 0000000..ce0631b
--- /dev/null
+++ b/docs/html/design/patterns/confirming-acknowledging.jd
@@ -0,0 +1,69 @@
+page.title=Confirming &amp; Acknowledging
+@jd:body
+
+<p>In some situations, when a user invokes an action in your app, it's a good idea to <em>confirm</em> or <em>acknowledge</em> that action through text.</p>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-6">
+    <img src="{@docRoot}design/media/confirm_ack_confirming.png">
+    <p><strong>Confirming</strong> is asking the user to verify that they truly want to proceed with an action they just invoked. In some cases, the confirmation is presented along with a warning or critical information related to the action that they need to consider.</p>
+  </div>
+  <div class="layout-content-col span-6">
+    <img src="{@docRoot}design/media/confirm_ack_acknowledge.png">
+    <p><strong>Acknowledging</strong> is displaying text to let the user know that the action they just invoked has been completed. This removes uncertainty about implicit operations that the system is taking. In some cases, the acknowledgment is presented along with an option to undo the action.</p>
+  </div>
+</div>
+
+<p>Communicating to users in these ways can help alleviate uncertainty about things that have happened or will happen. Confirming or acknowledging can also prevent users from making mistakes they might regret.</p>
+
+<h2>When to Confirm or Acknowledge User Actions</h2>
+<p>Not all actions warrant a confirmation or an acknowledgment. Use this flowchart to guide your design decisions.</p>
+<img src="{@docRoot}design/media/confirm_ack_flowchart.png">
+
+<h2>Confirming</h2>
+<div class="layout-content-row">
+  <div class="layout-content-col span-6">
+    <h4>Example: Google Play Books</h4>
+    <img src="{@docRoot}design/media/confirm_ack_ex_books.png">
+    <p>In this example, the user has requested to delete a book from their Google Play library. An <a href="{@docRoot}design/building-blocks/dialogs.html#alerts">alert</a> appears to confirm this action because it's important to understand that the book will no longer be available from any device.</p>
+    <p>When crafting a confirmation dialog, make the title meaningful by echoing the requested action.</p>
+  </div>
+  <div class="layout-content-col span-7">
+    <h4>Example: Android Beam</h4>
+    <img src="{@docRoot}design/media/confirm_ack_ex_beam.png">
+    <p>Confirmations don't necessarily have to be presented in an alert with two buttons. After initiating Android Beam, the user is prompted to touch the content to be shared (in this example, it's a photo). If they decide not to proceed, they simply move their phone away.</p>
+  </div>
+</div>
+
+<h2>Acknowledging</h2>
+<div class="layout-content-row">
+  <div class="layout-content-col span-6">
+    <h4>Example: Abandoned Gmail draft saved</h4>
+    <img src="{@docRoot}design/media/confirm_ack_ex_draftsave.png">
+    <p>In this example, if the user navigates back or up from the Gmail compose screen, something possibly unexpected happens: the current draft is automatically saved. An acknowledgment in the form of a toast makes that apparent. It fades after a few seconds.</p>
+    <p>Undo isn't appropriate here because saving was initiated by the app, not the user. And it's quick and easy to resume composing the message by navigating to the list of drafts.</p>
+
+  </div>
+  <div class="layout-content-col span-6">
+    <h4>Example: Gmail conversation deleted</h4>
+    <img src="{@docRoot}design/media/confirm_ack_draft_deleted.png">
+    <p>After the user deletes a conversation from the list in Gmail, an acknowledgment appears with an undo option. The acknowledgment remains until the user takes an unrelated action, such as scrolling the list.</p>
+  </div>
+</div>
+
+<h2>No Confirmation or Acknowledgment</h2>
+<div class="layout-content-row">
+  <div class="layout-content-col span-6">
+    <h4>Example: +1'ing</h4>
+    <img style="padding: 33px 0 30px;" src="{@docRoot}design/media/confirm_ack_ex_plus1.png">
+    <p><strong>Confirmation is unnecessary</strong>. If the user +1'd by accident, it's not a big deal. They can just touch the button again to undo the action.</p>
+    <p><strong>Acknowledgment is unnecessary</strong>. The user will see the +1 button bounce and turn red. That's a very clear signal.</p>
+  </div>
+  <div class="layout-content-col span-7">
+    <h4>Example: Removing an app from the Home Screen</h4>
+    <img src="{@docRoot}design/media/confirm_ack_ex_removeapp.png">
+    <p><strong>Confirmation is unnecessary</strong>. This is a deliberate action: the user must drag and drop an item onto a relatively large and isolated target. Therefore, accidents are highly unlikely. But if the user regrets the decision, it only takes a few seconds to bring it back again.</p>
+    <p><strong>Acknowledgment is unnecessary</strong>. The user will know the app is gone from the Home Screen because they made it disappear by dragging it away.</p>
+
+  </div>
+</div>
\ No newline at end of file
diff --git a/docs/html/design/patterns/help.jd b/docs/html/design/patterns/help.jd
new file mode 100644
index 0000000..cdac54d
--- /dev/null
+++ b/docs/html/design/patterns/help.jd
@@ -0,0 +1,112 @@
+page.title=Help
+@jd:body
+
+<p>We wish we could guarantee that if you follow every piece of advice on this website, everyone will be able to learn and use your app without a hitch. Sadly, that's not the case.</p>
+
+<p>Some of your users will run into questions or problems along the way. They'll be looking for answers <strong>within your app</strong>, and if they don't find them quickly, they may leave and never come back.</p>
+
+<p>This page covers design patterns for making help accessible in your app and tips for creating help content for users who are eager for assistance.</p>
+
+<h2 id="your-app">Designing Help into Your App</h2>
+
+<h3>Don't show unsolicited help, except in very limited cases</h3>
+<p>Naturally, you want everyone to quickly learn the ropes, discover the cool features, and get the most out of your app. So you might be tempted to present a one-time introductory slideshow, video, or splash screen to all new users when they first open the app. Or you might be drawn to the idea of displaying helpful text bubbles or dialogs when users interact with certain features for the first time.</p>
+<p>In almost all cases, we advise <strong>against</strong> approaches like these because:</p>
+<ul>
+  <li><strong>They're interruptions.</strong> People will be eager to start using your app, and anything you put in front of them will feel like an obstacle or possibly an annoyance, despite your good intentions. And because they didn't ask for it, they probably won't pay close attention to it.</li>
+  <li><strong>They're usually not necessary.</strong> If you have usability concerns about an aspect of your app, don't just throw help at the problem. Try to solve it in the UI. Apply Android design patterns, styles, and building blocks, and you'll go a long way in reducing the need to educate your users.</li>
+</ul>
+<p>The only reason for showing pure help content to new users unsolicited is:<br>
+<em>To teach high value functionality that's only available through a gesture.</em></p>
+
+<p>For example, we use help content to teach users how to place apps on their Home Screen. This functionality is:</p>
+<div class="layout-content-row">
+  <div class="layout-content-col span-8">
+    <ul>
+      <li><strong>High value</strong>
+      <p style="margin-top:0;">Without it, users wouldn't be able to customize the most frequently visited Android screen to meet their needs.</p></li>
+      <li><strong>Available only through a gesture</strong>
+      <p style="margin-top:0;">Because there's no button or menu for it, users might not ever discover it on their own.</p></li>
+    </ul>
+    <p>However, not all high value gesture-only functionality needs a tutorial. For example, don't teach users how to scroll content. They already know how because it's a fundamental, system-wide interaction.</p>
+  </div>
+  <div class="layout-content-col span-5">
+    <img src="{@docRoot}design/media/help_cling.png">
+    <div class="figure-caption">
+      The first time each user visits the All Apps screen, a semi-transparent overlay appears to teach an important gesture.
+    </div>
+  </div>
+  <p class="clearfix">Bottom line: when it comes to offering help in your app, it's much better to <strong>let users come to you</strong> when they need it.</p>
+</div>
+
+<h3 id="standard-design">Follow the standard design for navigating to help</h3>
+
+<p>On every screen in your app, offer help in the <a href="{@docRoot}design/patterns/actionbar.html">action overflow</a>. Always make it the very last item in the menu and label it "Help".</p>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-7">
+    <img src="{@docRoot}design/media/help_overflow.png">
+  </div>
+  <div class="layout-content-col span-6">
+    <img src="{@docRoot}design/media/help_solo_overflow.png">
+    <div class="figure-caption">
+      Even if your screen has no other action overflow items, "Help" should appear there and not be promoted to the action bar.
+    </div>
+  </div>
+  <p>We've established this standard design so that when users are desperate for help, they won't have to hunt to find it (see design principle: <a href="{@docRoot}design/get-started/principles.html#give-me-tricks">Give me tricks that work everywhere</a>).</p>
+</div>
+
+<h3 id="help-urgent">Assume that every call for help is urgent</h3>
+
+<p>In addition to help, you might want to expose other information, such as copyright info, credits, terms of service, and privacy policy.</p>
+
+<p>Let users access this information through the Help menu item, but optimize the flow for people with urgent questions about how to do something or why something is happening in your app. The smaller subset of users who are looking for legal fine print or the names of the people who created the app won't be as burdened by taking a few extra steps.</p>
+
+<p>The same is true for any communication options you might want to provide, such as contacting customer support or submitting feedback. Offer these options in a way that doesn't add an extra step before users see help. When you put the help content forward, you increase the likelihood that users will find the answers on their own, which in turn reduces your support costs.</p>
+
+<p>When someone chooses "Help":</p>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-4">
+    <img src="{@docRoot}design/media/help_dont.png">
+  </div>
+  <div class="layout-content-col span-4">
+    <img src="{@docRoot}design/media/help_better.png">
+  </div>
+  <div class="layout-content-col span-5">
+    <img src="{@docRoot}design/media/help_evenbetter.png">
+  </div>  
+</div>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-4">
+    <h4 class="do-dont-label bad">Don't</h4>
+    <p>Present a dialog asking them to choose between help and other options.</p>
+  </div>
+  <div class="layout-content-col span-4">
+    <h4 class="do-dont-label good">Better</h4>
+    <p>Immediately launch a web browser with help content. Place other options in a footer.</p>
+  </div>
+  <div class="layout-content-col span-5">
+    <h4 class="do-dont-label good">Even Better</h4>
+    <p>Build a help screen in your app and offer other options in the action bar. For example, you could let users contact you with questions or feedback through an action button. The action overflow is the ideal place for non-help information that users rarely need.</p>
+    <p>This requires more development work than launching a web browser, but it's a nicer experience for users because they don't leave your app to get the help they need and doesn't require a network connection.</p>
+  </div>
+</div>
+
+<h2>Principles for Writing On-Screen Help Content</h2>
+
+<h4>Help is part of the UI</h4>
+<p>On-screen help is an extension of your app's UI, not a description of it. All words on the screen from the core app to the help should follow our <a href="{@docRoot}design/style/writing.html">Writing Style</a> principles so that the end-to-end experience feels seamless and cohesive.</p>
+
+<h4>Make every pixel count</h4>
+<p>It's not necessary to document every single detail about your app, especially things that are extremely apparent just by looking at the UI, or behaviors that are standard for the platform. Surface just the key additional information that the on-screen text doesn't have room to describe, in a way that makes it easy to map to the screen.</p>
+
+<h4>Pictures are faster than words</h4>
+<p>In describing key UI elements and providing step-by-step instructions, consider combining text with icons, partial screenshots with callouts, and other imagery. You'll need fewer words to explain things, and users will absorb the information more quickly.</p>
+
+<h4>Help me scan, not read</h4>
+<p>People don't read help from start to finish. They scan around, looking for a piece of information containing the answer they need. Make it less burdensome with friendly formatting and layout choices like bold headings, bulleted and numbered lists, tables, and white space between paragraphs. And if you have a large amount of content, divide it into multiple screens to cut down on scrolling.</p>
+
+<h4>Take me straight to the answer</h4>
+<p>What's better than a screen that's easy to scan? A screen that requires no scanning at all because the answer's right there. Consider having each screen in your app navigate to help that's relevant just to that screen. We call this <em>contextual help</em>, and it's the holy grail of user assistance. If you take this approach, be sure to also provide a way to get to the rest of the help content.</p>
\ No newline at end of file
diff --git a/docs/html/design/patterns/index.jd b/docs/html/design/patterns/index.jd
index 6f88e6d..4416de1 100644
--- a/docs/html/design/patterns/index.jd
+++ b/docs/html/design/patterns/index.jd
@@ -20,10 +20,10 @@
   <div id="text-overlay">
     Design apps that behave in a consistent, predictable fashion.
     <br><br>
-    <a href="{@docRoot}design/patterns/new-4-0.html" class="landing-page-link">New in Android 4.0</a>
+    <a href="{@docRoot}design/patterns/new.html" class="landing-page-link">New in Android</a>
   </div>
 
-  <a href="{@docRoot}design/patterns/new-4-0.html">
+  <a href="{@docRoot}design/patterns/new.html">
     <img src="{@docRoot}design/media/patterns_landing.png">
   </a>
 </div>
diff --git a/docs/html/design/patterns/multi-pane-layouts.jd b/docs/html/design/patterns/multi-pane-layouts.jd
index 0e63e32..e607676 100644
--- a/docs/html/design/patterns/multi-pane-layouts.jd
+++ b/docs/html/design/patterns/multi-pane-layouts.jd
@@ -26,8 +26,8 @@
 relationship between the panels.</p>
 <h2 id="orientation">Compound Views and Orientation Changes</h2>
 
-<p>Screens should have the same functionality regardless of orientation. If you use a compound view in
-one orientation, don't split it up when the user rotates the screen. There are several techniques
+<p>Screens should strive to have the same functionality regardless of orientation. If you use a compound view in
+one orientation, try not to split it up when the user rotates the screen. There are several techniques
 you can use to adjust the layout after orientation change while keeping functional parity intact.</p>
 
 <div class="layout-content-row">
@@ -67,9 +67,7 @@
   <div class="layout-content-col span-5">
 
 <h4>Expand/collapse</h4>
-<p>When the device rotates, collapse the left pane view to only show the most important information.
-Provide an <em>expand</em> control that allows the user to bring the left pane content back to its original
-width and vice versa.</p>
+<p>When the device rotates, collapse the left pane view to only show the most important information.</p>
 
   </div>
 </div>
@@ -83,13 +81,23 @@
   <div class="layout-content-col span-5">
 
 <h4>Show/hide</h4>
-<p>After rotating the device, show the right pane in fullscreen view. Use the Up icon in the action bar
-to show the left panel and allow navigation to a different email. Hide the left panel by touching
-the content in the detail panel.</p>
+<p>If your screen cannot accommodate the compound view on rotation show the right pane in full screen view on rotation to portrait. Use the Up icon in action bar to show the parent screen.</p>
 
   </div>
 </div>
 
+
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to create multi-pane layouts, read
+  see the <a href="{@docRoot}training/basics/fragments/index.html">Building
+  a Dynamic UI with Fragments</a> and
+  <a href="{@docRoot}training/multiscreen/index.html">Designing for Multiple Screens</a>.
+  </p>
+</div>
+
+
+
 <h2 id="checklist">Checklist</h2>
 
 <ul>
@@ -104,7 +112,7 @@
 <p>Look for opportunities to consolidate your views into multi-panel compound views.</p>
 </li>
 <li>
-<p>Make sure that your screens provide functional parity after the screen orientation
+<p>Make sure that your screens try to provide functional parity after the screen orientation
   changes.</p>
 </li>
 </ul>
diff --git a/docs/html/design/patterns/navigation.jd b/docs/html/design/patterns/navigation.jd
index 7e288ae..656e6e5 100644
--- a/docs/html/design/patterns/navigation.jd
+++ b/docs/html/design/patterns/navigation.jd
@@ -202,3 +202,15 @@
 <p>When your app registers to handle intents with an activity deep within the app's hierarchy,
 refer to <a href="#into-your-app">Navigation into Your App via Home Screen Widgets and
 Notifications</a> for guidance on how to specify Up navigation.</p>
+
+
+
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to build your app with proper Up and Back navigation, read
+  <a href="{@docRoot}training/implementing-navigation/ancestral.html">Implementing
+  Ancestral Navigation</a> and 
+  <a href="{@docRoot}training/implementing-navigation/temporal.html">Implementing
+  Temporal Navigation</a>, respectively.
+  </p>
+</div>
diff --git a/docs/html/design/patterns/new-4-0.jd b/docs/html/design/patterns/new-4-0.jd
deleted file mode 100644
index 91ebba7..0000000
--- a/docs/html/design/patterns/new-4-0.jd
+++ /dev/null
@@ -1,71 +0,0 @@
-page.title=New in Android 4.0
-@jd:body
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-
-<h4>Navigation bar</h4>
-<p>Android 4.0 removes the need for traditional hardware keys on phones by replacing them with a
-virtual navigation bar that houses the Back, Home and Recents buttons. Read the
-<a href="{@docRoot}design/patterns/compatibility.html">Compatibility</a> pattern to learn how the OS adapts to
-phones with hardware buttons and how pre-Android 3.0 apps that rely on menu keys are supported.</p>
-
-  </div>
-  <div class="layout-content-col span-6">
-
-    <img src="{@docRoot}design/media/whats_new_nav_bar.png">
-
-  </div>
-</div>
-
-<div class="vspace size-2">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-
-<h4>Action bar</h4>
-<p>The action bar is the most important structural element of an Android app. It provides consistent
-navigation across the platform and allows your app to surface actions.</p>
-
-  </div>
-  <div class="layout-content-col span-6">
-
-    <img src="{@docRoot}design/media/whats_new_action_bar.png">
-
-  </div>
-</div>
-
-<div class="vspace size-2">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-
-<h4>Multi-pane layouts</h4>
-<p>Creating apps that scale well across different form factors and screen sizes is important in the
-Android world. Multi-pane layouts allow you to combine different activities that show separately on
-smaller devices into richer compound views for tablets.</p>
-
-  </div>
-  <div class="layout-content-col span-6">
-
-    <img src="{@docRoot}design/media/whats_new_multipanel.png">
-
-  </div>
-</div>
-
-<div class="vspace size-2">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-
-<h4>Selection</h4>
-<p>The long press gesture which was traditionally used to show contextual actions for objects is now
-used for data selection. When selecting data, contextual action bars allow you to surface actions.</p>
-
-  </div>
-  <div class="layout-content-col span-6">
-
-    <img src="{@docRoot}design/media/whats_new_multiselect.png">
-
-  </div>
-</div>
diff --git a/docs/html/design/patterns/new.jd b/docs/html/design/patterns/new.jd
new file mode 100644
index 0000000..1fc4987
--- /dev/null
+++ b/docs/html/design/patterns/new.jd
@@ -0,0 +1,114 @@
+page.title=New in Android
+@jd:body
+
+<h2>Jelly Bean - Android 4.1</h2>
+
+<h4>Notifications</h4>
+<div class="layout-content-row">
+  <div class="layout-content-col span-7">
+    <p>Notifications have received some notable enhancements in Android 4.1:</p>
+    <ul>
+      <li>Users can act on notifications immediately from the drawer</li>
+      <li>Notifications are more flexible in size and layout</li>
+      <li>A priority flag helps sort notifications by importance</li>
+      <li>Notifications can be collapsed and expanded</li>
+    </ul>
+
+    <p>The base notification layout has not changed, so app notifications designed for versions earlier than Jelly Bean still look and work the same. Check the updated <a href="{@docRoot}design/patterns/notifications.html">Notifications</a> page for more details.</p>
+  </div>
+  <div class="layout-content-col span-6">
+    <img src="{@docRoot}design/media/new_notifications.png">
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<h4>Resizable Application Widgets</h4>
+<div class="layout-content-row">
+  <div class="layout-content-col span-7">
+    <p>Widgets are an essential aspect of home screen customization, allowing "at-a-glance" views of an app's most important data and functionality right from the user's home screen. Android 4.1 introduces improved App Widgets that can <strong>automatically resize and load different content</strong> based upon a number of factors including:</p>
+    <ul>
+      <li>Where the user drops them on the home screen</li>
+      <li>The size to which the user expands them</li>
+      <li>The amount of room available on the home screen</li>
+    </ul>
+
+    <p>You can supply separate landscape and portrait layouts for your widgets, which the system inflates as appropriate when the screen orientation changes. The Application Widgets has useful details about widget types, limitations, and design considerations.</p>
+  </div>
+  <div class="layout-content-col span-6">
+    <img src="{@docRoot}design/media/new_widgets.png">
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<h4>Accessibility</h4>
+<div class="layout-content-row">
+  <div class="layout-content-col span-11">
+    <p>One of Android's missions is to organize the world's information and make it universally accessible and useful. Our mission applies to all users-including people with disabilities such as visual impairment, color deficiency, hearing loss, and limited dexterity.</p>
+    <p>The new <a href="{@docRoot}design/patterns/accessibility.html">Accessibility</a> page provides details on how to design your app to be as accessible as possible by:</p>
+    <ul>
+      <li>Making navigation intuitive</li>
+      <li>Using recommended touch target sizes</li>
+      <li>Labeling visual UI elements meaningfully</li>
+      <li>Providing alternatives to affordances that time out</li>
+      <li>Using standard framework controls or enable TalkBack for custom controls</li>
+      <li>Trying it out yourself</li>
+    </ul>
+
+    <p>You can supply separate landscape and portrait layouts for your widgets, which the system inflates as appropriate when the screen orientation changes. The [Application Widgets] (should be link) has useful details about widget types, limitations, and design considerations.</p>
+  </div>
+  <div class="layout-content-col span-2">
+    <img src="{@docRoot}design/media/new_accessibility.png">
+  </div>
+</div>
+
+<h2>Ice Cream Sandwich - Android 4.0</h2>
+
+<h4>Navigation bar</h4>
+<div class="layout-content-row">
+  <div class="layout-content-col span-7">
+    <p>Android 4.0 removes the need for traditional hardware keys on phones by replacing them with a
+    virtual navigation bar that houses the Back, Home and Recents buttons. Read the <a href="{@docRoot}design/patterns/compatibility.html">Compatibility</a> pattern to learn how the OS adapts to phones with hardware buttons and how pre-Android 3.0 apps that rely on menu keys are supported.</p>
+  </div>
+  <div class="layout-content-col span-6">
+    <img src="{@docRoot}design/media/whats_new_nav_bar.png">
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<h4>Action bar</h4>
+<div class="layout-content-row">
+  <div class="layout-content-col span-7">
+    <p>The action bar is the most important structural element of an Android app. It provides consistent navigation across the platform and allows your app to surface actions.</p>
+  </div>
+  <div class="layout-content-col span-6">
+    <img src="{@docRoot}design/media/whats_new_action_bar.png">
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<h4>Multi-pane layouts</h4>
+<div class="layout-content-row">
+  <div class="layout-content-col span-7">
+    <p>Creating apps that scale well across different form factors and screen sizes is important in the Android world. Multi-pane layouts allow you to combine different activities that show separately on smaller devices into richer compound views for tablets.</p>
+  </div>
+  <div class="layout-content-col span-6">
+    <img src="{@docRoot}design/media/whats_new_multipanel.png">
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<h4>Selection</h4>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-7">
+    <p>The long press gesture which was traditionally used to show contextual actions for objects is now used for data selection. When selecting data, contextual action bars allow you to surface actions.</p>
+  </div>
+  <div class="layout-content-col span-6">
+    <img src="{@docRoot}design/media/whats_new_multiselect.png">
+  </div>
+</div>
diff --git a/docs/html/design/patterns/notifications.jd b/docs/html/design/patterns/notifications.jd
index ad88a01..1a15a64 100644
--- a/docs/html/design/patterns/notifications.jd
+++ b/docs/html/design/patterns/notifications.jd
@@ -1,20 +1,160 @@
 page.title=Notifications
 @jd:body
 
-<p>The notification system allows your app to keep the user informed about important events, such as
-new messages in a chat app or a calendar event.</p>
-<p>To create an app that feels streamlined, pleasant, and respectful, it is important to design your
-notifications carefully. Notifications embody your app's voice, and contribute to your app's
-personality. Unwanted or unimportant notifications can annoy the user, so use them judiciously.</p>
+<p>The notification system allows your app to keep the user informed about events, such as new chat messages or a calendar event. Think of notifications as a news channel that alerts the user to important events as they happen or a log that chronicles events while the user is not paying attention.</p>
+
+<h4>New in Jelly Bean</h4>
+<p>In Jelly Bean, notifications received their most important structural and functional update since the beginning of Android.</p>
+<ul>
+  <li>Notifications can include actions that enable the user to immediately act on a notification from the notification drawer.</li>
+  <li>Notifications are now more flexible in size and layout. They can be expanded to show additional information details.</li>
+  <li>A priority flag was introduced that helps to sort notifications by importance rather than time only.</li>
+</ul>
+
+<h2>Anatomy of a notification</h2>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-6">
+    <h4>Base Layout</h4>
+    <p>At a minimum, all notifications consist of a base layout, including:</p>
+    <ul>
+      <li>the sending application's notification icon or the sender's photo</li>
+      <li>a notification title and message</li>
+      <li>a timestamp</li>
+      <li>a secondary icon to identify the sending application when the senders image is shown for the main icon</li>
+    </ul>
+    <p>The information arrangement of the base layout has not changed in Jelly Bean, so app notifications designed for versions earlier than Jelly Bean still look and work the same.</p>
+  </div>
+  <div class="layout-content-col span-6">
+    <img src="{@docRoot}design/media/notifications_pattern_anatomy.png">
+    <div class="figure-caption">
+      Base layout of a notification
+    </div>
+  </div>
+</div>
+
+<h4>Expanded layouts</h4>
+<p>With Jelly Bean you have the option to provide more event detail. You can use this to show the first few lines of a message or show a larger image preview. This provides the user with additional context, and - in some cases - may allow the user to read a message in its entirety. The user can pinch-zoom or two-finger glide in order to toggle between base and expanded layouts. For single event notifications, Android provides two expanded layout templates (text and image) for you to re-use in your application.</p>
+
+<img src="{@docRoot}design/media/notifications_pattern_expandable.png">
+
+<h4>Actions</h4>
+<div class="layout-content-row">
+  <div class="layout-content-col span-6">
+    <p>Starting with Jelly Bean, Android supports optional actions that are displayed at the bottom of the notification. With actions, users can handle the most common tasks for a particular notification from within the notification shade without having to open the originating application. This speeds up interaction and, in conjunction with "swipe-to-dismiss", helps users to streamline their notification triaging experience.</p>
+    <p>Be judicious with how many actions you include with a notification. The more actions you include, the more cognitive complexity you create. Limit yourself to the fewest number of actions possible by only including the most imminently important and meaningful ones.</p>
+    <p>Good candidates for actions on notifications are actions that are:</p>
+    <ul>
+      <li>essential, frequent and typical for the content type you're displaying</li>
+      <li>time-critical</li>
+      <li>not overlapping with neighboring actions</li>
+    </ul>
+    <p>Avoid actions that are:</p>
+    <ul>
+      <li>ambiguous</li>
+      <li>duplicative of the default action of the notification (such as "Read" or "Open")</li>
+    </ul>
+  </div>
+  <div class="layout-content-col span-7">
+    <img src="{@docRoot}design/media/notifications_pattern_two_actions.png">
+    <div class="figure-caption">
+      Calendar reminder notification with two actions
+    </div>
+  </div>
+</div>
+
+<p>You can specify a maximum of three actions, each consisting of an action icon and an action name. Adding actions to a simple base layout will make the notification expandable, even if the notification doesn't have an expanded layout. Since actions are only shown for expanded notifications and are otherwise hidden, you must make sure that any action a user can invoke from a notification is available from within the associated application as well.</p>
+
+<h2>Design guidelines</h2>
+<div class="layout-content-row">
+  <div class="layout-content-col span-6">
+    <img src="{@docRoot}design/media/notifications_pattern_personal.png">
+  </div>
+  <div class="layout-content-col span-7">
+    <h4>Make it personal</h4>
+    <p>For notifications of items sent by another user (such as a message or status update), include that person's image.</p>
+    <p>Remember to include the app icon as a secondary icon in the notification, so that the user can still identify which app posted it.</p>
+  </div>
+</div>
+
+<h4>Navigate to the right place</h4>
+<p>When the user touches the body of a notification (outside of the action buttons), open your app to the place where the user can consume and act upon the data referenced in the notification. In most cases this will be the detail view of a
+single data item such as a message, but it might also be a summary view if the notification is stacked (see <em>Stacked notifications</em> below) and references multiple items. If in any of those cases the user is taken to a hierarchy level below your app's top-level, insert navigation into your app's back stack to allow them to navigate to your app's top level using the system back key. For more
+information, see the chapter on <em>System-to-app navigation</em> in the <a href="{@docRoot}design/patterns/navigation.html">Navigation</a> design pattern.</p>
+
+<h4>Correctly set and manage notification priority</h4>
+<p>Starting with Jelly Bean, Android now supports a priority flag for notifications. It allows you to influence where your notification will appear in comparison to other notifications and help to make sure that users always see their most important notifications first. You can choose from the following priority levels when posting a notification:</p>
+
+<table>
+  <tr>
+    <th><strong>Priority</strong></th>
+    <th><strong>Use</strong></th>
+  </tr>
+  <tr>
+    <td>MAX</td>
+    <td>Use for critical and urgent notifications that alert the user to a condition that is time-critical or needs to be resolved before they can continue with a particular task.</td>
+  </tr>
+  <tr>
+    <td>HIGH</td>
+    <td>Use high priority notifications primarily for important communication, such as message or chat events with content that is particularly interesting for the user.</td>
+  </tr>
+  <tr>
+    <td>DEFAULT</td>
+    <td>The default priority. Keep all notifications that don't fall into any of the other categories at this priority level.</td>
+  </tr>
+  <tr>
+    <td>LOW</td>
+    <td>Use for notifications that you still want the user to be informed about, but that rate low in urgency.</td>
+  </tr>
+  <tr>
+    <td>MIN</td>
+    <td>Contextual/background information (e.g. weather information, contextual location information). Minimum     priority notifications will not show in the status bar. The user will only discover them when they expand the notification tray.</td>
+  </tr>
+</table>
+<img src="{@docRoot}design/media/notifications_pattern_priority.png">
+
+<h4>Stack your notifications</h4>
+<p>If your app creates a notification while another of the same type is still pending, avoid creating
+an altogether new notification object. Instead, stack the notification.</p>
+<p>A stacked notification builds a summary description and allows the user to understand how many
+notifications of a particular kind are pending.</p>
+<p><strong>Don't</strong>:</p>
+
+<img src="{@docRoot}design/media/notifications_pattern_additional_fail.png">
+
+<p><strong>Do</strong>:</p>
+
+<img src="{@docRoot}design/media/notifications_pattern_additional_win.png">
+
+<p>You can provide more detail about the individual notifications that make up a stack by using the expanded digest layout. This allows users to gain a better sense of which notifications are pending and if they are interesting enough to be read in detail within the associated app.</p>
+
+<img src="{@docRoot}design/media/notifications_expand_contract_msg.png">
+
+<h4>Make notifications optional</h4>
+<p>Users should always be in control of notifications. Allow the user to disable your apps notifications or change their alert properties, such as alert sound and whether to use vibration, by adding a notification settings item to your application settings.</p>
+<h4>Use distinct icons</h4>
+<p>By glancing at the notification area, the user should be able to discern what kinds of notifications are currently pending.</p>
+
+<div class="do-dont-label good"><strong>Do</strong></div>
+<p style="margin-top:0;">Look at the notification icons the Android apps already provide and create notification icons for your app that are sufficiently distinct in appearance.</p>
+<div class="do-dont-label good"><strong>Do</strong></div>
+<p style="margin-top:0;">Use the proper <a href="{@docRoot}design/style/iconography.html#notification">notification icon style</a> for small icons, and the Holo Dark <a href="{@docRoot}design/style/iconography.html#action-bar">action bar icon style</a> for your action icons.</p>
+<div class="do-dont-label good"><strong>Do</strong></div>
+<p style="margin-top:0;">Keep your icons visually simple and avoid excessive detail that is hard to discern.</p>
+<div class="do-dont-label bad"><strong>Don't</strong></div>
+<p style="margin-top:0;">Use color to distinguish your app from others.</p>
+
+<h4>Pulse the notification LED appropriately</h4>
+<p>Many Android devices contain a tiny lamp, called the notification <acronym title="Light-Emitting Diode">LED</acronym>, which is used to keep the user informed about events while the screen is off. Notifications with a priority level of MAX, HIGH, or DEFAULT should cause the LED to glow, while those with lower priority (LOW and MIN) should not.</p>
+
+<p>The user's control over notifications should extend to the LED. By default, the LED will glow with a white color. Your notifications shouldn't use a different color unless the user has explicitly customized it.</p>
+
+<h2>Building notifications that users care about</h2>
+<p>To create an app that feels streamlined, pleasant, and respectful, it is important to design your notifications carefully. Notifications embody your app's voice, and contribute to your app's personality. Unwanted or unimportant notifications can annoy the user, so use them judiciously.</p>
+
 <h4>When to display a notification</h4>
-<p>To create an application that people love, it's important to recognize that the user's attention and
-focus is a resource that must be protected. To use an analogy that might resonate with software
-developers, the user is not a method that can be invoked to return a value.  The user's focus is a
-resource more akin to a thread, and creating a notification momentarily blocks the user thread as
-they process and then dismiss the interruptive notification.</p>
-<p>Android's notification system has been designed to quickly inform users of events while they focus
-on a task, but it is nonetheless still important to be conscientious when deciding to create a
-notification.</p>
+<p>To create an application that people love, it's important to recognize that the user's attention and focus is a resource that must be protected. While Android's notification system has been designed to minimize the impact of notifications on the users attention, it is nonetheless still important to be aware of the fact that notifications are potentially interrupting the users task flow. As you plan your notifications, ask yourself if they are important enough to warrant an interruption. If you are unsure, allow the user to opt into a notification using your apps notification settings or adjust the notifications priority flag.</p>
+<p>Time sensitive events are great opportunities for valuable notifications with high priority, especially if these synchronous events involve other people. For instance, an incoming chat is a real time and synchronous form of communication: there is another user actively waiting on you to respond. Calendar events are another good example of when to use a notification and grab the user's attention, because the event is imminent, and calendar events often involve other people.</p>
 <p>While well behaved apps generally only speak when spoken to, there are some limited cases where an
 app actually should interrupt the user with an unprompted notification.</p>
 <p>Notifications should be used primarily for <strong>time sensitive events</strong>, and especially if these
@@ -34,27 +174,19 @@
 <p>There are however many other cases where notifications should not be used:</p>
 <ul>
 <li>
-<p>Don't notify the user of information that is not directed specifically at them, or information
-that is not truly time sensitive.  For instance the asynchronous and undirected updates flowing
-through a social network do not warrant a real time interruption.</p>
+<p>Avoid notifying the user of information that is not directed specifically at them, or information that is not truly time sensitive. For instance the asynchronous and undirected updates flowing through a social network generally do not warrant a real time interruption. For the users that do care about them, allow them to opt-in.</p>
 </li>
 <li>
-<p>Don't create a notification if the relevant new information is currently on screen. Instead, use
-the UI of the application itself to notify the user of new information directly in context. For
-instance, a chat application should not create system notifications while the user is actively
-chatting with another user.</p>
+<p>Don't create a notification if the relevant new information is currently on screen. Instead, use the UI of the application itself to notify the user of new information directly in context. For instance, a chat application should not create system notifications while the user is actively chatting with another user.</p>
 </li>
 <li>
-<p>Don't interrupt the user for low level technical operations, like saving or syncing information,
-or updating an application, if it is possible for the system to simply take care of itself without
-involving the user.</p>
+<p>Don't interrupt the user for low level technical operations, like saving or syncing information, or updating an application, if it is possible for the system to simply take care of itself without involving the user.</p>
 </li>
 <li>
-<p>Don't interrupt the user to inform them of an error if it is possible for the application to
-quickly recover from the error on its own without the user taking any action.</p>
+<p>Don't interrupt the user to inform them of an error if it is possible for the application to quickly recover from the error on its own without the user taking any action.</p>
 </li>
 <li>
-<p>Don't use notifications for services that the user cannot manually start or stop.</p>
+<p>Don't create notifications that have no true notification content and merely advertise your app. A notification should inform the user about a state and should not be used to merely launch an app.</p>
 </li>
 <li>
 <p>Don't create superfluous notifications just to get your brand in front of users. Such
@@ -66,108 +198,10 @@
 
   </div>
   <div class="layout-content-col span-6">
-
     <img src="{@docRoot}design/media/notifications_pattern_social_fail.png">
-
   </div>
 </div>
 
-<h2 id="design-guidelines">Design Guidelines</h2>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-
-    <img src="{@docRoot}design/media/notifications_pattern_anatomy.png">
-
-  </div>
-  <div class="layout-content-col span-6">
-
-<h4>Make it personal</h4>
-<p>For notifications of items sent by another user (such as a message or status update), include that
-person's image.</p>
-<p>Remember to include the app icon as a secondary icon in the notification, so that the user can
-still identify which app posted it.</p>    
-
-  </div>
-</div>
-
-<h4>Navigate to the right place</h4>
-<p>When the user touches a notification, be open your app to the place where the user can consume and
-act upon the data referenced in the notification. In most cases this will be the detail view of a
-single data item (e.g. a message), but it might also be a summary view if the notification is
-stacked (see <em>Stacked notifications</em> below) and references multiple items. If in any of those cases
-the user is taken to a hierarchy level below your app's top-level, insert navigation into your app's
-back stack to allow them to navigate to your app's top level using the system back key. For more
-information, see the chapter on <em>System-to-app navigation</em> in the
-<a href="{@docRoot}design/patterns/navigation.html">Navigation</a> design pattern.</p>
-<h4>Timestamps for time sensitive events</h4>
-<p>By default, standard Android notifications include a timestamp in the upper right corner. Consider
-whether the timestamp is valuable in the context of your notification. If the timestamp is not
-valuable, consider if the event is important enough to warrant grabbing the user's attention with a
-notification. If the notification is important enough, decide if you would like to opt out of
-displaying the timestamp.</p>
-<p>Include a timestamp if the user likely needs to know how long ago the notification occurred. Good
-candidates for timestamps include communication notifications (email, messaging, chat, voicemail)
-where the user may need the timestamp information to understand the context of a message or to
-tailor a response.</p>
-<h4>Stack your notifications</h4>
-<p>If your app creates a notification while another of the same type is still pending, avoid creating
-an altogether new notification object. Instead, stack the notification.</p>
-<p>A stacked notification builds a summary description and allows the user to understand how many
-notifications of a particular kind are pending.</p>
-<p><strong>Don't</strong>:</p>
-
-<img src="{@docRoot}design/media/notifications_pattern_additional_fail.png">
-
-<p><strong>Do</strong>:</p>
-
-<img src="{@docRoot}design/media/notifications_pattern_additional_win.png">
-
-<p>If you keep the summary and detail information on different screens, a stacked notification may need
-to open to a different place in the app than a single notification.</p>
-<p>For example, a single email notification should always open to the content of the email, whereas a
-stacked email notification opens to the Inbox view.</p>
-<h4>Clean up after yourself</h4>
-<p>Just like calendar events, some notifications alert the user to an event that happens at a
-particular point in time. After that moment has passed, the notification is likely not important to
-the user anymore, and you should consider removing it automatically.  The same is true for active
-chat conversations or voicemail messages the user has listened to, users should not have to manually
-dismiss notifications independently from taking action on them.</p>
-
-<div class="vspace size-1">&nbsp;</div>
-
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
-
-<h4>Provide a peek into your notification</h4>
-<p>You can provide a short preview of your notification's content by providing optional ticker text.
-The ticker text is shown for a short amount of time when the notification enters the system and then
-hides automatically.</p>
-
-  </div>
-  <div class="layout-content-col span-6">
-
-    <img src="{@docRoot}design/media/notifications_pattern_phone_ticker.png">
-
-  </div>
-</div>
-
-<h4>Make notifications optional</h4>
-<p>Users should always be in control of notifications. Allow the user to silence the notifications from
-your app by adding a notification settings item to your application settings.</p>
-<h4>Use distinct icons</h4>
-<p>By glancing at the notification area, the user should be able to discern what notification types are
-currently pending.</p>
-<p><strong>Do</strong>:</p>
-<ul>
-<li>Look at the notification icons the Android apps already provide and create notification icons for
-  your app that are sufficiently distinct in appearance.</li>
-</ul>
-<p><strong>Don't</strong>:</p>
-<ul>
-<li>Use color to distinguish your app from others. Notification icons should generally be monochrome.</li>
-</ul>
-
 <h2 id="interacting-with-notifications">Interacting With Notifications</h2>
 
 <div class="layout-content-row">
@@ -178,11 +212,8 @@
   </div>
   <div class="layout-content-col span-6">
 
-<p>Notifications are indicated by icons in the notification area and can be accessed by opening the
-notification drawer.</p>
-<p>Inside the drawer, notifications are chronologically sorted with the latest one on top. Touching a
-notification opens the associated app to detailed content matching the notification. Swiping left or
-right on a notification removes it from the drawer.</p>
+  <p>Notifications are indicated by icons in the notification area and can be accessed by opening the notification drawer.</p>
+  <p>Inside the drawer, notifications are chronologically sorted with the latest one on top. Touching a notification opens the associated app to detailed content matching the notification. Swiping left or right on a notification removes it from the drawer.</p>
 
   </div>
 </div>
@@ -190,8 +221,7 @@
 <div class="layout-content-row">
   <div class="layout-content-col span-6">
 
-<p>On tablets, the notification area is integrated with the system bar at the bottom of the screen. The
-notification drawer is opened by touching anywhere inside the notification area.</p>
+<p>On tablets, the notification area is integrated with the system bar at the bottom of the screen. The notification drawer is opened by touching anywhere inside the notification area.</p>
 
   </div>
   <div class="layout-content-col span-6">
@@ -210,27 +240,23 @@
   <div class="layout-content-col span-6">
 
 <h4>Ongoing notifications</h4>
-<p>Ongoing notifications keep users informed about an ongoing process in the background. For example,
-music players announce the currently playing track in the notification system and continue to do so
-until the user stops the playback. They can also be used to show the user feedback for longer tasks
-like downloading a file, or encoding a video. Ongoing notifications cannot be manually removed from
-the notification drawer.</p>
+<p>Ongoing notifications keep users informed about an ongoing process in the background. For example, music players announce the currently playing track in the notification system and continue to do so until the user stops the playback. They can also be used to show the user feedback for longer tasks like downloading a file, or encoding a video. Ongoing notifications cannot be manually removed from the notification drawer.</p>
 
   </div>
 </div>
 
 <div class="layout-content-row">
   <div class="layout-content-col span-12">
-
-<h4>Dialogs and toasts are for feedback not notification</h4>
-<p>Your app should not create a dialog or toast if it is not currently on screen. Dialogs and Toasts
-should only be displayed as the immediate response to the user taking an action inside of your app.
-For instance, dialogs can be used to confirm that the user understands the severity of an action,
-and toasts can echo back that an action has been successfully taken.</p>
-
+    <h4>Dialogs and toasts are for feedback not notification</h4>
+    <p>Your app should not create a dialog or toast if it is not currently on screen. Dialogs and Toasts should only be displayed as the immediate response to the user taking an action inside of your app. For further guidance on the use of dialogs and toasts, refer to <a href="{@docRoot}design/patterns/confirming-acknowledging.html">Confirming &amp; Acknowledging</a>.</p>
   </div>
 </div>
 
-<div class="vspace size-1">&nbsp;</div>
 
-<img src="{@docRoot}design/media/notifications_pattern_dialog_toast.png">
+
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to build notifications, see the
+  <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Notifications</a>
+  API guide.</p>
+</div>
diff --git a/docs/html/design/patterns/selection.jd b/docs/html/design/patterns/selection.jd
index e3ee90e..e9d22e6 100644
--- a/docs/html/design/patterns/selection.jd
+++ b/docs/html/design/patterns/selection.jd
@@ -1,8 +1,7 @@
 page.title=Selection
 @jd:body
 
-<p>Android 3.0 introduced the <em>long press</em> gesture&mdash;that is, a touch that's held in the same
-position for a moment&mdash;as the global gesture to select data. This affects the way you should
+<p>Android 3.0 changed the <em>long press</em> gesture&mdash;that is, a touch that's held in the same position for a moment&mdash;to be the global gesture to select data.. This affects the way you should
 handle multi-select and contextual actions in your apps.</p>
 
 <div class="vspace size-1">&nbsp;</div>
@@ -79,6 +78,13 @@
   </div>
 </div>
 
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to create a contextual action bar, read
+  <a href="{@docRoot}guide/topics/ui/menus.html#CAB">Using the contextual action mode</a>.</p>
+</div>
+
+
 <h2 id="checklist">Checklist</h2>
 
 <ul>
diff --git a/docs/html/design/patterns/settings.jd b/docs/html/design/patterns/settings.jd
index 3b28b84..fef7585 100644
--- a/docs/html/design/patterns/settings.jd
+++ b/docs/html/design/patterns/settings.jd
@@ -429,7 +429,7 @@
     <tbody>
       <tr>
         <td class="secondary-text">
-        After 10 minutes of activity
+        After 10 minutes of inactivity
         </td>
       </tr>
     </tbody>
@@ -551,7 +551,7 @@
     <tbody>
       <tr>
         <td class="secondary-text">
-        After 10 minutes of activity
+        After 10 minutes of inactivity
         </td>
       </tr>
     </tbody>
@@ -679,6 +679,15 @@
   </div>
 </div>
 
+
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to build a settings interface, see the
+  <a href="{@docRoot}guide/topics/ui/settings.html">Settings</a>
+  API guide.</p>
+</div>
+
+
 <h2 id="checklist">Checklist</h2>
 <ul>
 <li><p>Make sure each item in Settings meets the criteria for belonging there.</p></li>
diff --git a/docs/html/design/patterns/swipe-views.jd b/docs/html/design/patterns/swipe-views.jd
index 95d65dd..daddd31 100644
--- a/docs/html/design/patterns/swipe-views.jd
+++ b/docs/html/design/patterns/swipe-views.jd
@@ -24,7 +24,12 @@
 
 <img src="{@docRoot}design/media/swipe_views2.png">
 <div class="figure-caption">
-  Navigating between consecutive Email messages using the swipe gesture.
+  Navigating between consecutive Email messages using the swipe gesture. If a view contains content that exceeds the width of the screen such as a wide Email message, make sure the user's initial swipes will scroll horizontally within the view. Once the end of the content is reached, an additional swipe should navigate to the next view. In addition, support the use of edge swipes to immediately navigate between views when content scrolls horizontally.
+</div>
+
+<img src="{@docRoot}design/media/swipe_views3.png">
+<div class="figure-caption">
+  Scrolling within a wide Email message using the swipe gesture before navigating to the next message.
 </div>
 
 <h2 id="between-tabs">Swiping Between Tabs</h2>
@@ -46,29 +51,39 @@
 
   </div>
   <div class="layout-content-col span-8">
+    <p>If your app uses action bar tabs, use swipe to navigate between the different views.</p>
+    <div class="vspace size-1">&nbsp;</div>
 
-<p>If your app uses action bar tabs, use swipe to navigate between the different views.</p>
-<div class="vspace size-2">&nbsp;</div>
-
-<h2 id="checklist">Checklist</h2>
-
-<ul>
-<li>
-<p>Use swipe to quickly navigate between detail views or tabs.</p>
-</li>
-<li>
-<p>Transition between the views as the user performs the swipe gesture. Do not wait for the
-  gesture to complete and then transition between views.</p>
-</li>
-<li>
-<p>If you used buttons in the past for previous/next navigation, replace them with
-  the swipe gesture.</p>
-</li>
-<li>
-<p>Consider adding contextual information in your detail view that informs the user about the
-  relative list position of the currently visible item.</p>
-</li>
-</ul>
-
+    <h2 id="checklist">Checklist</h2>
+    <ul>
+      <li>
+      <p>Use swipe to quickly navigate between detail views or tabs.</p>
+      </li>
+      <li>
+      <p>Transition between the views as the user performs the swipe gesture. Do not wait for the
+        gesture to complete and then transition between views.</p>
+      </li>
+      <li>
+      <p>If you used buttons in the past for previous/next navigation, replace them with
+        the swipe gesture.</p>
+      </li>
+      <li>
+      <p>Consider adding contextual information in your detail view that informs the user about the
+        relative list position of the currently visible item.</p>
+      </li>
+      <li>
+      <p>For more details on how to build swipe views, read the developer documentation on <a href="{@docRoot}training/implementing-navigation/lateral.html#horizontal-paging">Implementing Lateral Navigation</a>.</p>
+      </li>
+    </ul>
   </div>
 </div>
+
+
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to create swipe views, read
+  <a href="{@docRoot}training/implementing-navigation/lateral.html">Implementing Lateral Navigation</a>.
+  </p>
+</div>
+
+
diff --git a/docs/html/design/patterns/widgets.jd b/docs/html/design/patterns/widgets.jd
new file mode 100644
index 0000000..54726b1
--- /dev/null
+++ b/docs/html/design/patterns/widgets.jd
@@ -0,0 +1,139 @@
+page.title=Widgets
+@jd:body
+
+<p>Widgets are an essential aspect of home screen customization. You can imagine them as "at-a-glance" views of an app's most important data and functionality that is accessible right from the user's home screen. Users can move widgets across their home screen panels, and, if supported, resize them to tailor the amount of information within a widget to their preference.</p>
+
+<h2>Widget types</h2>
+<p>As you begin planning your widget, think about what kind of widget you're trying to build. Widgets typically fall into one of the following categories:</p>
+
+<h3>Information widgets</h3>
+<img style="float:right;" src="{@docRoot}design/media/widgets_info.png">
+<p>Information widgets typically display a few crucial information elements that are important to a user and track how that information changes over time. Good examples for information widgets are weather widgets, clock widgets or sports score trackers. Touching information widgets typically launches the associated app and opens a detail view of the widget information.</p>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-6">
+    <h3>Collection widgets</h3>
+    <p>As the name implies, collection widgets specialize on displaying multitude elements of the same type, such as a collection of pictures from a gallery app, a collection of articles from a news app or a collection of emails/messages from a communication app. Collection widgets typically focus on two use cases: browsing the collection, and opening an element of the collection to its detail view for consumption. Collection widgets can scroll vertically.</p>
+  </div>
+  <div class="layout-content-col span-3">
+    <img src="{@docRoot}design/media/widgets_collection_gmail.png">
+    <div class="figure-caption">
+      ListView widget
+    </div>
+  </div>
+  <div class="layout-content-col span-4">
+    <img src="{@docRoot}design/media/widgets_collection_bookmarks.png">
+    <div class="figure-caption">
+      GridView widget
+    </div>
+  </div>
+</div>
+
+<h3>Control widgets</h3>
+<img style="float:right;" src="{@docRoot}design/media/widgets_control.png">
+<p>The main purpose of a control widget is to display often used functions that the user can trigger right from the home screen without having to open the app first. Think of them as remote controls for an app. A typical example of control widgets are music app widgets that allow the user to play, pause or skip music tracks from outside the actual music app.</p>
+<p>Interacting with control widgets may or may not progress to an associated detail view depending on if the control widget's function generated a data set, such as in the case of a search widget.</p>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<h3>Hybrid widgets</h3>
+<img style="float:right;" src="{@docRoot}design/media/widgets_hybrid.png">
+<p>While all widgets tend to gravitate towards one of the three types described above, many widgets in reality are hybrids that combine elements of different types.</p>
+<p>For the purpose of your widget planning, center your widget around one of the base types and add elements of other types if needed.</p>
+<div class="figure-caption">
+A music player widget is primarily a control widget, but also keeps the user informed about what track is currently playing. It essentially combines a control widget with elements of an information widget type.
+</div>
+
+<h2>Widget limitations</h2>
+<p>While widgets could be understood as "mini apps", there are certain limitations that are important to understand before you start to embark on designing your widget:</p>
+
+<h3>Gestures</h3>
+<p>Because widgets live on the home screen, they have to co-exist with the navigation that is established there. This limits the gesture support that is available in a widget compared to a full-screen app. While apps for example may support a view pager that allows the user to navigate between screens laterally, that gesture is already taken on the home screen for the purpose of navigating between home panels.</p>
+<p>The only gestures available for widgets are:</p>
+<ul>
+  <li>Touch</li>
+  <li>Vertical swipe</li>
+</ul>
+<img src="{@docRoot}design/media/widgets_gestures.png">
+
+<h3>Elements</h3>
+<p>Given the above interaction limitations, some of the UI building blocks that rely on restricted gestures are not available for widgets. For a complete list of supported building blocks and more information on layout restrictions, please refer to the "Creating App Widget Layouts" section in the <a href="{@docRoot}guide/topics/appwidgets/index.html">App Widgets</a> API Guide.</p>
+
+<h2>Design guidelines</h2>
+
+<h3>Widget content</h3>
+<p>Widgets are a great mechanism to attract a user to your app by "advertising" new and interesting content that is available for consumption in your app.</p>
+<p>Just like the teasers on the front page of a newspaper, widgets should consolidate and concentrate an app's information and then provide a connection to richer detail within the app; or in other words: the widget is the information "snack" while the app is the "meal." As a bottom line, always make sure that your app shows more detail about an information item than what the widget already displays.</p>
+
+<h3>Widget navigation</h3>
+<p>Besides the pure information content, you should also consider to round out your widget's offering by providing navigation links to frequently used areas of your app. This lets users complete tasks quicker and extends the functional reach of the app to the home screen.</p>
+<p>Good candidates for navigation links to surface on widgets are:</p>
+<ul>
+  <li>Generative functions: These are the functions that allow the user to create new content for an app, such as creating a new document or a new message.</li>
+  <li>Open application at top level: Tapping on an information element will usually navigate the user to a lower level detail screen. Providing access to the top level of your application provides more navigation flexibility and can replace a dedicated app shortcut that users would otherwise use to navigate to the app from the home screen. Using your application icon as an affordance can also provide your widget with a clear identity in case the data you're displaying is ambiguous.</li>
+</ul>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-6">
+    <h3>Widget resizing</h3>
+    <p>With version 3.1, Android introduced resizable widgets to the platform. Resizing allows users to adjust the height and/or the width of a widget within the constraints of the home panel placement grid. You can decide if your widget is freely resizable or if it is constrained to horizontal or vertical size changes. You do not have to support resizing if your particular widget is inherently fixed-size.</p>
+    <p>Allowing users to resize widgets has important benefits:</p>
+    <ul>
+      <li>They can fine-tune how much information they want to see on each widget.</li>
+      <li>They can better influence the layout of widgets and shortcuts on their home panels.</li>
+    </ul>
+  </div>
+
+  <div class="layout-content-col span-7">
+    <img src="{@docRoot}design/media/widgets_resizing01.png">
+    <div class="figure-caption">
+      A long press and subsequent release sets resizable widgets into resize mode. Users can use the drag handles or the widget corners to set the desired size.
+    </div>
+  </div>
+</div>
+
+<p>Planning a resize strategy for your widget depends on the type of widget you're creating. List or grid-based collection widgets are usually straightforward because resizing the widget will simply expand or contract the vertical scrolling area. Regardless of the of the widget's size, the user can still scroll all information elements into view. Information widgets on the other hand require a bit more hands-on planning, since they are not scrollable and all content has to fit within a given size. You will have to dynamically adjust your widget's content and layout to the size the user defined through the resize operation.</p>
+<img src="{@docRoot}design/media/widgets_resizing02.png">
+<p>In this simple example the user can horizontally resize a weather widget in 4 steps and expose richer information about the weather at the current location as the widget grows.</p>
+<p>For each widget size determine how much of your app's information should surface. For smaller sizes concentrate on the essential and then add more contextual information as the widget grows horizontally and vertically.</p>
+
+<h3>Layout considerations</h3>
+<p>It will be tempting to layout your widgets according to the dimensions of the placement grid of a particular device that you own and develop with. This can be a useful initial approximation as you layout your widget, but keep the following in mind:</p>
+<ul>
+  <li>The number, size and spacing of cells can vary widely from device to device, and hence it is very important that your widget is flexible and can accommodate more or less space than anticipated.</li>
+  <li>In fact, as the user resizes a widget, the system will respond with a dp size range in which your widget can redraw itself. Planning your widget resizing strategy across "size buckets" rather than variable grid dimensions will give you the most reliable results.</li>
+</ul>
+
+<h3>Widget configuration</h3>
+<div class="layout-content-row">
+  <div class="layout-content-col span-6">
+    <p>Sometimes widgets need to be setup before they can become useful. Think of an email widget for example, where you need to provide an account before the inbox can be displayed. Or a static photo widget where the user has to assign the picture that is to be displayed from the gallery.</p>
+    <p>Android widgets display their configuration choices right after the widget is dropped onto a home panel. Keep the widget configuration light and don't present more than 2-3 configuration elements. Use dialog-style instead of full-screen activities to present configuration choices and retain the user's context of place, even if doing so requires use of multiple dialogs.</p>
+<p>Once setup, there typically is not a lot of reason to revisit the setup. Therefore Android widgets do not show a "Setup" or "Configuration" button.</p>
+  </div>
+
+  <div class="layout-content-col span-6">
+    <img src="{@docRoot}design/media/widgets_config.png">
+    <div class="figure-caption">
+      After adding a Play widget to a home panel, the widget asks the user to specify the type of media the widget should display.
+    </div>
+  </div>
+</div>
+
+
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to build widgets for the home screen, see the
+  <a href="{@docRoot}guide/topics/appwidgets/index.html">App Widgets</a>
+  API guide.</p>
+</div>
+
+<h2>Checklist</h2>
+<ul>
+  <li>Focus on small portions of glanceable information on your widget. Expand on the information in your app.</li>
+  <li>Choose the right widget type for your purpose.</li>
+  <li>For resizable widgets, plan how the content for your widget should adapt to different sizes.</li>
+  <li>Make your widget orientation and device independent by ensuring that the layout is capable of stretching and contracting.</li>
+</ul>
\ No newline at end of file
diff --git a/docs/html/design/style/color.jd b/docs/html/design/style/color.jd
index 9c7b6b6..a7daacf 100644
--- a/docs/html/design/style/color.jd
+++ b/docs/html/design/style/color.jd
@@ -115,7 +115,8 @@
 
 <p>Blue is the standard accent color in Android's color palette. Each color has a corresponding darker
 shade that can be used as a complement when needed.</p>
-<p><a href="https://dl-ssl.google.com/android/design/Android_Design_Color_Swatches_20120229.zip">Download the swatches</a></p>
+<p><a onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Color Swatches (@color page)']);"
+      href="{@docRoot}downloads/design/Android_Design_Color_Swatches_20120229.zip">Download the swatches</a></p>
 
 <img src="{@docRoot}design/media/color_spectrum.png">
 
diff --git a/docs/html/design/style/devices-displays.jd b/docs/html/design/style/devices-displays.jd
index df77c1b..18550d9 100644
--- a/docs/html/design/style/devices-displays.jd
+++ b/docs/html/design/style/devices-displays.jd
@@ -36,8 +36,21 @@
 
 <h4>Strategies</h4>
 <p>So where do you begin when designing for multiple screens? One approach is to work in the base
-standard (medium size, <acronym title="Medium density (160 dpi)">MDPI</acronym>) and scale it up or
+standard (normal size and <acronym title="Medium density (160 dpi)">MDPI</acronym>) and scale it up or
 down for the other buckets. Another approach is to start with the device with the largest screen
 size, and then scale down and figure out the UI compromises you'll need to make on smaller screens.</p>
-<p>For more detailed information on this topic, please visit <a href="http://developer.android.com/guide/practices/screens_support.html">Supporting Multiple
-Screens</a>.</p>
+
+<p>For details about designing layouts for larger screens, see the <a
+href="{@docRoot}design/patterns/multi-pane-layouts.html">Multi-pane Layouts</a> guide.</p>
+
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to build flexible layouts for multiple screen sizes and densities,
+  read
+  <a href="{@docRoot}training/multiscreen/index.html">Designing for Multiple Screens</a> and
+  <a href="{@docRoot}training/basics/fragments/index.html">Building a Dynamic UI with
+  Fragments</a>.</p>
+</div>
+
+
+
diff --git a/docs/html/design/style/iconography.jd b/docs/html/design/style/iconography.jd
index 775e45d..ce11cf7 100644
--- a/docs/html/design/style/iconography.jd
+++ b/docs/html/design/style/iconography.jd
@@ -109,9 +109,8 @@
 
 </p>
 <p>
-
-<a href="https://dl-ssl.google.com/android/design/Android_Design_Icons_20120229.zip">Download the Action Bar Icon Pack</a>
-
+<a onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Action Bar Icons (@iconography page)']);"
+   href="{@docRoot}downloads/design/Android_Design_Icons_20120814.zip">Download the Action Bar Icon Pack</a>
 </p>
 
 <div class="layout-content-row">
diff --git a/docs/html/design/style/themes.jd b/docs/html/design/style/themes.jd
index d4a6acf..e1899e3 100644
--- a/docs/html/design/style/themes.jd
+++ b/docs/html/design/style/themes.jd
@@ -38,5 +38,12 @@
 point for your customizations is a good idea. The system themes provide a solid foundation on top
 of which you can selectively implement your own visual stylings.</p>
 
+<div class="note develop">
+<p><strong>Developer Guide</strong></p>
+  <p>For information about how to apply themes such as Holo Light and Dark, and 
+  how to build your own themes, see the
+  <a href="{@docRoot}guide/topics/ui/themes.html">Styles and Themes</a> API guide.</p>
+</div>
+
   </div>
 </div>
diff --git a/docs/html/design/style/typography.jd b/docs/html/design/style/typography.jd
index db2fb5f..427b8c6 100644
--- a/docs/html/design/style/typography.jd
+++ b/docs/html/design/style/typography.jd
@@ -18,8 +18,10 @@
 
     <img src="{@docRoot}design/media/typography_alphas.png">
 
-<p><a href="https://dl-ssl.google.com/android/design/Roboto_Hinted_20111129.zip">Download Roboto</a></p>
-<p><a href="https://dl-ssl.google.com/android/design/Roboto_Specimen_Book_20111129.pdf">Specimen Book</a></p>
+<p><a onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Roboto ZIP (@typography page)']);"
+      href="{@docRoot}downloads/design/Roboto_Hinted_20120823.zip">Download Roboto</a></p>
+<p><a onClick="_gaq.push(['_trackEvent', 'Design', 'Download', 'Roboto Specimen Booke (@typography page)']);"
+      href="{@docRoot}downloads/design/Roboto_Specimen_Book_20111129.pdf">Specimen Book</a></p>
 
   </div>
 </div>
diff --git a/docs/html/design/videos/index.jd b/docs/html/design/videos/index.jd
new file mode 100644
index 0000000..272183f
--- /dev/null
+++ b/docs/html/design/videos/index.jd
@@ -0,0 +1,67 @@
+page.title=Videos
+@jd:body
+
+<p>The Android Design Team was pleased to present five fantastic design-oriented sessions at Google I/O 2012. Visit these pages to view the videos and presentations from the conference.</p>
+<img src="{@docRoot}design/media/extras_googleio_12.png">
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-7">
+    <h3 id="design-for-success"><a href="https://developers.google.com/events/io/sessions/gooio2012/112/">Android Design for Success</a></h3>
+    <p>You have a great idea for an Android app. You want it to stand out among hundreds of thousands. You want your users to love it and tell everyone they know. The Android User Experience team is here to help. We talk about the Android Design guide and other tricks of the trade for creating apps that delight users and help them accomplish their goals. No design background is required.</p>
+  </div>
+  <div class="layout-content-col span-6">
+    <iframe width="355" height="200" src="http://www.youtube.com/embed/2NL_83EG0no" frameborder="0" allowfullscreen=""></iframe>
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-7">
+    <h3 id="design-for-engineers"><a href="https://developers.google.com/events/io/sessions/gooio2012/1204/">Android Design for Engineers</a></h3>
+    <p>Design isn't black magic, it's a field that people can learn. In this talk two elite designers from Google give you an advanced crash course in interactive and visual design. Topics include mental models, natural mappings, metaphors, mode errors, visual hierarchies, typography and gestalt principles. Correctly applied, this knowledge can drastically improve the quality of your work.</p>
+  </div>
+  <div class="layout-content-col span-6">
+    <iframe width="355" height="200" src="http://www.youtube.com/embed/iJDoxOTyMdk" frameborder="0" allowfullscreen=""></iframe>
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-7">
+    <h3 id="navigation-in-android"><a href="https://developers.google.com/events/io/sessions/gooio2012/114/">Navigation in Android</a></h3>
+    <p>An app is useless if people can't find their way around it. Android introduced big navigation-support changes in 3.0 and 4.0. The Action Bar offers a convenient control for Up navigation, the Back key's behavior became more consistent within tasks, and the Recent Tasks UI got an overhaul. In this talk, we discuss how and why we got where we are today, how to think about navigation when designing your app's user experience, and how to write apps that offer effortless navigation in multiple Android versions.</p>
+  </div>
+  <div class="layout-content-col span-6">
+    <iframe width="355" height="200" src="http://www.youtube.com/embed/XwGHJJYBs0Q" frameborder="0" allowfullscreen=""></iframe>
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-7">
+    <h3 id="now-what"><a href="https://developers.google.com/events/io/sessions/gooio2012/115/">So You've Read the Design Guide&#59; Now What?</a></h3>
+    <p>The Android Design Guide describes how to design beautiful Android apps, but not how to build them. In this talk we give practical tips for how to apply fit &amp; finish as you implement your design, we show you how to avoid some common pitfalls, we describe some useful patterns, and show how tools can help.</p>
+  </div>
+  <div class="layout-content-col span-6">
+    <iframe width="355" height="200" src="http://www.youtube.com/embed/2jCVmfCse1E" frameborder="0" allowfullscreen=""></iframe>
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-7">
+    <h3 id="playing-with-patterns"><a href="https://developers.google.com/events/io/sessions/gooio2012/131/">Playing with Patterns</a></h3>
+    <p>Best-in-class application designers and developers talk about their experience in developing for Android, showing screenshots from their app, exploring the challenges they faced, and offering creative solutions congruent with the Android Design guide. Guests are invited to show examples of visual and interaction patterns in their application that manage to keep it simultaneously consistent and personal.</p>
+  </div>
+  <div class="layout-content-col span-6">
+    <iframe width="355" height="200" src="http://www.youtube.com/embed/8iUbr8RZKtg" frameborder="0" allowfullscreen=""></iframe>
+  </div>
+</div>
+
+<p>Videos for the entire Design Track can also be found on the <a href="http://www.youtube.com/playlist?list=PL54FA004D676C3EE9">Android Developers Channel</a> on YouTube.</p>
diff --git a/docs/html/develop/index.jd b/docs/html/develop/index.jd
index 6e541ee..14ab5d5 100644
--- a/docs/html/develop/index.jd
+++ b/docs/html/develop/index.jd
@@ -24,6 +24,7 @@
   </div>
 </div>
 
+
 <div class="wrap">
    <!-- Slideshow -->
    <div class="slideshow-container slideshow-develop col-16">
@@ -34,6 +35,24 @@
                <li class="item carousel-home">
                  <div class="col-8">
                    <img
+src="http://4.bp.blogspot.com/-g05If_eKKRQ/UAcrVLI-OYI/AAAAAAAAAr8/AWvunVb5S-w/s320/nexus7.png"
+class="play no-shadow no-transform" />
+                 </div>
+                <div class="content-right col-6">
+                  <p class="title-intro">From the blog:</p>
+                  <h2>Getting Your App Ready for Jelly Bean and Nexus 7</h2>
+                  <p>For many people, their first taste of Jelly Bean will be on the beautiful 
+                    Nexus 7. While most applications will run just fine on Nexus 7, who wants 
+                    their app to be just fine? Here are some tips for optimizing your application 
+                    to make the most of this device.</p>
+                  <p><a
+href="http://android-developers.blogspot.com/2012/07/getting-your-app-ready-for-jelly-bean.html" class="button">Read
+more</a></p>
+                </div>            
+              </li>
+               <li class="item carousel-home">
+                 <div class="col-8">
+                   <img
 src="http://1.bp.blogspot.com/-6qyjPxTuzv0/T6lde-Oq_fI/AAAAAAAABXc/zle7OFEGP44/s400/fddns%2Bcopy.png"
 class="play no-shadow no-transform" />
                  </div>
@@ -93,6 +112,12 @@
 			<div class="feed-frame">
                                 <!-- DEVELOPER NEWS -->
 				<ul>
+					<li><a href="http://android-developers.blogspot.com/2012/06/android-sdk-tools-revision-20.html">
+                                          <div class="feed-image" style="background:url('http://1.bp.blogspot.com/-Kp1qE5du6l8/T-xurIjfPgI/AAAAAAAABAM/kuWQwPgi0rw/s640/newactivity+(1).png') no-repeat 0 0">
+                                          </div>
+                                          <h4>Android SDK Tools, Revision 20</h4>
+                                          <p>Along with the preview of the Android 4.1 (Jelly Bean) platform, we launched Android SDK Tools R20 and ADT 20.0.0. Here are a few things...</p>
+					</a></li>
 					<li><a href="http://android-developers.blogspot.com/2012/04/faster-emulator-with-better-hardware.html">
                                           <div class="feed-image" style="background:url('../images/emulator-wvga800l.png') no-repeat 0 0">
                                           </div>
@@ -112,13 +137,7 @@
                                           <h4>Accessibility</h4>
                                           <p>We recently published some new resources to help developers make their Android applications more accessible... </p>
 					</a></li>
-					<li><a href="http://android-developers.blogspot.com/2012/04/new-seller-countries-in-google-play.html">
-                                          <div class="feed-image" style="background:url('http://developer.android.com/images/home/play_logo.png') no-repeat 0 0" >
-                                          </div>
-                                          <h4>New Seller Countries in Google Play</h4>
-                                          <p>Over the past year we’ve been working to expand the list of 
-                                            countries and currencies from which Android developers...</p>
-					</a></li>
+                                      
 				</ul>
                                 <!-- FEATURED DOCS -->
 				<ul>
@@ -161,7 +180,6 @@
 </div>
 
 <br class="clearfix"/>
-    </div>
 
       
       
@@ -294,7 +312,7 @@
  */
 var playlists = {
   'googleio' : {
-    'ids': ["734A052F802C96B9"]
+    'ids': ["4C6BCDE45E05F49E"]
   },
   'fridayreview' : {
     'ids': ["B7B9B23D864A55C3"]
diff --git a/docs/html/distribute/distribute_toc.cs b/docs/html/distribute/distribute_toc.cs
index bc028e5..ad3121c 100644
--- a/docs/html/distribute/distribute_toc.cs
+++ b/docs/html/distribute/distribute_toc.cs
@@ -28,9 +28,7 @@
        <li><a href="<?cs var:toroot ?>distribute/googleplay/publish/preparing.html">
            <span class="en">Publishing Checklist</span>
           </a></li>
-       <li><a href="<?cs var:toroot ?>distribute/googleplay/strategies/app-quality.html">
-          <span class="en">App Quality</span>
-         </a></li>
+
      </ul>
   </li>
   
@@ -72,11 +70,33 @@
         <span class="en">Linking to Your Products</a></li>
        <li><a href="<?cs var:toroot ?>distribute/googleplay/promote/badges.html">
         <span class="en">Google Play Badges</a></li>
+       <li><a href="<?cs var:toroot ?>distribute/promote/device-art.html">
+        <span class="en">Device Art Generator</a></li>
        <li><a href="<?cs var:toroot ?>distribute/googleplay/promote/brand.html">
-        <span class="en">Brand Assets and Guidelines</a></li>
+        <span class="en">Brand Guidelines</a></li>
      </ul>
    </li>
 
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="<?cs var:toroot ?>distribute/googleplay/quality/index.html">
+      <span class="en">App Quality</span></a>
+    </div>
+    <ul>
+       <li><a href="<?cs var:toroot ?>distribute/googleplay/quality/core.html">
+          <span class="en">Core App Quality</span>
+         </a></li>
+       <li><a href="<?cs var:toroot ?>distribute/googleplay/quality/tablet.html">
+          <span class="en">Tablet App Quality</span>
+         </a></li>
+       <li><a href="<?cs var:toroot ?>distribute/googleplay/strategies/app-quality.html">
+          <span class="en">Improving App Quality</span>
+         </a></li>
+
+    </ul>
+  </li> 
+
+
 <!--    
    <li class="nav-section">
     <div class="nav-section-header"><a href="<?cs var:toroot ?>distribute/googleplay/after.html">
@@ -90,17 +110,17 @@
   </li> 
 -->
 
-<!--  
   <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot ?>distribute/googleplay/strategies/index.html">
-      <span class="en">Strategies</span></a>
+    <div class="nav-section-header"><a href="<?cs var:toroot ?>distribute/googleplay/spotlight/index.html">
+      <span class="en">Spotlight</span></a>
     </div>
     <ul>
-          <li><a href="<?cs var:toroot ?>distribute/googleplay/strategies/featuring.html">Featuring</a></li>
-          <li><a href="<?cs var:toroot ?>distribute/googleplay/strategies/app-quality.html">App Quality</a></li>
+       <li><a href="<?cs var:toroot ?>distribute/googleplay/spotlight/tablets.html">
+          <span class="en">Tablet Stories</span>
+         </a></li>
     </ul>
   </li> 
--->
+
   <li class="nav-section">
     <div class="nav-section-header empty">
       <a href="<?cs var:toroot ?>distribute/open.html">
diff --git a/docs/html/distribute/googleplay/about/monetizing.jd b/docs/html/distribute/googleplay/about/monetizing.jd
index 2fa2da8..47d5266 100644
--- a/docs/html/distribute/googleplay/about/monetizing.jd
+++ b/docs/html/distribute/googleplay/about/monetizing.jd
@@ -42,7 +42,7 @@
 <h3 id="payment-methods">Convenient payment options</h3>
 
 <p>Users can purchase your products on Google Play using several convenient
-payment methods&mdash;credit cards, Direct Carrier Billing, and Google Play balance..</p>
+payment methods&mdash;credit cards, Direct Carrier Billing, gift cards, and Google Play balance.</p>
 
 <p><span style="font-weight:500">Credit card</span> is the most common method of payment. Users can pay using any credit card
 that they’ve registered in Google Play. To make it easy for users to get started,
@@ -52,8 +52,9 @@
 <div class="sidebox">
 <h2>Payment methods on Google Play</h2>
 <ul>
-<li>Credit Card</li>
+<li>Credit card</li>
 <li>Direct Carrier Billing</li>
+<li>Gift card</li>
 <li>Google Play balance (stored value)</li>
 </ul>
 </div>
@@ -75,7 +76,7 @@
 <p>The payment methods available to users worldwide may vary, based on
 location, carrier network, and other factors.</p>
 
-<div style="float:left;margin-right:2em;margin-top:1em;width:220px;">
+<div style="float:left;margin-right:2em;margin-top:3em;margin-bottom:1em;width:220px;">
 <img src="{@docRoot}images/gp-subs.png" style="width:220px">
 </div>
 
@@ -96,7 +97,7 @@
 <ul>
 <li>Free (no charge to download)</li>
 <li>Priced (user charged before download)</li>
-<li>In-App products and subscriptions</li>
+<li>In-app products and subscriptions</li>
 </ul>
 </div>
 </div>
@@ -110,6 +111,9 @@
 gameplay levels, and upgrades as in-app products. The only restriction is that
 free apps must remain free (to download) for the life of the app.</p>
 
+<p>For details about in-app products or subscriptions,
+see <a href="/guide/google/play/billing/index.html">Google Play In-app Billing</a>.</p>
+
 <h2 id="buyer-currency" style="margin-top:1.5em;">Flexible pricing in the currencies of your customers</h2>
 
 <div style="float:right;margin-left:18px;border:1px solid #DDD;">
diff --git a/docs/html/distribute/googleplay/about/visibility.jd b/docs/html/distribute/googleplay/about/visibility.jd
index 47fa56e..38fb395 100644
--- a/docs/html/distribute/googleplay/about/visibility.jd
+++ b/docs/html/distribute/googleplay/about/visibility.jd
@@ -16,7 +16,7 @@
 <p>Google Play is the premier store for distributing Android apps. It’s
 preinstalled on more than 400 million devices worldwide, a number growing by
 more than a million every day. Android users have downloaded
-more than <strong style="text-wrap:none;">15 billion apps</strong> from Google
+more than <strong style="text-wrap:none;">25 billion apps</strong> from Google
 Play, growing at a rate of more than 1.5 billion per month.</p>
 
 <p>When you publish on Google Play, you put your apps in front of Android's huge
diff --git a/docs/html/distribute/googleplay/promote/badges.jd b/docs/html/distribute/googleplay/promote/badges.jd
index de12e2a..90e8c0d 100644
--- a/docs/html/distribute/googleplay/promote/badges.jd
+++ b/docs/html/distribute/googleplay/promote/badges.jd
@@ -1,11 +1,20 @@
 page.title=Google Play Badges
 @jd:body
 
-<p>Google Play badges give you an officially branded way of promoting your app to Android users. Use the form below to quickly create badges to link users to your products from web pages, ads, reviews, and more. See <a href="linking.html">Linking to your products</a> for more ways to bring users to your apps.</p>
+<p>Google Play badges allow you to promote your app with official branding in your
+online ads, promotional materials, or anywhere else you want a link to your app.</p>
 
-<p>Input your app's package or your publisher name, choose the style, size, and language, and click "Build my badge". The form will generate code for an embbeded button that links to your app's product page or a list of your apps. </p>
+<p>In the form below,
+input your app's package name or publisher name, choose the badge style,
+click <em>Build my badge</em>, then paste the HTML into your web content.</p>
 
-<p>Note that you should not modify the Google Play badges after generating them, including colors, size, text, and logo. See <a href="http://www.android.com/branding.html">Android Brand Guidelines</a> for more information.</p>
+<p>If you're creating a promotional web page for your app, you should also use the
+<a href="{@docRoot}distribute/promote/device-art.html">Device Art Generator</a>, which quickly
+wraps your screenshots in real device artwork.</p>
+
+<p>For guidelines when using the Google Play badge and other brand assets,
+see the <a href="{@docRoot}distribute/googleplay/promote/brand.html">Brand
+Guidelines</a>.</p>
 
 <style type="text/css">
 
@@ -34,11 +43,13 @@
 }
 
 div.button-row input {
-  vertical-align:120%;
+  vertical-align:middle;
+  margin:0 5px 0 0;
 }
 
 #jd-content div.button-row img {
   margin: 0;
+  vertical-align:middle;
 }
 
 </style>
@@ -46,7 +57,7 @@
 <script type="text/javascript">
 
 // variables for creating 'try it out' demo button
-var imagePath = "http://www.android.com/images/brand/"
+var imagePath = "http://developer.android.com/images/brand/"
 var linkStart = "<a href=\"http://play.google.com/store/";
 var imageStart = "\">\n"
         + "  <img alt=\"";
@@ -77,6 +88,9 @@
     $("#button-preview").html(linkStart + "apps/details?id=" + form["package"].value
             + imageStart + altText + imageSrc
             + selectedValue + imageEnd);
+            
+    // Send the event to Analytics
+    _gaq.push(['_trackEvent', 'Distribute', 'Create Google Play Badge', 'Package ' + selectedValue]);
   } else if (form["publisher"].value != "Example, Inc.") {
     $("#preview").show();
     $("#snippet").show().html(linkStartCode + "search?q=pub:" + form["publisher"].value
@@ -85,6 +99,9 @@
     $("#button-preview").html(linkStart + "search?q=pub:" + form["publisher"].value
             + imageStart + altText + imageSrc
             + selectedValue + imageEnd);
+   
+    // Send the event to Analytics
+    _gaq.push(['_trackEvent', 'Distribute', 'Create Google Play Badge', 'Publisher ' + selectedValue]);
   } else {
     alert("Please enter your package name or publisher name");
   }
@@ -167,28 +184,29 @@
             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"
+  <input type="radio" name="buttonStyle" value="en_app_rgb_wo_45" id="ws" checked="checked" />
+    <label for="ws"><img src="{@docRoot}images/brand/en_app_rgb_wo_45.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"
+  <input type="radio" name="buttonStyle" value="en_app_rgb_wo_60" id="wm" />
+    <label for="wm"><img src="{@docRoot}images/brand/en_app_rgb_wo_60.png"
 alt="Android app on Google Play (large)" /></label>
 </div>
 
-  <input type="button" onclick="return buildButton(this.parentNode)" value="Build my badge"
-style="padding:5px" />
+<div class="button-row">
+  <input type="radio" name="buttonStyle" value="en_generic_rgb_wo_45" id="ns" />
+    <label for="ns"><img src="{@docRoot}images/brand/en_generic_rgb_wo_45.png"
+alt="Get it on Google Play (small)" /></label>
+    &nbsp;&nbsp;&nbsp;&nbsp;
+  <input type="radio" name="buttonStyle" value="en_generic_rgb_wo_60" id="nm" />
+    <label for="nm"><img src="{@docRoot}images/brand/en_generic_rgb_wo_60.png"
+alt="Get it on Google Play (large)" /></label>
+</div>
+
+  <input onclick="return buildButton(this.parentNode);"
+    type="button" value="Build my badge" style="padding:10px" />
   <br/>
 </form>
 
diff --git a/docs/html/distribute/googleplay/promote/brand.jd b/docs/html/distribute/googleplay/promote/brand.jd
index 8d04903..cb6bf48 100644
--- a/docs/html/distribute/googleplay/promote/brand.jd
+++ b/docs/html/distribute/googleplay/promote/brand.jd
@@ -1,174 +1,173 @@
-page.title=Brand Assets, Icons, and Guidelines
+page.title=Brand Guidelines
 @jd:body
 
-<p>We encourage you to use the Android and Google Play brands in your
-promotional materials. You can use the icons and other assets on this page in
-any way you want, provided that you follow the guidelines described below.</p>
 
-<h2 id="brand-android">Android Brand</h2>
 
-<div>
-  <div style="float:right;width:50%;padding:1.5em;">
-    <img alt="" src="{@docRoot}images/brand/droid.gif">
+<p>We encourage you to use the Android and Google Play brands with your Android app
+promotional materials. You can use the icons and other assets on this page
+provided that you follow the guidelines described below.</p>
+
+<h2 id="brand-android">Android</h2>
+
+ <p>The following are guidelines for the Android brand
+ and related assets.</p>
+ 
+
+  <h4 style="clear:right">Android in text</h4>
+    
+  <div style="float:right;clear:right;width:200px;margin:0 0 20px 30px">
+    <img alt="" src="{@docRoot}images/brand/mediaplayer.png">
+  </div>
+    <ul>
+    <li>Android&trade; should have a trademark symbol the first time it appears in a creative.</li>
+    <li>Android should always be capitalized and is never plural or possessive.</li>
+    <li>"Android" by itself cannot be used in the name of an application name or accessory product.
+Instead use "for Android."
+      <ul>
+        <li><span style="color:red">Incorrect</span>: "Android MediaPlayer"</li>
+        <li><span style="color:green">Correct</span>: "MediaPlayer for Android"</li>
+      </ul>
+      <p>If used with your logo, "for Android" needs to be smaller in size than your logo.
+      First instance of this use should be followed by a TM symbol, "for Android&trade;".</p>
+    </li>
+    <li>Android may be used as a descriptor, as long as it is followed by a proper generic term.
+      <ul>
+        <li><span style="color:red">Incorrect</span>: "Android MediaPlayer" or "Android XYZ app"</li>
+        <li><span style="color:green">Correct</span>: "Android features" or "Android applications"</li>
+      </ul>
+    </li>
+    </ul>
+  
+    <p>Any use of the Android name needs to include this
+    attribution in your communication:</p>
+    <blockquote><em>Android is a trademark of Google Inc.</em></blockquote></p>
+
+
+ <h4>Android robot</h4>
+
+  <div style="float:right;width:200px;margin-left:30px">
+    <img alt="" src="{@docRoot}images/brand/Android_Robot_100.png"
+      style="margin-left:50px">
+    <p style="text-align:center">
+       <a href="{@docRoot}images/brand/Android_Robot_100.png">100x118</a> |
+       <a href="{@docRoot}images/brand/Android_Robot_200.png">200x237</a><br>
+       <a href="{@docRoot}images/brand/Android_Robot_outlined.ai">Illustrator (.ai)</a></p>
   </div>
 
-  <div style="width:45%;">
-    <h4>01/ Android Robot</h4>
-
-    <p> Can be used, reproduced, and modified freely in marketing
-    communications. Our standard color value for print is PMS 376C. Our online hex
-    color is <span id= "android-green">#A4C639</span>.</p>
+    <p>The Android robot can be used, reproduced, and modified freely in marketing
+    communications. The color value for print is PMS 376C and the online hex
+    color is <span style="color:#A4C639">#A4C639</span>.</p>
 
     <p>When using the Android Robot or any modification of it, proper attribution is
-    required under the terms of the Creative Commons Attribution license. For more
-    details on proper attribution, please see the <a
-    href="{@docRoot}license.html#attribution">Content License</a> document. </p>
+    required under the terms of the <a href="http://creativecommons.org/licenses/by/3.0/">Creative
+Commons Attribution</a> license:</p>
+   
+    <blockquote><em>The Android robot is reproduced or modified from work created and shared by Google and
+used according to terms described in the Creative Commons 3.0 Attribution License.</em></blockquote>
+    
+    <p>You may not file trademark applications incorporating the Android robot logo or
+derivatives thereof. We want to ensure that the Android robot remains available
+for all to use.</p>
+
+
+<h4 style="clear:right">Android logo</h4>
+
+<div style="float:right;width:210px;margin-left:30px;margin-top:-10px">
+  <img alt="" src="{@docRoot}images/brand/android_logo_no.png">
+</div>
+
+<p>The Android logo may not be used. Nor can this be used with the Android robot.</p>
+<p>The custom typeface may not be used.</p>
+
+
+
+
+<h2 id="brand-google_play">Google Play</h2>
+
+
+ <p>The following are guidelines for the Google Play brand
+ and related assets.</p>
+
+<h4>Google Play in text</h4>
+
+<p>Always include a TM symbol on the first or most prominent instance of Google Play&trade;
+in text.</p>
+
+<p>When referring to the mobile experience, use "Google Play" unless the text is clearly
+instructional for the user. For example, a marketing headline might read "Download our
+games on Google Play&trade;," but instructional text would read "Download our games using the Google
+Play&trade; Store app."
+
+ <p>Any use of the Google Play name or icon needs to include this
+    attribution in your communication:</p>
+
+<blockquote><em>Google Play is a trademark of Google Inc.</em></blockquote>
+
+
+  <div style="float:right;width:96px;margin-left:30px;margin-top:-20px">
+     <img src="{@docRoot}images/brand/Google_Play_Store_96.png" alt="">
+    <p style="text-align:center">
+       <a href="{@docRoot}images/brand/Google_Play_Store_48.png">48x48</a> |
+       <a href="{@docRoot}images/brand/Google_Play_Store_96.png">96x96</a><br>
+       <a href="{@docRoot}images/brand/Google_Play_Store.ai">Illustrator (.ai)</a>
+       </p>
   </div>
-<div>
+  
+<h4>Google Play Store icon</h4>
 
-<div style="clear:both">
-  <div style="float:right;width:50%;padding:1.5em;">
-    <img alt="" src="{@docRoot}images/brand/logo_android.gif">
-  </div>
+<p>You may use the Google Play Store icon, but you may not modify it.</p>
 
-  <div style="width:45%;">
-    <h4>02/ Android Logo</h4>
+<p>As mentioned above, when referring to the Google Play Store app in copy, use the full name:
+"Google Play Store." However, when labelling the Google Play Store icon directly, it's OK to use
+"Play Store" without "Google" (which is how the icon is labelled on a device).</p>
 
-    <p>The Android logo may not be used.</p>
-  </div>
-<div>
-
-<div style="clear:both">
-  <div style="float:right;width:50%;padding:1.5em;">
-    <img alt="" src="{@docRoot}images/brand/norad.gif">
-  </div>
-
-  <div style="width:45%;">
-    <h4>03/ Android Custom Typeface</h4>
-
-    <p>The custom typeface may not be used.</p>
-  </div>
-<div>
-
-<div style="clear:both">
-  <div style="float:right;width:50%;padding:1.5em;">
-    <img alt="" src="{@docRoot}images/brand/mediaplayer.gif">
-  </div>
-
-  <div style="width:45%;">
-    <h4>04/ Android in Official Names</h4>
-<p>Any name with 'Android' alone may not be used in a name without permission. Any name
-            with 'Droid' alone may not be used in a name.</p>
-            
-          <p>The word 'Android' may be used only as a descriptor, 'for Android'. If used with your
-            logo, 'for Android' needs to be smaller in size than your logo. First instance of this
-            use should be followed by a TM symbol, 'for Android™'.</p>
-            
-          <p>If you are not sure you meet these criteria, <a href=
-            "http://services.google.com/permissions/application">please contact us</a>. </p>
-  </div>
-<div>
-
-<div style="clear:both">
-  <div style="float:right;width:50%;padding:1.5em;">
-    <img alt="" src="{@docRoot}images/brand/learnmore.gif">
-  </div>
-
-  <div style="width:45%;">
-    <h4>05/ Android in Messaging</h4>
-          <p>
-            May be used in text as a descriptor, as long as it is followed by a proper generic term
-            (e.g. "Android™ application"). First instance of this use should be followed by a TM
-            symbol.
-          </p>       
-  </div>
-<div>
-          <p class="caution"><strong>Note: Any usage of #04 or #05 needs to include footer attribution in your
-          communication:</strong><br /><span style="margin-left:1.5em">
-          "Android is a trademark of Google Inc."</span>
-        </p>
-
-<h2 id="brand-google_play">Google Play Brand</h2>
-
-<div style="clear:both">
-  <div style="float:right;width:50%;padding:1.5em;">
-    <p>
-      <img alt="Google Play logo" src="http://www.android.com/images/brand/google_play_logo_450.png">
-    </p>
-    <p>
-    <img alt="Get it on Google Play badge, large" src=
-            "http://www.android.com/images/brand/get_it_on_play_logo_large.png"><br>
-            Download: <a href="http://www.android.com/images/brand/get_it_on_play_logo_small.png">Small</a> | <a href=
-            "http://www.android.com/images/brand/get_it_on_play_logo_large.png">Large</a>
-          </p>
-          <p>
-            <img alt="Android App on Google Play badge, large" src=
-            "http://www.android.com/images/brand/android_app_on_play_logo_large.png"><br>
-            Download: <a href="http://www.android.com/images/brand/android_app_on_play_logo_small.png">Small</a> |
-            <a href="http://www.android.com/images/brand/android_app_on_play_large.png">Large</a>
-          </p>
-  </div> 
         
-  <div style="width:45%;">
-    <h4>06/ <em>Get it on Google Play</em> Badge
-          </h4>
-          <p>
-            The "Get it on Google Play" and "Android App on Google Play" logos are badges that you
-            can use on your web site and promotional materials, to point to your products on Google
-            Play.
-          </p>
-          <p>
-            The logos are available in two sizes:
-          </p>
-          <ul>
-            <li>Large: 60(h) x 172(w)</li>
-            </li>
-            <li>Small 45(h) x 129(w)
-            </li>
-          </ul>
-          <p>
-            Guidelines for usage:
-          </p>
-          <ul>
-            <li>Never separate the phrase “Get it on Google Play” or "Android App on Google Play"
-            from the Google Play logo, and do not change the color, proportions, spacing or any
-            other aspect of the logo.
-            </li>
-     </ul>
-     </div>
-     
-     <ul>
-            <li>When used online, the badge logo should be used to direct users to:
-              <ul>
-                <li>The Google Play landing page: <br />
-                  <span style="margin-left:1em;">http://play.google.com</span>
-                </li>
-                <li>The Google Play Apps landing page: <br />
-                 <span style="margin-left:1em;">http://play.google.com/store/apps</span>
-                </li>
-                <li>A list of products that include your company name, for example, <br />
-                <span style="margin-left:1em;">http://play.google.com/store/search?q=<em>yourCompanyName</em></span>
-                </li>
-                <li>A list of products published by you, for example,<br />
-                <span style="margin-left:1em;">http://play.google.com/store/search?q=<em>publisherName</em>M/span>
-                </li>
-                <li>A specific app product details page within Google Play, for example,<br />
-                <span style="margin-left:1em;">http://play.google.com/store/apps/details?id=<em>packageName</em></span>
-                </li>
-              </ul>
-            </li>
-            <li>When used alongside logos for other application marketplaces, the Google Play logo
-            should be of equal or greater size</li>
+<h4>Google Play badge</h4>
+      
+  <div style="float:right;clear:right;width:172px;margin-left:30px">
+    <img src="{@docRoot}images/brand/en_app_rgb_wo_60.png" alt="">
+    <p style="text-align:center">
+       <a href="{@docRoot}images/brand/en_app_rgb_wo_45.png">129x45</a> |
+       <a href="{@docRoot}images/brand/en_app_rgb_wo_60.png">172x60</a><br>
+       <a href="{@docRoot}images/brand/en_app_rgb_wo.ai">Illustrator (.ai)</a></p>
+  </div>
+      
+  <div style="float:right;clear:right;width:172px;margin-left:30px">
+    <img src="{@docRoot}images/brand/en_generic_rgb_wo_60.png" alt="">
+    <p style="text-align:center">
+       <a href="{@docRoot}images/brand/en_generic_rgb_wo_45.png">129x45</a> |
+       <a href="{@docRoot}images/brand/en_generic_rgb_wo_60.png">172x60</a><br>
+       <a href="{@docRoot}images/brand/en_generic_rgb_wo.ai">Illustrator (.ai)</a></p>
+  </div>
+         
+  <p>The "Get it on Google Play" and "Android App on Google Play" logos are badges that you
+    can use on your web site and promotional materials, to point to your products on Google
+    Play.</p>
+
+  <ul>
+    <li>Do not modify the color, proportions, spacing or any other aspect of the badge image.
+    </li>
+    <li>When used alongside logos for other application marketplaces, the Google Play logo
+    should be of equal or greater size.</li>
+    <li>When used online, the badge should link to either:
+      <ul>
+        <li>A list of products published by you, for example:<br />
+        <span style="margin-left:1em;">http://play.google.com/store/search?q=<em>publisherName</em></span>
+        </li>
+        <li>A specific app product details page within Google Play, for example:<br />
+        <span style="margin-left:1em;">http://play.google.com/store/apps/details?id=<em>packageName</em></span>
+        </li>
+      </ul>
+    </li>
   </ul>
-            
-            <p>For details on all the ways that you can link to your product details page in Google Play, 
-            see <a href="{@docRoot}distribute/googleplay/promote/linking.html">Linking to your products</a></p>
 
-          <p>For convenience, if you are using the logos online, you can use the 
-            <a href="{@docRoot}distribute/googleplay/promote/badges.html">badge generator</a>
-            to create the appropriate markup and link to your apps.</p>
+  <p>For your convenience, you can use the 
+    <a href="{@docRoot}distribute/googleplay/promote/badges.html">Googe Play badge generator</a>
+    to create badges that link to your apps on Google Play.</p>
+    
+  <p>For details on all the ways that you can link to your product details page in Google Play, 
+    see <a href="{@docRoot}distribute/googleplay/promote/linking.html">Linking to your products</a></p>
 
-<h2>Other Brands</h2>
 
-<p>Any other brands or icons depicted on this site are <em>not</em> are the property of their
-repective owners and usage is reserved. You must seek the developer for appropriate permission to use them.</p>
+<p>If you are not sure you meet these criteria, <a href=
+            "http://services.google.com/permissions/application">please contact us</a>. </p>
diff --git a/docs/html/distribute/googleplay/promote/linking.jd b/docs/html/distribute/googleplay/promote/linking.jd
index 4a1b198..2d3bd05 100644
--- a/docs/html/distribute/googleplay/promote/linking.jd
+++ b/docs/html/distribute/googleplay/promote/linking.jd
@@ -5,7 +5,7 @@
 <div class="sidebox">
 <a href="badges.html">
   <img alt="Get it on Google Play"
-       src="http://www.android.com/images/brand/get_it_on_play_logo_small.png" />
+       src="{@docRoot}en_app_rgb_wo_45.png" />
 </a>
 <p>For a link that includes the Google Play brand icon, check out the <a href="badges.html">Badges</a> page. </p>
 </div>
diff --git a/docs/html/distribute/googleplay/publish/preparing.jd b/docs/html/distribute/googleplay/publish/preparing.jd
index ab8fadf..463343d 100644
--- a/docs/html/distribute/googleplay/publish/preparing.jd
+++ b/docs/html/distribute/googleplay/publish/preparing.jd
@@ -6,20 +6,21 @@
 <ol>
 <li><a href="#process">1. Understand the publishing process</a></li>
 <li><a href="#policies">2. Understand Google Play policies</a></li>
-<li><a href="#rating">3. Determine your content rating</a></li>
-<li><a href="#countries">4. Determine country distribution</a></li>
-<li><a href="#size">5. Confirm the app's overall size</a></li>
-<li><a href="#compatibility">6. Confirm app compatibility ranges</a></li>
-<li><a href="#free-priced">7. Decide on free or priced</a></li>
-<li><a href="#inapp-billing">8. Consider In-app Billing</a></li>
-<li><a href="#pricing">9. Set prices for your apps</a></li>
-<li><a href="#localize">10. Start localization</a></li>
-<li><a href="#localize">11. Prepare promotional graphics</a></li>
-<li><a href="#apk">12. Build the release-ready APK</a></li>
-<li><a href="#product-page">13. Complete the product details</a></li>
-<li><a href="#badges">14. Use Google Play badges and links to your promotional campaigns</a></li>
-<li><a href="#final-checks">15. Final checks and publishing</a></li>
-<li><a href="#support">16. Support users after launch</a></li>
+<li><a href="#core-app-quality">3. Test for Core App Quality</a></li>
+<li><a href="#rating">4. Determine your content rating</a></li>
+<li><a href="#countries">5. Determine country distribution</a></li>
+<li><a href="#size">6. Confirm the app's overall size</a></li>
+<li><a href="#compatibility">7. Confirm app compatibility ranges</a></li>
+<li><a href="#free-priced">8. Decide on free or priced</a></li>
+<li><a href="#inapp-billing">9. Consider In-app Billing</a></li>
+<li><a href="#pricing">10. Set prices for your apps</a></li>
+<li><a href="#localize">11. Start localization early</a></li>
+<li><a href="#localize">12. Prepare promotional graphics</a></li>
+<li><a href="#apk">13. Build the release-ready APK</a></li>
+<li><a href="#product-page">14. Complete the product details</a></li>
+<li><a href="#badges">15. Use Google Play badges</a></li>
+<li><a href="#final-checks">16. Final checks and publishing</a></li>
+<li><a href="#support">17. Support users after launch</a></li>
 </ol>
 </div></div>
 
@@ -86,7 +87,39 @@
 </tr>
 </table>
 
-<h2 id="rating">3. Determine your app's content rating</h2>
+<h2 id="core-app-quality">3. Test for Core App Quality</h2>
+
+<p>Before you publish an app on Google Play, it's important to make sure that
+it meets the basic quality expectations for all Android apps, on all of the devices that you
+are targeting. You can check your app's quality by setting up a test
+environment and testing the app against a short set of <strong>core app quality criteria</strong>.
+For complete information, see the <a
+href="{@docRoot}distribute/googleplay/quality/core.html">Core App Quality Guidelines</a>. 
+</p>
+
+<p>If your app is targeting tablet devices, make sure that it delivers a rich, compelling
+experience to your tablet customers. See the <a
+href="{@docRoot}distribute/googleplay/quality/tablet.html">Tablet App Quality Checklist</a>
+for recommendations on ways to optimize your app for tablets.</p>
+
+<table>
+<tr>
+<td><p>Related resources:</p>
+<ul style="margin-top:-.5em;">
+<li><strong><a
+href="{@docRoot}distribute/googleplay/quality/core.html">Core App Quality
+Guidelines</a></strong> &mdash; A set of core quality criteria that all Android
+apps should meet on all targeted devices.</li>
+<li><strong><a
+href="{@docRoot}distribute/googleplay/quality/tablet.html">Tablet App Quality
+Checklist</a></strong> &mdash; A set recommendations for delivering the best
+possible experience to tablet users.</li>
+</ul>
+</td>
+</tr>
+</table>
+
+<h2 id="rating">4. Determine your app's content rating</h2>
 
 <p>Google Play requires you to set a content rating for your app, which informs
 Google Play users of its maturity level. Before you publish, you should confirm
@@ -115,7 +148,7 @@
 </tr>
 </table>
 
-<h2 id="countries">4. Determine country distribution</h2>
+<h2 id="countries">5. Determine country distribution</h2>
 
 <p>Google Play lets you control what countries and territories your app is
 distributed to. For widest reach and the largest potential customer base, you
@@ -149,7 +182,7 @@
 </tr>
 </table>
 
-<h2 id="size">5. Confirm the app's overall size</h2>
+<h2 id="size">6. Confirm the app's overall size</h2>
 
 <p>The overall size of your app can affect its design and how you publish it on
 Google Play. Currently, the maximum size for an APK published on Google Play is
@@ -180,7 +213,7 @@
 </tr>
 </table>
 
-<h2 id="compatibility">6. Confirm the app's platform and screen compatibility ranges</h2>
+<h2 id="compatibility">7. Confirm the app's platform and screen compatibility ranges</h2>
 
 <p>Before publishing, it's important to make sure that your app is designed to
 run properly on the Android platform versions and device screen sizes that you
@@ -217,7 +250,7 @@
 </tr>
 </table>
 
-<h2 id="free-priced">7. Decide whether your app will be free or priced</h2>
+<h2 id="free-priced">8. Decide whether your app will be free or priced</h2>
 
 <p>On Google Play, you can publish apps as free to download or priced. Free apps
 can be downloaded by any Android user in Google Play.
@@ -249,7 +282,7 @@
 </tr>
 </table>
 
-<h2 id="inapp-billing">8. Consider using In-app Billing</h2>
+<h2 id="inapp-billing">9. Consider using In-app Billing</h2>
 
 <p>Google Play <a href="{@docRoot}guide/google/play/billing/index.html">In-app
 Billing</a> lets you sell digital content in your applications. You can use the
@@ -275,7 +308,7 @@
 </tr>
 </table>
 
-<h2 id="pricing">9. Set prices for your products</h2>
+<h2 id="pricing">10. Set prices for your products</h2>
 
 <p>If your app is priced or you will sell in-app products, Google Play lets you
 set prices for your products in a variety of currencies, for users in markets
@@ -308,7 +341,7 @@
 </tr>
 </table>
 
-<h2 id="localize">10. Start localization</h2>
+<h2 id="localize">11. Start localization</h2>
 
 <p>With your country targeting in mind, it's a good idea to assess your localization
 needs and start the work of localizing well in advance of your target
@@ -344,7 +377,7 @@
 </tr>
 </table>
 
-<h2 id="graphics">11. Prepare promotional graphics</h2>
+<h2 id="graphics">12. Prepare promotional graphics</h2>
 
 <p>When you publish on Google Play, you can supply a variety of high-quality
 graphic assets to showcase your app or brand. After you publish, these appear on
@@ -375,7 +408,7 @@
 </tr>
 </table>
 
-<h2 id="apk">12. Build and upload the release-ready APK</h2>
+<h2 id="apk">13. Build and upload the release-ready APK</h2>
 
 <p>When you are satisfied that your app meets your UI, compatibility, and
 quality requirements, you can build the release-ready version of the app. The
@@ -407,7 +440,7 @@
 </tr>
 </table>
 
-<h2 id="product-page">13. Complete the app's product details</h2>
+<h2 id="product-page">14. Complete the app's product details</h2>
 
 <p>On Google Play, your app's product information is shown to users on its
 product details page, the page that users visit to learn more about your app and
@@ -431,11 +464,14 @@
 page, make sure that you can enter or upload it to the Developer Console, until 
 the page is complete and ready for publishing. </p>
 
+<p>If your app is targeting tablet devices, make sure to include at least one screen
+shot of the app running on a tablet, and highlight your app's support for tablets
+in the app description, release notes, promotional campaigns, and elsewhere.</p>
+
 <table>
 <tr>
 <td><p>Related resources:</p>
 <ul style="margin-top:-.5em;">
-<li><strong><a href="{@docRoot}distribute/googleplay/promote/product-pages.html">Your Product Page</a></strong> &mdash; Tips and details on creating your product details page.</li>
 <li><strong><a href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=113475&topic=2365760&ctx=topic">Category types
 </a></strong> &mdash; Help Center document listing available categories for apps.</li>
 <li><strong><a href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=1078870&topic=2365760&ctx=topic">Graphic Assets for your Application
@@ -445,7 +481,7 @@
 </tr>
 </table>
 
-<h2 id="badges">14. Use Google Play badges and links in your promotional
+<h2 id="badges">15. Use Google Play badges and links in your promotional
 campaigns</h2>
 
 <p>Google Play badges give you an officially branded way of promoting your app
@@ -474,7 +510,7 @@
 </tr>
 </table>
 
-<h2 id="final-checks">15. Final checks and publishing</h2> 
+<h2 id="final-checks">16. Final checks and publishing</h2> 
 
 <p>When you think you are ready to publish, sign in to the Developer Console and take a few moments for a few
 final checks:</p>
@@ -512,7 +548,7 @@
 </table>
 
 
-<h2 id="support">16. Support users after launch</h2>
+<h2 id="support">17. Support users after launch</h2>
 
 <p>After you publish an app or an app update, it's crucial for you to support
 your customers. Prompt and courteous support can provide a better experience for
diff --git a/docs/html/distribute/googleplay/quality/core.jd b/docs/html/distribute/googleplay/quality/core.jd
new file mode 100644
index 0000000..291550f
--- /dev/null
+++ b/docs/html/distribute/googleplay/quality/core.jd
@@ -0,0 +1,803 @@
+page.title=Core App Quality Guidelines
+@jd:body
+
+<div id="qv-wrapper"><div id="qv">
+<h2>Quality Criteria</h2>
+  <ol>
+    <li><a href="#ux">Design and Interaction</a></li>
+        <li><a href="#fn">Functionality</a></li>
+        <li><a href="#ps">Performance and Stability</a></li>
+        <li><a href="#listing">Google Play</a></li>
+
+  </ol>
+  
+  <h2>Testing</h2>
+  <ol>
+    <li><a href="#test-environment">Setting Up a Test Environment</a></li>
+        <li><a href="#tests">Test Procedures</a></li>
+        </ol>
+
+  <h2>You Should Also Read</h2>
+  <ol>
+    <li><a href="{@docRoot}distribute/googleplay/quality/tablet.html">Tablet App Quality Checklist</a></li>
+        <li><a href="{@docRoot}distribute/googleplay/strategies/app-quality.html">Improving App Quality</a></li>
+  </ol>
+  
+
+</div>
+</div>
+
+<p>App quality directly influences the long-term success of your app&mdash;in
+terms of installs, user rating and reviews, engagement, and user retention.
+Android users expect high-quality apps, even more so if they've spent money on
+them.</p>
+
+<p>This document helps you assess basic aspects of quality in your app through a
+compact set of <em>core app quality criteria</em> and associated tests. All
+Android apps should meet these criteria.</p>
+
+<p>Before publishing your app, make sure to test it against these criteria to
+ensure that it functions well on many devices, meets Android standards for
+navigation and design, and is prepared for promotional opportunities in the
+Google Play Store. Your testing will go well beyond what's described here&mdash;the
+purpose of this document is to specify the essential characteristics
+of basic quality so that you can include them in your test plans.</p>
+
+<p>If your app is targeting tablet devices, make sure that it delivers a rich,
+compelling experience to your tablet customers. See the <a
+href="{@docRoot}distribute/googleplay/quality/tablet.html">Tablet App Quality
+Checklist</a> for recommendations on ways to optimize your app for tablets.</p>
+
+
+<h2 id="ux">Visual Design and User Interaction</h2>
+
+<p>These criteria ensure that your app provides standard Android visual design
+and interaction patterns where appropriate, for a consistent and intuitive
+user experience.</p>
+
+<table>
+	<tr>
+		<th style="width:2px;">
+			Area
+		</th>
+		<th style="width:54px;">
+			ID
+		</th>
+		
+
+		<th>
+			Description
+		</th>
+		<th style="width:54px;">
+			Tests
+		</th>
+	</tr>
+	<tr id="UX-B1">
+	<td>Standard design</td>
+		<td>
+		UX-B1	
+		</td>
+		<td>
+			<p style="margin-bottom:.5em;">App follows <a href="{@docRoot}design/index.html">Android Design</a> guidelines and uses common <a href="{@docRoot}design/patterns/index.html">UI patterns and icons</a>:</p>
+			<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
+			<li>App does not redefine the expected function of a system icon (such as the Back button).</li>
+			<li>App does not replace a system icon with a completely different icon if it triggers the standard UI behavior. </li>
+			<li>If the app provides a customized version of a standard system icon, the icon strongly resembles the system icon and triggers the standard system behavior.</li>
+			<li>App does not redefine or misuse Android UI patterns, such that icons or behaviors could be misleading or confusing to users.</li>
+			</ol>
+		</td>
+		<td><a href="#core">CR-all</a></td>
+	</tr>
+
+
+	<tr>
+		<td rowspan="3">Navigation</td>
+		<td id="UX-N1">
+			UX-N1
+		</td>
+
+		<td>
+			<p>App supports standard system <a href="{@docRoot}design/patterns/navigation.html">Back button navigation</a> and does not make use of any custom, on-screen "Back button" prompts.</p>
+		</td>
+		<td><a href="#core">CR-3</a></td>
+	</tr>
+	<tr>
+		<td id="UX-N2">
+			UX-N2 
+		</td>
+		<td>
+			<p>All dialogs are dismissable using the Back button.</p>
+		</td>
+		<td><a href="#core">CR-3</a></td>
+	</tr>
+
+	<tr  id="UX-N3">
+		<td>
+			UX-N3
+		</td>
+		<td>
+			Pressing the Home button at any point navigates to the Home screen of the device. 
+		</td>
+		<td><a href="#core">CR-1</a></td>
+	</tr>
+	<tr  id="UX-S1">
+			<td rowspan="2">Notifications</td>
+		<td>
+			UX-S1
+		</td>
+		<td>
+			<p style="margin-bottom:.5em;">Notifications follow Android Design <a href="{@docRoot}design/patterns/notifications.html">guidelines</a>. In particular:</p>
+			<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
+			<li>Multiple notifications are stacked into a single notification object, where possible.</li>
+			<li>Notifications are persistent only if related to ongoing events (such as music playback or a phone call).</li>
+			<li>Notifications do not contain advertising or content unrelated to the core function of the app, unless the user has opted in.</li>
+			</ol>
+
+		</td>
+		<td><a href="#core">CR-11</a></td>
+	</tr>
+	<tr id="UX-S2">
+
+		<td>
+			UX-S2
+		</td>
+
+		<td>
+		
+			<p style="margin-bottom:.5em;">App uses notifications only to:</p>
+			<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
+			<li>Indicate a change in context relating to the user personally (such as an incoming message), or</li>
+			<li>Expose information/controls relating to an ongoing event (such as music playback or a phone call).</li>
+			</ol>
+		</td>
+		<td><a href="#core">CR-11</a></td>
+	</tr>
+
+	</table>
+
+<table>
+<tr>
+<td><p>Related resources:</p>
+<ul style="margin-top:-.5em;">
+<li><strong><a href="{@docRoot}design/index.html">Android Design</a></strong> &mdash; Overview of design and user experience best practices for Android apps. </li>
+<li><strong><a href="{@docRoot}design/patterns/navigation.html">Navigation with Back and Up</a></strong> &mdash; Android Design document describing standard navigation patterns. </li>
+<li><strong><a href="{@docRoot}design/patterns/actionbar.html">Action Bar</a></strong> &mdash; Android Design document describing how to use the Action Bar. </li>
+<li><strong><a href="{@docRoot}design/style/iconography.html">Iconography</a></strong> &mdash;  Android Design describing how to use various types of icons.</li>
+<li><strong><a href="{@docRoot}design/patterns/notifications.html">Notifications</a></strong> &mdash;  Android Design document describing how to design and use notifications. </li>
+</ul>
+</td>
+</tr>
+</table>
+
+<h2 id="fn">Functionality</h2>
+
+<p>These criteria ensure that your app provides expected functional behavior with the appropriate level of permissions. </p>
+
+<table>
+	<tr>
+		<th style="width:2px;">
+			Area
+		</th>
+		<th style="width:54px;">
+			ID
+		</th>
+		
+
+		<th>
+			Description
+		</th>
+		<th style="width:54px;">
+			Tests
+		</th>
+	</tr>
+
+	<tr id="FN-P1">
+	<td rowspan="2">Permissions</td>
+		<td>
+		FN-P1
+		</td>                                                                                                                                                                      
+		<td>App requests only the <em>absolute minimum</em> permissions that it needs to support core functionality.
+		</td>
+		<td rowspan="2"><a href="#core">CR-11</a></td>
+	</tr>
+	<tr id="FN-P2">
+		<td>
+			FN-P2
+		</td>                                                                                                                                                                      
+		<td><p style="margin-bottom:.5em;">App does not request permissions to access sensitive data (such as Contacts or the System Log) or services that can cost the user money (such as the Dialer or SMS), unless related to a core capability of the app.
+		</td>
+	</tr>
+	<tr id="FN-L1">
+		<td>Install location</td>
+		<td>
+			FN-L1
+		</td>
+		<td>
+			<p style="margin-bottom:.5em;">App functions normally when installed on SD card (if supported by app).</p>
+			
+			<p style="margin-bottom:.25em;">Supporting installation to SD card is recommended for most large apps (10MB+). See the <a href="{@docRoot}guide/topics/data/install-location.html">App Install Location</a> developer guide for information about which types of apps should support installation to SD card.</p>
+			</td>
+			
+			<td><a href="#SD-1">SD-1</a>
+			</td>
+	</tr>
+	<tr id="FN-A1">
+	<td rowspan="4">Audio</td>
+		<td>
+			FN-A1
+		</td>
+
+		<td>
+			Audio does not play when the screen is off, unless this is a core feature (for example, the app is a music player).
+		</td>
+		<td><a href="#core">CR-7</a></td>
+	</tr>
+	<tr id="FN-A2">
+		<td>
+			FN-A2
+		</td>
+		<td>
+			Audio does not <a href="http://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html">play behind the lock screen</a>, unless this is a core feature.
+		</td>
+		<td><a href="#core">CR-8</a></td>
+	</tr>
+	<tr id="FN-A3">
+		<td>
+			FN-A3
+		</td>
+		<td>
+			Audio does not play on the home screen or over another app, unless this is a core feature.
+		</td>
+		<td><a href="#core">CR-1, <br />CR-2</a></td>
+	</tr>
+	<tr id="FN-A4">
+		<td>
+			FN-A4
+		</td>
+		<td>
+			Audio resumes when the app returns to the foreground, or indicates to the user that playback is in a paused state.
+		</td>
+		<td><a href="#core">CR-1, CR-8</a></td>
+	</tr>
+	<tr id="FN-U1">
+	<td rowspan="3">UI and Graphics</td>
+		<td>
+			FN-U1
+		</td>
+		<td>
+			<p style="margin-bottom:.5em;">App supports both landscape and portrait orientations (if possible).</em></p>
+			<p style="margin-bottom:.25em;">Orientations expose largely the same features and actions and preserve functional parity.
+			Minor changes in content or views are acceptable.</p>
+		</td>
+		<td><a href="#core">CR-5</a></td>
+	</tr>
+	<tr id="FN-U2">
+		<td>
+			FN-U2
+		</td>
+		<td>
+		<p style="margin-bottom:.5em;">App uses the whole screen in both orientations and does not letterbox to account for orientation changes.</em></p>
+		<p style="margin-bottom:.25em;">Minor letterboxing to compensate for small variations in screen geometry is acceptable.</p>
+		</td>
+		<td><a href="#core">CR-5</a></td>
+	</tr>
+	<tr id="FN-U3">
+		<td>
+			FN-U3
+		</td>
+		<td>
+			<p style="margin-bottom:.5em;">App correctly handles rapid transitions between display orientations without rendering problems.</p>
+		</td>
+		<td><a href="#core">CR-5</a></td>
+	</tr>
+	
+	<tr  id="FN-S1">
+		<td rowspan="2">User/app state</td>
+		<td>
+			FN-S1
+		</td>
+		<td>
+		<p style="margin-bottom:.5em;">App should not leave any services running when the app is in the background, unless related to a core capability of the app.</p>
+		<p style="margin-bottom:.25em;">For example, the app should not leave services running to maintain a network connection for notifications, to maintain a Bluetooth connection, or to keep the GPS powered-on.</p>
+		</td>
+		<td><a href="#core">CR-6</a></td>
+	</tr>
+	<tr  id="FN-S2">
+		<td>
+			FN-S2
+		</td>
+		<td>
+			<p style="margin-bottom:.5em;">App correctly preserves and restores user or app state.</p>
+			<p style="margin-bottom:.25em;">App preserves user or app state when leaving the foreground and prevents accidental data loss due to back-navigation and other state changes. When returning to the foreground, the app must restore the preserved state and any significant stateful transaction that was pending, such as changes to editable fields, game progress, menus, videos, and other sections of the app or game.</p>
+			<ol style="margin-bottom:.25em;list-style-type:lower-alpha">
+			<li>When the app is resumed from the Recents app switcher, the app returns the user to the exact state in which it was last used.</li>
+			<li>When the app is resumed after the device wakes from sleep (locked) state, the app returns the user to the exact state in which it was last used.</li>
+			<li>When the app is relaunched from Home or All Apps, the app restores the app state as closely as possible to the previous state.</li>
+			<li>On Back keypresses, the app gives the user the option of saving any app or user state that would otherwise be lost on back-navigation.</li>
+			</ol>
+		</td>
+		<td><a href="#core">CR-1, CR-3, CR-5</a></td>
+	</tr>
+	
+</table>
+
+<table>
+<tr>
+<td><p>Related resources:</p>
+<ul style="margin-top:-.5em;">
+<li><strong><a href="http://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html">Making Android Apps that Play Nice</a></strong> &mdash; Developer blog post discussing the audio lifecycle and expected audio behaviors for Android apps. </li>
+<li><strong><a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back Stack</a></strong> &mdash; Developer guide describing how to implement back-navigation.</li>
+<li><strong><a href="{@docRoot}training/basics/activity-lifecycle/recreating.html">Recreating an Activity</a></strong> &mdash; Android Training class the shows how to preserve and restore app state.</li>
+
+</ul>
+</td>
+</tr>
+</table>
+
+
+<h2 id="ps">Performance and Stability</h2>
+
+<p>To ensure a high user rating, your app needs to perform well and stay
+responsive on all of the devices and form factors and screens that it is
+targeting. These criteria ensure that the app provides the basic performance,
+stability, and responsiveness expected by users.</p>
+
+<table>
+	<tr>
+		<th style="width:2px;">
+			Area
+		</th>
+		<th style="width:54px;">
+			ID
+		</th>
+		<th>
+			Description
+		</th>
+		<th style="width:54px;">
+			Tests
+		</th>
+	</tr>
+	<tr  id="PS-S1">
+		<td>Stability</td>
+		<td>
+			PS-S1
+		</td>
+		<td>
+			App does not crash, force close, freeze, or otherwise function abnormally on any targeted device.
+		</td>
+		<td><a href="#core">CR-all</a>, <a href="#SD-1">SD-1</a>, <a href="#HA-1">HA-1</a></td>
+	</tr>
+	
+	<tr id="PS-P1">
+	<td rowspan="2">Performance</td>
+		<td>
+			PS-P1
+		</td>
+		<td>
+			App loads quickly or provides onscreen feedback to the user (a progress indicator or similar cue) if the app
+			takes longer than two seconds to load.
+		</td>
+		<td>
+		    <a href="#core">CR-all</a>, <a href="#SD-1">SD-1</a>
+		</td>
+	</tr>
+	<tr id="PS-P2">
+
+		<td>
+			PS-P2
+		</td>
+		<td>
+			With StrictMode enabled (see <a href="#strictmode">StrictMode Testing</a>, below), no red flashes (performance warnings from StrictMode) are visible when exercising the app, including
+			during game play, animations and UI transitions, and any other part of the app.
+		</td>
+		<td>
+		    <a href="#PM-1">PM-1</a>
+		</td>
+	</tr>
+	<tr id="PS-M1">
+		<td>Media</td>
+		<td>
+			PS-M1
+		</td>
+		<td>
+			Music and video playback is smooth, without crackle, stutter, or other artifacts, during normal app usage and load.
+		</td>
+		<td>
+		    <a href="#core">CR-all</a>, <a href="#SD-1">SD-1</a>, <a href="#HA-1">HA-1</a>
+		</td>
+	</tr>
+	<tr id="PS-V1">
+		<td rowspan="2">Visual quality</td>
+	<td>
+			PS-V1
+		</td>
+		<td>
+			<p style="margin-bottom:.5em;">App displays graphics, text, images, and other UI elements without noticeable distortion, blurring, or pixelation.</p>
+			
+			<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
+			<li>App provides high-quality graphics for all targeted screen sizes and form factors, including for <a href="{@docRoot}distribute/googleplay/quality/tablet.html">larger-screen devices such as tablets</a>.</li>
+			<li>No aliasing at the edges of menus, buttons, and other UI elements is visible.</li>
+			</ol>
+		</td>
+		<td rowspan="2"><a href="#core">CR-all</a></td>
+	</tr>
+	<tr id="PS-V2">
+		<td>
+			PS-V2
+		</td>
+		<td>
+			<p style="margin-bottom:.5em;">App displays text and text blocks in an acceptable manner. </p>
+			
+		 <ol style="margin-bottom:.5em;list-style-type:lower-alpha">
+			<li>Composition is acceptable in all supported form factors, including for larger-screen devices such as tablets.</li>
+			<li>No cut-off letters or words are visible.</li>
+			<li>No improper word wraps within buttons or icons are visible.</li>
+			<li>Sufficient spacing between text and surrounding elements.</li>
+			</ol>
+		</td>
+
+	</tr>
+</table>
+
+<table>
+<tr>
+<td><p>Related resources:</p>
+<ul style="margin-top:-.5em;">
+<li><strong><a href="http://android-developers.blogspot.com/2010/12/new-gingerbread-api-strictmode.html">Using StrictMode</a></strong> &mdash; Developer blog post discussing StrictMode and how to use it for performance monitoring in your app. </li>
+<li><strong><a href="{@docRoot}guide/practices/responsiveness.html">Designing for Responsiveness</a></strong> &mdash; Developer guide describing best practices for keeping your app responsive.</li>
+<li><strong><a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">Multithreading for Performance</a></strong> &mdash; Developer blog post discussing ways to improve performance through multi-threading.</li>
+</ul>
+</td>
+</tr>
+</table>
+
+
+<h2 id="listing">Google Play</h2>
+
+<p>To launch your app successfully on Google Play, raise its ratings, and make
+sure that it is ready for promotional activities in the store, follow the
+criteria below.</p>
+
+<table>
+	<tr>
+		<th style="width:2px;">
+			Area
+		</th>
+		<th style="width:54px;">
+			ID
+		</th>
+		<th>
+			Description
+		</th>
+		<th style="width:54px;">
+			Tests
+		</th>
+	</tr>
+	<tr id="GP-P1">
+	<td rowspan="2">Policies</td>
+		<td>
+			GP-P1
+		</td>
+		<td>
+			App strictly adheres to the terms of the <a href="http://play.google.com/about/developer-content-policy.html">Google Play Developer Content Policy</a> and does not offer inappropriate content, does not use intellectual property or brand of others, and so on.
+		</td>
+		<td>
+		<a href="#gp">GP-all</a>
+		</td>
+	</tr>
+	
+	<tr id="GP-P2">
+		<td>
+			GP-P2
+		</td>
+		<td>
+			<p style="margin-bottom:.5em;">App maturity level is set appropriately, based on the 
+			<a href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=188189">Content Rating Guidelines</a>.</p>
+			
+			<p style="margin-bottom:.25em;">Especially, note that apps that request permission to use the device location cannot be given the maturity level "Everyone". </p>
+		</td>
+			<td>
+		<a href="#gp">GP-1</a>
+		</td>
+	</tr>
+
+	<tr id="GP-D1">
+	<td rowspan="3">App&nbsp;Details Page</td>
+		<td>
+			GP-D1
+		</td>
+		<td>
+			<p style="margin-bottom:.5em;">App feature graphic follows the guidelines outlined in this
+			<a href="http://android-developers.blogspot.com/2011/10/android-market-featured-image.html">blog post</a>. Make sure that:</p>
+			
+			<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
+				<li>The app listing includes a high-quality feature graphic.</li>
+				<li>The feature graphic does not contain device images, screenshots, or small text that will be illegible when scaled down and displayed on the smallest screen size that your app is targeting.</li>
+			    <li>The feature graphic does not resemble an advertisement.</li>
+			</ol>
+			
+		
+		</td>
+		
+				<td>
+		<a href="#gp">GP-1, GP-2</a>
+		</td>
+	</tr>
+	<tr id="GP-D2">
+		<td>
+			GP-D2
+		</td>
+		<td>
+			App screenshots and videos do not show or reference non-Android devices. 
+		</td>
+		<td rowspan="2"><a href="#gp">GP-1</a></td>
+	</tr>
+	<tr id="GP-D3">
+		<td>
+			GP-D3
+		</td>
+		<td>
+			App screenshots or videos do not 
+			represent the content and experience of your app in a misleading way.
+		</td>
+	</tr>
+	<tr id="GP-X1">
+		<td>User Support</td>
+		<td>
+			GP-X1
+		</td>
+		<td>Common user-reported bugs in the Reviews tab of the Google Play page are addressed if they are
+			reproducible and occur on many different devices. If a bug occurs on only a few devices,
+			you should still address it if those devices are particularly popular or new.
+		</td>
+		
+				<td>
+		<a href="#gp">GP-1</a>
+		</td>
+		
+	</tr>
+</table>
+
+<table>
+<tr>
+<td><p>Related resources:</p>
+<ul style="margin-top:-.5em;">
+<li><strong><a href="https://play.google.com/apps/publish/">Publishing Checklist</a></strong> &mdash; Recommendations on how to prepare your app for publishing, test it, and launch successfully on Google Play.</li>
+<li><strong><a href="http://play.google.com/about/developer-content-policy.html">Google Play Developer Program Policies</a></strong> — Guidelines for what is acceptable conent in Google Play. Please read and understand the and understand the policies before publishing.</p>
+<li><strong><a href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&amp;answer=188189">Rating your application content for Google Play</a></strong> — Help Center document describing content ratings levels and how to choose the appropriate one for your app.</li>
+<li><strong><a href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&amp;answer=1078870">Graphic Assets for your Application
+</a></strong> — Details about the graphic assets you need to upload before publishing.</li>
+<li><strong><a href="http://android-developers.blogspot.com/2011/10/android-market-featured-image.html">Google Play Featured Image Guidelines
+</a></strong> — Blog post discussing how to create an attractive, effective Featured Image for your app.</li>
+<li><strong><a href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&amp;answer=113477&amp;topic=2364761&amp;ctx=topic">Supporting your users
+</a></strong> — Help Center document describing options for supporting users.</li>
+</ul>
+</td></tr>
+</table>
+
+
+<h2 id="test-environment">Setting Up a Test Environment</h2>
+
+<p>To assess the quality of your app, you need to set up a suitable
+hardware or emulator environment for testing. </p>
+
+<p>The ideal test environment would
+include a small number of actual hardware devices that represent key form
+factors and hardware/software combinations currently available to consumers.
+It's not necessary to test on <em>every</em> device that's on the market &mdash;
+rather, you should focus on a small number of representative devices, even using
+one or two devices per form factor. </p>
+
+<p>If you are not able to obtain actual hardware devices for testing, you should
+set up emulated devices (AVDs) to represent the most common form factors and
+hardware/software combinations. </p>
+
+<p>To go beyond basic testing, you can add more devices, more form factors, or
+new hardware/software combinations to your test environment. You can also
+increase the number or complexity of tests and quality criteria. </p>
+
+
+<h2 id="tests">
+  Test Procedures
+</h2>
+
+<p>These test procedures help you discover various types of quality issues in
+your app. You can combine the tests or integrate groups of tests together in
+your own test plans. See the sections above for references that associate
+specific criteria with specific tests. </p>
+
+<table>
+	<tr>
+		<th style="width:2px;">
+			Type
+		</th>
+		<th style="width:54px;">
+			Test
+		</th>
+		<th>
+			Description
+		</th>
+	</tr>
+	<tr>
+		<td rowspan="12" id="core">Core Suite</td>
+		<td>
+			CR-0
+		</td>
+		<td><p style="margin-bottom:.5em;">Navigate to all parts of the app &mdash; all screens, dialogs, settings, and all user flows. </p>
+		
+		<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
+		<li>If the application allows for editing or content creation, game play, or media playback, make sure to enter those flows to create or modify content.</li>
+		<li>While exercising the app, introduce transient changes in network connectivity, battery function, GPS or location availability, system load, and so on. </li>
+			</ol>
+		</td>
+	</tr>
+	<tr id="tg2">
+		<td id="core">
+			CR-1
+		</td>
+		<td>From each app screen, press the device's Home key, then re-launch the app from the All Apps screen.
+		</td>
+	</tr>
+	<tr id="CR-2">
+		<td>
+			CR-2
+		</td>
+		<td>From each app screen, switch to another running app and then return to the app under test using the Recents app switcher.
+		</td>
+	</tr>
+
+	<tr id="CR-3">
+		<td>
+			CR-3
+		</td>
+		<td>From each app screen (and dialogs), press the Back button. 
+		</td>
+	</tr>
+		<tr id="CR-5">
+		<td>
+			CR-5
+		</td>
+		<td>From each app screen, rotate the device between landscape and portrait orientation at least three times.
+		</td>
+	</tr>
+	<tr id="CR-6">
+		<td>
+			CR-6
+		</td>
+		<td>Switch to another app to send the test app into the background. Go to Settings and check whether the test app has any services running while in the background. In Android 4.0 and higher, go to the Apps screen and find the app in the "Running" tab. In earlier versions, use "Manage Applications" to check for running services.
+		</td>
+	</tr>
+
+	
+	<tr  id="CR-7">
+		<td>
+			CR-7
+		</td>
+		<td>
+			Press the power button to put the device to sleep, then press the power button again to
+			awaken the screen.
+		</td>
+	</tr>
+	<tr id="CR-8">
+		<td>
+			CR-8
+		</td>
+		<td>
+			Set the device to lock when the power button is pressed. Press the power button to put the device to sleep, then press the power button again to
+			awaken the screen, then unlock the device.
+		</td>
+	</tr>
+	<tr id="CR-9">
+		<!-- Hardware features -->
+		<td>
+			CR-9
+		</td>
+		<td>
+			For devices that have slide-out keyboards, slide the keyboard in and out at least once.  For devices that have keyboard docks, attach the device to the keyboard dock.
+		</td>
+	</tr>
+	<tr id="CR-10">
+		<td>
+			CR-10
+		</td>
+		<td>
+			For devices that have an external display port, plug-in the external display.
+		</td>
+	</tr>
+	<tr id="CR-11">
+		<td>
+			CR-11
+		</td>
+		<td>Trigger and observe in the notications drawer all types of notifications that the app can display. Expand notifications where applicable (Android 4.1 and higher), and tap all actions offered.</td>
+	</tr>
+	<tr id="CR-12">
+		<td>
+			CR-12
+		</td>
+		<td>Examine the permissions requested by the app by going to Settings &gt; App Info.
+		</td>
+	</tr>
+	<tr id="tg3">
+	<td>Install on SD Card</td>
+		<td>
+			SD-1
+		</td>
+		<td>
+			<p style="margin-bottom:.5em;">Repeat <em>Core Suite</em> with app installed to <a href="{@docRoot}guide/topics/data/install-location.html">device SD card</a> (if supported by app).</p>
+			
+			<p style="margin-bottom:.25em;">To move the app to SD card, you can use Settings &gt; App Info &gt; Move to SD Card.</p>
+		</td>
+	</tr>
+	<tr id="tg3">
+			<td>Hardware acceleration</td>
+		<td>
+			HA-1
+		</td>
+		<td>
+			<p style="margin-bottom:.5em;">Repeat <em>Core Suite</em> with hardware acceleration enabled.</p>
+			
+			<p style="margin-bottom:.25em;">To force-enable hardware acceleration (where supported by device), add <code>hardware-accelerated="true"</code> to the <code>&lt;application&gt;</code> in the app manifest and recompile.</p>
+		</td>
+	</tr>
+	<tr id="tg3">
+			<td>Performance Monitoring</td>
+		<td>
+			PM-1
+		</td>
+		<td>
+		 <p style="margin-bottom:.5em;">Repeat <em>Core Suite</em> with StrictMode profiling enabled <a href="#strictmode">as described below</a>. <p style="margin-bottom:.25em;">Pay close attention to garbage collection and its impact on the user experience.</p>
+		</td>
+	</tr>
+	<tr  id="gp">
+		<td rowspan="3">Google Play</td>
+		<td>
+			GP-1
+		</td>
+		<td>
+			Sign into the <a href="https://play.google.com/apps/publish/">Developer Console</a> to review your developer profile, app description, screenshots, feature graphic, maturity settings, and user feedback. 
+		</td>
+	</tr>
+	<tr  id="GP-2">
+		<td>
+			GP-2
+		</td>
+		<td>
+			Download your feature graphic and screenshots and scale them down to match the display sizes on the devices and form factors you are targeting.
+		</td>
+	</tr>
+	<tr  id="GP-3">
+		<td>
+			GP-3
+		</td>
+		<td>
+			Review all graphical assets, media, text, code libraries, and other content packaged in the app or expansion file download.
+		</td>
+	</tr>
+	<tr  id="GP-4">
+	<td>Payments</td>
+		<td>
+			GP-4
+		</td>
+		<td>
+			Navigate to all screens of your app and enter all in-app purchase flows.
+		</td>
+</tr>
+
+</table>
+
+<h3 id="strictmode">
+Testing with StrictMode
+</h3>
+
+<p>For performance testing, we recommend enabling 
+{@link android.os.StrictMode} in your app
+and using it to catch operations on the main thread and other threads that could
+affect performance, network accesses, file reads/writes, and so on.</p>
+
+<p>You can set up a monitoring policy per thread using 
+{@link android.os.StrictMode.ThreadPolicy.Builder} and enable all supported monitoring in the
+<code>ThreadPolicy</code> using 
+{@link android.os.StrictMode.ThreadPolicy.Builder#detectAll()}.</p>
+
+<p>Make sure to enable <strong>visual notification</strong> of policy violations
+for the <code>ThreadPolicy</code> using {@link android.os.StrictMode.ThreadPolicy.Builder#penaltyFlashScreen() penaltyFlashScreen()}.</p>
diff --git a/docs/html/distribute/googleplay/quality/index.jd b/docs/html/distribute/googleplay/quality/index.jd
new file mode 100644
index 0000000..ef537b1
--- /dev/null
+++ b/docs/html/distribute/googleplay/quality/index.jd
@@ -0,0 +1,45 @@
+page.title=App Quality
+@jd:body
+
+<p>App quality directly influences the long-term success of your app&mdash;in
+terms of installs, user rating and reviews, engagement, and user retention.
+Android users expect high-quality apps, even more so if they've spent money on
+them. At the same time, users enjoy and value apps that put a priority on
+continuous improvement. </p>
+
+<p>Before you publish an app on Google Play, it's important to make sure that
+your app meets the basic quality expectations of users, across all of the form
+factors and device types that the app is targeting. The documents in this
+section help you assess your app's fundamental quality and address any
+issues that you find. </p>
+
+<div class="vspace size-1">
+  &nbsp;
+</div>
+<div class="layout-content-row">
+  <div class="layout-content-col span-4">
+    <h4>
+      Core App Quality
+    </h4>
+    <p>
+      A set of core quality criteria that all Android apps should meet on all targeted devices.
+    </p><a href="{@docRoot}distribute/googleplay/quality/core.html">Learn more »</a>
+  </div>
+  <div class="layout-content-col span-4">
+    <h4>
+      Tablet App Quality
+    </h4>
+    <p>
+      A set recommendations for delivering the best possible experience to tablet users.
+    </p><a href="{@docRoot}distribute/googleplay/quality/tablet.html">Learn more »</a>
+  </div>
+  <div class="layout-content-col span-4">
+    <h4>
+      Improving App Quality
+    </h4>
+    <p>
+      Tips on continuously improving your app's quality, ratings, reviews, downloads, and engagement.
+    </p><a href="{@docRoot}distribute/googleplay/strategies/app-quality.html">Learn more
+    »</a>
+  </div>
+</div>
diff --git a/docs/html/distribute/googleplay/quality/tablet.jd b/docs/html/distribute/googleplay/quality/tablet.jd
new file mode 100644
index 0000000..f180f54
--- /dev/null
+++ b/docs/html/distribute/googleplay/quality/tablet.jd
@@ -0,0 +1,568 @@
+page.title=Tablet App Quality Checklist
+@jd:body
+
+<div id="qv-wrapper"><div id="qv">
+<h2>Checklist</h2>
+<ol>
+
+<li><a href="#core-app-quality">1. Test for Core App Quality</a></li>
+<li><a href="#optimize-layouts">2. Optimize your layouts</a></li>
+<li><a href="#use-extra-space">3. Use the extra screen area</a></li>
+<li><a href="#use-tablet-icons">4. Use assets designed for tablets</a></li>
+<li><a href="#adjust-font-sizes">5. Adjust fonts and touch targets</a></li>
+<li><a href="#adjust-widgets">6. Adjust homescreen widgets</a></li>
+<li><a href="#offer-full-feature-set">7. Offer the app's full feature set</a></li>
+<li><a href="#hardware-requirements">8. Don’t require hardware features</a></li>
+<li><a href="#support-screens">9. Declare tablet screen support</a></li>
+<li><a href="#google-play">10. Follow best practices for publishing in Google Play</a></li>
+
+</ol>
+<h2>Testing</h2>
+<ol>
+<li><a href="#test-environment">Setting Up a Test Environment</a></li>
+</ol>
+</div></div>
+
+
+<p>Before you publish an app on Google Play, it's important to make sure that
+the app meets the basic expectations of tablet users through compelling features
+and an intuitive, well-designed UI. </p>
+
+<p>Tablets are a growing part of the Android installed base that offers new
+opportunities for <a
+href="{@docRoot}distribute/googleplay/spotlight/tablets.html">user engagement
+and monetization</a>. If your app is targeting tablet users, this document helps
+you focus on key aspects of quality, feature set, and UI that can have a
+significant impact on the app's success. Each focus area is given as checklist
+item, with each one comprising several smaller tasks or best practices.</p>
+
+<p>Although the checklist tasks below are numbered for convenience, 
+you can handle them in any order and address them to the extent that you feel
+is right for your app. In the interest of delivering the best possible product
+to your customers, follow the checklist recommendations
+to the greatest extent possible. </p>
+
+<p>As you move through the checklist, you'll find links to support resources
+that can help you address the topics raised in each task.</p>
+
+
+<h2 id="core-app-quality">1. Test for Core App Quality</h2>
+
+<p>The first step in delivering a great tablet app experience is making sure
+that it meets the <em>core app
+quality criteria</em> for all of the devices and form factors that the app is
+targeting. For complete information, see the <a
+href="{@docRoot}distribute/googleplay/quality/core.html">Core App Quality Checklist</a>. 
+</p>
+
+<p>To assess the quality of your app on tablets &mdash; both for core app quality
+and tablet app quality &mdash; you need to set up a suitable
+hardware or emulator environment for testing. For more information, 
+see <a href="#test-environment">Setting Up a Test Environment</a>.</p>
+
+<table>
+<tr>
+<td><p>Related resources:</p>
+<ul style="margin-top:-.5em;">
+<li><strong><a
+href="{@docRoot}distribute/googleplay/quality/core.html">Core App Quality
+Guidelines</a></strong> &mdash; A set of core quality criteria that all Android
+apps should meet on all targeted devices.</li>
+</ul>
+</td>
+</tr>
+</table>
+
+<h2 id="optimize-layouts">2. Optimize your layouts for larger screens</h2>
+
+<p>Android makes it easy to develop an app that runs well on a wide range of
+device screen sizes and form factors. This broad compatibility works in your
+favor, since it helps you design a single app that you can distribute widely to
+all of your targeted devices. However, to give your users the best possible
+experience on each screen configuration &mdash; in particular on tablets
+&mdash; you need to optimize your layouts and other UI components for each
+targeted screen configuration. On tablets, optimizing your UI lets you take
+full advantage of the additional screen available, such as to offer new features,
+present new content, or enhance the experience in other ways to deepen user
+engagement.</p>
+
+<p>If you developed your app for handsets and now want to distribute it to
+tablets, you can start by making minor adjustments to your layouts, fonts, and
+spacing. In some cases &mdash; such as for 7-inch tablets or for a game with
+large canvas &mdash; these adjustments may be all
+you need to make your app look great. In other cases, such as for larger
+tablets, you can redesign parts of your UI to replace "stretched UI" with an
+efficient multipane UI, easier navigation, and additional content. </p>
+
+<p>Here are some suggestions:</p>
+
+<div style="width:390px;float:right;margin:1.5em;margin-top:0em;">
+<img src="{@docRoot}images/training/app-navigation-multiple-sizes-multipane-bad.png" style="width:390px;padding:4px;margin-bottom:0em;">
+<p class="image-caption" style="padding:0em .5em .5em 2em"><span
+style="font-weight:500;">Get rid of "stretched" UI</span>: On tablets, single-pane layouts lead to awkward whitespace and excessive line lengths. Use padding to reduce the width of UI elements and consider using multi-pane layouts.</p>
+</div>
+
+<ul>
+<li>Provide custom layouts as needed for <code>large</code> and
+<code>xlarge</code> screens. You can also provide layouts that are loaded based
+on the screen's <a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">shortest
+dimension</a> or the <a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">minimum
+available width and height</a>. </li>
+<li>At a minimum, customize dimensions such as font sizes, margins, spacing for
+larger screens, to improve use of space and content legibility. </li>
+<li>Adjust positioning of UI controls so that they are easily accessible to
+users when holding a tablet, such as toward the sides when in
+landscape orientation.</li>
+<li>Padding of UI elements should normally be larger on tablets than on handsets. A
+<a href="{@docRoot}design/style/metrics-grids.html#48dp-rhythm">48dp rhythm</a> (and a 16dp
+grid) is recommended.</li>
+<li>Adequately pad text content so that it is not aligned directly along screen edges.
+Use a minimum <code>16dp</code> padding around content near screen edges.</li>
+</ul>
+
+<p>In particular, make sure that your layouts do not appear "stretched"
+across the screen:</p>
+
+<ul>
+<li>Lines of text should not be excessively long &mdash; optimize for a maximum
+100 characters per line, with best results between 50 and 75.</li>
+<li>ListViews and menus should not use the full screen width.</li>
+<li>Use padding to manage the widths of onscreen elements or switch to a
+multi-pane UI for tablets (see next section).</li>
+</ul>
+
+<table>
+<tr>
+<td><p>Related resources:</p>
+<ul style="margin-top:-.5em;">
+<li><strong><a href="http://developer.android.com/design/style/metrics-grids.html">Metrics and Grids
+</a></strong> &mdash; Android Design document that explains ....</li>
+<li><strong><a href="http://developer.android.com/design/style/devices-displays.html">Devices and Displays
+</a></strong> &mdash; Android Design document that explains ....</li>
+<li><strong><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></strong> &mdash; Developer documentation that explains the details of managing UI for best display on multiple screen sizes.</li>
+<li><strong><a href="http://developer.android.com/guide/practices/screens_support.html#ConfigurationExamples">Configuration examples
+</a></strong> &mdash; Examples of how to declare layouts and other resources for specific screen sizes.</a></li>
+</ul>
+</td>
+</tr>
+</table>
+
+
+<h2 id="use-extra-space">3. Take advantage of extra screen area available on tablets</h2>
+
+<div style="width:290px;float:right;margin:1.5em;margin-bottom:0;margin-top:0;">
+<img src="{@docRoot}images/training/app-navigation-multiple-sizes-multipane-good.png" style="width:280px;padding:4px;margin-bottom:0em;">
+<p class="image-caption" style="padding:0em .5em .5em 1.5em"><span
+style="font-weight:500;">Multi-pane layouts</span> result in a better visual balance on tablet screens, while offering more utility and legibility.</p>
+</div>
+
+<p>Tablet screens provide significantly more screen real estate to your app,
+especially when in landscape orientation. In particular, 10-inch tablets offer a
+greatly expanded  area, but even 7-inch tablets give you more space for
+displaying content and engaging users. </p>
+
+<p>As you consider the UI of your app when running on tablets, make sure that it
+is taking full advantage of extra screen area available on tablets. Here are
+some suggestions:</p>
+
+<ul>
+<li>Look for opportunities to include additional content or use an alternative
+treatment of existing content.</li>
+<li>Use <a href="{@docRoot}design/patterns/multi-pane-layouts.html">multi-pane
+layouts</a> on tablet screens to combine single views into a compound view. This
+lets you use the additional screen area more efficiently and makes it easier for
+users to navigate your app. </li>
+<li>Plan how you want the panels of your compound views to reorganize when
+screen orientation changes.</li>
+
+
+
+<div style="width:490px;margin:1.5em auto 1.5em 0;">
+
+<div style="">
+<img src="{@docRoot}images/ui-ex-single-panes.png" style="width:490px;padding:4px;margin-bottom:0em;" align="middle">
+<img src="{@docRoot}images/ui-ex-multi-pane.png" style="width:490px;padding:4px;margin-bottom:0em;">
+<p class="image-caption" style="padding:.5em"><span
+style="font-weight:500;">Compound views</span> combine several single views from a handset UI <em>(above)</em> into a richer, more efficient UI for tablets <em>(below)</em>. </p>
+</div>
+</div>
+
+<li>While a single screen is implemented as an {@link android.app.Activity}
+subclass, consider implementing individual content panels as {@link
+android.app.Fragment} subclasses. This lets you maximize code reuse across
+different form factors and across screens that share content.</li>
+<li>Decide on which screen sizes you'll use a multi-pane UI, then provide the
+different layouts in the appropriate screen size buckets (such as
+<code>large</code>/<code>xlarge</code>) or minimum screen widths (such as
+<code>sw600dp</code>/<code>sw720</code>).</li>
+</ul>
+
+<table>
+<tr>
+<td><p>Related resources:</p>
+<ul style="margin-top:-.5em;">
+<li><strong><a href="{@docRoot}design/patterns/multi-pane-layouts.html">Multi-pane Layouts</a></strong> &mdash; Android Design guide for using multi-pane UI, including examples of how to flatten navigation and integrate more content into your tablet UI.</li>
+<li><strong><a href="{@docRoot}training/design-navigation/multiple-sizes.html">Planning for Multiple Touchscreen Sizes</a></strong> &mdash; Android Training class that walks you through the essentials of planning an intuitive, effective navigation for tablets and other devices. </li>
+<li><strong><a href="{@docRoot}training/multiscreen/index.html">Designing for Multiple Screens</a></strong> &mdash; Android Training class that walks you through the essentials of planning an intuitive, effective navigation for tablets and other devices. </li>
+</ul>
+</td>
+</tr>
+</table>
+
+
+<h2 id="use-tablet-icons">4. Use Icons and other assets that are designed for tablet screens</h2>
+
+<p>So that your app looks its best, make sure to use icons and other bitmap
+assets that are created specifically for the densities used by tablet screens.
+Specifically, you should create sets of alternative bitmap drawables for each
+density in the range commonly supported by tablets.</p>
+
+<p class="table-caption"><strong>Table 1</strong>. Raw asset sizes for icon types.<table>
+<tr>
+<th>Density </th>
+<th colspa>Launcher</th>
+<th>Action Bar</th>
+<th>Small/Contextual</th>
+<th>Notification</th>
+</tr>
+<tr>
+<td><code>mdpi</code></td>
+<td>48x48px</td>
+<td>32x32px</td>
+<td>16x16px</td>
+<td>24x24px</td>
+</tr>
+<tr>
+<td><code>hdpi</code></td>
+<td>72x72px</td>
+<td>48x48px</td>
+<td>24x24px</td>
+<td>36x36px</td>
+</tr>
+<tr>
+<td><code>tvdpi</code></td>
+<td><em>(use hdpi)</em></td>
+<td><em>(use hdpi)</em></td>
+<td><em>(use hdpi)</em></td>
+<td><em>(use hdpi)</em></td>
+</tr>
+<tr>
+<td><code>xhdpi</code></td>
+<td>96x96px</td>
+<td>64x64px</td>
+<td>32x32px</td>
+<td>48x48px</td>
+</tr>
+
+</table>
+
+<p>Other points to consider: </p>
+
+<ul>
+<li>Icons in the action bar, notifications, and launcher should be designed
+according to the icon design guidelines and have the same physical size on
+tablets as on phones.</li>
+<li>Use density-specific <a
+href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">
+resource qualifiers</a> to ensure that the proper set of alternative resources
+gets loaded.</li>
+</ul>
+
+<table>
+<tr>
+<td><p>Related resources:</p>
+<ul style="margin-top:-.5em;">
+<li><strong><a href="{@docRoot}design/style/iconography.html">Iconography</a></strong> &mdash; Android Design document that shows how to use various types of icons.</li>
+<li><strong><a href="{@docRoot}guide/topics/resources/providing-resources.html">Providing Resources</a></strong> &mdash; Developer documentation on how to provide sets of layouts and drawable resources for specific ranges of device screens. </li>
+<li><strong><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></strong> &mdash; API Guide documentation that explains the details of managing UI for best display on multiple screen sizes.</li>
+<li><strong><a href="{@docRoot}training/basics/supporting-devices/screens.html">Supporting Different Screens</a></strong> &mdash; Android Training class that takes you through the process of optimizing the user experience for different screen sizes and densities.</li>
+</ul>
+</td>
+</tr>
+</table>
+
+
+<h2 id="adjust-font-sizes">5. Adjust font sizes and touch targets for tablet screens</h2>
+
+<p>To make sure your app is easy to use on tablets, take some time to adjust the
+font sizes and touch targets in your tablet UI, for all of the screen
+configurations you are targeting. You can adjust font sizes through <a
+href="{@docRoot}guide/topics/ui/themes.html">styleable attributes</a> or <a
+href="{@docRoot}guide/topics/resources/more-resources.html#Dimension">dimension
+resources</a>, and you can adjust touch targets through layouts and bitmap
+drawables, as discussed above. </p>
+
+<p>Here are some considerations:</p>
+<ul>
+<li>Text should not be excessively large or small on tablet screen sizes and
+densities. Make sure that labels are sized appropriately for the UI elements they
+correspond to, and ensure that there are no improper line breaks in labels,
+titles, and other elements.</li>
+<li>The recommended touch-target size for onscreen elements is 48dp (32dp
+minimum) &mdash; some adjustments may be needed in your tablet UI. Read <a
+href="http://developer.android.com/design/style/metrics-grids.html">Metrics and
+Grids
+</a> to learn about implementation strategies to help most of your users. To
+meet the accessibility needs of certain users, it may be appropriate to use
+larger touch targets. </li>
+<li>When possible, for smaller icons, expand the touchable area to more than
+48dp using {@link android.view.TouchDelegate} or just centering the icon within
+the transparent button.</li>
+</ul>
+
+<table>
+<tr>
+<td><p>Related resources:</p>
+<ul style="margin-top:-.5em;">
+<li><strong><a href="http://developer.android.com/design/style/metrics-grids.html">Metrics and Grids
+</a></strong> &mdash; Android Design document that explains how to arrange and size touch targets and other UI elements on the screen.</li>
+<li><strong><a href="{@docRoot}design/style/typography.html">Typography</a></strong> &mdash; Android Design document that gives an overview of how to use typography in your apps. </li>
+<li><strong><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></strong> &mdash; Developer documentation that explains the details of managing UI for best display on multiple screen sizes.</li>
+<li><strong><a href="{@docRoot}training/multiscreen/screendensities.html">Supporting Different Densities</a></strong> &mdash; Android Training class that shows you how to provide sets of layouts and drawable resources for specific ranges of device screens. </li>
+</ul>
+</td>
+</tr>
+</table>
+
+
+<h2 id="adjust-widgets">6. Adjust sizes of home screen widgets for tablet screens</h2>
+
+<p>If your app includes a home screen widget, here are a few points to consider
+to ensure a great user experience on tablet screens: </p>
+
+<ul>
+<li>Make sure that the widget's default height and width are set appropriately
+for tablet screens, as well as the minimum and maximum resize height and width.
+</li>
+<li>The widget should be resizable to 420dp or more, to span 5 or more home
+screen rows (if this is a vertical or square widget) or columns (if this is a
+horizontal or square widget). </li>
+<li>Make sure that 9-patch images render correctly.</li>
+<li>Use default system margins.</li>
+<li>Set the app's <code>targetSdkVersion</code> to 14 or higher, if
+possible.</li>
+</ul>
+
+<table>
+<tr>
+<td><p>Related resources:</p>
+<ul style="margin-top:-.5em;">
+<li><strong><a href="{@docRoot}guide/topics/appwidgets/index.html#MetaData">Adding the AppWidgetProviderInfo Metadata
+</a></strong> &mdash; API Guide that explains how to set the height and width dimensions of a widget.</li>
+<li><strong><a href="{@docRoot}guide/practices/ui_guidelines/widget_design.html">App Widget Design Guidelines</a></strong> &mdash; API Guide that provides best practices and techniques for designing and managing the size of widgets.  </li>
+</ul>
+</td>
+</tr>
+</table>
+
+
+<h2 id="offer-full-feature-set">7. Offer the app's full feature set to tablet users</h2>
+
+<p>Let your tablet users experience the best features of your app. Here are
+some recommendations:</p>
+
+<ul>
+<li>Design your app to offer at least the same set of features on tablets as it does on
+handsets. </li>
+<li>In exceptional cases, your app might omit or replace certain features on
+tablets if they are not supported by the hardware or use-case of most tablets.
+For example:
+<ul>
+<li>If the handset uses telephony features but telephony is not available on the
+current tablet, you can omit or replace the related functionality.</li>
+<li>Many tablets have a GPS sensor, but most users would not normally carry
+their tablets while running. If your phone app provides functionality to let the
+user record a GPS track of their runs while carrying their phones, the app would not need to
+provide that functionality on tablets because the use-case is not
+compelling.</li>
+</ul>
+</li>
+<li>If you will omit a feature or capability from your tablet UI, make sure
+that it is not accessible to users or that it offers “graceful degradation”
+to a replacement feature (also see the section below on hardware features).</li>
+</ul>
+
+
+<h2 id="hardware-requirements">8. Don’t require hardware features that might not be available on tablets</h2>
+
+<p>Handsets and tablets typically offer slightly different hardware support for
+sensors, camera, telephony, and other features. For example, many tablets are
+available in a "Wi-Fi" configuration that does not include telephony support.</p>
+
+<p>To ensure that you can deliver a single APK broadly across the
+your full customer base, make sure that your app does not have built-in
+requirements for hardware features that aren't commonly available on tablets.
+</p>
+
+<ul>
+<li>Your app's manifest should not include <a
+href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code>&lt;uses-feature&gt;</code></a>
+elements for hardware features or capabilities that might not be
+available on tablets, except when they are declared with the
+<code>android:required=”false”</code> attribute. For example, your app should
+not <em>require</em> features such as:
+<ul>
+<li><code>android.hardware.telephony</code></li>
+<li><code>android.hardware.camera</code> (refers to back camera), or</li>
+<li><code>android.hardware.camera.front</code></li>
+</ul>
+</li>
+<li>Similarly, your app manifest should not include any <a
+href="{@docRoot}guide/topics/manifest/permission-element.html"><code>&lt;permission&gt;</code></a> elements that <a
+href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions">imply
+feature requirements</a> that might not be appropriate for tablets, except when
+accompanied by a corresponding <code>&lt;uses-feature&gt;</code> element
+declared with the <code>android:required=”false”</code> attribute.</li>
+</ul>
+
+<p>In all cases, the app must function normally when the hardware features it
+uses are not available and should offer “graceful degradation” and alternative
+functionality where appropriate. For example, if GPS is not supported on the device,
+your app could let the user set their location manually. The app should do
+run-time checking for the hardware capability that it needs and handle as needed.</p>
+
+<table>
+<tr>
+<td><p>Related resources:</p>
+<ul style="margin-top:-.5em;">
+<li><strong><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions">Permissions that Imply Feature Requirements</a></strong> &mdash; A list of permissions that may cause unwanted filtering if declared in your app's manifest.</li>
+<li><strong><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code>&lt;uses-feature&gt;</code></a></strong> &mdash; Description and reference documentation for the <code>&lt;uses-feature&gt;</code> manifest element.</li>
+<li><strong><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#testing">Testing the features required by your application</a></strong> &mdash; Description of how to determine the actual set of hardware and software requirements (explicit or implied) that your app requires.</li>
+</ul>
+</td>
+</tr>
+</table>
+
+
+<h2 id="support-screens">9. Declare support for tablet screen configurations</h2>
+
+<p>To ensure that you can distribute your app to a broad range of tablets,
+declare all the screen sizes that your app supports in its manifest:</p>
+
+<ul>
+<li>Declare a <a
+href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><code>&lt;supports-screens&gt;</code></a> element
+with appropriate attributes, as needed.</li>
+<li>If the app declares a <code>&lt;compatible-screens&gt;</code> element in the
+manifest, the element must include attributes that specify <em>all of the size and
+density combinations for tablet screens</em> that the app supports. Note that, if possible,
+you should avoid using this element in your app.</li>
+</ul>
+
+<table>
+<tr>
+<td><p>Related resources:</p>
+<ul style="margin-top:-.5em;">
+<li><strong><a href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><code>&lt;supports-screens&gt;</code></a></strong>
+&mdash; Description and reference documentation for the <code>&lt;supports-screens&gt;</code>
+manifest element.</li>
+<li><strong><a href="{@docRoot}guide/practices/screens_support.html#DeclaringScreenSizeSupport">Declaring Screen Size
+Support</a></strong> &mdash; Developer documentation that explains the details of managing UI
+for best display on multiple screen sizes.</li>
+</ul>
+</td>
+</tr>
+</table>
+
+
+<h2 id="google-play">10. Follow best practices for publishing in Google Play</h2>
+
+<ul>
+<li>Publish your app as a single APK for all screen sizes (handsets
+and tablets), with a single Google Play listing:
+  <ul style="margin-top:.25em;">
+    <li>Easier for users to find your app from search, browsing, or promotions</li>
+    <li>Easier for users to restore your app automatically if they get a new device.</li>
+    <li>Your ratings and download stats are consolidated across all devices.</li>
+    <li>Publishing a tablet app in a second listing can dilute ratings for your brand.</li>
+  </ul>
+</li>
+<li>If necessary, you can alternatively choose to deliver your app using <a 
+href="{@docRoot}guide/google/play/publishing/multiple-apks.html">Multiple APK Support</a>, 
+although in most cases using a single APK to reach all devices is strongly recommended.</li>
+
+<li>Highlight your app’s tablet capabilities in the product details page:
+  <ul style="margin-top:.25em;">
+    <li>Add <strong>at least one screenshot taken while the app is running on a
+    tablet</strong>. It's recommended that you add one screenshot of landscape orientation
+    and one of portrait orientation, if possible. These screenshots make it clear to users
+    that your app is designed for tablets and highlight all the effort you've put into designing
+    a great tablet app experience.</li>
+    <li>Mention tablet support in the app description.</li>
+    <li>Include information about tablet support in the app's release notes and update
+    information.</li>
+    <li>In your app's promo video, add shots of your app running on a tablet.</li>
+  </ul>
+</li>
+<li>Make sure you are distributing to tablet devices. Check the app's Supported Devices
+list in the <a href="https://play.google.com/apps/publish/">Developer Console</a>
+to make sure your app is not filtered from tablet devices that you want to target.</li>
+
+<li>Let tablet users know about your app! Plan a marketing or advertising campaign that
+highlights the use of your app on tablets.</li>
+</ul>
+
+<table>
+<tr>
+<td><p>Related resources:</p>
+<ul style="margin-top:-.5em;">
+<li><strong><a href="https://play.google.com/apps/publish/">Publishing Checklist</a></strong> &mdash; Recommendations on how to prepare your app for publishing, test it, and launch successfully on Google Play.</li>
+<li><strong><a href="https://play.google.com/apps/publish/">Google Play Android Developer Console</a></strong> &mdash; The tools console for publishing your app to Android users.</li>
+</ul>
+</td>
+</tr>
+</table>
+
+<h2 id="test-environment">Setting Up a Test Environment for Tablets</h2>
+
+<p>To assess the quality of your app on tablets &mdash; both for core app quality
+and tablet app quality &mdash; you need to set up a suitable
+hardware or emulator environment for testing. </p>
+
+<p>The ideal test environment would
+include a small number of actual hardware devices that represent key form
+factors and hardware/software combinations currently available to consumers.
+It's not necessary to test on <em>every</em> device that's on the market &mdash;
+rather, you should focus on a small number of representative devices, even using
+one or two devices per form factor.  The table below provides an overview of
+devices you could use for testing.</p>
+
+<p>If you are not able to obtain actual hardware devices for testing, you should
+set up emulated devices (AVDs) to represent the most common form factors and
+hardware/software combinations. See the table below for suggestions on the emulator
+configurations to use. </p>
+
+<p>To go beyond basic testing, you can add more devices, more form factors, or
+new hardware/software combinations to your test environment. For example, you
+could include mid-size tablets, tablets with more or fewer hardware/software
+features, and so on. You can also increase the number or complexity of tests
+and quality criteria. </p>
+
+<p class="table-caption"><strong>Table 1</strong>. A typical tablet test environment might
+include one or two devices from each row in the table below, with one of the
+listed chipsets, platform versions, and hardware feature configurations.</p>
+
+<table>
+<tr>
+<th>Type</th>
+<th>Size</th>
+<th>Density</th>
+<th>Version</th>
+<th>AVD Skin</th>
+</tr>
+
+<tr>
+<td>7-inch tablet</td>
+<td><span style="white-space:nowrap"><code>large</code> or</span><br /><code>-sw600</code></td>
+<td><code>hdpi</code>,<br /><code>tvdpi</code></td>
+<td>Android 4.0+</td>
+<td>WXGA800-7in</td>
+</tr>
+<tr>
+<td><span style="white-space:nowrap">10-inch</span> tablet</td>
+<td><span style="white-space:nowrap"><code>xlarge</code> or</span><br /><code>-sw800</code></td>
+<td><code>mdpi</code>,<br /><code>hdpi</code></td>
+<td>Android 3.2+</td>
+<td>WXGA800</td>
+</tr>
+</table>
\ No newline at end of file
diff --git a/docs/html/distribute/googleplay/spotlight/index.jd b/docs/html/distribute/googleplay/spotlight/index.jd
new file mode 100644
index 0000000..6acd914
--- /dev/null
+++ b/docs/html/distribute/googleplay/spotlight/index.jd
@@ -0,0 +1,46 @@
+page.title=Spotlight
+walkthru=0
+header.hide=0
+
+@jd:body
+
+
+<p>Android developers, their apps, and their successes with Android and Google Play. </p>
+
+
+
+<div style="background: #F0F0F0;
+            border-top: 1px solid #DDD;
+            padding: 0px 0 24px 0;
+            overflow: auto;
+            clear:both;
+            margin-bottom:-10px;
+            margin-top:30px;"">
+   <div style="padding:0 0 0 29px;">
+        <h4>Developer Story: Robot Invader</h4>
+          <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
+            -moz-border-radius: 5px;
+            border-radius: 5px height:78px;
+            width: 78px;
+            float: left;
+            margin: 17px 20px 9px 0;" src=
+            "//g0.gstatic.com/android/market/com.robotinvader.knightmare/hi-256-0-9e08d83bc8d01649e167131d197ada1cd1783fb0">
+          <div style="width:700px;">
+          <p style="margin-top:26px;margin-bottom:12px;">Robot Invader chose 
+              Android and Google Play as the launch platform for their first game,<br /> 
+              <a data-g-event="Developers Page" data-g-label="Case Study Link" href=
+              "//play.google.com/store/apps/details?id=com.robotinvader.knightmare"><em>Wind-up
+              Knight</em></a>.
+           </p>
+           <p>
+              Hear from the developers how Android helped them reach millions of users 
+              and more than 100 device models with a single app binary, then iterate rapidly to ensure
+              a great user experience.
+           </p>
+           </div>
+           <iframe style="float:left;
+             margin-right:24px;
+             margin-top:14px;" width="700" height="394" src=
+             "http://www.youtube.com/embed/hTtlLiUTowY" frameborder="0" allowfullscreen></iframe>
+   </div> 
+</div>
\ No newline at end of file
diff --git a/docs/html/distribute/googleplay/spotlight/tablets.jd b/docs/html/distribute/googleplay/spotlight/tablets.jd
new file mode 100644
index 0000000..f968a40
--- /dev/null
+++ b/docs/html/distribute/googleplay/spotlight/tablets.jd
@@ -0,0 +1,283 @@
+page.title=Developer Stories: The Opportunity of Android Tablets
+walkthru=0
+header.hide=0
+
+@jd:body
+
+
+<p>More and more, developers are investing in a full tablet experience
+for their apps and are seeing those investments pay off big. The increased
+screen area on tablets opens up a world of possibilities, allowing for more
+engagement with the user &mdash; which can mean an increase in usage as well as
+more monetization opportunities. And with the growing wave of Android tablets that
+continue to hit the market, it’s an important piece of any developer’s mobile
+offering. </p>
+
+<p>Here are some stories from developers who are seeing real results as they
+expand their offering to include Android tablets.</p>
+
+
+<div style="margin-bottom:2em;"><!-- START STORY -->
+
+<h3>Mint: More screen real estate = more engagement</h3>
+
+  <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
+            -moz-border-radius: 5px;
+            border-radius: 5px height:78px;
+            width: 78px;
+            float: left;
+            margin: 12px 20px 9px 20px;" src=
+            "https://lh5.ggpht.com/0xAIZJ1uE05b4RHNHgBBTIH6nRdPTY660T104xY7O2GbHXwab6YVmpU5yYg8yacfBg=w124">
+          
+  <div style="list-style: none;height:100%;
+  float: right;
+  border-top: 1px solid #9C0;
+  width: 220px;
+  margin: 4px 20px;padding: .5em;">
+  
+
+    <h5>About the app</h5> 
+    
+    
+    <ul>
+ <li><a href="http://play.google.com/store/apps/details?id=com.mint">Mint.com Personal Finance</a> by Intuit Inc.</li>
+      <li>Financial management app targeting 7- to 10-inch tablets and phones</li>
+    </ul>
+
+    <h5>Tablet Results</h5> 
+
+    <ul>
+      <li>Able to offer richer UI features</li>
+      <li>Much higher user engagement</li>
+      <li>Longer sessions &mdash; more Android tablet users have sessions longer than 5 minutes</li>
+      </ul>
+    
+    <div style="padding:.5em 0 0 1em;">
+<a href="http://play.google.com/store/apps/details?id=com.mint">
+  <img alt="Android app on Google Play"
+       src="http://developer.android.com/images/brand/en_generic_rgb_wo_45.png" />
+</a>
+      
+    </div>
+  </div>
+
+  <div style="line-height:1.4em;">
+    <p style="margin-top:0;margin-bottom:12px;">When Intuit was thinking about
+expanding their Mint mobile offering to include a version optimized for Android
+tablets, they knew that taking the layout that worked for phones and simply
+showing an enlarged version wouldn’t take full advantage of the opportunities
+that tablets afford.</p>
+    
+    <p>“We knew we had a lot more real estate, and we wanted to provide a more
+immersive experience for our users” said Ken Sun, Intuit Group Product Manager
+at Mint.</p>
+
+<p>Intuit’s Mint app, which has a 4-star rating on Google Play, brings a number
+of features to Android tablets that aren’t available for phones, including a
+more visual presentation of personal financial data.</p>
+
+<p>“Whereas our app for phones is used throughout the day for quick sessions,
+we’ve seen a larger percentage of our tablet usage happen in the evening, for
+much longer sessions,” said Sun. “People are doing a lot more than just checking
+their spending. They’re looking at historical trends, re-categorizing
+transactions, analyzing the data and setting financial goals for the future
+&mdash; digging much deeper and being more thoughtful. One example is how much
+users are interacting with their own budgets in the tablet app.  Customer budget
+operations (view, edit, drill-down, etc.) are 7x higher on Android tablets than
+they are on phones.”</p>
+
+<p>Fifty percent more Android tablet users have Mint sessions of 5 minutes or
+longer than they do on phones.  “We’ve found that phone usage is indicative of a
+customer’s regular financial check-in, while tablet usage points towards more
+analysis and interaction with that customer’s personal financial data.  This is
+the sort of immersive engagement experience we were looking for; the tablet and
+phone apps serve as great complements to each other."</p>
+  </div>
+
+  <div style="clear:both;margin-top:40px;width:auto;">
+  
+    <a href=""><img src="{@docRoot}images/distribute/mint.png"></a>
+
+    <div style="width:600px;margin-top:0px;padding:0 90px;">
+      <p class="image-caption"><span style="font-weight:500;">Making the most of tablet screens</span>: Mint used the extra screen area on tablets to offer quick access to additional tools and information.</p>
+    </div>
+
+  </div>
+
+</div> <!-- END STORY -->
+
+
+<div style="margin:3em auto"><!-- START STORY -->
+
+
+<h3>TinyCo: Monetization opportunities abound on tablets</h3>
+
+  <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
+            -moz-border-radius: 5px;
+            border-radius: 5px height:78px;
+            width: 78px;
+            float: left;
+            margin: 12px 20px 30px 20px;" src=
+            "https://lh5.ggpht.com/mO1TPos65MWJF_n8ZrXMbNCqIqsvN4dQV_rwNOU3pF6N_Ii3lSiCPe_H_MP8C1MK5UKo=w124">
+
+          
+  <div style="list-style: none;height:100%;
+  float: right;
+  border-top: 1px solid #9C0;
+  width: 220px;
+  margin: 4px 20px;padding: .5em;">
+
+    <h5>About the app</h5> 
+
+    <ul>
+                <li><a href="http://play.google.com/store/apps/details?id=com.tinyco.village">Tiny Village</a> by TinyCo</li>
+            <li>Game targeting 7- to 10-inch tablets and phones</li>
+    </ul>
+
+    <h5>Tablet Results</h5> 
+
+    <ul>
+      <li>35% higher average revenue per paying user (ARPPU)</li>
+      <li>Consistent increase in user retention</li>
+      <li>3x increase in downloads to Android tablets in the last 6 months</li>
+    </ul>
+    
+    <div style="padding:.5em 0 0 1em;">
+<a href="http://play.google.com/store/apps/details?id=com.tinyco.village">
+  <img alt="Android app on Google Play"
+       src="http://developer.android.com/images/brand/en_generic_rgb_wo_45.png" />
+</a>
+      
+    </div>
+  </div>
+
+  <div style="line-height:1.4em;">
+    <p style="margin-top:0;margin-bottom:12px;">Over a year ago, developer
+TinyCo, makers of games such as Tiny Monsters, switched to a
+simultaneous launch strategy for their products. They chose Android as one of their
+primary launch platforms because of its large installed base and global reach. They
+also knew that the growing base of Android tablet users represented a huge
+opportunity. </p>
+    
+    <p>Tiny Village was their first title to take advantage of the strategy, and
+it proved to be a winning one &mdash; especially in terms of Android
+tablets.</p>
+    
+    <p> “With continued optimization of the gameplay experience and a genuine
+commitment to our Android offering through our Griffin engine, all of our
+metrics started to rise,” said Rajeev Nagpal, Head of Product at TinyCo. In
+fact, they’ve seen Android tablet downloads more than triple in the last six
+months.</p>
+
+    <p>One of the first things they noticed about usage of Tiny Village on
+tablets was an increase in average revenue per paying user (ARPPU)&mdash;about 35%
+higher than on smaller-screen devices such as phones. Additionally, average
+revenue per user ARPU is now about 35% higher as well. “The game is just much
+more immersive on tablet.”</p>
+
+    <p>In addition to an increase in monetization metrics, they’ve also seen a
+consistent increase in retention over other platforms. “These are really
+important metrics for games &mdash; if you can get users to both stay around
+longer and spend more while they’re there, you have a recipe for success.”</p>
+  </div>
+
+  <div style="clear:both;margin-top:40px;width:auto;">
+  
+    <a href=""><img src="{@docRoot}images/distribute/tinyvillage.png"></a>
+
+    <div style="width:600px;margin-top:0px;padding:0 90px;">
+      <p class="image-caption"><span style="font-weight:500;">More monetization
+on tablets</span>: On Android tablets TinyCo has seen higher ARPPU and user
+retention than on phones.</p>
+    </div>
+
+  </div>
+
+</div> <!-- END STORY -->
+
+
+<div style="margin-bottom:2em;"><!-- START STORY -->
+
+<h3>Instapaper: Riding the growing wave of Android tablets</h3>
+
+
+  <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
+            -moz-border-radius: 5px;
+            border-radius: 5px height:78px;
+            width: 78px;
+            float: left;
+            margin: 12px 20px 9px 20px;" src=
+            "https://lh3.ggpht.com/30KKcrIFO8V_wRfhnHaI9l0CLH_orIVFE7Xywtr9TBxAf0hi2BaZkKyBOs63Yfavpg=w124">
+
+          
+  <div style="list-style: none;height:100%;
+  float: right;
+  border-top: 1px solid #9C0;
+  width: 220px;
+  margin: 4px 20px;padding: .5em;">
+  
+  
+  
+
+    <h5>About the app</h5> 
+    <ul>
+                <li><a href="http://play.google.com/store/apps/details?id=com.instapaper.android">Instapaper</a> by Mobelux</li>
+      <li>Content-browsing utility that targets 7- to 10-inch tablets and phones</li>
+    </ul>
+
+    <h5>Tablet Results</h5> 
+
+    <ul>
+      <li>Tablets are now 50% of the app's installed base.</li>
+    </ul>
+    
+    <div style="padding:.5em 0 0 1em;">
+<a href="http://play.google.com/store/apps/details?id=com.instapaper.android">
+  <img alt="Android app on Google Play"
+       src="http://developer.android.com/images/brand/en_generic_rgb_wo_45.png" />
+</a>
+      
+    </div>
+  </div>
+
+  <div style="line-height:1.4em;">
+    <p style="margin-top:0;margin-bottom:12px;">Instapaper for Android is an app
+for saving web content to read later. Developer Mobelux decided that creating a
+great UI for Android tablet users would be an essential part of their initial launch
+plan.</p>
+    
+    <p>The app launched at the beginning of the summer of 2012, just in time to
+take advantage of a new tide of Android tablets, including the <span
+style="white-space:nowrap;">Nexus 7</span> tablet. The app has since seen huge
+popularity among tablet users, in particular, on Nexus 7. On the day that
+pre-orders of Nexus 7 began arriving, Mobelux saw a 600% jump in downloads of
+its app on Google Play.</p>
+
+    <p>“We saw a promising new set of Android tablets about to hit the market
+and wanted to position ourselves to be ready for them” said Jeff Rock of
+Mobelux. “It was a market that others were hesitant to explore, but the decision
+to prioritize tablets has paid off very well for us.”</p>
+
+    <p>Since that initial 600% jump in downloads, Instapaper for Android has
+continued to see a successful run on Android tablets. In fact, Android tablets
+now represent about 50% of their installed base. “With more and more Android
+tablets coming online, we’re excited to see how our investment in Android
+tablets continues to pay off.”</p>
+  </div>
+
+  <div style="clear:both;margin-top:40px;width:auto;">
+  
+    <a href=""><img src="{@docRoot}images/distribute/instapaper.png"></a>
+
+    <div style="width:600px;margin-top:0px;padding:0 90px;">
+      <p class="image-caption"><span style="font-weight:500;">Popular with
+tablet users</span>: A great tablet UI and browsing convenience make Instapaper
+popular with Android tablet users.</p>
+    </div>
+
+  </div>
+
+</div> <!-- END STORY -->
+
+
+
diff --git a/docs/html/distribute/googleplay/strategies/app-quality.jd b/docs/html/distribute/googleplay/strategies/app-quality.jd
index 26d71d7..ecc51dc 100644
--- a/docs/html/distribute/googleplay/strategies/app-quality.jd
+++ b/docs/html/distribute/googleplay/strategies/app-quality.jd
@@ -1,10 +1,10 @@
-page.title=Improving App Quality
+page.title=Improving App Quality After Launch
 @jd:body
 
 <div id="qv-wrapper">
 <div id="qv">
-<h2>Strategies:</h2>
-<ul>
+<h2>Strategies</h2>
+<ol>
 <li><a href="#listen">Listen to Your Users</a></li>
 <li><a href="#stability">Improve Stability and Eliminate Bugs</a></li>
 <li><a href="#responsiveness">Improve UI Responsiveness</a></li>
@@ -13,7 +13,14 @@
 <li><a href="#features">Deliver the Right Set of Features</a></li>
 <li><a href="#integrate">Integrate with the System and Third-Party Apps</a></li>
 <li><a href="#details">Pay Attention to Details</a></li>
-</ul>
+</ol>
+
+<h2>You Should Also Read</h2>
+<ol>
+<li><a href="{@docRoot}distribute/googleplay/quality/core.html">Core App Quality Guidelines</a></li>
+<li><a href="{@docRoot}distribute/googleplay/quality/tablet.html">Tablet App Quality Checklist</a></li>
+</ol>
+
 </div>
 </div>
 
@@ -22,7 +29,7 @@
 <p>
 A better app can go a very long way: a higher quality app will translate to higher user ratings, generally better rankings, more downloads, and higher retention (longer install periods). High-quality apps also have a much higher likelihood of getting some unanticipated positive publicity such as being featured in Google Play or getting social media buzz.</p>
 <p>
-The upside to having a higher-quality app is obvious. However, it's not always clear how to make an app "better". The path to improving app quality isn't always well-lit. The term "quality" &mdash; along with "polish" and "fit and finish" &mdash; aren't always well-defined. Here we'll light the path by looking at some of the key factors in app quality and ways of improving your app along these dimensions.</p>
+The upside to having a higher-quality app is obvious. However, it's not always clear how to make an app "better".  This document looks at some of the key factors in app quality and ways of improving your app over time, after you've launched the app.</p>
 
 <h2 id="listen">Listen to Your Users</h2>
 <p>
@@ -52,39 +59,37 @@
 <p>
 You can improve your apps's UI responsiveness by moving long-running operations off the main thread to worker threads. Android offers built-in debugging facilities such as StrictMode for analyzing your app's performance and activities on the main thread. You can see more recommendations in <a href="http://www.youtube.com/watch?v=c4znvD-7VDA">Writing Zippy Android Apps</a>, a developer session from Google I/O 2010,</p>
 
-
 <div class="sidebox-wrapper">
 <div class="sidebox">
-<h2>More resources</h2>
+<h3>More resources</h3>
 <ul>
 <li><a href="{@docRoot}design/index.html">Android Design</a></li>
 <li><a href="{@docRoot}guide/practices/performance.html">Designing for Performance</a></li>
 <li><a href="{@docRoot}guide/practices/responsiveness.html">Designing for Responsiveness</a>
-<li><a href="{@docRoot}guide/practices/seamlessness.html">Designing for seamlessness</a>
+<li><a href="{@docRoot}guide/practices/seamlessness.html">Designing for Seamlessness</a>
 </li>
 </ul>
 </div></div>
 <p>
 A great way to improve UI performance is to minimize the complexity of your layouts. If you open up <a href="{@docRoot}tools/help/hierarchy-viewer.html">hierarchyviewer</a> and see that your layouts are more than 5 levels deep, it may be time to simplify your layout. Consider refactoring those deeply nested LinearLayouts into RelativeLayout. The impact of View objects is cumulative &mdash; each one costs about 1 to 2 KB of memory, so large view hierarchies can be a recipe for disaster, causing frequent VM garbage collection passes which block the main (UI) thread. You can learn more in <a href="http://www.youtube.com/watch?v=wDBM6wVEO70">World of ListView</a>, another session at Google I/O.</p>
 <p>
-Lastly, pointed out in the blog post <a href="http://android-developers.blogspot.com/2010/10/traceview-war-story.html">Traceview War Story</a>, tools like <a href="{@docRoot}tools/traceview.html">traceview</code> and <a href="{@docRoot}tools/ddms.html">ddms</a> can be your best friends in improving your app by profiling method calls and monitoring VM memory allocations, respectively.</p>
+Lastly, pointed out in the blog post <a href="http://android-developers.blogspot.com/2010/10/traceview-war-story.html">Traceview War Story</a>, tools like <a href="{@docRoot}tools/help/traceview.html">traceview</code> and <a href="{@docRoot}tools/help/ddms.html">ddms</a> can be your best friends in improving your app by profiling method calls and monitoring VM memory allocations, respectively.</p>
 
 
 <h2 id="usability">Improve Usability</h2>
 <p>
 In usability and in app design too, you should listen carefully to your users. Ask a handful of real Android device users (friends, family, etc.) to try out your app and observe them as they interact with it. Look for cases where they get confused, are unsure of how to proceed, or are surprised by certain behaviors. Minimize these cases by rethinking some of the interactions in your app, perhaps working in some of the <a href="http://www.youtube.com/watch?v=M1ZBjlCRfz0">user interface patterns</a> the Android UI team discussed at Google I/O.</p>
-<p>
-In the same vein, two problems that can plague some Android user interfaces are small tap targets and excessively small font sizes. These are generally easy to fix and can make a big impact on usability and user satisfaction. As a general rule, optimize for ease of use and legibility, while minimizing, or at least carefully balancing, information density.</p>
 
 <div class="sidebox-wrapper">
 <div class="sidebox">
-<h2>More resources</h2>
-<ul>
-As you are designing or evaluating your app's UI, make sure to read and become familiar with the <a href="{@docRoot}design/index.html">Android Design</a> guidelines. Included are many examples of UI patterns, styles, and building blocks, as well as tools for the design process.</li>
-</ul>
+<p>
+As you are designing or evaluating your app's UI, make sure to read and become familiar with the <a href="/design/index.html">Android Design</a> guidelines. Included are many examples of UI patterns, styles, and building blocks, as well as tools for the design process.</p>
 </div></div>
 
 <p>
+In the same vein, two problems that can plague some Android user interfaces are small tap targets and excessively small font sizes. These are generally easy to fix and can make a big impact on usability and user satisfaction. As a general rule, optimize for ease of use and legibility, while minimizing, or at least carefully balancing, information density.</p>
+
+<p>
 Another way to incrementally improve usability, based on real-world data, is to implement <a href="http://code.google.com/mobile/analytics/docs/">Analytics</a> throughout your app to log usage of particular sections. Consider demoting infrequently used sections to the overflow menu in the <a href="{@docRoot}design/patterns/actionbar.html">Action bar</a>, or removing them altogether. For often-used sections and UI elements, make sure they're immediately obvious and easily accessible in your app's UI so that users can get to them quickly.</p>
 <p>
 Lastly, usability is an extensive and well-documented subject, with close ties to interface design, cognitive science, and other disciplines.</p>
@@ -93,7 +98,7 @@
 <p>
 There's no substitute for a real user interface designer&nbsp;&mdash;&nbsp;ideally one who's well-versed in mobile and Android, and ideally handy with both interaction and visual design. One popular venue to post openings for designers is <a href="http://jobs.smashingmagazine.com">jobs.smashingmagazine.com</a>, and leveraging social connections on Twitter and LinkedIn can surface great talent.</p>
 <p>
-If you don't have the luxury of working with a UI designer, there are some ways in which you can improve your app's appearance yourself. First, get familiar with Adobe Photoshop, Adobe Fireworks, or some other raster image editing tool. Mastering the art of the pixel in these apps takes time, but honing this skill can help build polish across your interface designs. Also, master the resources framework by studying <a href="http://android.git.kernel.org/?p=platform/frameworks/base.git;a=tree;f=core/res/res;h=a3562fe1af94134486a8a899f02a9c2f7986c8dd;hb=master">the framework UI</a> assets and layouts and reading through the new <a href="{@docRoot}guide/components/resources/available-resources.html">resources documentation</a>. Techniques such as 9-patches and resource directory qualifiers are somewhat unique to Android, and are crucial in building flexible yet aesthetic UIs.</p>
+If you don't have the luxury of working with a UI designer, there are some ways in which you can improve your app's appearance yourself. First, get familiar with Adobe Photoshop, Adobe Fireworks, or some other raster image editing tool. Mastering the art of the pixel in these apps takes time, but honing this skill can help build polish across your interface designs. Also, master the resources framework by studying <a href="http://android.git.kernel.org/?p=platform/frameworks/base.git;a=tree;f=core/res/res;h=a3562fe1af94134486a8a899f02a9c2f7986c8dd;hb=master">the framework UI</a> assets and layouts and reading through the new <a href="{@docRoot}guide/topics/resources/index.html">resources documentation</a>. Techniques such as 9-patches and resource directory qualifiers are somewhat unique to Android, and are crucial in building flexible yet aesthetic UIs.</p>
 <p>
 Before you get too far in designing your app and writing the code, make sure to visit the Android Design site and learn about the vision, the building blocks, and the tools of designing beautiful and inspiring user interfaces.</p>
 
@@ -105,7 +110,7 @@
 
 <h2 id="integrate">Integrate with the System and Third-Party apps</h2>
 <p>
-A great way to deliver a delightful user experience is to integrate tightly with the operating system. Features like <a href="{@docRoot}guide/topics/appwidgets/index.html">Home screen widgets</a>, <a href={@docRoot}design/patterns/notifications.html">rich notifications</a>, <a href="{@docRoot}guide/topics/search/index.html">global search integration</a>, and {@link android.widget.QuickContactBadge Quick Contacts} are fairly low-hanging fruit in this regard. </p>
+A great way to deliver a delightful user experience is to integrate tightly with the operating system. Features like <a href="{@docRoot}guide/topics/appwidgets/index.html">Home screen widgets</a>, <a href="{@docRoot}design/patterns/notifications.html">rich notifications</a>, <a href="{@docRoot}guide/topics/search/index.html">global search integration</a>, and {@link android.widget.QuickContactBadge Quick Contacts} are fairly low-hanging fruit in this regard. </p>
 
 <p>For some app categories, basic features like home screen widgets are par for the course. Not including them is a sure-fire way to tarnish an otherwise positive user experience. Some apps can achieve even tighter OS integration with Android's contacts, accounts, and sync APIs. </p>
 <p>
diff --git a/docs/html/distribute/promote/device-art-resources/galaxy_nexus/land_back.png b/docs/html/distribute/promote/device-art-resources/galaxy_nexus/land_back.png
new file mode 100644
index 0000000..f340a62
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/galaxy_nexus/land_back.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/galaxy_nexus/land_fore.png b/docs/html/distribute/promote/device-art-resources/galaxy_nexus/land_fore.png
new file mode 100644
index 0000000..2a4e595
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/galaxy_nexus/land_fore.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/galaxy_nexus/land_shadow.png b/docs/html/distribute/promote/device-art-resources/galaxy_nexus/land_shadow.png
new file mode 100644
index 0000000..f3a3120
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/galaxy_nexus/land_shadow.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/galaxy_nexus/port_back.png b/docs/html/distribute/promote/device-art-resources/galaxy_nexus/port_back.png
new file mode 100644
index 0000000..c40b37c
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/galaxy_nexus/port_back.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/galaxy_nexus/port_fore.png b/docs/html/distribute/promote/device-art-resources/galaxy_nexus/port_fore.png
new file mode 100644
index 0000000..aae684b
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/galaxy_nexus/port_fore.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/galaxy_nexus/port_shadow.png b/docs/html/distribute/promote/device-art-resources/galaxy_nexus/port_shadow.png
new file mode 100644
index 0000000..61a0da9
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/galaxy_nexus/port_shadow.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/galaxy_nexus/thumb.png b/docs/html/distribute/promote/device-art-resources/galaxy_nexus/thumb.png
new file mode 100644
index 0000000..e21a421
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/galaxy_nexus/thumb.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/nexus_7/land_back.png b/docs/html/distribute/promote/device-art-resources/nexus_7/land_back.png
new file mode 100644
index 0000000..2999f35
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/nexus_7/land_back.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/nexus_7/land_fore.png b/docs/html/distribute/promote/device-art-resources/nexus_7/land_fore.png
new file mode 100644
index 0000000..cefdd351
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/nexus_7/land_fore.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/nexus_7/land_shadow.png b/docs/html/distribute/promote/device-art-resources/nexus_7/land_shadow.png
new file mode 100644
index 0000000..8f7aec7
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/nexus_7/land_shadow.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/nexus_7/port_back.png b/docs/html/distribute/promote/device-art-resources/nexus_7/port_back.png
new file mode 100644
index 0000000..b2908a8
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/nexus_7/port_back.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/nexus_7/port_fore.png b/docs/html/distribute/promote/device-art-resources/nexus_7/port_fore.png
new file mode 100644
index 0000000..7f4b0b4
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/nexus_7/port_fore.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/nexus_7/port_shadow.png b/docs/html/distribute/promote/device-art-resources/nexus_7/port_shadow.png
new file mode 100644
index 0000000..c10bd53
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/nexus_7/port_shadow.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/nexus_7/thumb.png b/docs/html/distribute/promote/device-art-resources/nexus_7/thumb.png
new file mode 100644
index 0000000..8b5cc5a
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/nexus_7/thumb.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/nexus_s/land_back.png b/docs/html/distribute/promote/device-art-resources/nexus_s/land_back.png
new file mode 100644
index 0000000..f525e8e
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/nexus_s/land_back.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/nexus_s/land_fore.png b/docs/html/distribute/promote/device-art-resources/nexus_s/land_fore.png
new file mode 100644
index 0000000..e26bfe1
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/nexus_s/land_fore.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/nexus_s/land_shadow.png b/docs/html/distribute/promote/device-art-resources/nexus_s/land_shadow.png
new file mode 100644
index 0000000..ea26b73
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/nexus_s/land_shadow.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/nexus_s/port_back.png b/docs/html/distribute/promote/device-art-resources/nexus_s/port_back.png
new file mode 100644
index 0000000..ed4ad0c
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/nexus_s/port_back.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/nexus_s/port_fore.png b/docs/html/distribute/promote/device-art-resources/nexus_s/port_fore.png
new file mode 100644
index 0000000..74bd077
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/nexus_s/port_fore.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/nexus_s/port_shadow.png b/docs/html/distribute/promote/device-art-resources/nexus_s/port_shadow.png
new file mode 100644
index 0000000..bb4bec8
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/nexus_s/port_shadow.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/nexus_s/thumb.png b/docs/html/distribute/promote/device-art-resources/nexus_s/thumb.png
new file mode 100644
index 0000000..8b9a3d9
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/nexus_s/thumb.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/xoom/land_back.png b/docs/html/distribute/promote/device-art-resources/xoom/land_back.png
new file mode 100644
index 0000000..e1eb075
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/xoom/land_back.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/xoom/land_fore.png b/docs/html/distribute/promote/device-art-resources/xoom/land_fore.png
new file mode 100644
index 0000000..15e5f50
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/xoom/land_fore.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/xoom/land_shadow.png b/docs/html/distribute/promote/device-art-resources/xoom/land_shadow.png
new file mode 100644
index 0000000..885508a
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/xoom/land_shadow.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/xoom/port_back.png b/docs/html/distribute/promote/device-art-resources/xoom/port_back.png
new file mode 100644
index 0000000..290ca35
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/xoom/port_back.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/xoom/port_fore.png b/docs/html/distribute/promote/device-art-resources/xoom/port_fore.png
new file mode 100644
index 0000000..8b3dca3
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/xoom/port_fore.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/xoom/port_shadow.png b/docs/html/distribute/promote/device-art-resources/xoom/port_shadow.png
new file mode 100644
index 0000000..895b75e
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/xoom/port_shadow.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art-resources/xoom/thumb.png b/docs/html/distribute/promote/device-art-resources/xoom/thumb.png
new file mode 100644
index 0000000..8fd08a4
--- /dev/null
+++ b/docs/html/distribute/promote/device-art-resources/xoom/thumb.png
Binary files differ
diff --git a/docs/html/distribute/promote/device-art.jd b/docs/html/distribute/promote/device-art.jd
new file mode 100644
index 0000000..93f772a
--- /dev/null
+++ b/docs/html/distribute/promote/device-art.jd
@@ -0,0 +1,519 @@
+page.title=Device Art Generator
+@jd:body
+
+<p>The device art generator allows you to quickly wrap your app screenshots in real device artwork.
+This provides better visual context for your app screenshots on your web site or in other
+promotional materials.</p>
+
+<p class="note"><strong>Note</strong>: Do <em>not</em> use graphics created here in your 1024x500
+feature image or screenshots for your Google Play app listing.</p>
+
+<hr>
+
+<div class="supported-browser">
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-3">
+    <h4>Step 1</h4>
+    <p>Drag a screenshot from your desktop onto a device to the right.</p>
+  </div>
+  <div class="layout-content-col span-10">
+    <ul id="device-list"></ul>
+  </div>
+</div>
+
+<hr>
+
+<div class="layout-content-row">
+  <div class="layout-content-col span-3">
+    <h4>Step 2</h4>
+    <p>Customize the generated image and drag it to your desktop to save.</p>
+    <p id="frame-customizations">
+      <input type="checkbox" id="output-shadow" checked="checked" class="form-field-checkbutton">
+      <label for="output-shadow">Shadow</label><br>
+      <input type="checkbox" id="output-glare" checked="checked" class="form-field-checkbutton">
+      <label for="output-glare">Screen Glare</label><br><br>
+      <a class="button" id="rotate-button">Rotate</a>
+    </p>
+  </div>
+  <div class="layout-content-col span-10">
+    <div id="output">No input image.</div>
+  </div>
+</div>
+
+</div>
+
+<div class="unsupported-browser" style="display: none">
+  <p class="warning"><strong>Error:</strong> This page requires 
+    <span id="unsupported-browser-reason">certain features</span>, which your web browser
+    doesn't support. To continue, navigate to this page on a supported web browser, such as
+    <strong>Google Chrome</strong>.</p>
+  <a href="https://www.google.com/chrome/" class="button">Get Google Chrome</a>
+  <br><br>
+</div>
+
+<style>
+  h4 {
+    text-transform: uppercase;
+  }
+
+  #device-list {
+    padding: 0;
+    margin: 0;
+  }
+
+  #device-list li {
+    display: inline-block;
+    vertical-align: bottom;
+    margin: 0;
+    margin-right: 20px;
+    text-align: center;
+  }
+
+  #device-list li .thumb-container {
+    display: inline-block;
+  }
+
+  #device-list li .thumb-container img {
+    margin-bottom: 8px;
+    opacity: 0.6;
+
+    -webkit-transition: -webkit-transform 0.2s, opacity 0.2s;
+       -moz-transition:    -moz-transform 0.2s, opacity 0.2s;
+            transition:         transform 0.2s, opacity 0.2s;
+  }
+
+  #device-list li.drag-hover .thumb-container img {
+    opacity: 1;
+
+    -webkit-transform: scale(1.1);
+       -moz-transform: scale(1.1);
+            transform: scale(1.1);
+  }
+
+  #device-list li .device-details {
+    font-size: 13px;
+    line-height: 16px;
+    color: #888;
+  }
+
+  #device-list li .device-url {
+    font-weight: bold;
+  }
+
+  #output {
+    color: #f44;
+    font-style: italic;
+  }
+
+  #output img {
+    max-height: 500px;
+  }
+</style>
+<script>
+  // Global variables
+  var g_currentImage;
+  var g_currentDevice;
+
+  // Global constants
+  var MSG_INVALID_INPUT_IMAGE = 'Invalid screenshot provided. Screenshots must be PNG files '
+      + 'matching the target device\'s screen resolution in either portrait or landscape.';
+  var MSG_NO_INPUT_IMAGE = 'Drag a screenshot (in PNG format) from your desktop onto a '
+      + 'target device above.'
+  var MSG_GENERATING_IMAGE = 'Generating device art&hellip;';
+
+  var MAX_DISPLAY_HEIGHT = 126; // XOOM, to fit into 200px wide
+
+  // Device manifest.
+  var DEVICES = [
+    {
+      id: 'nexus_7',
+      title: 'Nexus 7',
+      url: 'http://www.android.com/devices/detail/nexus-7',
+      physicalSize: 7,
+      physicalHeight: 7.81,
+      density: 213,
+      landRes: ['shadow', 'back', 'fore'],
+      landOffset: [363,260],
+      portRes: ['shadow', 'back', 'fore'],
+      portOffset: [265,341],
+      portSize: [800,1280],
+    },
+    {
+      id: 'xoom',
+      title: 'Motorola XOOM',
+      url: 'http://www.google.com/phone/detail/motorola-xoom',
+      physicalSize: 10,
+      physicalHeight: 6.61,
+      density: 160,
+      landRes: ['shadow', 'back', 'fore'],
+      landOffset: [218,191],
+      portRes: ['shadow', 'back', 'fore'],
+      portOffset: [199,200],
+      portSize: [800,1280],
+    },
+    {
+      id: 'galaxy_nexus',
+      title: 'Galaxy Nexus',
+      url: 'http://www.android.com/devices/detail/galaxy-nexus',
+      physicalSize: 4.65,
+      physicalHeight: 5.33,
+      density: 320,
+      landRes: ['shadow', 'back', 'fore'],
+      landOffset: [371,199],
+      portRes: ['shadow', 'back', 'fore'],
+      portOffset: [216,353],
+      portSize: [720,1280],
+    },
+    {
+      id: 'nexus_s',
+      title: 'Nexus S',
+      url: 'http://www.google.com/phone/detail/nexus-s',
+      physicalSize: 4.0,
+      physicalHeight: 4.88,
+      density: 240,
+      landRes: ['shadow', 'back', 'fore'],
+      landOffset: [247,135],
+      portRes: ['shadow', 'back', 'fore'],
+      portOffset: [134,247],
+      portSize: [480,800],
+    }
+  ];
+
+  DEVICES = DEVICES.sort(function(x, y) { return x.physicalSize - y.physicalSize; });
+
+  var MAX_HEIGHT = 0;
+  for (var i = 0; i < DEVICES.length; i++) {
+    MAX_HEIGHT = Math.max(MAX_HEIGHT, DEVICES[i].physicalHeight);
+  }
+
+  // Setup performed once the DOM is ready.
+  $(document).ready(function() {
+    if (!checkBrowser()) {
+      return;
+    }
+
+    setupUI();
+
+    // Set up Chrome drag-out
+    $.event.props.push("dataTransfer");
+    document.body.addEventListener('dragstart', function(e) {
+      var a = e.target;
+      if (a.classList.contains('dragout')) {
+        e.dataTransfer.setData('DownloadURL', a.dataset.downloadurl);
+      }
+    }, false);
+  });
+
+  /**
+   * Returns the device from DEVICES with the given id.
+   */
+  function getDeviceById(id) {
+    for (var i = 0; i < DEVICES.length; i++) {
+      if (DEVICES[i].id == id)
+        return DEVICES[i];
+    }
+    return;
+  }
+
+  /**
+   * Checks to make sure the browser supports this page. If not,
+   * updates the UI accordingly and returns false.
+   */
+  function checkBrowser() {
+    // Check for browser support
+    var browserSupportError = null;
+
+    // Must have <canvas>
+    var elem = document.createElement('canvas');
+    if (!elem.getContext || !elem.getContext('2d')) {
+      browserSupportError = 'HTML5 canvas.';
+    }
+
+    // Must have FileReader
+    if (!window.FileReader) {
+      browserSupportError = 'desktop file access';
+    }
+
+    if (browserSupportError) {
+      $('.supported-browser').hide();
+
+      $('#unsupported-browser-reason').html(browserSupportError);
+      $('.unsupported-browser').show();
+      return false;
+    }
+
+    return true;
+  }
+
+  function setupUI() {
+    $('#output').html(MSG_NO_INPUT_IMAGE);
+
+    $('#frame-customizations').hide();
+
+    $('#output-shadow, #output-glare').click(function() {
+      createFrame(g_currentDevice, g_currentImage);
+    });
+
+    // Build device list.
+    $.each(DEVICES, function() {
+      $('<li>')
+          .append($('<div>')
+              .addClass('thumb-container')
+              .append($('<img>')
+                  .attr('src', 'device-art-resources/' + this.id + '/thumb.png')
+                  .attr('height',
+                      Math.floor(MAX_DISPLAY_HEIGHT * this.physicalHeight / MAX_HEIGHT))))
+          .append($('<div>')
+              .addClass('device-details')
+              .html((this.url
+                  ? ('<a class="device-url" href="' + this.url + '">' + this.title + '</a>')
+                  : this.title) +
+                '<br>' +  this.physicalSize + '" @ ' + this.density + 'dpi' +
+                '<br>' + this.portSize[0] + 'x' + this.portSize[1]))
+          .data('deviceId', this.id)
+          .appendTo('#device-list');
+    });
+
+    // Set up drag and drop.
+    $('#device-list li')
+        .live('dragover', function(evt) {
+          $(this).addClass('drag-hover');
+          evt.dataTransfer.dropEffect = 'link';
+          evt.preventDefault();
+        })
+        .live('dragleave', function(evt) {
+          $(this).removeClass('drag-hover');
+        })
+        .live('drop', function(evt) {
+          $('#output').empty().html(MSG_GENERATING_IMAGE);
+          $(this).removeClass('drag-hover');
+          g_currentDevice = getDeviceById($(this).closest('li').data('deviceId'));
+          evt.preventDefault();
+          loadImageFromFileList(evt.dataTransfer.files, function(data) {
+            if (data == null) {
+              $('#output').html(MSG_INVALID_INPUT_IMAGE);
+              return;
+            }
+            loadImageFromUri(data.uri, function(img) {
+              g_currentFilename = data.name;
+              g_currentImage = img;
+              createFrame();
+              // Send the event to Analytics
+              _gaq.push(['_trackEvent', 'Distribute', 'Create Device Art', g_currentDevice.title]);
+            });
+          });
+        });
+
+    // Set up rotate button.
+    $('#rotate-button').click(function() {
+      if (!g_currentImage) {
+        return;
+      }
+
+      var w = g_currentImage.naturalHeight;
+      var h = g_currentImage.naturalWidth;
+      var canvas = $('<canvas>')
+          .attr('width', w)
+          .attr('height', h)
+          .get(0);
+
+      var ctx = canvas.getContext('2d');
+      ctx.rotate(-Math.PI / 2);
+      ctx.translate(-h, 0);
+      ctx.drawImage(g_currentImage, 0, 0);
+
+      loadImageFromUri(canvas.toDataURL(), function(img) {
+        g_currentImage = img;
+        createFrame();
+      });
+    });
+  }
+
+  /**
+   * Generates the frame from the current selections (g_currentImage and g_currentDevice).
+   */
+  function createFrame() {
+    var port;
+    if (g_currentImage.naturalWidth  == g_currentDevice.portSize[0] &&
+        g_currentImage.naturalHeight == g_currentDevice.portSize[1]) {
+      if (!g_currentDevice.portRes) {
+        alert('No portrait frame is currently available for this device.');
+        $('#output').html(MSG_NO_INPUT_IMAGE);
+        return;
+      }
+      port = true;
+    } else if (g_currentImage.naturalWidth  == g_currentDevice.portSize[1] &&
+               g_currentImage.naturalHeight == g_currentDevice.portSize[0]) {
+      if (!g_currentDevice.landRes) {
+        alert('No landscape frame is currently available for this device.');
+        $('#output').html(MSG_NO_INPUT_IMAGE);
+        return;
+      }
+      port = false;
+    } else {
+      alert('Screenshots for ' + g_currentDevice.title + ' must be ' +
+          g_currentDevice.portSize[0] + 'x' + g_currentDevice.portSize[1] +
+          ' or ' +
+          g_currentDevice.portSize[1] + 'x' + g_currentDevice.portSize[0] + '.');
+      $('#output').html(MSG_INVALID_INPUT_IMAGE);
+      return;
+    }
+
+    // Load image resources
+    var res = port ? g_currentDevice.portRes : g_currentDevice.landRes;
+    var resList = {};
+    for (var i = 0; i < res.length; i++) {
+      resList[res[i]] = 'device-art-resources/' + g_currentDevice.id + '/' +
+          (port ? 'port_' : 'land_') + res[i] + '.png'
+    }
+
+    var resourceImages = {};
+    loadImageResources(resList, function(r) {
+      resourceImages = r;
+      continuation_();
+    });
+
+    function continuation_() {
+      var width = resourceImages['back'].naturalWidth;
+      var height = resourceImages['back'].naturalHeight;
+      var offset = port ? g_currentDevice.portOffset : g_currentDevice.landOffset;
+
+      var canvas = document.createElement('canvas');
+      canvas.width = width;
+      canvas.height = height;
+
+      var ctx = canvas.getContext('2d');
+      if (resourceImages['shadow'] && $('#output-shadow').is(':checked')) {
+        ctx.drawImage(resourceImages['shadow'], 0, 0);
+      }
+      ctx.drawImage(resourceImages['back'], 0, 0);
+      ctx.drawImage(g_currentImage, offset[0], offset[1]);
+      if (resourceImages['fore'] && $('#output-glare').is(':checked')) {
+        ctx.drawImage(resourceImages['fore'], 0, 0);
+      }
+
+      var dataUrl = canvas.toDataURL();
+      var filename = g_currentFilename
+          ? ('framed_' + g_currentFilename)
+          : 'framed_screenshot.png';
+
+      var $link = $('<a>')
+          .attr('download', filename)
+          .attr('href', dataUrl)
+          .attr('draggable', true)
+          .attr('data-downloadurl', ['image/png', filename, dataUrl].join(':'))
+          .append($('<img>').attr('src', dataUrl))
+          .appendTo($('#output').empty());
+
+      $('#frame-customizations').show();
+    }
+  }
+
+  /**
+   * Loads an image from a data URI. The callback will be called with the <img> once
+   * it loads.
+   */
+  function loadImageFromUri(uri, callback) {
+    callback = callback || function(){};
+
+    var img = document.createElement('img');
+    img.src = uri;
+    img.onload = function() {
+      callback(img);
+    };
+    img.onerror = function() {
+      callback(null);
+    }
+  }
+
+  /**
+   * Loads a set of images (organized by ID). Once all images are loaded, the callback
+   * is triggered with a dictionary of <img>'s, organized by ID.
+   */
+  function loadImageResources(images, callback) {
+    var imageResources = {};
+
+    var checkForCompletion_ = function() {
+      for (var id in images) {
+        if (!(id in imageResources))
+          return;
+      }
+      (callback || function(){})(imageResources);
+      callback = null;
+    };
+
+    for (var id in images) {
+      var img = document.createElement('img');
+      img.src = images[id];
+      (function(img, id) {
+        img.onload = function() {
+          imageResources[id] = img;
+          checkForCompletion_();
+        };
+        img.onerror = function() {
+          imageResources[id] = null;
+          checkForCompletion_();
+        }
+      })(img, id);
+    }
+  }
+
+  /**
+   * Loads the first valid image from a FileList (e.g. drag + drop source), as a data URI. This
+   * method will throw an alert() in case of errors and call back with null.
+   *
+   * @param {FileList} fileList The FileList to load.
+   * @param {Function} callback The callback to fire once image loading is done (or fails).
+   * @return Returns an object containing 'uri' representing the loaded image. There will also be
+   *      a 'name' field indicating the file name, if one is available.
+   */
+  function loadImageFromFileList(fileList, callback) {
+    fileList = fileList || [];
+
+    var file = null;
+    for (var i = 0; i < fileList.length; i++) {
+      if (fileList[i].type.toLowerCase().match(/^image\/png/)) {
+        file = fileList[i];
+        break;
+      }
+    }
+
+    if (!file) {
+      alert('Please use a valid screenshot file (PNG format).');
+      callback(null);
+      return;
+    }
+
+    var fileReader = new FileReader();
+
+    // Closure to capture the file information.
+    fileReader.onload = function(e) {
+      callback({
+        uri: e.target.result,
+        name: file.name
+      });
+    };
+    fileReader.onerror = function(e) {
+      switch(e.target.error.code) {
+        case e.target.error.NOT_FOUND_ERR:
+          alert('File not found.');
+          break;
+        case e.target.error.NOT_READABLE_ERR:
+          alert('File is not readable.');
+          break;
+        case e.target.error.ABORT_ERR:
+          break; // noop
+        default:
+          alert('An error occurred reading this file.');
+      }
+      callback(null);
+    };
+    fileReader.onabort = function(e) {
+      alert('File read cancelled.');
+      callback(null);
+    };
+
+    fileReader.readAsDataURL(file);
+  }
+</script>
diff --git a/docs/html/guide/appendix/media-formats.jd b/docs/html/guide/appendix/media-formats.jd
index 93e8136..feacdc6 100644
--- a/docs/html/guide/appendix/media-formats.jd
+++ b/docs/html/guide/appendix/media-formats.jd
@@ -57,7 +57,7 @@
 
 <p class="table-caption" id="formats-table"><strong>Table 1.</strong> Core media format and codec support.</p>
 
-<table>
+<table style="font-size:12px">
 <tbody>
 
 <tr>
@@ -70,22 +70,22 @@
 </tr>
 
 <tr>
-<td rowspan="10">Audio</td>
-<td>AAC LC/LTP</td>
+<td rowspan="11">Audio</td>
+<td>AAC LC</td>
 <td style="text-align: center;"><big>&bull;</big></td>
 <td style="text-align: center;"><big>&bull;</big></td>
-<td rowspan="3">Mono/Stereo content in any combination of standard bit
-rates up to 160 kbps and sampling rates from 8 to 48kHz</td>
-<td rowspan="3">
+<td rowspan="2">Support for mono/stereo/5.0/5.1
+content with standard sampling rates from 8 to 48 kHz.</td>
+<td rowspan="4">
   &bull; 3GPP (.3gp)<br>
-  &bull; MPEG-4 (.mp4, .m4a)<br>
+  <nobr>&bull; MPEG-4 (.mp4, .m4a)</nobr><br>
   &bull; ADTS raw AAC (.aac, decode in Android 3.1+, encode in Android 4.0+, ADIF not supported)<br>
   &bull; MPEG-TS (.ts, not seekable, Android 3.0+)</td>
 </tr>
 
 <tr>
 <td>HE-AACv1 (AAC+)</td>
-<td>&nbsp;</td>
+<td style="text-align: center;"><big>&bull;</big><br><small>(Android 4.1+)</small></td>
 <td style="text-align: center;"><big>&bull;</big></td>
 </tr>
 
@@ -93,6 +93,16 @@
 <td>HE-AACv2 (enhanced AAC+)</td>
 <td>&nbsp;</td>
 <td style="text-align: center;"><big>&bull;</big></td>
+<td>Support for stereo/5.0/5.1
+content with standard sampling rates from 8 to 48 kHz.</td>
+</tr>
+
+<tr>
+<td>AAC ELD (enhanced low delay AAC)</td>
+<td style="text-align: center;"><big>&bull;</big><br><small>(Android 4.1+)</small></td>
+<td style="text-align: center;"><big>&bull;</big><br><small>(Android 4.1+)</small></td>
+<td>Support for mono/stereo content
+with standard sampling rates from 16 to 48 kHz</td>
 </tr>
 
 <tr>
@@ -160,9 +170,10 @@
 
 <tr>
 <td>PCM/WAVE</td>
-<td>&nbsp;</td>
+<td style="text-align: center;"><big>&bull;</big><br><small>(Android 4.1+)</small></td>
 <td style="text-align: center;"><big>&bull;</big></td>
-<td>8- and 16-bit linear PCM (rates up to limit of hardware)</td>
+<td>8- and 16-bit linear PCM (rates up to limit of hardware). Sampling
+rates for raw PCM recordings at 8000, 16000 and 44100 Hz.</td>
 <td>
   WAVE (.wav)</td>
 </tr>
diff --git a/docs/html/guide/components/bound-services.jd b/docs/html/guide/components/bound-services.jd
index 43e6e5e..8d2bba5 100644
--- a/docs/html/guide/components/bound-services.jd
+++ b/docs/html/guide/components/bound-services.jd
@@ -640,12 +640,6 @@
 
 <h2 id="Lifecycle">Managing the Lifecycle of a Bound Service</h2>
 
-<div class="figure" style="width:588px">
-<img src="{@docRoot}images/fundamentals/service_binding_tree_lifecycle.png" alt="" />
-<p class="img-caption"><strong>Figure 1.</strong> The lifecycle for a service that is started
-and also allows binding.</p>
-</div>
-
 <p>When a service is unbound from all clients, the Android system destroys it (unless it was also
 started with {@link android.app.Service#onStartCommand onStartCommand()}). As such, you don't have
 to manage the lifecycle of your service if it's purely a bound
@@ -667,6 +661,12 @@
 {@link android.content.ServiceConnection#onServiceConnected onServiceConnected()} callback.
 Below, figure 1 illustrates the logic for this kind of lifecycle.</p>
 
+
+<img src="{@docRoot}images/fundamentals/service_binding_tree_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Figure 1.</strong> The lifecycle for a service that is started
+and also allows binding.</p>
+
+
 <p>For more information about the lifecycle of an started service, see the <a
 href="{@docRoot}guide/components/services.html#Lifecycle">Services</a> document.</p>
 
diff --git a/docs/html/guide/components/fragments.jd b/docs/html/guide/components/fragments.jd
index 938e0ab..7747b31 100644
--- a/docs/html/guide/components/fragments.jd
+++ b/docs/html/guide/components/fragments.jd
@@ -45,17 +45,10 @@
     <li>{@link android.app.FragmentManager}</li>
     <li>{@link android.app.FragmentTransaction}</li>
   </ol>
-
-  <h2>Related samples</h2>
-  <ol>
-    <li><a
-href="{@docRoot}resources/samples/HoneycombGallery/index.html">Honeycomb Gallery</a></li>
-    <li><a
-href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/index.html#Fragment">ApiDemos</a></li>
-  </ol>
   
   <h2>See also</h2>
   <ol>
+    <li><a href="{@docRoot}training/basics/fragments/index.html">Building a Dynamic UI with Fragments</a></li>
     <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">Supporting Tablets
 and Handsets</a></li>
   </ol>
@@ -709,6 +702,12 @@
 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>
 
+<p class="caution"><strong>Caution:</strong> If you need a {@link android.content.Context} object
+within your {@link android.app.Fragment}, you can call {@link android.app.Fragment#getActivity()}.
+However, be careful to call {@link android.app.Fragment#getActivity()} only when the fragment is
+attached to an activity. When the fragment is not yet attached, or was detached during the end of
+its lifecycle, {@link android.app.Fragment#getActivity()} will return null.</p>
+
 
 <h3 id="CoordinatingWithActivity">Coordinating with the activity lifecycle</h3>
 
@@ -828,7 +827,7 @@
 
 
 <p>For more samples using fragments (and complete source files for this example),
-see the sample code available in <a
+see the API Demos sample app available in <a
 href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/index.html#Fragment">
 ApiDemos</a> (available for download from the <a
 href="{@docRoot}resources/samples/get.html">Samples SDK component</a>).</p>
diff --git a/docs/html/guide/components/services.jd b/docs/html/guide/components/services.jd
index ba5e1f0..6e5dfd2 100644
--- a/docs/html/guide/components/services.jd
+++ b/docs/html/guide/components/services.jd
@@ -49,13 +49,6 @@
       LocalService}</a></li>
 </ol>
 
-<h2>Articles</h2>
-<ol>
-  <li><a href="{@docRoot}resources/articles/multitasking-android-way.html">Multitasking the Android Way</a></li>
-  <li><a href="{@docRoot}resources/articles/service-api-changes-starting-with.html">Service API changes starting
-      with Android 2.0</a></li>
-</ol>
-
 <h2>See also</h2>
 <ol>
 <li><a href="{@docRoot}guide/components/bound-services.html">Bound Services</a></li>
@@ -762,15 +755,6 @@
 changes in the service's state and perform work at the appropriate times. The following skeleton
 service demonstrates each of the lifecycle methods:</p>
 
-
-<div class="figure" style="width:432px">
-<img src="{@docRoot}images/service_lifecycle.png" alt="" />
-<p class="img-caption"><strong>Figure 2.</strong> The service lifecycle. The diagram on the left
-shows the lifecycle when the service is created with {@link android.content.Context#startService
-startService()} and the diagram on the right shows the lifecycle when the service is created
-with {@link android.content.Context#bindService bindService()}.</p>
-</div>
-
 <pre>
 public class ExampleService extends Service {
     int mStartMode;       // indicates how to behave if the service is killed
@@ -811,6 +795,12 @@
 <p class="note"><strong>Note:</strong> Unlike the activity lifecycle callback methods, you are
 <em>not</em> required to call the superclass implementation of these callback methods.</p>
 
+<img src="{@docRoot}images/service_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Figure 2.</strong> The service lifecycle. The diagram on the left
+shows the lifecycle when the service is created with {@link android.content.Context#startService
+startService()} and the diagram on the right shows the lifecycle when the service is created
+with {@link android.content.Context#bindService bindService()}.</p>
+
 <p>By implementing these methods, you can monitor two nested loops of the service's lifecycle: </p>
 
 <ul>
diff --git a/docs/html/guide/google/gcm/adv.jd b/docs/html/guide/google/gcm/adv.jd
index 39e946e..aa66e25 100644
--- a/docs/html/guide/google/gcm/adv.jd
+++ b/docs/html/guide/google/gcm/adv.jd
@@ -51,7 +51,6 @@
 
 <p>If the device is not connected to GCM, the message will be stored until a connection is established (again respecting the collapse key rules). When a connection is established, GCM will deliver all pending messages to the device, regardless of the <code>delay_while_idle</code> flag. If the device never gets connected again (for instance, if it was factory reset), the message will eventually time out and be discarded from GCM storage. The default timeout is 4 weeks, unless the <code>time_to_live</code> flag is set.</p>
 
-<p class="note"><strong>Note:</strong> When you set the <code>time_to_live</code> flag, you must also set <code>collapse_key</code>. Otherwise the message will be rejected as a bad request.</p>
 <p>Finally, when GCM attempts to deliver a message to the device and the application was uninstalled, GCM will discard that message right away and invalidate the registration ID. Future attempts to send a message to that device will get a <code>NotRegistered</code> error. See <a href="#unreg">How Unregistration Works</a> for more information.</p>
 <p>Although is not possible to track the status of each individual message, the Google APIs Console stats are broken down by messages sent to device, messages collapsed, and messages waiting for delivery.</p>
 
@@ -175,7 +174,8 @@
   <li>The end user uninstalls the application.</li>
   <li>The 3rd-party server sends a message to GCM server.</li>
   <li>The GCM server sends the message to the device.</li>
-  <li>The GCM client receives the message and queries Package Manager, which returns a &quot;package not found&quot; error.</li>
+  <li>The GCM client receives the message and queries Package Manager about whether there are broadcast receivers configured to receive it, which returns <code>false</code>.
+</li>
   <li>The GCM client informs the GCM server that the application was uninstalled.</li>
   <li>The GCM server marks the registration ID for deletion.</li>
   <li>The 3rd-party server sends a message to  GCM.</li>
@@ -203,7 +203,7 @@
 <p>GCM allows a maximum of 4 different collapse keys to be used by the GCM server at any given time. In other words, the GCM server can simultaneously store 4 different send-to-sync messages, each with a different collapse key. If you exceed this number GCM will only keep 4 collapse keys, with no guarantees about which ones they will be.</p>
 
 <h3 id="payload">Messages with payload</h3>
-<p>Unlike a send-to-sync message, every &quot;message with payload&quot; (non-collapsible message) is delivered. The payload the message contains can be up to 4K. For example, here is a JSON-formatted message in an IM application in which spectators are discussing a sporting event:</p>
+<p>Unlike a send-to-sync message, every &quot;message with payload&quot; (non-collapsible message) is delivered. The payload the message contains can be up to 4kb. For example, here is a JSON-formatted message in an IM application in which spectators are discussing a sporting event:</p>
 
 <pre class="prettyprint pretty-json">{
   "registration_id" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
diff --git a/docs/html/guide/google/gcm/client-javadoc/allclasses-frame.html b/docs/html/guide/google/gcm/client-javadoc/allclasses-frame.html
index 26916d5..e1bed36 100644
--- a/docs/html/guide/google/gcm/client-javadoc/allclasses-frame.html
+++ b/docs/html/guide/google/gcm/client-javadoc/allclasses-frame.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:13:37 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 22 13:22:47 PDT 2012 -->
 <TITLE>
 All Classes
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-22">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/client-javadoc/allclasses-noframe.html b/docs/html/guide/google/gcm/client-javadoc/allclasses-noframe.html
index 6ae9fe0..dc34021 100644
--- a/docs/html/guide/google/gcm/client-javadoc/allclasses-noframe.html
+++ b/docs/html/guide/google/gcm/client-javadoc/allclasses-noframe.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:13:37 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 22 13:22:47 PDT 2012 -->
 <TITLE>
 All Classes
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-22">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBaseIntentService.html b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBaseIntentService.html
index eed1aea..ff15218 100644
--- a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBaseIntentService.html
+++ b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBaseIntentService.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:13:36 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 22 13:22:47 PDT 2012 -->
 <TITLE>
 GCMBaseIntentService
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-22">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBroadcastReceiver.html b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBroadcastReceiver.html
index 2a1c676..ae80bf7 100644
--- a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBroadcastReceiver.html
+++ b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBroadcastReceiver.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:13:36 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 22 13:22:47 PDT 2012 -->
 <TITLE>
 GCMBroadcastReceiver
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-22">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMConstants.html b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMConstants.html
index f778f06..205bcf0 100644
--- a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMConstants.html
+++ b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMConstants.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:13:36 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 22 13:22:47 PDT 2012 -->
 <TITLE>
 GCMConstants
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-22">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../default.css" TITLE="Style">
 
@@ -177,8 +177,8 @@
 <TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#EXTRA_APPLICATION_PENDING_INTENT">EXTRA_APPLICATION_PENDING_INTENT</A></B></CODE>
 
 <BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION"><CODE>INTENT_TO_GCM_REGISTRATION</CODE></A> to get the application
- id.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION">"com.google.android.c2dm.intent.REGISTER"</A> to get the
+ application info.</TD>
 </TR>
 <TR BGCOLOR="white" CLASS="TableRowColor">
 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -186,16 +186,25 @@
 <TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#EXTRA_ERROR">EXTRA_ERROR</A></B></CODE>
 
 <BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK">"com.google.android.c2dm.intent.REGISTRATION"</A> to indicate
  an error when the registration fails.</TD>
 </TR>
 <TR BGCOLOR="white" CLASS="TableRowColor">
 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
 <CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#EXTRA_FROM">EXTRA_FROM</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_MESSAGE">"com.google.android.c2dm.intent.RECEIVE"</A> to indicate which
+ sender (Google API project id) sent the message.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
 <TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#EXTRA_REGISTRATION_ID">EXTRA_REGISTRATION_ID</A></B></CODE>
 
 <BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK">"com.google.android.c2dm.intent.REGISTRATION"</A> to indicate
  the registration id when the registration succeeds.</TD>
 </TR>
 <TR BGCOLOR="white" CLASS="TableRowColor">
@@ -204,8 +213,8 @@
 <TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#EXTRA_SENDER">EXTRA_SENDER</A></B></CODE>
 
 <BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION"><CODE>INTENT_TO_GCM_REGISTRATION</CODE></A> to indicate the sender
- account (a Google email) that owns the application.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION">"com.google.android.c2dm.intent.REGISTER"</A> to indicate which
+ senders (Google API project ids) can send messages to the application.</TD>
 </TR>
 <TR BGCOLOR="white" CLASS="TableRowColor">
 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -213,7 +222,7 @@
 <TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#EXTRA_SPECIAL_MESSAGE">EXTRA_SPECIAL_MESSAGE</A></B></CODE>
 
 <BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type of message present in the <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_MESSAGE"><CODE>INTENT_FROM_GCM_MESSAGE</CODE></A> intent.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type of message present in the <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_MESSAGE">"com.google.android.c2dm.intent.RECEIVE"</A> intent.</TD>
 </TR>
 <TR BGCOLOR="white" CLASS="TableRowColor">
 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -229,7 +238,7 @@
 <TD><CODE><B><A HREF="../../../../com/google/android/gcm/GCMConstants.html#EXTRA_UNREGISTERED">EXTRA_UNREGISTERED</A></B></CODE>
 
 <BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK">"com.google.android.c2dm.intent.REGISTRATION"</A> to indicate
  that the application has been unregistered.</TD>
 </TR>
 <TR BGCOLOR="white" CLASS="TableRowColor">
@@ -388,8 +397,8 @@
 <PRE>
 public static final java.lang.String <B>EXTRA_SENDER</B></PRE>
 <DL>
-<DD>Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION"><CODE>INTENT_TO_GCM_REGISTRATION</CODE></A> to indicate the sender
- account (a Google email) that owns the application.
+<DD>Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION">"com.google.android.c2dm.intent.REGISTER"</A> to indicate which
+ senders (Google API project ids) can send messages to the application.
 <P>
 <DL>
 <DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.EXTRA_SENDER">Constant Field Values</A></DL>
@@ -401,8 +410,8 @@
 <PRE>
 public static final java.lang.String <B>EXTRA_APPLICATION_PENDING_INTENT</B></PRE>
 <DL>
-<DD>Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION"><CODE>INTENT_TO_GCM_REGISTRATION</CODE></A> to get the application
- id.
+<DD>Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION">"com.google.android.c2dm.intent.REGISTER"</A> to get the
+ application info.
 <P>
 <DL>
 <DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.EXTRA_APPLICATION_PENDING_INTENT">Constant Field Values</A></DL>
@@ -414,7 +423,7 @@
 <PRE>
 public static final java.lang.String <B>EXTRA_UNREGISTERED</B></PRE>
 <DL>
-<DD>Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+<DD>Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK">"com.google.android.c2dm.intent.REGISTRATION"</A> to indicate
  that the application has been unregistered.
 <P>
 <DL>
@@ -427,7 +436,7 @@
 <PRE>
 public static final java.lang.String <B>EXTRA_ERROR</B></PRE>
 <DL>
-<DD>Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+<DD>Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK">"com.google.android.c2dm.intent.REGISTRATION"</A> to indicate
  an error when the registration fails. See constants starting with ERROR_
  for possible values.
 <P>
@@ -441,7 +450,7 @@
 <PRE>
 public static final java.lang.String <B>EXTRA_REGISTRATION_ID</B></PRE>
 <DL>
-<DD>Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+<DD>Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK">"com.google.android.c2dm.intent.REGISTRATION"</A> to indicate
  the registration id when the registration succeeds.
 <P>
 <DL>
@@ -454,7 +463,7 @@
 <PRE>
 public static final java.lang.String <B>EXTRA_SPECIAL_MESSAGE</B></PRE>
 <DL>
-<DD>Type of message present in the <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_MESSAGE"><CODE>INTENT_FROM_GCM_MESSAGE</CODE></A> intent.
+<DD>Type of message present in the <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_MESSAGE">"com.google.android.c2dm.intent.RECEIVE"</A> intent.
  This extra is only set for special messages sent from GCM, not for
  messages originated from the application.
 <P>
@@ -482,13 +491,26 @@
 <DL>
 <DD>Number of messages deleted by the server because the device was idle.
  Present only on messages of special type
- <A HREF="../../../../com/google/android/gcm/GCMConstants.html#VALUE_DELETED_MESSAGES"><CODE>VALUE_DELETED_MESSAGES</CODE></A>
+ <A HREF="../../../../com/google/android/gcm/GCMConstants.html#VALUE_DELETED_MESSAGES">"deleted_messages"</A>
 <P>
 <DL>
 <DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.EXTRA_TOTAL_DELETED">Constant Field Values</A></DL>
 </DL>
 <HR>
 
+<A NAME="EXTRA_FROM"><!-- --></A><H3>
+EXTRA_FROM</H3>
+<PRE>
+public static final java.lang.String <B>EXTRA_FROM</B></PRE>
+<DL>
+<DD>Extra used on <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_MESSAGE">"com.google.android.c2dm.intent.RECEIVE"</A> to indicate which
+ sender (Google API project id) sent the message.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.google.android.gcm.GCMConstants.EXTRA_FROM">Constant Field Values</A></DL>
+</DL>
+<HR>
+
 <A NAME="PERMISSION_GCM_INTENTS"><!-- --></A><H3>
 PERMISSION_GCM_INTENTS</H3>
 <PRE>
diff --git a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMRegistrar.html b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMRegistrar.html
index bb486ff..c29bf90 100644
--- a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMRegistrar.html
+++ b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMRegistrar.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:13:36 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 22 13:22:47 PDT 2012 -->
 <TITLE>
 GCMRegistrar
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-22">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../default.css" TITLE="Style">
 
@@ -308,11 +308,12 @@
     <li>It defines at least one <CODE>BroadcastReceiver</CODE> with category
       <code>PACKAGE_NAME</code>.
     <li>The <CODE>BroadcastReceiver</CODE>(s) uses the
-       permission.
-    <li>The <CODE>BroadcastReceiver</CODE>(s) handles the 3 GCM intents
-      (,
-      ,
-      and ).
+      <A HREF="../../../../com/google/android/gcm/GCMConstants.html#PERMISSION_GCM_INTENTS">"com.google.android.c2dm.permission.SEND"</A>
+      permission.
+    <li>The <CODE>BroadcastReceiver</CODE>(s) handles the 2 GCM intents
+      (<A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_MESSAGE">"com.google.android.c2dm.intent.RECEIVE"</A>
+      and
+      <A HREF="../../../../com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK">"com.google.android.c2dm.intent.REGISTRATION"</A>).
  </ol>
  ...where <code>PACKAGE_NAME</code> is the application package.
  <p>
diff --git a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-frame.html b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-frame.html
index 4828eea..a2a599d 100644
--- a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-frame.html
+++ b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-frame.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:13:37 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 22 13:22:47 PDT 2012 -->
 <TITLE>
 com.google.android.gcm
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-22">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-summary.html b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-summary.html
index 877248b..c8e0341 100644
--- a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-summary.html
+++ b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-summary.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:13:37 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 22 13:22:47 PDT 2012 -->
 <TITLE>
 com.google.android.gcm
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-22">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-tree.html b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-tree.html
index bf6fce3..0e27efe 100644
--- a/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-tree.html
+++ b/docs/html/guide/google/gcm/client-javadoc/com/google/android/gcm/package-tree.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:13:37 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 22 13:22:47 PDT 2012 -->
 <TITLE>
 com.google.android.gcm Class Hierarchy
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-22">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/client-javadoc/constant-values.html b/docs/html/guide/google/gcm/client-javadoc/constant-values.html
index 6ccd123..796d196 100644
--- a/docs/html/guide/google/gcm/client-javadoc/constant-values.html
+++ b/docs/html/guide/google/gcm/client-javadoc/constant-values.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:13:37 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 22 13:22:47 PDT 2012 -->
 <TITLE>
 Constant Field Values
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-22">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="default.css" TITLE="Style">
 
@@ -173,6 +173,12 @@
 <TD ALIGN="right"><CODE>"error"</CODE></TD>
 </TR>
 <TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.google.android.gcm.GCMConstants.EXTRA_FROM"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#EXTRA_FROM">EXTRA_FROM</A></CODE></TD>
+<TD ALIGN="right"><CODE>"from"</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
 <A NAME="com.google.android.gcm.GCMConstants.EXTRA_REGISTRATION_ID"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
 <CODE>public&nbsp;static&nbsp;final&nbsp;java.lang.String</CODE></FONT></TD>
 <TD ALIGN="left"><CODE><A HREF="com/google/android/gcm/GCMConstants.html#EXTRA_REGISTRATION_ID">EXTRA_REGISTRATION_ID</A></CODE></TD>
diff --git a/docs/html/guide/google/gcm/client-javadoc/default.css b/docs/html/guide/google/gcm/client-javadoc/default.css
index 2513e69..f11daf7 100644
--- a/docs/html/guide/google/gcm/client-javadoc/default.css
+++ b/docs/html/guide/google/gcm/client-javadoc/default.css
@@ -530,12 +530,12 @@
 }
 .design ol {
   counter-reset: item; }
-  .design ol li {
+  .design ol>li {
     font-size: 14px;
     line-height: 20px;
     list-style-type: none;
     position: relative; }
-    .design ol li:before {
+    .design ol>li:before {
       content: counter(item) ". ";
       counter-increment: item;
       position: absolute;
@@ -561,16 +561,18 @@
       content: "9. "; }
     .design ol li.value-10:before {
       content: "10. "; }
-.design .with-callouts ol li {
+.design .with-callouts ol>li {
   list-style-position: inside;
   margin-left: 0; }
-  .design .with-callouts ol li:before {
+  .design .with-callouts ol>li:before {
     display: inline;
     left: -20px;
     float: left;
     width: 17px;
     color: #33b5e5;
     font-weight: 500; }
+.design .with-callouts ul>li {
+  list-style-position: outside; }
 
 /* special list items */
 li.no-bullet {
@@ -1079,22 +1081,71 @@
    Print Only
    ========================================================================== */
 @media print {
-a {
-    color: inherit;
-}
-.nav-x, .nav-y {
-    display: none;
-}
-.str { color: #060; }
-.kwd { color: #006; font-weight: bold; }
-.com { color: #600; font-style: italic; }
-.typ { color: #404; font-weight: bold; }
-.lit { color: #044; }
-.pun { color: #440; }
-.pln { color: #000; }
-.tag { color: #006; font-weight: bold; }
-.atn { color: #404; }
-.atv { color: #060; }
+  /* configure printed page */
+  @page {
+      margin: 0.75in 1in;
+      widows: 4;
+      orphans: 4;
+  }
+
+  /* reset spacing metrics */
+  html, body, .wrap {
+      margin: 0 !important;
+      padding: 0 !important;
+      width: auto !important;
+  }
+
+  /* leave enough space on the left for bullets */
+  body {
+      padding-left: 20px !important;
+  }
+  #doc-col {
+      margin-left: 0;
+  }
+
+  /* hide a bunch of non-content elements */
+  #header, #footer, #nav-x, #side-nav,
+  .training-nav-top, .training-nav-bottom,
+  #doc-col .content-footer,
+  .nav-x, .nav-y,
+  .paging-links,
+  a.totop {
+      display: none !important;
+  }
+
+  /* remove extra space above page titles */
+  #doc-col .content-header {
+      margin-top: 0;
+  }
+
+  /* bump up spacing above subheadings */
+  h2 {
+      margin-top: 40px !important;
+  }
+
+  /* print link URLs where possible and give links default text color */
+  p a:after {
+      content: " (" attr(href) ")";
+      font-size: 80%;
+  }
+  p a {
+      word-wrap: break-word;
+  }
+  a {
+      color: inherit;
+  }
+
+  /* syntax highlighting rules */
+  .str { color: #060; }
+  .kwd { color: #006; font-weight: bold; }
+  .com { color: #600; font-style: italic; }
+  .typ { color: #404; font-weight: bold; }
+  .lit { color: #044; }
+  .pun { color: #440; }
+  .pln { color: #000; }
+  .tag { color: #006; font-weight: bold; }
+  .atn { color: #404; }
+  .atv { color: #060; }
 }
 
 /* =============================================================================
@@ -2033,8 +2084,11 @@
 #jd-content img.toggle-content-img {
   margin:0 5px 5px 0;
 }
-div.toggle-content > p {
-  padding:0 0 5px;
+div.toggle-content p {
+  margin:10px 0 0;
+}
+div.toggle-content-toggleme {
+  padding:0 0 0 15px;
 }
 
 
@@ -2145,14 +2199,9 @@
 
 .nolist {
   list-style:none;
-  padding:0;
-  margin:0 0 1em 1em;
+  margin-left:0;
 }
 
-.nolist li {
-  padding:0 0 2px;
-  margin:0;
-}
 
 pre.classic {
   background-color:transparent;
@@ -2180,6 +2229,12 @@
   color:#666;
 }
 
+div.note, 
+div.caution, 
+div.warning {
+  margin: 0 0 15px;
+}
+
 p.note, div.note, 
 p.caution, div.caution, 
 p.warning, div.warning {
@@ -2898,10 +2953,6 @@
 
 /* SEARCH RESULTS */
 
-/* disable twiddle and size selectors for left column */
-#leftSearchControl div {
-  padding:0;
-}
 
 #leftSearchControl .gsc-twiddle {
   background-image : none;
@@ -3475,7 +3526,7 @@
 
 .morehover:hover {
   opacity:1;
-  height:345px;
+  height:385px;
   width:268px;
   -webkit-transition-property:height,  -webkit-opacity;
 }
@@ -3489,7 +3540,7 @@
 .morehover .mid {
   width:228px;
   background:url(../images/more_mid.png) repeat-y;
-  padding:10px 20px 10px 20px;
+  padding:10px 20px 0 20px;
 }
 
 .morehover .mid .header {
@@ -3598,15 +3649,19 @@
   padding-top: 14px;
 }
 
+#nav-x .wrap {
+  min-height:34px;
+}
+
 #nav-x .wrap,
 #searchResults.wrap {
     max-width:940px;
     border-bottom:1px solid #CCC;
-    min-height:34px;
-    
 }
 
-
+#searchResults.wrap #leftSearchControl {
+  min-height:700px
+}
 .nav-x {
     margin-left:0;
     margin-bottom:0;
@@ -3762,7 +3817,8 @@
   height: 300px;
 }
 .slideshow-develop img.play {
-  width:350px;
+  max-width:350px;
+  max-height:240px;
   margin:20px 0 0 90px;
   -webkit-transform: perspective(800px ) rotateY( 35deg );
   box-shadow: -16px 20px 40px rgba(0, 0, 0, 0.3);
@@ -3817,6 +3873,7 @@
 .feed .feed-nav li {
   list-style: none;
   float: left;
+  height: 21px; /* +4px bottom border = 25px; same as .feed-nav */
   margin-right: 25px;
   cursor: pointer;
 }
@@ -3969,21 +4026,24 @@
 .landing-docs {
   margin:20px 0 0;
 }
-.landing-banner {
-  height:280px;
-}
 .landing-banner .col-6:first-child,
-.landing-docs .col-6:first-child {
+.landing-docs .col-6:first-child,
+.landing-docs .col-12 {
   margin-left:0;
+  min-height:280px;
 }
 .landing-banner .col-6:last-child,
-.landing-docs .col-6:last-child {
+.landing-docs .col-6:last-child,
+.landing-docs .col-12 {
   margin-right:0;
 }
 
 .landing-banner h1 {
   margin-top:0;
 }
+.landing-docs {
+  clear:left;
+}
 .landing-docs h3 {
   font-size:14px;
   line-height:21px;
@@ -4002,4 +4062,99 @@
 
 .plusone {
   float:right;
-}
\ No newline at end of file
+}
+
+
+
+/************* HOME/LANDING PAGE *****************/
+
+.slideshow-home {
+  height: 500px;
+  width: 940px;
+  border-bottom: 1px solid #CCC;
+  position: relative;
+  margin: 0;
+}
+.slideshow-home .frame {
+  width: 940px;
+  height: 500px;
+}
+.slideshow-home .content-left {
+  float: left;
+  text-align: center;
+  vertical-align: center;
+  margin: 0 0 0 35px;
+}
+.slideshow-home .content-right {
+  margin: 80px 0 0 0;
+}
+.slideshow-home .content-right p {
+  margin-bottom: 10px;
+}
+.slideshow-home .content-right p:last-child {
+  margin-top: 15px;
+}
+.slideshow-home .content-right h1 {
+  padding:0;
+}
+.slideshow-home .item {
+  height: 500px;
+  width: 940px;
+}
+.home-sections {
+  padding: 30px 20px 20px;
+  margin: 20px 0;
+  background: -webkit-linear-gradient(top, #F6F6F6,#F9F9F9);
+}
+.home-sections ul {
+  margin: 0;
+}
+.home-sections ul li {
+  float: left;
+  display: block;
+  list-style: none;
+  width: 170px;
+  height: 35px;
+  border: 1px solid #ccc;
+  background: white;
+  margin-right: 10px;
+  border-radius: 1px;
+  -webkit-border-radius: 1px;
+  -moz-border-radius: 1px;
+  box-shadow: 1px 1px 5px #EEE;
+  -webkit-box-shadow: 1px 1px 5px #EEE;
+  -moz-box-shadow: 1px 1px 5px #EEE;
+  background: white;
+}
+.home-sections ul li:hover {
+  background: #F9F9F9;
+  border: 1px solid #CCC;
+}
+.home-sections ul li a,
+.home-sections ul li a:hover {
+  font-weight: bold;
+  margin-top: 8px;
+  line-height: 18px;
+  float: left;
+  width: 100%;
+  text-align: center;
+  color: #09c !important;
+}
+.home-sections ul li a {
+  font-weight: bold;
+  margin-top: 8px;
+  line-height: 18px;
+  float: left;
+  width:100%;
+  text-align:center;
+}
+.home-sections ul li img {
+  float: left;
+  margin: -8px 0 0 10px;
+}
+.home-sections ul li.last {
+  margin-right: 0px;
+}
+#footer {
+  margin-top: -40px;
+}
diff --git a/docs/html/guide/google/gcm/client-javadoc/deprecated-list.html b/docs/html/guide/google/gcm/client-javadoc/deprecated-list.html
index 6b86bfe..d9a63c5 100644
--- a/docs/html/guide/google/gcm/client-javadoc/deprecated-list.html
+++ b/docs/html/guide/google/gcm/client-javadoc/deprecated-list.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:13:37 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 22 13:22:47 PDT 2012 -->
 <TITLE>
 Deprecated List
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-22">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/client-javadoc/help-doc.html b/docs/html/guide/google/gcm/client-javadoc/help-doc.html
index ffd1f77..af1bca8 100644
--- a/docs/html/guide/google/gcm/client-javadoc/help-doc.html
+++ b/docs/html/guide/google/gcm/client-javadoc/help-doc.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:13:37 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 22 13:22:47 PDT 2012 -->
 <TITLE>
 API Help
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-22">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/client-javadoc/index-all.html b/docs/html/guide/google/gcm/client-javadoc/index-all.html
index 74e6095..408edee 100644
--- a/docs/html/guide/google/gcm/client-javadoc/index-all.html
+++ b/docs/html/guide/google/gcm/client-javadoc/index-all.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:13:37 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 22 13:22:47 PDT 2012 -->
 <TITLE>
 Index
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-22">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="./default.css" TITLE="Style">
 
@@ -124,29 +124,33 @@
  server that can be retried later.
 <DT><A HREF="./com/google/android/gcm/GCMConstants.html#EXTRA_APPLICATION_PENDING_INTENT"><B>EXTRA_APPLICATION_PENDING_INTENT</B></A> - 
 Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
-<DD>Extra used on <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION"><CODE>GCMConstants.INTENT_TO_GCM_REGISTRATION</CODE></A> to get the application
- id.
+<DD>Extra used on <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION">"com.google.android.c2dm.intent.REGISTER"</A> to get the
+ application info.
 <DT><A HREF="./com/google/android/gcm/GCMConstants.html#EXTRA_ERROR"><B>EXTRA_ERROR</B></A> - 
 Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
-<DD>Extra used on <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>GCMConstants.INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+<DD>Extra used on <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK">"com.google.android.c2dm.intent.REGISTRATION"</A> to indicate
  an error when the registration fails.
+<DT><A HREF="./com/google/android/gcm/GCMConstants.html#EXTRA_FROM"><B>EXTRA_FROM</B></A> - 
+Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
+<DD>Extra used on <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_MESSAGE">"com.google.android.c2dm.intent.RECEIVE"</A> to indicate which
+ sender (Google API project id) sent the message.
 <DT><A HREF="./com/google/android/gcm/GCMConstants.html#EXTRA_REGISTRATION_ID"><B>EXTRA_REGISTRATION_ID</B></A> - 
 Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
-<DD>Extra used on <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>GCMConstants.INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+<DD>Extra used on <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK">"com.google.android.c2dm.intent.REGISTRATION"</A> to indicate
  the registration id when the registration succeeds.
 <DT><A HREF="./com/google/android/gcm/GCMConstants.html#EXTRA_SENDER"><B>EXTRA_SENDER</B></A> - 
 Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
-<DD>Extra used on <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION"><CODE>GCMConstants.INTENT_TO_GCM_REGISTRATION</CODE></A> to indicate the sender
- account (a Google email) that owns the application.
+<DD>Extra used on <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_TO_GCM_REGISTRATION">"com.google.android.c2dm.intent.REGISTER"</A> to indicate which
+ senders (Google API project ids) can send messages to the application.
 <DT><A HREF="./com/google/android/gcm/GCMConstants.html#EXTRA_SPECIAL_MESSAGE"><B>EXTRA_SPECIAL_MESSAGE</B></A> - 
 Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
-<DD>Type of message present in the <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_MESSAGE"><CODE>GCMConstants.INTENT_FROM_GCM_MESSAGE</CODE></A> intent.
+<DD>Type of message present in the <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_MESSAGE">"com.google.android.c2dm.intent.RECEIVE"</A> intent.
 <DT><A HREF="./com/google/android/gcm/GCMConstants.html#EXTRA_TOTAL_DELETED"><B>EXTRA_TOTAL_DELETED</B></A> - 
 Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
 <DD>Number of messages deleted by the server because the device was idle.
 <DT><A HREF="./com/google/android/gcm/GCMConstants.html#EXTRA_UNREGISTERED"><B>EXTRA_UNREGISTERED</B></A> - 
 Static variable in class com.google.android.gcm.<A HREF="./com/google/android/gcm/GCMConstants.html" title="class in com.google.android.gcm">GCMConstants</A>
-<DD>Extra used on <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK"><CODE>GCMConstants.INTENT_FROM_GCM_REGISTRATION_CALLBACK</CODE></A> to indicate
+<DD>Extra used on <A HREF="./com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK">"com.google.android.c2dm.intent.REGISTRATION"</A> to indicate
  that the application has been unregistered.
 </DL>
 <HR>
diff --git a/docs/html/guide/google/gcm/client-javadoc/index.html b/docs/html/guide/google/gcm/client-javadoc/index.html
index 26e57f6..fa7af90 100644
--- a/docs/html/guide/google/gcm/client-javadoc/index.html
+++ b/docs/html/guide/google/gcm/client-javadoc/index.html
@@ -2,7 +2,7 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc on Mon Jul 16 14:13:37 PDT 2012-->
+<!-- Generated by javadoc on Wed Aug 22 13:22:47 PDT 2012-->
 <TITLE>
 Generated Documentation (Untitled)
 </TITLE>
diff --git a/docs/html/guide/google/gcm/client-javadoc/overview-tree.html b/docs/html/guide/google/gcm/client-javadoc/overview-tree.html
index c9076f1..392f3e0 100644
--- a/docs/html/guide/google/gcm/client-javadoc/overview-tree.html
+++ b/docs/html/guide/google/gcm/client-javadoc/overview-tree.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:13:37 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 22 13:22:47 PDT 2012 -->
 <TITLE>
 Class Hierarchy
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-22">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/gcm.jd b/docs/html/guide/google/gcm/gcm.jd
index 79edb9f..c6f1a4e 100644
--- a/docs/html/guide/google/gcm/gcm.jd
+++ b/docs/html/guide/google/gcm/gcm.jd
@@ -56,10 +56,16 @@
 </div>
 </div>
 
-<p>Google Cloud Messaging for Android (GCM) is a service that helps
-developers  send data from servers to their Android applications on  Android devices. This could be a lightweight message telling the Android application that there is new data to be fetched from the server (for instance, a movie uploaded by a friend), or it could be a message containing up to 4kb of payload data (so apps like instant messaging can consume the message directly). The GCM service handles all aspects  of queueing of
-  messages and delivery to the target Android application running  on the target
-  device.</p>
+<p>Google Cloud Messaging for Android (GCM) is a free service that helps
+developers  send data from servers to their Android applications on  Android
+devices. This could be a lightweight message telling the Android application
+that there is new data to be fetched from the server (for instance, a movie
+uploaded by a friend), or it could be a message containing up to 4kb of payload
+data (so apps like instant messaging can consume the message directly). The GCM
+service handles all aspects  of queueing of messages and delivery to the target
+Android application running  on the target device.</p>
+  
+  
 <p class="note"> To jump right into using GCM with your Android
   applications, see the instructions in <a href="gs.html">Getting Started</a>.</p>
 
@@ -203,7 +209,7 @@
 <p>The registration ID lasts until the Android application explicitly unregisters
 itself, or until Google refreshes the registration ID for your Android application.</p>
 
-<p class="note"><strong>Note:</strong> When users uninstall an application, it is not automatically unregistered on GCM. It is only  unregistered when the GCM server tries to send a message to the device and the device answers that the application is uninstalled. At that point, you server should mark the device as unregistered (the server will receive a <code><a href="#unreg_device">NotRegistered</a></code> error).
+<p class="note"><strong>Note:</strong> When users uninstall an application, it is not automatically unregistered on GCM. It is only  unregistered when the GCM server tries to send a message to the device and the device answers that the application is uninstalled or it does not have a broadcast receiver configured to receive <code>com.google.android.c2dm.intent.RECEIVE</code> intents. At that point, you server should mark the device as unregistered (the server will receive a <code><a href="#unreg_device">NotRegistered</a></code> error).
   <p>
 Note that it might take a few minutes for the registration ID to be completed removed from the GCM server. So if the 3rd party server sends a message during this time, it will get a valid message ID, even though the message will not be delivered to the device.</p>
 </p>
@@ -545,7 +551,8 @@
 <p>The <code>com.google.android.c2dm.intent.RECEIVE</code> intent is used by GCM to 
 deliver the messages sent by the 3rd-party server to the application running in the device.
 If the server included key-pair values in the <code>data</code> parameter, they are available as 
-extras in this intent, with the keys being the extra names.
+extras in this intent, with the keys being the extra names. GCM also includes an  extra called 
+<code>from</code> which contains the sender ID as an string, and another called <code>collapse_key</code> containing the collapse key (when in use).
 
 <p>Here is an example, again using the <code>MyIntentReceiver</code> class:</p>
 
@@ -646,13 +653,14 @@
 client. This is intended to avoid sending too many messages to the phone when it
 comes back online. Note that since there is no guarantee of the order in which
 messages get sent, the &quot;last&quot; message may not actually be the last
-message sent by the application server. See <a href="adv.html#collapsible">Advanced Topics</a> for more discussion of this topic. Optional, unless you are using the <code>time_to_live</code> parameter&mdash;in that case, you must also specify a <code>collapse_key</code>.</td>
+message sent by the application server. See <a href="adv.html#collapsible">Advanced Topics</a> for more discussion of this topic. Optional.</td>
   </tr>
   <tr>
     <td><code>data</code></td>
     <td>A JSON object whose fields represents the key-value pairs of the message's payload data. If present, the payload data it will be
-included in the Intent as application data, with the key being the extra's name. For instance, <code>"data":{"score":"3x1"}</code> would result in an intent extra named <code>score</code> whose value is the string <code>3x1</code>
-There is no limit on the number of key/value pairs, though there is a limit on the total size of the message. Optional.</td>
+included in the Intent as application data, with the key being the extra's name. For instance, <code>"data":{"score":"3x1"}</code> would result in an intent extra named <code>score</code> whose value is the string <code>3x1</code>. 
+There is no limit on the number of key/value pairs, though there is a limit on the total size of the message (4kb). The values could be any JSON object, but we recommend using strings, since the values will be converted to strings in the GCM server anyway. If you want to include objects or other non-string data types (such as integers or booleans), you have to do the conversion to string yourself. Also note that the key cannot be a reserved word (<code>from</code> or any word starting with <code>google.</code>). To complicate things slightly, there are some reserved words (such as <code>collapse_key</code>) that are technically allowed in payload data. However, if the request also contains the word, the value in the request will overwrite the value in the payload data. Hence using words that are defined as field names in this table is not recommended, even in cases where they are technically allowed. Optional.</td>
+
   </tr>
   <tr>
     <td><code>delay_while_idle</code></td>
@@ -663,7 +671,7 @@
   </tr>
   <tr>
     <td><code>time_to_live</code></td>
-    <td>How long (in seconds) the message should be kept on GCM storage if the device is offline. Optional (default time-to-live is 4 weeks, and must be set as a JSON number). If you use this parameter, you must also specify a <code>collapse_key</code>.</td>
+    <td>How long (in seconds) the message should be kept on GCM storage if the device is offline. Optional (default time-to-live is 4 weeks, and must be set as a JSON number).</td>
   </tr>
 </table>
 
@@ -683,7 +691,8 @@
   </tr>
   <tr>
     <td><code>data.&lt;key&gt;</code></td>
-    <td>Payload data, expressed as parameters prefixed with <code>data.</code> and suffixed as the key. For instance, a parameter of <code>data.score=3x1</code> would result in an intent extra named <code>score</code> whose value is the string <code>3x1</code>. There is no limit on the number of key/value parameters, though there is a limit on the total size of the  message. Optional.</td>
+    <td>Payload data, expressed as parameters prefixed with <code>data.</code> and suffixed as the key. For instance, a parameter of <code>data.score=3x1</code> would result in an intent extra named <code>score</code> whose value is the string <code>3x1</code>. There is no limit on the number of key/value parameters, though there is a limit on the total size of the  message. Also note that the key cannot be a reserved word (<code>from</code> or any word starting with 
+<code>google.</code>). To complicate things slightly, there are some reserved words (such as <code>collapse_key</code>) that are technically allowed in payload data. However, if the request also contains the word, the value in the request will overwrite the value in the payload data. Hence using words that are defined as field names in this table is not recommended, even in cases where they are technically allowed. Optional.</td>
   </tr>
   <tr>
     <td><code>delay_while_idle</code></td>
@@ -695,7 +704,7 @@
   </tr>
 </table>
 
-
+<p>If you want to test your request (either JSON or plain text) without delivering the message to the devices, you can set an optional HTTP parameter called <code>dry_run</code> with the value <code>true</code>. The result will be almost identical to running the request without this parameter, except that the message will not be delivered to the devices. Consequently, the response will contain fake IDs for the message and multicast fields (see <a href="#response">Response format</a>).</p>
 
   <h4 id="example-requests">Example requests</h4>
   <p>Here is the smallest possible request (a message without any parameters and just one recipient) using JSON:</p>
@@ -814,7 +823,7 @@
   <li>Otherwise, get the value of <code>error</code>:
     <ul>
       <li>If it is <code>Unavailable</code>, you could retry to send it in another request.</li>
-      <li>If it is <code>NotRegistered</code>, you should remove the registration ID from your server database because the application was uninstalled from the device.</li>
+      <li>If it is <code>NotRegistered</code>, you should remove the registration ID from your server database because the application was uninstalled from the device or it does not have a broadcast receiver configured to receive <code>com.google.android.c2dm.intent.RECEIVE</code> intents.</li>
       <li>Otherwise, there is something wrong in the registration ID passed in the request; it is probably a non-recoverable error that will also require removing the registration from the server database. See <a href="#error_codes">Interpreting an error response</a> for all possible error values.</li>
     </ul>
   </li>
@@ -848,6 +857,7 @@
 <dt id="invalid_reg"><strong>Invalid Registration ID</strong></dt>
 <dd>Check the formatting of the registration ID that you pass to the server. Make sure it matches the registration ID the phone receives in the <code>com.google.android.c2dm.intent.REGISTRATION</code> intent and that you're not truncating it or adding additional characters. 
 <br/>Happens when error code is <code>InvalidRegistration</code>.</dd>
+
 <dt id="mismatched_sender"><strong>Mismatched Sender</strong></dt>
 <dd>A registration ID is tied to a certain group of senders. When an application registers for GCM usage, it must specify which senders are allowed to send messages. Make sure you're using one of those when trying to send messages to the device. If you switch to a different sender, the existing registration IDs won't work. 
 Happens when error code is <code>MismatchSenderId</code>.</dd>
@@ -858,15 +868,21 @@
   <li>If the application manually unregisters by issuing a <span class="prettyprint pretty-java"><code>com.google.android.c2dm.intent.UNREGISTER</code></span><code> </code>intent.</li>
   <li>If the application is automatically unregistered, which can happen (but is not guaranteed) if the user uninstalls the application.</li>
   <li>If the registration ID expires. Google might decide to refresh registration IDs. </li>
+  <li>If the application is updated but the new version does not have a broadcast receiver configured to receive <code>com.google.android.c2dm.intent.RECEIVE</code> intents.</li>
 </ul>
 For all these cases, you should remove this registration ID from the 3rd-party server and stop using it to send 
 messages. 
 <br/>Happens when error code is <code>NotRegistered</code>.</dd>
 
-  <dt id="big_msg"><strong>Message Too Big</strong></dt>
+<dt id="big_msg"><strong>Message Too Big</strong></dt>
   <dd>The total size of the payload data that is included in a message can't exceed 4096 bytes. Note that this includes both the size of the keys as well as the values. 
 <br/>Happens when error code is <code>MessageTooBig</code>.</dd>
 
+<dt id="invalid_datakey"><strong>Invalid Data Key</strong></dt>
+<dd>The payload data contains a key (such as <code>from</code> or any value prefixed by <code>google.</code>) that is used internally by GCM in the  <code>com.google.android.c2dm.intent.RECEIVE</code> Intent and cannot be used. Note that some words (such as <code>collapse_key</code>) are also used by GCM but are allowed in the payload, in which case the payload value will be overridden by the GCM value. 
+<br />
+Happens when the error code is <code>InvalidDataKey</code>.</dd>
+
 <dt id="ttl_error"><strong>Invalid Time To Live</strong></dt>
   <dd>The value for the Time to Live field must be an integer representing a duration in seconds between 0 and 2,419,200 (4 weeks). Happens when error code is <code>InvalidTtl</code>.
 </dd>
@@ -879,8 +895,22 @@
 <li>Request originated from a server not whitelisted in the Server Key IPs.</li>
 
 </ul>
-Check that the token you're sending inside the <code>Authorization</code> header is the correct API key associated with your project.<br/>
+Check that the token you're sending inside the <code>Authorization</code> header is the correct API key associated with your project. You can check the validity of your API key by running the following command:<br/>
 
+
+<pre># api_key=YOUR_API_KEY
+
+# curl --header "Authorization: key=$api_key" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send  -d "{\"registration_ids\":[\"ABC\"]}"</pre>
+
+
+
+If you receive a 401 HTTP status code, your API key is not valid. Otherwise you should see something like this:<br/>
+
+<pre>
+{"multicast_id":6782339717028231855,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}
+</pre>
+If you want to confirm the validity of a registration ID, you can do so by replacing "ABC" with the registration ID.
+<br/>
 Happens when the HTTP status code is 401.
 
   <dt id="timeout"><strong>Timeout</strong></dt>
@@ -974,7 +1004,7 @@
 
 <p>To view  statistics and any error messages for your GCM applications:</p>
 <ol>
-  <li> Go to <code><a href="http://play.google.com/apps/publish">play.google.com/apps/publish</a></code>.</li>
+  <li> Go to the <code><a href="http://play.google.com/apps/publish">Android Developer Console</a></code>.</li>
   <li>Login with your developer account. 
   <p>You will see a page that has a list of all of your apps.</p></li>
   <li> Click on the &quot;statistics&quot; link next to the app for which you want to view GCM stats. 
@@ -982,6 +1012,8 @@
   <li>Go to the drop-down menu and select the GCM metric you want to view. 
   </li>
 </ol>
+<p class="note"><strong>Note:</strong> Stats on the Google API Console are not enabled for GCM. You must use the <a href="http://play.google.com/apps/publish">Android Developer Console</a>.</p>
+
 <h2 id="example">Examples</h2>
 <p>See the <a href="demo.html">GCM Demo Application</a> document.</p>
 
diff --git a/docs/html/guide/google/gcm/gs.jd b/docs/html/guide/google/gcm/gs.jd
index 6f8598f..93eb794 100644
--- a/docs/html/guide/google/gcm/gs.jd
+++ b/docs/html/guide/google/gcm/gs.jd
@@ -138,8 +138,14 @@
 
 </ol>
 <p>This intent service will be called by the <code>GCMBroadcastReceiver</code> (which is is provided by GCM library), as shown in the next step. It must be a subclass of <code>com.google.android.gcm.GCMBaseIntentService</code>, must contain a public constructor, and should be named <code>my_app_package.GCMIntentService</code> (unless you use a subclass of <code>GCMBroadcastReceiver</code> that overrides the method used to name the service).</p>
-<h4><br>
-  Step 3: Write the my_app_package.GCMIntentService class</h4>
+
+<p>The intent service must also define its sender ID(s). It does this as follows:</p>
+<ul>
+  <li>If the value is static, the service's default constructor should call <code>super(senderIds)</code>.</li>
+  <li>If the value is dynamic, the service should override the <code>getSenderIds()</code> method.</li>
+</ul>
+
+<h4>Step 3: Write the my_app_package.GCMIntentService class</h4>
 <p>Next write the <code>my_app_package.GCMIntentService</code> class, overriding the following callback methods (which are called by <code>GCMBroadcastReceiver</code>):<br>
 </p>
 <ul>
diff --git a/docs/html/guide/google/gcm/index.jd b/docs/html/guide/google/gcm/index.jd
index 140b076..8079eba 100644
--- a/docs/html/guide/google/gcm/index.jd
+++ b/docs/html/guide/google/gcm/index.jd
@@ -5,6 +5,8 @@
 <p><img src="{@docRoot}images/gcm/gcm-logo.png" /></p>
 <p>Google Cloud Messaging for Android (GCM) is a service that helps developers send data from servers to their Android applications on Android devices. This could be a lightweight message telling the Android application that there is new data to be fetched from the server (for instance, a movie uploaded by a friend), or it could be a message containing up to 4kb of payload data (so apps like instant messaging can consume the message directly). The GCM service handles all aspects of queueing of messages and delivery to the target Android application running on the target device.</p>
 
+<p>GCM is completely free no matter how big your messaging needs are, and there are no quotas.</p>
+
 <p>To learn more about GCM, you can join the <a href="https://groups.google.com/forum/?fromgroups#!forum/android-gcm">android-gcm group</a> and read the following documents:</p>
 
 <dl>
diff --git a/docs/html/guide/google/gcm/server-javadoc/allclasses-frame.html b/docs/html/guide/google/gcm/server-javadoc/allclasses-frame.html
index cf7dc28..80ee784 100644
--- a/docs/html/guide/google/gcm/server-javadoc/allclasses-frame.html
+++ b/docs/html/guide/google/gcm/server-javadoc/allclasses-frame.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:10 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 All Classes
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/server-javadoc/allclasses-noframe.html b/docs/html/guide/google/gcm/server-javadoc/allclasses-noframe.html
index 299085c..966598d 100644
--- a/docs/html/guide/google/gcm/server-javadoc/allclasses-noframe.html
+++ b/docs/html/guide/google/gcm/server-javadoc/allclasses-noframe.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:10 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 All Classes
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Constants.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Constants.html
index 7384dfd..515bba4 100644
--- a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Constants.html
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Constants.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:09 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 Constants
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/InvalidRequestException.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/InvalidRequestException.html
index 56de783..bb0974c 100644
--- a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/InvalidRequestException.html
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/InvalidRequestException.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:10 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 InvalidRequestException
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.Builder.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.Builder.html
index 7d5110c..c2ee648 100644
--- a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.Builder.html
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.Builder.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:10 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 Message.Builder
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.html
index 37a8a74..5dbd262 100644
--- a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.html
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:10 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 Message
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/MulticastResult.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/MulticastResult.html
index 21752ca..0721488 100644
--- a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/MulticastResult.html
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/MulticastResult.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:10 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 MulticastResult
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Result.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Result.html
index 512b8f5..a4aad29 100644
--- a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Result.html
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Result.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:10 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 Result
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Sender.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Sender.html
index 5224e15..fabda98 100644
--- a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Sender.html
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Sender.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:10 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 Sender
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../default.css" TITLE="Style">
 
@@ -591,6 +591,8 @@
 
  <p>
  If the stream ends in a newline character, it will be stripped.
+ <p>
+ If the stream is null, returns an empty string.
 <P>
 <DD><DL>
 
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-frame.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-frame.html
index 9f099b3..1bc4fd9 100644
--- a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-frame.html
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-frame.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:10 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 com.google.android.gcm.server
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-summary.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-summary.html
index eddcca1..de791c7 100644
--- a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-summary.html
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-summary.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:10 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 com.google.android.gcm.server
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-tree.html b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-tree.html
index d3d1c43..d509312 100644
--- a/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-tree.html
+++ b/docs/html/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-tree.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:10 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 com.google.android.gcm.server Class Hierarchy
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/server-javadoc/constant-values.html b/docs/html/guide/google/gcm/server-javadoc/constant-values.html
index 66df664..68db1cb 100644
--- a/docs/html/guide/google/gcm/server-javadoc/constant-values.html
+++ b/docs/html/guide/google/gcm/server-javadoc/constant-values.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:10 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 Constant Field Values
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/server-javadoc/default.css b/docs/html/guide/google/gcm/server-javadoc/default.css
index 2513e69..7c395c7 100644
--- a/docs/html/guide/google/gcm/server-javadoc/default.css
+++ b/docs/html/guide/google/gcm/server-javadoc/default.css
@@ -530,12 +530,12 @@
 }
 .design ol {
   counter-reset: item; }
-  .design ol li {
+  .design ol>li {
     font-size: 14px;
     line-height: 20px;
     list-style-type: none;
     position: relative; }
-    .design ol li:before {
+    .design ol>li:before {
       content: counter(item) ". ";
       counter-increment: item;
       position: absolute;
@@ -561,16 +561,18 @@
       content: "9. "; }
     .design ol li.value-10:before {
       content: "10. "; }
-.design .with-callouts ol li {
+.design .with-callouts ol>li {
   list-style-position: inside;
   margin-left: 0; }
-  .design .with-callouts ol li:before {
+  .design .with-callouts ol>li:before {
     display: inline;
     left: -20px;
     float: left;
     width: 17px;
     color: #33b5e5;
     font-weight: 500; }
+.design .with-callouts ul>li {
+  list-style-position: outside; }
 
 /* special list items */
 li.no-bullet {
@@ -1079,22 +1081,71 @@
    Print Only
    ========================================================================== */
 @media print {
-a {
-    color: inherit;
-}
-.nav-x, .nav-y {
-    display: none;
-}
-.str { color: #060; }
-.kwd { color: #006; font-weight: bold; }
-.com { color: #600; font-style: italic; }
-.typ { color: #404; font-weight: bold; }
-.lit { color: #044; }
-.pun { color: #440; }
-.pln { color: #000; }
-.tag { color: #006; font-weight: bold; }
-.atn { color: #404; }
-.atv { color: #060; }
+  /* configure printed page */
+  @page {
+      margin: 0.75in 1in;
+      widows: 4;
+      orphans: 4;
+  }
+
+  /* reset spacing metrics */
+  html, body, .wrap {
+      margin: 0 !important;
+      padding: 0 !important;
+      width: auto !important;
+  }
+
+  /* leave enough space on the left for bullets */
+  body {
+      padding-left: 20px !important;
+  }
+  #doc-col {
+      margin-left: 0;
+  }
+
+  /* hide a bunch of non-content elements */
+  #header, #footer, #nav-x, #side-nav,
+  .training-nav-top, .training-nav-bottom,
+  #doc-col .content-footer,
+  .nav-x, .nav-y,
+  .paging-links,
+  a.totop {
+      display: none !important;
+  }
+
+  /* remove extra space above page titles */
+  #doc-col .content-header {
+      margin-top: 0;
+  }
+
+  /* bump up spacing above subheadings */
+  h2 {
+      margin-top: 40px !important;
+  }
+
+  /* print link URLs where possible and give links default text color */
+  p a:after {
+      content: " (" attr(href) ")";
+      font-size: 80%;
+  }
+  p a {
+      word-wrap: break-word;
+  }
+  a {
+      color: inherit;
+  }
+
+  /* syntax highlighting rules */
+  .str { color: #060; }
+  .kwd { color: #006; font-weight: bold; }
+  .com { color: #600; font-style: italic; }
+  .typ { color: #404; font-weight: bold; }
+  .lit { color: #044; }
+  .pun { color: #440; }
+  .pln { color: #000; }
+  .tag { color: #006; font-weight: bold; }
+  .atn { color: #404; }
+  .atv { color: #060; }
 }
 
 /* =============================================================================
@@ -2033,8 +2084,11 @@
 #jd-content img.toggle-content-img {
   margin:0 5px 5px 0;
 }
-div.toggle-content > p {
-  padding:0 0 5px;
+div.toggle-content p {
+  margin:10px 0 0;
+}
+div.toggle-content-toggleme {
+  padding:0 0 0 15px;
 }
 
 
@@ -2145,14 +2199,9 @@
 
 .nolist {
   list-style:none;
-  padding:0;
-  margin:0 0 1em 1em;
+  margin-left:0;
 }
 
-.nolist li {
-  padding:0 0 2px;
-  margin:0;
-}
 
 pre.classic {
   background-color:transparent;
@@ -2180,6 +2229,12 @@
   color:#666;
 }
 
+div.note, 
+div.caution, 
+div.warning {
+  margin: 0 0 15px;
+}
+
 p.note, div.note, 
 p.caution, div.caution, 
 p.warning, div.warning {
@@ -2898,10 +2953,6 @@
 
 /* SEARCH RESULTS */
 
-/* disable twiddle and size selectors for left column */
-#leftSearchControl div {
-  padding:0;
-}
 
 #leftSearchControl .gsc-twiddle {
   background-image : none;
@@ -3475,7 +3526,7 @@
 
 .morehover:hover {
   opacity:1;
-  height:345px;
+  height:385px;
   width:268px;
   -webkit-transition-property:height,  -webkit-opacity;
 }
@@ -3489,7 +3540,7 @@
 .morehover .mid {
   width:228px;
   background:url(../images/more_mid.png) repeat-y;
-  padding:10px 20px 10px 20px;
+  padding:10px 20px 0 20px;
 }
 
 .morehover .mid .header {
@@ -3598,15 +3649,19 @@
   padding-top: 14px;
 }
 
+#nav-x .wrap {
+  min-height:34px;
+}
+
 #nav-x .wrap,
 #searchResults.wrap {
     max-width:940px;
     border-bottom:1px solid #CCC;
-    min-height:34px;
-    
 }
 
-
+#searchResults.wrap #leftSearchControl {
+  min-height:700px
+}
 .nav-x {
     margin-left:0;
     margin-bottom:0;
@@ -3762,7 +3817,8 @@
   height: 300px;
 }
 .slideshow-develop img.play {
-  width:350px;
+  max-width:350px;
+  max-height:240px;
   margin:20px 0 0 90px;
   -webkit-transform: perspective(800px ) rotateY( 35deg );
   box-shadow: -16px 20px 40px rgba(0, 0, 0, 0.3);
@@ -3817,6 +3873,7 @@
 .feed .feed-nav li {
   list-style: none;
   float: left;
+  height: 21px; /* +4px bottom border = 25px; same as .feed-nav */
   margin-right: 25px;
   cursor: pointer;
 }
@@ -3969,21 +4026,24 @@
 .landing-docs {
   margin:20px 0 0;
 }
-.landing-banner {
-  height:280px;
-}
 .landing-banner .col-6:first-child,
-.landing-docs .col-6:first-child {
+.landing-docs .col-6:first-child,
+.landing-docs .col-12 {
   margin-left:0;
+  min-height:280px;
 }
 .landing-banner .col-6:last-child,
-.landing-docs .col-6:last-child {
+.landing-docs .col-6:last-child,
+.landing-docs .col-12 {
   margin-right:0;
 }
 
 .landing-banner h1 {
   margin-top:0;
 }
+.landing-docs {
+  clear:left;
+}
 .landing-docs h3 {
   font-size:14px;
   line-height:21px;
@@ -4002,4 +4062,99 @@
 
 .plusone {
   float:right;
-}
\ No newline at end of file
+}
+
+
+
+/************* HOME/LANDING PAGE *****************/
+
+.slideshow-home {
+  height: 500px;
+  width: 940px;
+  border-bottom: 1px solid #CCC;
+  position: relative;
+  margin: 0;
+}
+.slideshow-home .frame {
+  width: 940px;
+  height: 500px;
+}
+.slideshow-home .content-left {
+  float: left;
+  text-align: center;
+  vertical-align: center;
+  margin: 0 0 0 35px;
+}
+.slideshow-home .content-right {
+  margin: 80px 0 0 0;
+}
+.slideshow-home .content-right p {
+  margin-bottom: 10px;
+}
+.slideshow-home .content-right p:last-child {
+  margin-top: 15px;
+}
+.slideshow-home .content-right h1 {
+  padding:0;
+}
+.slideshow-home .item {
+  height: 500px;
+  width: 940px;
+}
+.home-sections {
+  padding: 30px 20px 20px;
+  margin: 20px 0;
+  background: -webkit-linear-gradient(top, #F6F6F6,#F9F9F9);
+}
+.home-sections ul {
+  margin: 0;
+}
+.home-sections ul li {
+  float: left;
+  display: block;
+  list-style: none;
+  width: 170px;
+  height: 35px;
+  border: 1px solid #ccc;
+  background: white;
+  margin-right: 10px;
+  border-radius: 1px;
+  -webkit-border-radius: 1px;
+  -moz-border-radius: 1px;
+  box-shadow: 1px 1px 5px #EEE;
+  -webkit-box-shadow: 1px 1px 5px #EEE;
+  -moz-box-shadow: 1px 1px 5px #EEE;
+  background: white;
+}
+.home-sections ul li:hover {
+  background: #F9F9F9;
+  border: 1px solid #CCC;
+}
+.home-sections ul li a,
+.home-sections ul li a:hover {
+  font-weight: bold;
+  margin-top: 8px;
+  line-height: 18px;
+  float: left;
+  width: 100%;
+  text-align: center;
+  color: #09c !important;
+}
+.home-sections ul li a {
+  font-weight: bold;
+  margin-top: 8px;
+  line-height: 18px;
+  float: left;
+  width:100%;
+  text-align:center;
+}
+.home-sections ul li img {
+  float: left;
+  margin: -8px 0 0 10px;
+}
+.home-sections ul li.last {
+  margin-right: 0px;
+}
+.fullpage #footer {
+  margin-top: -40px;
+}
diff --git a/docs/html/guide/google/gcm/server-javadoc/deprecated-list.html b/docs/html/guide/google/gcm/server-javadoc/deprecated-list.html
index 729b2bf..04b9aa5 100644
--- a/docs/html/guide/google/gcm/server-javadoc/deprecated-list.html
+++ b/docs/html/guide/google/gcm/server-javadoc/deprecated-list.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:10 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 Deprecated List
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/server-javadoc/help-doc.html b/docs/html/guide/google/gcm/server-javadoc/help-doc.html
index 7f5286c..c479cff 100644
--- a/docs/html/guide/google/gcm/server-javadoc/help-doc.html
+++ b/docs/html/guide/google/gcm/server-javadoc/help-doc.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:10 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 API Help
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/server-javadoc/index-all.html b/docs/html/guide/google/gcm/server-javadoc/index-all.html
index 0b095ec..97aa300 100644
--- a/docs/html/guide/google/gcm/server-javadoc/index-all.html
+++ b/docs/html/guide/google/gcm/server-javadoc/index-all.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:10 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 Index
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="./default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/server-javadoc/index.html b/docs/html/guide/google/gcm/server-javadoc/index.html
index d8ba0ef..d3c3821 100644
--- a/docs/html/guide/google/gcm/server-javadoc/index.html
+++ b/docs/html/guide/google/gcm/server-javadoc/index.html
@@ -2,7 +2,7 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc on Mon Jul 16 14:12:10 PDT 2012-->
+<!-- Generated by javadoc on Wed Aug 29 14:55:34 PDT 2012-->
 <TITLE>
 Generated Documentation (Untitled)
 </TITLE>
diff --git a/docs/html/guide/google/gcm/server-javadoc/overview-tree.html b/docs/html/guide/google/gcm/server-javadoc/overview-tree.html
index b8e28ad..c9afea6 100644
--- a/docs/html/guide/google/gcm/server-javadoc/overview-tree.html
+++ b/docs/html/guide/google/gcm/server-javadoc/overview-tree.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:10 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 Class Hierarchy
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/gcm/server-javadoc/serialized-form.html b/docs/html/guide/google/gcm/server-javadoc/serialized-form.html
index 7a1378f..ab99e41 100644
--- a/docs/html/guide/google/gcm/server-javadoc/serialized-form.html
+++ b/docs/html/guide/google/gcm/server-javadoc/serialized-form.html
@@ -2,12 +2,12 @@
 <!--NewPage-->
 <HTML>
 <HEAD>
-<!-- Generated by javadoc (build 1.6.0_26) on Mon Jul 16 14:12:10 PDT 2012 -->
+<!-- Generated by javadoc (build 1.6.0_26) on Wed Aug 29 14:55:34 PDT 2012 -->
 <TITLE>
 Serialized Form
 </TITLE>
 
-<META NAME="date" CONTENT="2012-07-16">
+<META NAME="date" CONTENT="2012-08-29">
 
 <LINK REL ="stylesheet" TYPE="text/css" HREF="default.css" TITLE="Style">
 
diff --git a/docs/html/guide/google/play/billing/billing_best_practices.jd b/docs/html/guide/google/play/billing/billing_best_practices.jd
index 49d2a29..850c661 100755
--- a/docs/html/guide/google/play/billing/billing_best_practices.jd
+++ b/docs/html/guide/google/play/billing/billing_best_practices.jd
@@ -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/tools/proguard.html">Proguard</a> on your
+href="{@docRoot}tools/help/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/google/play/billing/billing_subscriptions.jd b/docs/html/guide/google/play/billing/billing_subscriptions.jd
index ae12951..68eda196 100755
--- a/docs/html/guide/google/play/billing/billing_subscriptions.jd
+++ b/docs/html/guide/google/play/billing/billing_subscriptions.jd
@@ -12,6 +12,7 @@
         <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="#trials">Free trial period</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>
@@ -94,8 +95,10 @@
 <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
+products and add them to a product list, then set a price and optional trial
+period for each, choose a billing interval (monthly or annual), and then publish.</p>
+
+<p>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
@@ -145,6 +148,7 @@
     <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>You can offer a configurable trial period for any subscription. <span class="new" style="font-size:.78em;">New!</span></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
@@ -251,6 +255,41 @@
 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="trials">Free Trial Period</h3>
+
+<p>For any subscription, you can set up a free trial period that lets users
+try your subscription content before buying it. The trial period
+runs for the period of time that you set and then automatically converts to a full subscription
+managed according to the subscription's billing interval and price.</p>
+
+<p>To take advantage of a free trial, a user must "purchase" the full
+subscription through the standard In-app Billing flow, providing a valid form of
+payment to use for billing and completing the normal purchase transaction.
+However, the user is not charged any money, since the initial period corresponds
+to the free trial. Instead, Google Play records a transaction of $0.00 and the
+subscription is marked as purchased for the duration of the trial period or
+until cancellation. When the transaction is complete, Google Play notifies users
+by email that they have purchased a subscription that includes a free trial
+period and that the initial charge was $0.00. </p>
+
+<p>When the trial period ends, Google Play automatically initiates billing
+against the credit card that the user provided during the initial purchase, at the amount set
+for the full subscription, and continuing at the subscription interval. If
+necessary, the user can cancel the subscription at any time during the trial
+period. In this case, Google Play <em>marks the subscription as expired immediately</em>,
+rather than waiting until the end of the trial period. The user has not
+paid for the trial period and so is not entitled to continued access after
+cancellation.</p>
+
+<p>You can set up a trial period for a subscription in the Developer Console,
+without needing to modify or update your APK. Just locate and edit the
+subscription in your product list, set a valid number of days for the trial
+(must be 7 days or longer), and publish. You can change the period any time,
+although note that Google Play does not apply the change to users who have
+already "purchased" a trial period for the subscription. Only new subscription
+purchases will use the updated trial period. You can create one free trial
+period per subscription product.</p>
+
 <h3 id="cancellation">Subscription cancellation</h3>
 
 <p>Users can view the status of all of their subscriptions and cancel them if
diff --git a/docs/html/guide/google/play/billing/index.jd b/docs/html/guide/google/play/billing/index.jd
index a33b199..134140d 100755
--- a/docs/html/guide/google/play/billing/index.jd
+++ b/docs/html/guide/google/play/billing/index.jd
@@ -42,10 +42,8 @@
 
 <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>
+  <p><strong>Free trials for subscriptions</strong> <span class="new" style="font-size:.78em;">New!</span></p>
+  <p>You can now offer users a configurable <a href="{@docRoot}guide/google/play/billing/billing_subscriptions.html#trials">free trial period</a> for your in-app subscriptions. You can set up trials with a simple change in the Developer Console&mdash;no change to your app code is needed. 
 </div>
 </div>
 
diff --git a/docs/html/guide/google/play/expansion-files.jd b/docs/html/guide/google/play/expansion-files.jd
index 62ca1e2..750e958 100644
--- a/docs/html/guide/google/play/expansion-files.jd
+++ b/docs/html/guide/google/play/expansion-files.jd
@@ -262,7 +262,7 @@
 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
+during the download, we recommend you use the <a href="#AboutLibraries">Downloader
 Library</a> to implement your download behavior.</p>
     <p>If you build your own download service instead of using the library, be aware that you
 must not change the name of the expansion files and must save them to the proper
diff --git a/docs/html/guide/google/play/licensing/adding-licensing.jd b/docs/html/guide/google/play/licensing/adding-licensing.jd
index 49375c2..4a45de3 100644
--- a/docs/html/guide/google/play/licensing/adding-licensing.jd
+++ b/docs/html/guide/google/play/licensing/adding-licensing.jd
@@ -699,7 +699,7 @@
 retryable. For a list of such errors, see <a
 href="{@docRoot}guide/google/play/licensing/licensing-reference.html#server-response-codes">Server
 Response Codes</a> in the <a
-href="guide/google/play/licensing/licensing-reference.html">Licensing Reference</a>. You can implement
+href="{@docRoot}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>
 
diff --git a/docs/html/guide/google/play/publishing/multiple-apks.jd b/docs/html/guide/google/play/publishing/multiple-apks.jd
index e41817e..0619dfc 100644
--- a/docs/html/guide/google/play/publishing/multiple-apks.jd
+++ b/docs/html/guide/google/play/publishing/multiple-apks.jd
@@ -9,9 +9,7 @@
   <ul>
     <li>Simultaneously publish different APKs for different
 device configurations</li>
-    <li>Different APKs are distributed to different devices based on filters declared in the
-manifest file</li>
-    <li>You should publish multiple APKs only when it's not possible or reasonable to
+    <li>You should publish multiple APKs only when it's not possible to
 support all desired devices with a single APK</li>
   </ul>
 
@@ -39,16 +37,17 @@
       <li><a href="#TextureOptions">Supporting multiple GL textures</a></li>
       <li><a href="#ScreenOptions">Supporting multiple screens</a></li>
       <li><a href="#ApiLevelOptions">Supporting multiple API levels</a></li>
+      <li><a href="#CpuArchOptions">Supporting multiple CPU architectures</a></li>
     </ol>
   </li>
 </ol>
 
   <h2>See also</h2>
 <ol>
+  <li><a href="{@docRoot}guide/google/play/expansion-files.html">APK Expansion Files</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}tools/extras/support-library.html">Compatibility
-Package</a></li>
+  <li><a href="{@docRoot}tools/extras/support-library.html">Support Library</a></li>
   <li><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Android API Levels</a></li>
 </ol>
 
@@ -76,14 +75,16 @@
 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.</p>
+APK. </p>
 
 <p>By publishing your application with multiple APKs, you can:</p>
 
 <ul>
   <li>Support different OpenGL texture compression formats with each APK.</li>
-  <li>Support different screen configurations with each APK.</li>
+  <li>Support different screen sizes and densities with each APK.</li>
   <li>Support different platform versions with each APK.</li>
+  <li>Support different CPU architectures with each APK (such as for ARM, x86, and MIPS, when your
+  app uses the <a href="{@docRoot}tools/sdk/ndk/index.html">Android NDK</a>).</li>
 </ul>
 
 <p>Currently, these are the only device characteristics that Google Play supports for publishing
@@ -91,7 +92,8 @@
 
 <p class="note"><strong>Note:</strong> You should generally use multiple APKs to support
 different device configurations <strong>only when your APK is too large</strong> (greater than
-50MB). Using a single APK to support different configurations is always the best practice,
+50MB) due to the alternative resources needed for different device configurations.
+Using a single APK to support different configurations is always the best practice,
 because it makes the path for application updates simple and clear for users (and also makes
 your life simpler by avoiding development and publishing complexity). Read the section below about
 <a href="#SingleAPK">Using a Single APK Instead</a> to
@@ -283,14 +285,19 @@
     </ul>
   </div>
   </li>
+
+  <li><strong>CPU architecture (ABI)</strong>
+    <p>This is based on the native libraries included in each APK (which are
+    determined by the architectures you declare in the {@code Application.mk}
+    file) when using the Android NDK.</p></li>
 </ul>
 
 <p>Other manifest elements that enable <a
 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
-other characteristics in the manifest file). For
+you to publish separate APKs based on variations of those device characteristics. Thus, you cannot
+publish multiple APKs if the above listed filters are the same for each APK (but the APKs differ
+based on other characteristics in the manifest or APK). For
 example, you cannot provide different APKs that differ purely on the <a
 href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">{@code
 &lt;uses-configuration&gt;}</a> characteristics.</p>
@@ -349,7 +356,8 @@
 get an update when they receive a system update.</li>
       <li>If you have one APK that's for API level 4 (and above) <em>and</em> small -
 large screens, and another APK for API level 8 (and above) <em>and</em> large - xlarge screens, then
-the version codes <strong>must increase</strong>. In this case, the API level filter is used to
+the version codes <strong>must increase</strong> in correlation with the API levels.
+In this case, the API level filter is used to
 distinguish each APK, but so is the screen size. Because the screen sizes overlap (both APKs
 support large screens), the version codes must still be in order. This ensures that a large screen
 device that receives a system update to API level 8 will receive an update for the second
@@ -360,6 +368,21 @@
 levels. Because there is no overlap within the screen size filter, there are no devices that
 could potentially move between these two APKs, so there's no need for the version codes to
 increase from the lower API level to the higher API level.</li>
+      <li>If you have one APK that's for API level 4 (and above) <em>and</em> ARMv7 CPUs,
+and another APK for API level 8 (and above) <em>and</em> ARMv5TE CPUs,
+then the version codes <strong>must increase</strong> in correlation with the API levels.
+In this case, the API level filter is used to
+distinguish each APK, but so is the CPU architecture. Because an APK with ARMv5TE libraries is
+compatible with devices that have an ARMv7 CPU, the APKs overlap on this characteristic.
+As such, the version code for the APK that supports API level 8 and above must be higher.
+This ensures that a device with an ARMv7 CPU that receives a system update to API level 8
+will receive an update for the second APK that's designed for API level 8.
+However, because this kind of update results in the ARMv7 device using an APK that's not
+fully optimized for that device's CPU, you should provide an
+APK for both the ARMv5TE and the ARMv7 architecture at each API level in order to optimize
+the app performance on each CPU.
+<strong>Note:</strong> This applies <em>only</em> when comparing APKs with the ARMv5TE and
+ARMv7 libraries, and not when comparing other native libraries.</li>
     </ul>
   </li>
 
@@ -384,7 +407,12 @@
 sizes small, normal, and large, while another APK supports sizes large and xlarge, there is an
 overlap, because both APKs support large screens. If you do not resolve this, then devices that
 qualify for both APKs (large screen devices in the example) will receive whichever APK has the
-highest version code.</li>
+highest version code.
+  <p class="note"><strong>Note:</strong> If you're creating separate APKs for different CPU
+  architectures, be aware that an APK for ARMv5TE will overlap with an APK for ARMv7. That is,
+  an APK designed for ARMv5TE is compatible with an ARMv7 device,
+but the reverse is not true (an APK with only the ARMv7 libraries is
+<em>not</em> compatible with an ARMv5TE device).</li>
 </ul>
 
 <p>When such conflicts occur, you will see a warning message, but you can still publish your
@@ -641,3 +669,17 @@
 }
 </pre>
 
+
+<h3 id="CpuArchOptions">Supporting multiple CPU architectures</h3>
+
+<p>When using the Android NDK, you can create a single APK that supports multiple CPU architectures
+by declaring each of the desired architectures with the {@code APP_ABI} variable in the
+<code>Application.mk</code> file.</p>
+
+<p>For example, here's an <code>Application.mk</code> file that declares support for three
+different CPU architectures:</p>
+
+<pre>
+APP_ABI := armeabi armeabi-v7a mips
+APP_PLATFORM := android-9
+</pre>
diff --git a/docs/html/guide/google/play/services.jd b/docs/html/guide/google/play/services.jd
index 519d78b..092642c 100644
--- a/docs/html/guide/google/play/services.jd
+++ b/docs/html/guide/google/play/services.jd
@@ -1,24 +1,25 @@
 page.title=Google Play Services
-
 @jd:body
-
-<p>Google Play services is a platform that is delivered through the Google Play Store that
+<p>
+    Google Play services is a platform that is delivered through the Google Play Store that
     offers integration with Google products, such as Google+, into Android apps.
     The Google Play services framework consists of a services component
-    that runs on the device and a thin client library that you package with your app. </p>
-    
-
+    that runs on the device and a thin client library that you package with your app.
+</p>
 <div class="distribute-features col-13">
-  <ul>
-    <li style="border-top: 1px solid #F80;"><h5>Easy Authentication</h5> Your app can leverage the user's
-    existing Google account on the device without having to go through
-    tedious authentication flows. A few clicks from the user and you're set!
-    <br /> <a href="https://developers.google.com/android/google-play-services">Learn more &raquo;</a>
+<ul>
+    <li style="border-top: 1px solid #F80;"><h5>Easy Authentication</h5>
+    Your app can leverage the user's existing Google account on the device without having to go
+    through tedious authentication flows. A few clicks from the user and you're set!
+    <br/>
+    <a href="https://developers.google.com/android/google-play-services">Learn more &raquo;</a>
  </li>
-    <li style="border-top: 1px solid #F80;"><h5>Google+ Integration</h5> Google Play services makes it
-        easy for your app to integrate with Sign in with Google+, +1 button, and Google+ history.
-    <br /> <a href="https://developers.google.com/android/google-play-services">Learn more &raquo;</a>
-    </li>
-  </ul>
-  
-</div>
\ No newline at end of file
+    <li style="border-top: 1px solid #F80;"><h5>Google+ Integration</h5>
+    Google Play services makes it easy for your app to integrate with Google+ sign-in and the +1
+    button.
+    <br/>
+    <a href="https://developers.google.com/android/google-play-services">Learn more &raquo;</a>
+ </li>
+</ul>
+
+</div>
diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs
index 94b9773..e812ccb 100644
--- a/docs/html/guide/guide_toc.cs
+++ b/docs/html/guide/guide_toc.cs
@@ -8,7 +8,7 @@
 <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>
@@ -197,6 +197,9 @@
       <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/settings.html">
+            <span class="en">Settings</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>
@@ -220,7 +223,7 @@
             <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>
       <li><a href="<?cs var:toroot ?>guide/topics/ui/drag-drop.html">
           <span class="en">Drag and Drop</span>
         </a></li>
@@ -232,6 +235,9 @@
           <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/checklist.html">
+              <span class="en">Accessibility Developer Checklist</span>
+            </a></li>
           <li><a href="<?cs var:toroot ?>guide/topics/ui/accessibility/services.html">
               <span class="en">Building Accessibility Services</span>
             </a></li>
@@ -379,9 +385,9 @@
             </a></li>
         </ul>
       </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>
@@ -416,10 +422,10 @@
             <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>
@@ -436,7 +442,7 @@
             </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>
@@ -454,7 +460,7 @@
       </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>
@@ -472,7 +478,7 @@
             -->
            </ul>
   </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>
@@ -495,7 +501,7 @@
           </a></li>
     </ul>
   </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>
@@ -552,13 +558,13 @@
 
     </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>      
+    <ul>
 
       <li class="nav-section">
         <div class="nav-section-header"><a href="<?cs var:toroot?>guide/google/play/billing/index.html">
@@ -620,7 +626,7 @@
       <li><a href="<?cs var:toroot ?>guide/google/play/expansion-files.html">
           <span class="en">APK Expansion Files</span></a>
       </li>
-      
+
       <li class="nav-section">
         <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/google/gcm/index.html">
           <span class="en">Google Cloud Messaging</span></a>
@@ -646,9 +652,9 @@
 
     </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">
@@ -688,9 +694,9 @@
               </a></div>
           </li>
         </ul>
-      </li> 
+      </li>
         </ul> -->
-        
+
 <!-- Remove
   <li class="nav-section">
     <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/appendix/index.html">
@@ -707,7 +713,7 @@
       <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/appendix/glossary.html">
             <span class="en">Glossary</span>
diff --git a/docs/html/guide/practices/optimizing-for-3.0.jd b/docs/html/guide/practices/optimizing-for-3.0.jd
index 65c5674..0dd92d9 100644
--- a/docs/html/guide/practices/optimizing-for-3.0.jd
+++ b/docs/html/guide/practices/optimizing-for-3.0.jd
@@ -118,7 +118,7 @@
       <li>Samples for SDK API 11</li>
     </ul>
   </li>
-  <li><a href="{@docRoot}guide/developing/other-ide.html#AVD">Create an AVD</a> for a tablet-type
+  <li><a href="{@docRoot}tools/devices/managing-avds.html">Create an AVD</a> for a tablet-type
 device:
   <p>Set the target to "Android 3.0" and the skin to "WXGA" (the default skin).</p></li>
 </ol>
diff --git a/docs/html/guide/practices/security.jd b/docs/html/guide/practices/security.jd
index 48ccdeb..ce59a9d 100644
--- a/docs/html/guide/practices/security.jd
+++ b/docs/html/guide/practices/security.jd
@@ -134,9 +134,8 @@
 
 <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
+application. (For example, a key can be placed in a {@link java.security.KeyStore}
+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
@@ -716,8 +715,7 @@
 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
+{@link java.security.KeyStore} for
 storage.</p>
 
 <a name="Crypto"></a>
@@ -751,8 +749,8 @@
 number generator significantly weakens the strength of the algorithm, and may
 allow offline attacks.</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
+<p>If you need to store a key for repeated use, use a mechanism like
+  {@link java.security.KeyStore} that
 provides a mechanism for long term storage and retrieval of cryptographic
 keys.</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 f6c2247..4529797 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}tools/publishing/publishing.html">publishing
+<p>If you are <a href="{@docRoot}distribute/index.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/samples/index.html b/docs/html/guide/samples/index.html
index f4acdbf..959eaf5 100644
--- a/docs/html/guide/samples/index.html
+++ b/docs/html/guide/samples/index.html
@@ -1,10 +1,10 @@
 <html>
 <head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/resources/browser.html?tag=sample">
+<meta http-equiv="refresh" content="0;url=http://developer.android.com/tools/samples/index.html">
 <title>Redirecting...</title>
 </head>
 <body>
 <p>You should have been redirected. Please <a
-href="http://developer.android.com/resources/browser.html?tag=sample">click here</a>.</p>
+href="http://developer.android.com/tools/samples/index.html">click here</a>.</p>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/html/guide/topics/appwidgets/index.jd b/docs/html/guide/topics/appwidgets/index.jd
index a46f9a7..7e031d9 100644
--- a/docs/html/guide/topics/appwidgets/index.jd
+++ b/docs/html/guide/topics/appwidgets/index.jd
@@ -117,7 +117,7 @@
 application's
 <code>AndroidManifest.xml</code> file. For example:</p>
 
-<pre>
+<pre style="clear:right">
 &lt;receiver android:name="ExampleAppWidgetProvider" >
     &lt;intent-filter>
         &lt;action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
@@ -307,6 +307,7 @@
   <li>{@link android.widget.FrameLayout}</li>
   <li>{@link android.widget.LinearLayout}</li>
   <li>{@link android.widget.RelativeLayout}</li>
+  <li>{@link android.widget.GridLayout}</li>
 </ul>
 
 <p>And the following widget classes:</p>
@@ -327,6 +328,9 @@
 
 <p>Descendants of these classes are not supported.</p>
 
+<p>RemoteViews also supports {@link android.view.ViewStub}, which is an invisible, zero-sized View you can use 
+to lazily inflate layout resources at runtime.</p>
+
 
 <h3 id="AddingMargins">Adding margins to App Widgets</h3>
 
@@ -410,6 +414,25 @@
 done.
     (See <a href="#Configuring">Creating an App Widget Configuration
 Activity</a> below.)</dd> 
+
+<dt>
+  {@link android.appwidget.AppWidgetProvider#onAppWidgetOptionsChanged onAppWidgetOptionsChanged()} 
+</dt>
+<dd>
+This is called when the widget is first placed and any time the widget is resized. You can use this callback to show or hide content based on the widget's size ranges. You get the size ranges by calling {@link android.appwidget.AppWidgetManager#getAppWidgetOptions getAppWidgetOptions()}, which returns a  {@link android.os.Bundle} that includes the following:<br /><br />
+<ul>
+  <li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MIN_WIDTH}&mdash;Contains 
+the lower bound on the current width, in dp units, of a widget instance.</li>
+  <li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MIN_HEIGHT}&mdash;Contains 
+the lower bound on the current height, in dp units, of a widget instance.</li>
+  <li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MAX_WIDTH}&mdash;Contains
+ the upper bound on the current width, in dp units, of a widget instance.</li>
+  <li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MAX_HEIGHT}&mdash;Contains 
+the upper bound on the current width, in dp units, of a widget instance.</li>
+</ul>
+
+This callback was introduced in API Level 16 (Android 4.1). If you implement this callback, make sure that your app doesn't depend on it since it won't be called on older devices.
+</dd>
   <dt>{@link android.appwidget.AppWidgetProvider#onDeleted(Context,int[])}</dt>
     <dd>This is called every time an App Widget is deleted from the App Widget
 host.</dd>
@@ -533,12 +556,13 @@
 to receive the App Widget broadcasts directly, you can implement your own 
 {@link android.content.BroadcastReceiver} or override the 
 {@link android.appwidget.AppWidgetProvider#onReceive(Context,Intent)} callback. 
-The four Intents you need to care about are:</p>
+The Intents you need to care about are as follows:</p>
 <ul>
   <li>{@link android.appwidget.AppWidgetManager#ACTION_APPWIDGET_UPDATE}</li>
   <li>{@link android.appwidget.AppWidgetManager#ACTION_APPWIDGET_DELETED}</li>
   <li>{@link android.appwidget.AppWidgetManager#ACTION_APPWIDGET_ENABLED}</li>
   <li>{@link android.appwidget.AppWidgetManager#ACTION_APPWIDGET_DISABLED}</li>
+  <li>{@link android.appwidget.AppWidgetManager#ACTION_APPWIDGET_OPTIONS_CHANGED}</li>
 </ul>
 
 
@@ -791,8 +815,7 @@
 sample</a>:</p>
 
 <p>
-<img src="{@docRoot}resources/samples/images/StackWidget.png" alt="StackView
-Widget" />
+<img src="{@docRoot}resources/images/StackWidget.png" alt="" />
 </p>
 
 <p>This sample consists of a stack of 10 views, which  display the values
diff --git a/docs/html/guide/topics/data/backup.jd b/docs/html/guide/topics/data/backup.jd
index 602b6e8..598b08a 100644
--- a/docs/html/guide/topics/data/backup.jd
+++ b/docs/html/guide/topics/data/backup.jd
@@ -187,10 +187,7 @@
 available only on devices running API Level 8 (Android 2.2) or greater, so you should also
 set your <a
 href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code android:minSdkVersion}</a>
-attribute to "8". However, if you implement proper <a
-href="{@docRoot}resources/articles/backward-compatibility.html">backward compatibility</a> in
-your application, you can support this feature for devices running API Level 8 or greater, while
-remaining compatible with older devices.</p>
+attribute to "8".</p>
 
 
 
diff --git a/docs/html/guide/topics/data/data-storage.jd b/docs/html/guide/topics/data/data-storage.jd
index e9d2d25..2603a06 100644
--- a/docs/html/guide/topics/data/data-storage.jd
+++ b/docs/html/guide/topics/data/data-storage.jd
@@ -232,7 +232,12 @@
 (non-removable) storage. Files saved to the external storage are world-readable and can
 be modified by the user when they enable USB mass storage to transfer files on a computer.</p>
 
-<p class="caution"><strong>Caution:</strong> External files can disappear if the user mounts the
+<p>It's possible that a device using a partition of the
+internal storage for the external storage may also offer an SD card slot. In this case,
+the SD card is <em>not</em> part of the external storage and your app cannot access it (the extra
+storage is intended only for user-provided media that the system scans).</p>
+
+<p class="caution"><strong>Caution:</strong> External storage can become unavailable if the user mounts the
 external storage on a computer or removes the media, and there's no security enforced upon files you
 save to the external storage. All applications can read and write files placed on the external
 storage and the user can remove them.</p>
diff --git a/docs/html/guide/topics/data/install-location.jd b/docs/html/guide/topics/data/install-location.jd
index 19c4b39..5abdced 100644
--- a/docs/html/guide/topics/data/install-location.jd
+++ b/docs/html/guide/topics/data/install-location.jd
@@ -111,10 +111,7 @@
 <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>
+provide backward compatibility in your code.</p>
 
 
 
@@ -141,17 +138,13 @@
     <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
+    <dd>Your <a href="{@docRoot}guide/topics/text/creating-input-method.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>
+    <dd>Your running <a href="http://android-developers.blogspot.com/2010/02/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
@@ -174,7 +167,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/google/play/licensing.html">Application Licensing</a> instead, your 
+      <a href="{@docRoot}guide/google/play/licensing/index.html">Application Licensing</a> instead, your 
       application <em>can</em> be installed to internal or external storage, including SD cards.</dd>
 </dl>
 
diff --git a/docs/html/guide/topics/graphics/opengl.jd b/docs/html/guide/topics/graphics/opengl.jd
index a9fedb7..6114a4a 100644
--- a/docs/html/guide/topics/graphics/opengl.jd
+++ b/docs/html/guide/topics/graphics/opengl.jd
@@ -84,11 +84,8 @@
     this class by creating an instance of {@link android.opengl.GLSurfaceView} and adding your
     {@link android.opengl.GLSurfaceView.Renderer Renderer} to it. However, if you want to capture
     touch screen events, you should extend the {@link android.opengl.GLSurfaceView} class to
-    implement the touch listeners, as shown in OpenGL Tutorials for
-    <a href="{@docRoot}resources/tutorials/opengl/opengl-es10.html#touch">ES 1.0</a>,
-    <a href="{@docRoot}resources/tutorials/opengl/opengl-es20.html#touch">ES 2.0</a> and the <a
-href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/graphics/TouchRotateActivity.html"
->TouchRotateActivity</a> sample.</dd>
+    implement the touch listeners, as shown in OpenGL training lesson,
+    <a href="{@docRoot}training/graphics/opengl/touch.html">Responding to Touch Events</a>.</dd>
 
   <dt><strong>{@link android.opengl.GLSurfaceView.Renderer}</strong></dt>
   <dd>This interface defines the methods required for drawing graphics in an OpenGL {@link
@@ -164,9 +161,8 @@
   </li>
 </ul>
 
-<p>If you'd like to start building an app with OpenGL right away, have a look at the tutorials for
-<a href="{@docRoot}resources/tutorials/opengl/opengl-es10.html">OpenGL ES 1.0</a> or
-<a href="{@docRoot}resources/tutorials/opengl/opengl-es20.html">OpenGL ES 2.0</a>!
+<p>If you'd like to start building an app with OpenGL right away, follow the
+<a href="{@docRoot}training/graphics/opengl/index.html">Displaying Graphics with OpenGL ES</a> class.
 </p>
 
 <h2 id="manifest">Declaring OpenGL Requirements</h2>
@@ -277,10 +273,6 @@
 </li>
 </ol>
 
-<p>For a complete example of how to apply projection and camera views with OpenGL ES 1.0, see the <a
-href="{@docRoot}resources/tutorials/opengl/opengl-es10.html#projection-and-views">OpenGL ES 1.0
-tutorial</a>.</p>
-
 
 <h3 id="proj-es2">Projection and camera view in OpenGL ES 2.0</h3>
 <p>In the ES 2.0 API, you apply projection and camera view by first adding a matrix member to
@@ -382,8 +374,7 @@
 </li>
 </ol>
 <p>For a complete example of how to apply projection and camera view with OpenGL ES 2.0, see the <a
-href="{@docRoot}resources/tutorials/opengl/opengl-es20.html#projection-and-views">OpenGL ES 2.0
-tutorial</a>.</p>
+href="{@docRoot}training/graphics/opengl/index.html">Displaying Graphics with OpenGL ES</a> class.</p>
 
 <h2 id="faces-winding">Shape Faces and Winding</h2>
 
diff --git a/docs/html/guide/topics/manifest/manifest-element.jd b/docs/html/guide/topics/manifest/manifest-element.jd
index a3d4a95..4807a5e 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/google/play/licensing.html">Application Licensing</a> instead, 
+  Play's <a href="{@docRoot}guide/google/play/licensing/index.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
@@ -175,7 +175,7 @@
 storage. However, the system will not allow the user to move the application to external storage if
 this attribute is set to {@code internalOnly}, which is the default setting.</p>
 
-<p>Read <a href="{@docRoot}guide/appendix/install-location.html">App Install Location</a> for
+<p>Read <a href="{@docRoot}guide/topics/data/install-location.html">App Install Location</a> for
 more information about using this attribute (including how to maintain backward compatibility).</p>
 
 <p>Introduced in: API Level 8.</p>
diff --git a/docs/html/guide/topics/media/camera.jd b/docs/html/guide/topics/media/camera.jd
index a63270a..3fe23f8 100644
--- a/docs/html/guide/topics/media/camera.jd
+++ b/docs/html/guide/topics/media/camera.jd
@@ -617,7 +617,7 @@
 
         // Create our Preview view and set it as the content of our activity.
         mPreview = new CameraPreview(this, mCamera);
-        FrameLayout preview = (FrameLayout) findViewById(id.camera_preview);
+        FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
         preview.addView(mPreview);
     }
 }
diff --git a/docs/html/guide/topics/providers/content-provider-basics.jd b/docs/html/guide/topics/providers/content-provider-basics.jd
index 7999033..8c47ad72 100644
--- a/docs/html/guide/topics/providers/content-provider-basics.jd
+++ b/docs/html/guide/topics/providers/content-provider-basics.jd
@@ -1030,12 +1030,12 @@
     A provider defines URI permissions for content URIs in its manifest, using the
     <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
     android:grantUriPermission</a></code>
-    attribute of the
-    {@code <a href="guide/topics/manifest/provider-element.html">&lt;provider&gt;</a>}
+    attribute of the <a href="{@docRoot}guide/topics/manifest/provider-element.html">
+    {@code &lt;provider&gt;}</a>
     element, as well as the
-    {@code <a href="guide/topics/manifest/grant-uri-permission-element.html">
-    &lt;grant-uri-permission&gt;</a>} child element of the
-    {@code <a href="guide/topics/manifest/provider-element.html">&lt;provider&gt;</a>}
+    <a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">{@code 
+    &lt;grant-uri-permission&gt;}</a> child element of the
+    <a href="{@docRoot}guide/topics/manifest/provider-element.html">{@code &lt;provider&gt;}</a>
     element. The URI permissions mechanism is explained in more detail in the
     <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a> guide,
     in the section "URI Permissions".
diff --git a/docs/html/guide/topics/renderscript/index.jd b/docs/html/guide/topics/renderscript/index.jd
index b6758bc..4c22e72 100644
--- a/docs/html/guide/topics/renderscript/index.jd
+++ b/docs/html/guide/topics/renderscript/index.jd
@@ -1,8 +1,10 @@
 page.title=Computation
+page.landing=true
+page.landing.intro=Renderscript provides a platform-independent computation engine that operates at the native level. Use it to accelerate your apps that require extensive computational horsepower.
+page.landing.image=
+
 @jd:body
 
-<p>Renderscript provides a platform-independent computation engine that operates at the native level.
-  Use it to accelerate your apps that require extensive computational horsepower.</p>
 <div class="landing-docs">
 
   <div>
diff --git a/docs/html/guide/topics/resources/accessing-resources.jd b/docs/html/guide/topics/resources/accessing-resources.jd
index 03bb939..0673b6f 100644
--- a/docs/html/guide/topics/resources/accessing-resources.jd
+++ b/docs/html/guide/topics/resources/accessing-resources.jd
@@ -336,6 +336,6 @@
 
 <p>In this example, {@link android.R.layout#simple_list_item_1} is a layout resource defined by the
 platform for items in a {@link android.widget.ListView}. You can use this instead of creating
-your own layout for list items. (For more about using {@link android.widget.ListView}, see the
-<a href="{@docRoot}resources/tutorials/views/hello-listview.html">List View Tutorial</a>.)</p>
+your own layout for list items. For more information, see the
+<a href="{@docRoot}guide/topics/ui/layout/listview.html">List View</a> developer guide.</p>
 
diff --git a/docs/html/guide/topics/resources/layout-resource.jd b/docs/html/guide/topics/resources/layout-resource.jd
index 5643075..cd88ae9 100644
--- a/docs/html/guide/topics/resources/layout-resource.jd
+++ b/docs/html/guide/topics/resources/layout-resource.jd
@@ -161,17 +161,16 @@
 supported by the root element in the included layout and they will override those defined in the
 root element.</p>
 
-      <p class="caution"><strong>Caution:</strong> If you want to override the layout dimensions,
-you must override both <code>android:layout_height</code> and
-<code>android:layout_width</code>&mdash;you cannot override only the height or only the width.
-If you override only one, it will not take effect. (Other layout properties, such as weight,
-are still inherited from the source layout.)</p>
+    <p class="caution"><strong>Caution:</strong> If you want to override layout attributes using
+      the <code>&lt;include&gt;</code> tag, you must override both
+      <code>android:layout_height</code> and <code>android:layout_width</code> in order for
+      other layout attributes to take effect.</p>
 
     <p>Another way to include a layout is to use {@link android.view.ViewStub}. It is a lightweight
 View that consumes no layout space until you explicitly inflate it, at which point, it includes a
 layout file defined by its {@code android:layout} attribute. For more information about using {@link
-android.view.ViewStub}, read <a href="{@docRoot}resources/articles/layout-tricks-stubs.html">Layout
-Tricks: ViewStubs</a>.</p>
+android.view.ViewStub}, read <a href="{@docRoot}training/improving-layouts/loading-ondemand.html">Loading
+  Views On Demand</a>.</p>
     </dd>
 
   <dt id="merge-element"><code>&lt;merge&gt;</code></dt>
@@ -182,8 +181,7 @@
 in another layout file using <a href="#include-element"><code>&lt;include&gt;</code></a> and
 this layout doesn't require a different {@link android.view.ViewGroup} container. For more
 information about merging layouts, read <a
-href="{@docRoot}resources/articles/layout-tricks-merge.html">Layout
-Tricks: Merging</a>.</dd>
+href="{@docRoot}training/improving-layouts/reusing-layouts.html">Re-using Layouts with &lt;include/></a>.</dd>
 
   </dl>
 
diff --git a/docs/html/guide/topics/resources/providing-resources.jd b/docs/html/guide/topics/resources/providing-resources.jd
index b0d5d6f..cf2c03e 100644
--- a/docs/html/guide/topics/resources/providing-resources.jd
+++ b/docs/html/guide/topics/resources/providing-resources.jd
@@ -548,6 +548,10 @@
           no display</li>
         </ul>
         <p><em>Added in API level 8, television added in API 13.</em></p>
+        <p>For information about how your app can respond when the device is inserted into or
+        removed from a dock, read <a 
+        href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">Determining
+and Monitoring the Docking State and Type</a>.</p>
         <p>This can change during the life of your application if the user places the device in a
 dock. You can enable or disable some of these modes using {@link
 android.app.UiModeManager}. See <a href="runtime-changes.html">Handling Runtime Changes</a> for
diff --git a/docs/html/guide/topics/resources/runtime-changes.jd b/docs/html/guide/topics/resources/runtime-changes.jd
index f5475b4..5f39aa5 100644
--- a/docs/html/guide/topics/resources/runtime-changes.jd
+++ b/docs/html/guide/topics/resources/runtime-changes.jd
@@ -16,8 +16,8 @@
   <ol>
     <li><a href="providing-resources.html">Providing Resources</a></li>
     <li><a href="accessing-resources.html">Accessing Resources</a></li>
-    <li><a href="{@docRoot}resources/articles/faster-screen-orientation-change.html">Faster Screen
-Orientation Change</a></li>
+    <li><a href="http://android-developers.blogspot.com/2009/02/faster-screen-orientation-change.html">Faster
+        Screen Orientation Change</a></li>
   </ol>
 </div>
 </div>
diff --git a/docs/html/guide/topics/search/index.jd b/docs/html/guide/topics/search/index.jd
index 2ee624b..680c607 100644
--- a/docs/html/guide/topics/search/index.jd
+++ b/docs/html/guide/topics/search/index.jd
@@ -54,9 +54,9 @@
 if your data is stored in an SQLite database, you should use the {@link android.database.sqlite}
 APIs to perform searches.
 <br/><br/>
-Also, there is no guarantee that every device provides a dedicated SEARCH button to invoke the
+Also, there is no guarantee that a device provides a dedicated SEARCH button that invokes the
 search interface in your application. When using the search dialog or a custom interface, you
-must always provide a search button in your UI that activates the search interface. For more
+must provide a search button in your UI that activates the search interface. For more
 information, see <a href="search-dialog.html#InvokingTheSearchDialog">Invoking the search
 dialog</a>.</p>
 
diff --git a/docs/html/guide/topics/search/search-dialog.jd b/docs/html/guide/topics/search/search-dialog.jd
index 49451ac..b9a26d6 100644
--- a/docs/html/guide/topics/search/search-dialog.jd
+++ b/docs/html/guide/topics/search/search-dialog.jd
@@ -6,14 +6,6 @@
 <div id="qv-wrapper">
 <div id="qv">
 
-  <h2>Quickview</h2>
-  <ul>
-    <li>The Android system sends search queries from the search dialog or widget to an activity you
-specify to perform searches and present results</li>
-    <li>You can put the search widget in the Action Bar, as an "action view," for quick
-access</li>
-  </ul>
-
 
 <h2>In this document</h2>
 <ol>
@@ -61,14 +53,8 @@
 
 <h2>Downloads</h2>
 <ol>
-<li><a href="{@docRoot}shareables/search_icons.zip">search_icons.zip</a></li>
-</ol>
-
-<h2>See also</h2>
-<ol>
-<li><a href="adding-recent-query-suggestions.html">Adding Recent Query Suggestions</a></li>
-<li><a href="adding-custom-suggestions.html">Adding Custom Suggestions</a></li>
-<li><a href="searchable-config.html">Searchable Configuration</a></li>
+<li><a href="{@docRoot}design/downloads/index.html#action-bar-icon-pack">Action Bar
+Icon Pack</a></li>
 </ol>
 
 </div>
@@ -142,12 +128,14 @@
   <li>A search interface, provided by either:
     <ul>
       <li>The search dialog
-        <p>By default, the search dialog is hidden, but appears at the top of the screen when the 
-user presses the device SEARCH button (when available) or another button in your user interface.</p>
+        <p>By default, the search dialog is hidden, but appears at the top of the screen when
+          you call {@link android.app.Activity#onSearchRequested()} (when the user presses your
+          Search button).</p>
       </li>
       <li>Or, a {@link android.widget.SearchView} widget
         <p>Using the search widget allows you to put the search box anywhere in your activity.
-Instead of putting it in your activity layout, however, it's usually more convenient for users as an
+Instead of putting it in your activity layout, you should usually use
+{@link android.widget.SearchView} as an 
 <a href="{@docRoot}guide/topics/ui/actionbar.html#ActionView">action view in the Action Bar</a>.</p>
       </li>
     </ul>
@@ -415,10 +403,9 @@
 your application for devices running Android 3.0, you should consider using the search widget
 instead (see the side box).</p>
 
-<p>The search dialog is always hidden by default, until the user activates it. If the user's device
-includes a SEARCH button, pressing it will activate the search dialog by default. Your application
-can also activate the search dialog on demand by calling {@link
-android.app.Activity#onSearchRequested onSearchRequested()}. However, neither of these work
+<p>The search dialog is always hidden by default, until the user activates it. Your application
+can activate the search dialog by calling {@link
+android.app.Activity#onSearchRequested onSearchRequested()}. However, this method doesn't work
 until you enable the search dialog for the activity.</p>
 
 <p>To enable the search dialog, you must indicate to the system which searchable activity should
@@ -469,8 +456,8 @@
 href="{@docRoot}guide/topics/manifest/meta-data-element.html">{@code &lt;meta-data&gt;}</a>
 element to declare which searchable activity to use for searches, the activity has enabled the
 search dialog.
-While the user is in this activity, the device SEARCH button (if available) and the {@link
-android.app.Activity#onSearchRequested onSearchRequested()} method will activate the search dialog.
+While the user is in this activity, the {@link
+android.app.Activity#onSearchRequested onSearchRequested()} method activates the search dialog.
 When the user executes the search, the system starts {@code SearchableActivity} and delivers it
 the {@link android.content.Intent#ACTION_SEARCH} intent.</p>
 
@@ -495,21 +482,22 @@
 
 <h3 id="InvokingTheSearchDialog">Invoking the search dialog</h3>
 
-<p>As mentioned above, the device SEARCH button will open the search dialog as long as the current
-activity has declared in the manifest the searchable activity to use.</p>
+<p>Although some devices provide a dedicated Search button, the behavior of the button may vary
+between devices and many devices do not provide a Search button at all. So when using the search
+dialog, you <strong>must provide a search button in your UI</strong> that activates the search
+dialog by calling {@link android.app.Activity#onSearchRequested()}.</p>
 
-<p>However, some devices do not include a dedicated SEARCH button, so you should not assume that
-it's always available. When using the search dialog, you must <strong>always provide another search
-button in your UI</strong> that activates the search dialog by calling {@link
-android.app.Activity#onSearchRequested()}.</p>
+<p>For instance, you should add a Search button in your <a
+href="{@docRoot}guide/topics/ui/menus.html#options-menu">Options Menu</a> or UI
+layout that calls {@link android.app.Activity#onSearchRequested()}. For consistency with
+the Android system and other apps, you should label your button with the Android Search icon that's
+available from the <a href="{@docRoot}design/downloads/index.html#action-bar-icon-pack">Action Bar
+Icon Pack</a>.</p>
 
-<p>For instance, you should either provide a menu item in your <a
-href="{@docRoot}guide/topics/ui/menus.html#options-menu">Options Menu</a> or a button in your
-activity layout that
-activates search by calling {@link android.app.Activity#onSearchRequested()}. The <a
-href="{@docRoot}shareables/search_icons.zip">search_icons.zip</a> file includes icons for
-medium and high density screens, which you can use for your search menu item or button (low-density
-screens scale-down the hdpi image by one half). </p>
+<p class="note"><strong>Note:</strong> If your app uses the <a
+href="{@docRoot}guide/topics/ui/actionbar.html">action bar</a>, then you should not use
+the search dialog for your search interface. Instead, use the <a href="#UsingSearchWidget">search
+widget</a> as a collapsible view in the action bar.</p>
 
 <p>You can also enable "type-to-search" functionality, which activates the search dialog when the
 user starts typing on the keyboard&mdash;the keystrokes are inserted into the search dialog. You can
diff --git a/docs/html/guide/topics/security/security.jd b/docs/html/guide/topics/security/security.jd
index eeaac44..9cdccae 100644
--- a/docs/html/guide/topics/security/security.jd
+++ b/docs/html/guide/topics/security/security.jd
@@ -135,8 +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
+application. (For example, a key can be placed in a {@link java.security.KeyStore} 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
@@ -717,8 +716,7 @@
 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
+{@link java.security.KeyStore} for
 storage.</p>
 
 <a name="Crypto"></a>
@@ -752,8 +750,7 @@
 number generator significantly weakens the strength of the algorithm, and may
 allow offline attacks.</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
+<p>If you need to store a key for repeated use, use a mechanism like {@link java.security.KeyStore} that
 provides a mechanism for long term storage and retrieval of cryptographic
 keys.</p>
 
diff --git a/docs/html/guide/topics/sensors/index.jd b/docs/html/guide/topics/sensors/index.jd
index a045899..726476a 100644
--- a/docs/html/guide/topics/sensors/index.jd
+++ b/docs/html/guide/topics/sensors/index.jd
@@ -18,7 +18,7 @@
 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">
+    <a href="http://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
diff --git a/docs/html/guide/topics/sensors/sensors_overview.jd b/docs/html/guide/topics/sensors/sensors_overview.jd
index e38a843..a162ccf 100644
--- a/docs/html/guide/topics/sensors/sensors_overview.jd
+++ b/docs/html/guide/topics/sensors/sensors_overview.jd
@@ -662,7 +662,7 @@
 <h4>Using Google Play filters to target specific sensor configurations</h4>
 
 <p>If you are publishing your application on Google Play you can use the
-  <a href="{@docRoot}guide//topics/manifest/uses-feature-element.html"><code>&lt;uses-feature&gt;
+  <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code>&lt;uses-feature&gt;
     </code></a> element in your manifest file to filter your application from devices that do not
 have the appropriate sensor configuration for your application. The
 <code>&lt;uses-feature&gt;</code> element has several hardware descriptors that let you filter
diff --git a/docs/html/guide/topics/text/creating-input-method.jd b/docs/html/guide/topics/text/creating-input-method.jd
index e49610f..7086824 100644
--- a/docs/html/guide/topics/text/creating-input-method.jd
+++ b/docs/html/guide/topics/text/creating-input-method.jd
@@ -1,6 +1,5 @@
 page.title=Creating an Input Method
 parent.title=Articles
-parent.link=../browser.html?tag=article
 @jd:body
 
 <div id="qv-wrapper">
@@ -162,8 +161,8 @@
     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.
+    see the  Soft Keyboard <a href="{@docRoot}tools/samples/index.html">sample 
+    app</a> for an example of how to extend the {@link android.inputmethodservice.KeyboardView} class.
 </p>
 <h3 id="CandidateView">Candidates view</h3>
 <p>
@@ -175,7 +174,8 @@
     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.
+    Soft Keyboard <a href="{@docRoot}tools/samples/index.html">sample 
+    app</a>.
 </p>
 <h3 id="DesignConsiderations">UI design considerations</h3>
 <p>
@@ -388,8 +388,8 @@
     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.
+    See the Soft Keyboard <a href="{@docRoot}tools/samples/index.html">sample 
+    app</a> for an example.
 </p>
 <p>
     Remember to call the <code>super()</code> method for keys you don't want to handle yourself.
diff --git a/docs/html/guide/topics/text/spell-checker-framework.jd b/docs/html/guide/topics/text/spell-checker-framework.jd
index 1c2e211..7f7a0b8 100644
--- a/docs/html/guide/topics/text/spell-checker-framework.jd
+++ b/docs/html/guide/topics/text/spell-checker-framework.jd
@@ -1,6 +1,5 @@
 page.title=Spelling Checker Framework
 parent.title=Articles
-parent.link=../browser.html?tag=article
 @jd:body
 <div id="qv-wrapper">
 <div id="qv">
diff --git a/docs/html/guide/topics/ui/accessibility/apps.jd b/docs/html/guide/topics/ui/accessibility/apps.jd
index d23512b..13b4538 100644
--- a/docs/html/guide/topics/ui/accessibility/apps.jd
+++ b/docs/html/guide/topics/ui/accessibility/apps.jd
@@ -21,14 +21,11 @@
         <li><a href="#accessibility-methods">Implementing accessibility API methods</a></li>
         <li><a href="#send-events">Sending accessibility events</a></li>
         <li><a href="#populate-events">Populating accessibility events</a></li>
+        <li><a href="#virtual-hierarchy">Providing a customized accessibility context</a></li>
+        <li><a href="#custom-touch-events">Handling custom touch events</a></li>
       </ol>
     </li>
-    <li><a href="#test">Testing Accessibility</a>
-      <ol>
-        <li><a href="#test-audibles">Testing audible feedback</a></li>
-        <li><a href="#test-navigation">Testing focus navigation</a></li>
-      </ol>
-    </li>
+    <li><a href="#test">Testing Accessibility</a></li>
   </ol>
 
   <h2>Key classes</h2>
@@ -42,60 +39,79 @@
 
   <h2>See also</h2>
   <ol>
-    <li><a href="{@docRoot}training/accessibility/index.html">Implementing Accessibility</a></li>
-    <li><a href="{@docRoot}training/design-navigation/index.html">Designing Effective Navigation</a>
-      </li>
-    <li><a href="{@docRoot}design/index.html">Android Design</a></li>
+    <li><a href="checklist.html">Accessibility Developer Checklist</a><li>
+    <li><a href="{@docRoot}tools/testing/testing_accessibility.html">Accessibility Testing Checklist</a><li>
+    <li><a href="{@docRoot}design/patterns/accessibility.html">Android Design: Accessibility</a></li>
+    <li><a href="{@docRoot}training/design-navigation/index.html">Designing Effective Navigation</a></li>
+    <li><a href="{@docRoot}training/accessibility/index.html">Training: Implementing Accessibility</a></li>
   </ol>
 
 </div>
 </div>
 
-<p>Applications built for Android are accessible to users with visual, physical or age-related
-disabilities when they activate accessibility features and services on a device. By default,
-these services make your application more accessible. However, there are further steps you should
-take to optimize the accessibility of your application and ensure a pleasant experience for all your
-users.</p>
+<p>Applications built for Android are more accessible to users with visual, physical or age-related
+limitations when those users activate accessibility services and features on a device. These
+services make your application more accessible even if you do not make any accessibility changes
+to your code. However, there are steps you should take to optimize the accessibility of your
+application and ensure a pleasant experience for all your users.</p>
 
-<p>Making sure your application is accessible to all users is relatively easy, particularly when you
-use framework-provided user interface components. If you only use these standard components for your
-application, there are just a few steps required to ensure your application is accessible:</p>
+<p>Making sure your application is accessible to all users requires only a few steps, particularly
+when you create your user interface with the components provided by the Android framework. If you
+use only the standard components for your application, the steps are:</p>
 
 <ol>
-  <li>Label your {@link android.widget.ImageButton}, {@link android.widget.ImageView}, {@link
-android.widget.EditText}, {@link android.widget.CheckBox} and other user interface controls using
-the <a href="{@docRoot}reference/android/view/View.html#attr_android:contentDescription">
-    {@code android:contentDescription}</a> attribute.</li>
-  <li>Make all of your user interface elements accessible with a directional controller,
-    such as a trackball or D-pad.</li>
-  <li>Test your application by turning on accessibility services like TalkBack and Explore by
-    Touch, and try using your application using only directional controls.</li>
+  <li>Add descriptive text to user interface controls in your application using the
+    <a href="{@docRoot}reference/android/view/View.html#attr_android:contentDescription">
+    {@code android:contentDescription}</a> attribute. Pay particular attention to
+    {@link android.widget.ImageButton}, {@link android.widget.ImageView}
+    and {@link android.widget.CheckBox}.</li>
+  <li>Make sure that all user interface elements that can accept input (touches or typing) can be
+    reached with a directional controller, such as a trackball, D-pad (physical or virtual) or
+    navigation <a href="http://support.google.com/android/bin/topic.py?hl=en&topic=2492346">gestures
+    </a>.</li>
+  <li>Make sure that audio prompts are always accompanied by another visual prompt or notification,
+    to assist users who are deaf or hard of hearing.</li>
+  <li>Test your application using only accessibility navigation services and features. Turn on
+    <a href="{@docRoot}tools/testing/testing_accessibility.html#testing-talkback">TalkBack</a> and
+    <a href="{@docRoot}tools/testing/testing_accessibility.html#testing-ebt">Explore by Touch</a>,
+    and then try using your application using only directional controls. For more information on
+    testing for accessibility, see the <a href="{@docRoot}tools/testing/testing_accessibility.html">
+    Accessibility Testing Checklist</a>.</li>
 </ol>
 
-<p>Developers who create custom controls that extend from the {@link android.view.View} class have
-some additional responsibilities for making sure their components are accessible for users. This
-document also discusses how to make custom view controls compatible with accessibility services.</p>
+<p>If you build custom controls that extend the {@link android.view.View} class, you must complete
+some additional work to make sure your components are accessible. This document discusses how to
+make custom view controls compatible with accessibility services.</p>
+
+<p class="note">
+<strong>Note:</strong> The implementation steps in this document describe the requirements for
+making your application accessible for users with blindness or low-vision. Be sure to review the
+requirements for serving users who are deaf and hard of hearing in the
+<a href="{@docRoot}guide/topics/ui/accessibility/checklist.html">Accessibility Developer
+Checklist</a></p>.
+
 
 
 <h2 id="label-ui">Labeling User Interface Elements</h2>
 
-<p>Many user interface controls rely on visual cues to inform users of their meaning. For
+<p>Many user interface controls depend on visual cues to indicate their meaning and usage. For
 example, a note-taking application might use an {@link android.widget.ImageButton} with a
-picture of a plus sign to indicate that the user can add a new note. Or, an {@link
-android.widget.EditText} component may have a label near it that indicates its purpose. When a user
-with impaired vision accesses your application, these visual cues are often useless.</p>
+picture of a plus sign to indicate that the user can add a new note. An {@link
+android.widget.EditText} component may have a label near it that indicates its purpose. A user
+with impaired vision can't see these cues well enough to follow them, which makes them useless.</p>
 
-<p>To provide textual information about interface controls (as an alternative to the visual cues),
-use the <a href="{@docRoot}reference/android/view/View.html#attr_android:contentDescription">
-{@code android:contentDescription}</a> attribute. The text you provide in this attribute is not
-visible on the screen, but if a user has enabled accessibility services that provide audible
-prompts, then the description in this attribute is read aloud to the user.</p>
+<p>You can make these controls more accessible with the
+<a href="{@docRoot}reference/android/view/View.html#attr_android:contentDescription">
+{@code android:contentDescription}</a> XML layout attribute. The text in this attribute does not
+appear on screen, but if the user enables accessibility services that provide audible prompts, then
+when the user navigates to that control, the text is spoken.</p>
 
-<p>Set the <a href="{@docRoot}reference/android/view/View.html#attr_android:contentDescription">
+<p>For this reason, set the
+<a href="{@docRoot}reference/android/view/View.html#attr_android:contentDescription">
 {@code android:contentDescription}</a> attribute for every {@link android.widget.ImageButton},
-{@link android.widget.ImageView}, {@link android.widget.EditText}, {@link android.widget.CheckBox}
-in your application's user interface, and on any other input controls that might require additional
-information for users who are not able to see it.</p>
+{@link android.widget.ImageView}, {@link android.widget.CheckBox}
+in your application's user interface, and add descriptions to any other input controls that might
+require additional information for users who are not able to see it.</p>
 
 <p>For example, the following {@link android.widget.ImageButton} sets the content description for
 the plus button to the {@code add_note} string resource, which could be defined as “Add note" for an
@@ -108,32 +124,38 @@
     android:contentDescription=”@string/add_note”/&gt;
 </pre>
 
-<p>By including the description, speech-based accessibility services can announce "Add note" when a
-user moves focus to this button or hovers over it.</p>
+<p>By including the description, an accessibility service that provides spoken feedback can announce
+"Add note" when a user moves focus to this button or hovers over it.</p>
 
 <p class="note"><strong>Note:</strong> For {@link android.widget.EditText} fields, provide an
 <a href="{@docRoot}reference/android/widget/TextView.html#attr_android:hint">android:hint</a>
-attribute to help users understand what content is expected.</p>
+attribute <em>instead</em> of a content description, to help users understand what content is
+expected when the text field is empty. When the field is filled, TalkBack reads the entered
+content to the user, instead of the hint text.</p>
+
 
 <h2 id="focus-nav">Enabling Focus Navigation</h2>
 
 <p>Focus navigation allows users with disabilities to step through user interface controls using a
-directional controller. Directional controllers can be physical, such as a clickable trackball,
-directional pad (D-pad) or arrow keys, tab key navigation with an attached keyboard or a software
-application, such as the
+directional controller. Directional controllers can be physical, such as a trackball, directional
+pad (D-pad) or arrow keys, or virtual, such as the
 <a href="https://play.google.com/store/apps/details?id=com.googlecode.eyesfree.inputmethod.latin">
-Eyes-Free Keyboard</a>, that provides an on-screen directional control.</p>
+Eyes-Free Keyboard</a>, or the gestures navigation mode available in Android 4.1 and higher.
+Directional controllers are a primary means of navigation for many Android users.
+</p>
 
-<p>A directional controller is a primary means of navigation for many users.
-Verify that all user interface (UI) controls in your application are accessible
-without using the touchscreen and that clicking with the center button (or OK button) of a
-directional controller has the same effect as touching the controls on the touchscreen. For
-information on testing directional controls, see <a href="#test-navigation">Testing focus
-navigation</a>.</p>
+<p>To ensure that users can navigate your application using only a directional controller, verify
+that all user interface (UI) input controls in your application can be reached and activated
+without using the touchscreen. You should also verify that clicking with the center button (or OK
+button) of a directional controller has the same effect as touching a control that already has
+focus. For information on testing directional controls, see
+<a href="{@docRoot}tools/testing/testing_accessibility.html#test-navigation">Testing
+focus navigation</a>.</p>
+
 
 <h3 id="focus-enable">Enabling view focus</h3>
 
-<p>A user interface element is accessible using directional controls when its
+<p>A user interface element is reachable using directional controls when its
 <a href="{@docRoot}reference/android/view/View.html#attr_android:focusable">
 {@code android:focusable}</a> attribute is set to {@code true}. This setting allows users to focus
 on the element using the directional controls and then interact with it. The user interface controls
@@ -149,44 +171,44 @@
   <li>{@link android.view.View#requestFocus requestFocus()}</li>
 </ul>
 
-<p>When working with a view that is not focusable by default, you can make it focusable from the XML
-layout file by setting the
-<a href="{@docRoot}reference/android/view/View.html#attr_android:focusable">
-{@code android:focusable}</a> attribute to {@code true} or by using the {@link
+<p>If a view is not focusable by default, you can make it focusable in your layout file by setting
+the <a href="{@docRoot}reference/android/view/View.html#attr_android:focusable">
+{@code android:focusable}</a> attribute to {@code true} or by calling the its {@link
 android.view.View#setFocusable setFocusable()} method.</p>
 
+
 <h3 id="focus-order">Controlling focus order</h3>
 
 <p>When users navigate in any direction using directional controls, focus is passed from one
-user interface element (View) to another, as determined by the focus ordering. The ordering of the
-focus movement is based on an algorithm that finds the nearest neighbor in a given direction. In
-rare cases, the default algorithm may not match the order that you intended for your UI. In these
-situations, you can provide explicit overrides to the ordering using the following XML attributes in
-the layout file:</p>
+user interface element (view) to another, as determined by the focus order. This order is based on
+an algorithm that finds the nearest neighbor in a given direction. In rare cases, the algorithm may
+not match the order that you intended or may not be logical for users. In these situations, you can
+provide explicit overrides to the ordering using the following XML attributes in your layout file:
+</p>
 
 <dl>
- <dt><a href="{@docRoot}reference/android/view/View.html#attr_android:nextFocusDown"
->{@code android:nextFocusDown}</a></dt>
-  <dd>Defines the next view to receive focus when the user navigates down.</dd>
- <a><a href="{@docRoot}reference/android/view/View.html#attr_android:nextFocusLeft"
->{@code android:nextFocusLeft}</a></dt>
-  <dd>Defines the next view to receive focus when the user navigates left.</dd>
- <dt><a href="{@docRoot}reference/android/view/View.html#attr_android:nextFocusRight"
->{@code android:nextFocusRight}</a></dt>
-  <dd>Defines the next view to receive focus when the user navigates right.</dd>
- <dt><a href="{@docRoot}reference/android/view/View.html#attr_android:nextFocusUp"
->{@code android:nextFocusUp}</a></dt>
-  <dd>Defines the next view to receive focus when the user navigates up.</dd>
+  <dt><a href="{@docRoot}reference/android/view/View.html#attr_android:nextFocusDown">
+  {@code android:nextFocusDown}</a></dt>
+    <dd>Defines the next view to receive focus when the user navigates down.</dd>
+  <dt><a href="{@docRoot}reference/android/view/View.html#attr_android:nextFocusLeft">
+  {@code android:nextFocusLeft}</a></dt>
+    <dd>Defines the next view to receive focus when the user navigates left.</dd>
+  <dt><a href="{@docRoot}reference/android/view/View.html#attr_android:nextFocusRight">
+  {@code android:nextFocusRight}</a></dt>
+    <dd>Defines the next view to receive focus when the user navigates right.</dd>
+  <dt><a href="{@docRoot}reference/android/view/View.html#attr_android:nextFocusUp">
+  {@code android:nextFocusUp}</a></dt>
+    <dd>Defines the next view to receive focus when the user navigates up.</dd>
 </dl>
 
-<p>The following example XML layout shows two focusable user interface elements where the <a
-href="{@docRoot}reference/android/view/View.html#attr_android:nextFocusDown"
->{@code android:nextFocusDown}</a> and <a
-href="{@docRoot}reference/android/view/View.html#attr_android:nextFocusUp"
->{@code android:nextFocusUp}</a> attributes have been explicitly set. The {@link android.widget.TextView} is
+<p>The following example XML layout shows two focusable user interface elements where the
+<a href="{@docRoot}reference/android/view/View.html#attr_android:nextFocusDown">{@code
+android:nextFocusDown}</a> and
+<a href="{@docRoot}reference/android/view/View.html#attr_android:nextFocusUp">{@code
+android:nextFocusUp}</a> attributes have been explicitly set. The {@link android.widget.TextView} is
 located to the right of the {@link android.widget.EditText}. However, since these properties have
 been set, the {@link android.widget.TextView} element can now be reached by pressing the down arrow
-when focus is on the {@link android.widget.EditText} element: </p>
+when focus is on the {@link android.widget.EditText} element:</p>
 
 <pre>
 &lt;LinearLayout android:orientation="horizontal"
@@ -218,8 +240,9 @@
 
 <ul>
   <li>Handle directional controller clicks</li>
-  <li>Implement Accessibility API methods</li>
-  <li>Send {@link android.view.accessibility.AccessibilityEvent} objects specific to your custom view</li>
+  <li>Implement accessibility API methods</li>
+  <li>Send {@link android.view.accessibility.AccessibilityEvent} objects specific to your custom
+    view</li>
   <li>Populate {@link android.view.accessibility.AccessibilityEvent} and {@link
     android.view.accessibility.AccessibilityNodeInfo} for your view</li>
 </ul>
@@ -243,9 +266,9 @@
 
 <p>Accessibility events are messages about users interaction with visual interface components in
 your application. These messages are handled by <a href="services.html">Accessibility Services</a>,
-which use the information in these events to produce supplemental feedback and prompts when users
-have enabled accessibility services. As of Android 4.0 (API Level 14) and higher, the methods for
-generating accessibility events have been expanded to provide more detailed information beyond the
+which use the information in these events to produce supplemental feedback and prompts. In
+Android 4.0 (API Level 14) and higher, the methods for
+generating accessibility events have been expanded to provide more detailed information than the
 {@link android.view.accessibility.AccessibilityEventSource} interface introduced in Android 1.6 (API
 Level 4). The expanded accessibility methods are part of the {@link android.view.View} class as well
 as the {@link android.view.View.AccessibilityDelegate} class. The methods are as follows:</p>
@@ -262,12 +285,12 @@
   <dd>(API Level 4) This method is used when the calling code needs to directly control the check
 for accessibility being enabled on the device ({@link
 android.view.accessibility.AccessibilityManager#isEnabled AccessibilityManager.isEnabled()}). If
-you do implement this method, you must assume that the calling method has already checked that
-accessibility is enabled and the result is {@code true}. You typically do not need to implement this
-method for a custom view.</dd>
+you do implement this method, you must perform the call as if accessibility is enabled, regardless
+of the actual system setting. You typically do not need to implement this method for a custom view.
+</dd>
 
   <dt>{@link android.view.View#dispatchPopulateAccessibilityEvent
-dispatchPopulateAccessibilityEvent()} </dt>
+dispatchPopulateAccessibilityEvent()}</dt>
   <dd>(API Level 4) The system calls this method when your custom view generates an
 accessibility event. As of API Level 14, the default implementation of this method calls {@link
 android.view.View#onPopulateAccessibilityEvent onPopulateAccessibilityEvent()} for this view and
@@ -276,21 +299,21 @@
 accessibility services on revisions of Android <em>prior</em> to 4.0 (API Level 14) you
 <em>must</em> override this method and populate {@link
 android.view.accessibility.AccessibilityEvent#getText} with descriptive text for your custom
-view.</dd>
+view, which is spoken by accessibility services, such as TalkBack.</dd>
 
   <dt>{@link android.view.View#onPopulateAccessibilityEvent onPopulateAccessibilityEvent()}</dt>
-  <dd>(API Level 14) This method sets the text output of an {@link
+  <dd>(API Level 14) This method sets the spoken text prompt of the {@link
 android.view.accessibility.AccessibilityEvent} for your view. This method is also called if the
 view is a child of a view which generates an accessibility event.
 
   <p class="note"><strong>Note:</strong> Modifying additional attributes beyond the text within
-this method potentially overwrites properties set by other methods. So, while you are able modify
+this method potentially overwrites properties set by other methods. While you can modify
 attributes of the accessibility event with this method, you should limit these changes
-to text content only and use the {@link android.view.View#onInitializeAccessibilityEvent
+to text content, and use the {@link android.view.View#onInitializeAccessibilityEvent
 onInitializeAccessibilityEvent()} method to modify other properties of the event.</p>
 
-  <p class="note"><strong>Note:</strong> If your implementation of this event calls for completely
-overiding the output text without allowing other parts of your layout to modify its content, then
+  <p class="note"><strong>Note:</strong> If your implementation of this event completely
+overrides the output text without allowing other parts of your layout to modify its content, then
 do not call the super implementation of this method in your code.</p>
   </dd>
 
@@ -306,7 +329,7 @@
   <dt>{@link android.view.View#onInitializeAccessibilityNodeInfo
 onInitializeAccessibilityNodeInfo()}</dt>
   <dd>(API Level 14) This method provides accessibility services with information about the state of
-the view. The default {@link android.view.View} implementation sets a standard set of view
+the view. The default {@link android.view.View} implementation has a standard set of view
 properties, but if your custom view provides interactive control beyond a simple {@link
 android.widget.TextView} or {@link android.widget.Button}, you should override this method and set
 the additional information about your view into the {@link
@@ -315,7 +338,7 @@
   <dt>{@link android.view.ViewGroup#onRequestSendAccessibilityEvent
 onRequestSendAccessibilityEvent()}</dt>
   <dd>(API Level 14) The system calls this method when a child of your view has generated an
-{@link android.view.accessibility.AccessibilityEvent}. This step allows the the parent view to amend
+{@link android.view.accessibility.AccessibilityEvent}. This step allows the parent view to amend
 the accessibility event with additional information. You should implement this method only if your
 custom view can have child views and if the parent view can provide context information to the
 accessibility event that would be useful to accessibility services.</dd>
@@ -333,7 +356,7 @@
 {@link android.support.v4.view.ViewCompat#setAccessibilityDelegate
 ViewCompat.setAccessibilityDelegate()} method to implement the accessibility methods
 above. For an example of this approach, see the Android Support Library (revision 5 or higher)
-sample {@code AccessibilityDelegateSupportActivity} in 
+sample {@code AccessibilityDelegateSupportActivity} in
 ({@code &lt;sdk&gt;/extras/android/support/v4/samples/Support4Demos/})
   </li>
 </ul>
@@ -446,20 +469,20 @@
 }
 </pre>
 
-<p>On Android 4.0 (API Level 14) and higher, the {@link
+<p>For Android 4.0 (API Level 14) and higher, use the {@link
 android.view.View#onPopulateAccessibilityEvent onPopulateAccessibilityEvent()} and
 {@link android.view.View#onInitializeAccessibilityEvent onInitializeAccessibilityEvent()}
-methods are the recommended way to populate or modify the information in an {@link
-android.view.accessibility.AccessibilityEvent}. Use the 
+methods to populate or modify the information in an {@link
+android.view.accessibility.AccessibilityEvent}. Use the
 {@link android.view.View#onPopulateAccessibilityEvent onPopulateAccessibilityEvent()} method
 specifically for adding or modifying the text content of the event, which is turned into audible
 prompts by accessibility services such as TalkBack. Use the
 {@link android.view.View#onInitializeAccessibilityEvent onInitializeAccessibilityEvent()} method for
 populating additional information about the event, such as the selection state of the view.</p>
 
-<p>In addition, you should also implement the
+<p>In addition, implement the
 {@link android.view.View#onInitializeAccessibilityNodeInfo onInitializeAccessibilityNodeInfo()}
-method. {@link android.view.accessibility.AccessibilityNodeInfo} objects populated by this method
+method. The {@link android.view.accessibility.AccessibilityNodeInfo} objects populated by this method
 are used by accessibility services to investigate the view hierarchy that generated an accessibility
 event after receiving that event, to obtain a more detailed context information and provide
 appropriate feedback to users.</p>
@@ -467,8 +490,8 @@
 <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}tools/extras/support-library.html">Support Library</a> for API Level 4 (revision 5
-or higher) is added to your project.</p>
+<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>
 ViewCompat.setAccessibilityDelegate(new AccessibilityDelegateCompat() {
@@ -509,10 +532,10 @@
 }
 </pre>
 
-<p>On applications targeting Android 4.0 (API Level 14) and higher, these methods can be implemented
+<p>In applications targeting Android 4.0 (API Level 14) and higher, you can implement these methods
 directly in your custom view class. For another example of this approach, see the Android
-<a href="{@docRoot}tools/extras/support-library.html">Support Library</a> (revision 5 or higher) sample
-{@code AccessibilityDelegateSupportActivity} in 
+<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>
 
 <p class="note"><strong>Note:</strong> You may find information on implementing accessibility for
@@ -525,50 +548,141 @@
 methods.</p>
 
 
+<h3 id="virtual-hierarchy">Providing a customized accessibility context</h3>
+
+<p>In Android 4.0 (API Level 14), the framework was enhanced to allow accessibility services to
+  inspect the containing view hierarchy of a user interface component that generates an
+  accessibility event. This enhancement allows accessibility services to provide a much richer set
+  of contextual information with which to aid users.</p>
+
+<p>There are some cases where accessibility services cannot get adequate information
+  from the view hierarchy. An example of this is a custom interface control that has two or more
+  separately clickable areas, such as a calendar control. In this case, the services cannot get
+  adequate information because the clickable subsections are not part of the view hierarchy.</p>
+
+<img src="calendar.png" alt="" id="figure1" />
+<p class="img-caption">
+  <strong>Figure 1.</strong> A custom calendar view with selectable day elements.
+</p>
+
+<p>In the example shown in Figure 1, the entire calendar is implemented as a single view, so if you
+  do not do anything else, accessibility services do not receive enough information about the
+  content of the view and the user's selection within the view. For example, if a user clicks on the
+  day containing <strong>17</strong>, the accessibility framework only receives the description
+  information for the whole calendar control. In this case, the TalkBack accessibility service would
+  simply announce "Calendar" or, only slightly better, "April Calendar" and the user would be left
+  to wonder what day was selected.</p>
+
+<p>To provide adequate context information for accessibility services in situations like this,
+  the framework provides a way to specify a virtual view hierarchy. A <em>virtual view
+  hierarchy</em> is a way for application developers to provide a complementary view hierarchy
+  to accessibility services that more closely matches the actual information on screen. This
+  approach allows accessibility services to provide more useful context information to users.</p>
+
+<p>Another situation where a virtual view hierarchy may be needed is a user interface containing
+  a set of controls (views) that have closely related functions, where an action on one control
+  affects the contents of one or more elements, such as a number picker with separate up and down
+  buttons. In this case, accessibility services cannot get adequate information because action on
+  one control changes content in another and the relationship of those controls may not be apparent
+  to the service. To handle this situation, group the related controls with a containing view and
+  provide a virtual view hierarchy from this container to clearly represent the information and
+  behavior provided by the controls.</p>
+
+<p>In order to provide a virtual view hierarchy for a view, override the {@link
+  android.view.View#getAccessibilityNodeProvider} method in your custom view or view group and
+  return an implementation of {@link android.view.accessibility.AccessibilityNodeProvider}. For an
+  example implementation of this accessibility feature, see
+  {@code AccessibilityNodeProviderActivity} in the ApiDemos sample project. You can implement a
+  virtual view hierarchy that is compatible with Android 1.6 and later by using the
+  <a href="{@docRoot}tools/extras/support-library.html">Support Library</a> with the
+  {@link android.support.v4.view.ViewCompat#getAccessibilityNodeProvider
+  ViewCompat.getAccessibilityNodeProvider()} method and providing an implementation with
+  {@link android.support.v4.view.accessibility.AccessibilityNodeProviderCompat}.</p>
+
+
+<h3 id="custom-touch-events">Handling custom touch events</h3>
+
+<p>Custom view controls may require non-standard touch event behavior. For example, a custom
+control may use the {@link android.view.View#onTouchEvent} listener method to detect the
+{@link android.view.MotionEvent#ACTION_DOWN} and {@link android.view.MotionEvent#ACTION_UP} events
+and trigger a special click event. In order to maintain compatibility with accessibility services,
+the code that handles this custom click event must do the following:</p>
+
+<ol>
+  <li>Generate an appropriate {@link android.view.accessibility.AccessibilityEvent} for the
+  interpreted click action.</li>
+  <li>Enable accessibility services to perform the custom click action for users who are not able to
+   use a touch screen.</li>
+</ol>
+
+<p>To handle these requirements in an efficient way, your code should override the
+{@link android.view.View#performClick} method, which must call the super implementation of this
+method and then execute whatever actions are required by the click event. When the custom click
+action is detected, that code should then call your {@code performClick()} method. The following
+code example demonstrates this pattern.</p>
+
+<pre>
+class CustomTouchView extends View {
+
+    public CustomTouchView(Context context) {
+        super(context);
+    }
+
+    boolean mDownTouch = false;
+
+    &#64;Override
+    public boolean onTouchEvent(MotionEvent event) {
+        super.onTouchEvent(event);
+
+        // Listening for the down and up touch events
+        switch (event.getAction()) {
+            case MotionEvent.ACTION_DOWN:
+                mDownTouch = true;
+                return true;
+
+            case MotionEvent.ACTION_UP:
+                if (mDownTouch) {
+                    mDownTouch = false;
+                    performClick(); // Call this method to handle the response, and
+                                    // thereby enable accessibility services to
+                                    // perform this action for a user who cannot
+                                    // click the touchscreen.
+                    return true;
+                }
+        }
+        return false; // Return false for other touch events
+    }
+
+    &#64;Override
+    public boolean performClick() {
+        // Calls the super implementation, which generates an AccessibilityEvent
+        // and calls the onClick() listener on the view, if any
+        super.performClick();
+
+        // Handle the action for the custom click here
+
+        return true;
+    }
+}
+</pre>
+
+<p>The pattern shown above makes sure that the custom click event is compatible with
+accessibility services by using the {@link android.view.View#performClick} method to both generate
+an accessibility event and provide an entry point for accessibility services to act on behalf of a
+user to perform this custom click event.</p>
+
+<p class="note"><strong>Note:</strong> If your custom view has distinct clickable regions, such as
+a custom calendar view, you must implement a <a href="#virtual-hierarchy">virtual view
+hierarchy</a> by overriding {@link android.view.View#getAccessibilityNodeProvider} in your custom
+view in order to be compatible with accessibility services.</p>
+
+
 <h2 id="test">Testing Accessibility</h2>
 
 <p>Testing the accessibility of your application is an important part of ensuring your users have a
-great experience. You can test the most important parts of accessibility by testing your application
-with audible feedback enabled and testing navigation within your application using directional
-controls.</p>
+great experience. You can test the most important accessibility features by using your application
+with audible feedback enabled and navigating within your application using only directional
+controls. For more information on testing accessibility in your application, see the
+<a href="{@docRoot}tools/testing/testing_accessibility.html">Accessibility Testing Checklist</a>.
+</p>
 
-<h3 id="test-audibles">Testing audible feedback</h3>
-<p>You can simulate the experience for many users by enabling an accessibility service that speaks
-as you move around the screen. The Explore by Touch accessibility service, which is available on
-devices with Android 4.0 and later. The <a
-href="https://play.google.com/store/apps/details?id=com.google.android.marvin.talkback">TalkBack</a>
-accessibility service, by the <a href="http://code.google.com/p/eyes-free/">Eyes-Free
-Project</a> comes preinstalled on many Android devices.</p>
-
-<p>To enable TalkBack on revisions of Android prior to Android 4.0:</p>
-<ol>
-  <li>Launch the Settings application.</li>
-  <li>Navigate to the <strong>Accessibility</strong> category and select it.</li>
-  <li>Select <strong>Accessibility</strong> to enable it.</li>
-  <li>Select <strong>TalkBack</strong> to enable it.</li>
-</ol>
-
-<p class="note"><strong>Note:</strong> If the TalkBack accessibility service is not available, you
-can install it for free from <a href="http://play.google.com">Google Play</a>.</p>
-
-<p>To enable Explore by Touch on Android 4.0 and later:</p>
-<ol>
-  <li>Launch the Settings application.</li>
-  <li>Navigate to the <strong>Accessibility</strong> category and select it.</li>
-  <li>Select the <strong>TalkBack</strong> to enable it.</li>
-  <li>Return to the <strong>Accessibility</strong> category and select <strong>Explore by
-Touch</strong> to enable it.
-    <p class="note"><strong>Note:</strong> You must turn on TalkBack <em>first</em>, otherwise this
-option is not available.</p>
-  </li>
-</ol>
-
-<h3 id="test-navigation">Testing focus navigation</h3>
-
-<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}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">
-Eyes-Free Keyboard</a> to simulate use of a D-pad.</p>
diff --git a/docs/html/guide/topics/ui/accessibility/calendar.png b/docs/html/guide/topics/ui/accessibility/calendar.png
new file mode 100644
index 0000000..ca5c44f
--- /dev/null
+++ b/docs/html/guide/topics/ui/accessibility/calendar.png
Binary files differ
diff --git a/docs/html/guide/topics/ui/accessibility/checklist.jd b/docs/html/guide/topics/ui/accessibility/checklist.jd
new file mode 100644
index 0000000..9473d1b
--- /dev/null
+++ b/docs/html/guide/topics/ui/accessibility/checklist.jd
@@ -0,0 +1,173 @@
+page.title=Accessibility Developer Checklist
+parent.title=Accessibility
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>In this document</h2>
+  <ol>
+    <li><a href="#requirements">Accessibility Requirements</a></li>
+    <li><a href="#recommendations">Accessibility Recommendations</a></li>
+    <li><a href="#special-cases">Special Cases and Considerations</a></li>
+  </ol>
+
+  <h2>See also</h2>
+  <ol>
+    <li><a href="{@docRoot}design/patterns/accessibility.html">Android Design: Accessibility</a></li>
+    <li><a href="{@docRoot}tools/testing/testing_accessibility.html">Accessibility Testing Checklist</a></li>
+    <li><a href="{@docRoot}training/accessibility/index.html">Training: Implementing Accessibility</a></li>
+    <li><a href="{@docRoot}training/design-navigation/index.html">Designing Effective Navigation</a></li>
+  </ol>
+
+</div>
+</div>
+
+<p>Making an application accessible is about a deep commitment to usability, getting the
+details right and delighting your users. This document provides a checklist of accessibility
+requirements, recommendations and considerations to help you make sure your application is
+accessible. Following this checklist does not guarantee your application is accessible, but it's a
+good place to start.</p>
+
+<p>Creating an accessible application is not just the responsibility of developers. Involve your
+design and testing folks as well, and make them are aware of the guidelines for these other stages
+of development:</p>
+
+<ul>
+  <li><a href="{@docRoot}design/patterns/accessibility.html">Android Design: Accessibility</a></li>
+  <li><a href="{@docRoot}tools/testing/testing_accessibility.html">Accessibility Testing
+    Checklist</a></li>
+</ul>
+
+<p>In most cases, creating an accessible Android application does not require extensive code
+restructuring. Rather, it means working through the subtle details of how users interact with your
+application, so you can provide them with feedback they can sense and understand. This checklist
+helps you focus on the key development issues to get the details of accessibility right.</p>
+
+
+<h2 id="requirements">Accessibility Requirements</h2>
+
+<p>The following steps must be completed in order to ensure a minimum level of application
+  accessibility.</p>
+
+<ol>
+  <li><strong>Describe user interface controls:</strong> Provide content
+    <a href="{@docRoot}guide/topics/ui/accessibility/apps.html#label-ui">descriptions</a> for user
+    interface components that do not have visible text, particularly
+    {@link android.widget.ImageButton}, {@link android.widget.ImageView}
+    and {@link android.widget.CheckBox} components. Use the
+    <a href="{@docRoot}reference/android/view/View.html#attr_android:contentDescription">
+    {@code android:contentDescription}</a> XML layout attribute or the {@link
+    android.view.View#setContentDescription} method to provide this information for accessibility
+    services. (Exception: <a href="#decorative">decorative graphics</a>)</li>
+  <li><strong>Enable focus-based navigation:</strong> Make sure
+    <a href="{@docRoot}guide/topics/ui/accessibility/apps.html#focus-nav">users can navigate</a>
+    your screen layouts using hardware-based or software directional controls (D-pads, trackballs,
+    keyboards and navigation gestures). In a few cases, you may need to make user interface components
+    <a href="{@docRoot}reference/android/view/View.html#attr_android:focusable">focusable</a>
+    or change the <a href="{@docRoot}guide/topics/ui/accessibility/apps.html#focus-order">focus
+    order</a> to be more logical for user actions.</li>
+  <li><strong>Custom view controls:</strong> If you build
+    <a href="{@docRoot}guide/topics/ui/custom-components.html">custom interface controls</a> for
+    your application, <a href="{@docRoot}guide/topics/ui/accessibility/apps.html#custom-views">
+    implement accessibility interfaces</a> for your custom views and provide content descriptions.
+    For custom controls that are intended to be compatible with versions of Android back to 1.6,
+    use the <a href="{@docRoot}tools/extras/support-library.html">Support Library</a> to implement
+    the latest accessibility features.</li>
+  <li><strong>No audio-only feedback:</strong> Audio feedback must always have a secondary
+    feedback mechanism to support users who are deaf or hard of hearing. For example, a sound alert
+    for the arrival of a message must be accompanied by a system
+    {@link android.app.Notification}, haptic feedback (if available) or other visual alert.</li>
+  <li><strong>Test:</strong> Test accessibility by navigating your application
+    using directional controls, and using eyes-free navigation with TalkBack enabled.
+    For more accessibility testing information, see the
+    <a href="{@docRoot}tools/testing/testing_accessibility.html">Accessibility Testing
+    Checklist</a>.</li>
+</ol>
+
+
+<h2 id="recommendations">Accessibility Recommendations</h2>
+
+<p>The following steps are recommended for ensuring the accessibility of your application. If you
+  do not take these actions, it may impact the overall accessibility and quality of your
+  application.</p>
+
+<ol>
+  <li><strong>Android Design Accessibility Guidelines:</strong> Before building your layouts,
+    review and follow the accessibility guidelines provided in the
+    <a href="{@docRoot}design/patterns/accessibility.html">Design guidelines</a>.</li>
+  <li><strong>Framework-provided controls:</strong> Use Android's built-in user interface
+    controls whenever possible, as these components provide accessibility support by default.</li>
+  <li><strong>Temporary or self-hiding controls and notifications:</strong> Avoid having user
+    interface controls that fade out or disappear after a certain amount of time. If this behavior
+    is important to your application, provide an alternative interface for these functions.</li>
+</ol>
+
+
+<h2 id="special-cases">Special Cases and Considerations</h2>
+
+<p>The following list describes specific situations where action should be taken to ensure an
+  accessible app. Review this list to see if any of these special cases and considerations apply to
+  your application, and take the appropriate action.</p>
+
+<ol>
+  <li><strong>Text field hints:</strong> For {@link android.widget.EditText} fields, provide an
+    <a href="{@docRoot}reference/android/widget/TextView.html#attr_android:hint">android:hint</a>
+    attribute <em>instead</em> of a content description, to help users understand what content is
+    expected when the text field is empty and allow the contents of the field to be spoken when
+    it is filled.</li>
+  <li><strong>Custom controls with high visual context:</strong> If your application contains a
+    <a href="{@docRoot}guide/topics/ui/custom-components.html">custom control</a> with a high degree
+    of visual context (such as a calendar control), default accessibility services processing may
+    not provide adequate descriptions for users, and you should consider providing a
+    <a href="{@docRoot}guide/topics/ui/accessibility/apps.html#virtual-hierarchy">virtual
+    view hierarchy</a> for your control using
+    {@link android.view.accessibility.AccessibilityNodeProvider}.</li>
+  <li><strong>Custom controls and click handling:</strong> If a custom control in your
+    application performs specific handling of user touch interaction, such as listening with
+    {@link android.view.View#onTouchEvent} for {@link android.view.MotionEvent#ACTION_DOWN
+    MotionEvent.ACTION_DOWN} and {@link android.view.MotionEvent#ACTION_UP MotionEvent.ACTION_UP}
+    and treating it as a click event, you must trigger an {@link
+    android.view.accessibility.AccessibilityEvent} equivalent to a click and provide a way for
+    accessibility services to perform this action for users. For more information, see
+    <a href="{@docRoot}guide/topics/ui/accessibility/apps.html#custom-touch-events">Handling custom
+    touch events</a>.</li>
+  <li><strong>Controls that change function:</strong> If you have buttons or other controls
+    that change function during the normal activity of a user in your application (for example, a
+    button that changes from <strong>Play</strong> to <strong>Pause</strong>), make sure you also
+    change the <a href="{@docRoot}reference/android/view/View.html#attr_android:contentDescription">
+    {@code android:contentDescription}</a> of the button appropriately.</li>
+  <li><strong>Prompts for related controls:</strong> Make sure sets of controls which provide a
+    single function, such as the {@link android.widget.DatePicker}, provide useful audio feedback
+    when an user interacts with the individual controls.</li>
+  <li><strong>Video playback and captioning:</strong> If your application provides video
+    playback, it must support captioning and subtitles to assist users who are deaf or hard of
+    hearing. Your video playback controls must also clearly indicate if captioning is available for
+    a video and provide a clear way of enabling captions.</li>
+  <li><strong>Supplemental accessibility audio feedback:</strong> Use only the Android accessibility
+    framework to provide accessibility audio feedback for your app. Accessibility services such as
+    <a href="https://play.google.com/store/apps/details?id=com.google.android.marvin.talkback"
+    >TalkBack</a> should be the only way your application provides accessibility audio prompts to
+    users. Provide the prompting information with a
+    <a href="{@docRoot}reference/android/view/View.html#attr_android:contentDescription">{@code
+    android:contentDescription}</a> XML layout attribute or dynamically add it using accessibility
+    framework APIs. For example, if your application takes action that you want to announce to a
+    user, such as automatically turning the page of a book, use the {@link
+    android.view.View#announceForAccessibility} method to have accessibility services speak this
+    information to the user.</li>
+  <li><strong>Custom controls with complex visual interactions:</strong> For custom controls that
+    provide complex or non-standard visual interactions, provide a
+    <a href="{@docRoot}guide/topics/ui/accessibility/apps.html#virtual-hierarchy">virtual view
+    hierarchy</a> for your control using {@link android.view.accessibility.AccessibilityNodeProvider}
+    that allows accessibility services to provide a simplified interaction model for the user. If
+    this approach is not feasible, consider providing an alternate view that is accessible.</li>
+  <li><strong>Sets of small controls:</strong> If you have controls that are smaller than
+    the minimum recommended touch size in your application screens, consider grouping these controls
+    together using a {@link android.view.ViewGroup} and providing a
+    <a href="{@docRoot}reference/android/view/View.html#attr_android:contentDescription">{@code
+    android:contentDescription}</a> for the group.</li>
+  <li id="decorative"><strong>Decorative images and graphics:</strong> Elements in application
+    screens that are purely decorative and do not provide any content or enable a user action should
+    not have accessibility content descriptions.</li>
+</ol>
diff --git a/docs/html/guide/topics/ui/accessibility/index.jd b/docs/html/guide/topics/ui/accessibility/index.jd
index 6fd71e2..6cdbde4 100644
--- a/docs/html/guide/topics/ui/accessibility/index.jd
+++ b/docs/html/guide/topics/ui/accessibility/index.jd
@@ -8,47 +8,67 @@
 
   <h2>Topics</h2>
   <ol>
-  <li><a href="{@docRoot}guide/topics/ui/accessibility/apps.html">Making Applications Accessible</a>
-    </li>
-  <li><a href="{@docRoot}guide/topics/ui/accessibility/services.html">Building Accessibility
-    Services</a></li>
+  <li><a href="apps.html">
+    Making Applications Accessible</a></li>
+  <li><a href="checklist.html">
+    Accessibility Developer Checklist</a></li>
+  <li><a href="services.html">
+    Building Accessibility Services</a></li>
   </ol>
 
-  <h2>Key classes</h2>
-  <ol>
-    <li>{@link android.view.accessibility.AccessibilityEvent}</li>
-    <li>{@link android.accessibilityservice.AccessibilityService}</li>
-  </ol>
-  
   <h2>See also</h2>
   <ol>
-    <li><a href="{@docRoot}training/accessibility/index.html">Implementing Accessibility</a></li>
+    <li><a href="{@docRoot}design/patterns/accessibility.html">Android Design: Accessibility</a></li>
+    <li><a href="{@docRoot}training/accessibility/index.html">Training: Implementing Accessibility</a></li>
+    <li><a href="{@docRoot}tools/testing/testing_accessibility.html">Accessibility Testing Checklist</a></li>
+  </ol>
+
+  <h2>Related Videos</h2>
+  <ol>
+    <li>
+      <iframe title="Google I/O 2012 - Making Android Apps Accessible"
+          width="210" height="160"
+          src="http://www.youtube.com/embed/q3HliaMjL38?rel=0&amp;hd=1"
+          frameborder="0" allowfullscreen>
+      </iframe>
+    <li>
   </ol>
 
 </div>
 </div>
 
-<p>Many Android users have disabilities that require them to interact with their Android devices in
-different ways. These include users who have visual, physical or age-related disabilities that
-prevent them from fully seeing or using a touchscreen.</p>
+<p>Many Android users have different abilities that require them to interact with their Android
+devices in different ways. These include users who have visual, physical or age-related limitations
+that prevent them from fully seeing or using a touchscreen, and users with hearing loss who may not
+be able to perceive audible information and alerts.</p>
 
 <p>Android provides accessibility features and services for helping these users navigate their
-devices more easily, including text-to-speech, haptic feedback, trackball and D-pad navigation that
-augment their experience. Android application developers can take advantage of these services to
-make their applications more accessible and also build their own accessibility services.</p>
+devices more easily, including text-to-speech, haptic feedback, gesture navigation, trackball and
+directional-pad navigation. Android application developers can take advantage of these services to
+make their applications more accessible.</p>
+
+<p>Android developers can also build their own accessibility services, which can provide
+enhanced usability features such as audio prompting, physical feedback, and alternative navigation
+modes. Accessibility services can provide these enhancements for all applications, a set of
+applications or just a single app.</p>
 
 <p>The following topics show you how to use the Android framework to make applications more
 accessible.</p>
 
 <dl>
-  <dt><strong><a href="{@docRoot}guide/topics/ui/accessibility/apps.html">Making Applications
-Accessible</a></strong>
+  <dt><strong><a href="{@docRoot}guide/topics/ui/accessibility/apps.html">
+  Making Applications Accessible</a></strong>
   </dt>
   <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/services.html">Building Accessibility
-Services</a></strong>
+  <dt><strong><a href="{@docRoot}guide/topics/ui/accessibility/checklist.html">
+  Accessibility Developer Checklist</a></strong>
+  </dt>
+  <dd>A checklist to help developers ensure that their applications are accessible.</dd>
+
+  <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>
diff --git a/docs/html/guide/topics/ui/accessibility/services.jd b/docs/html/guide/topics/ui/accessibility/services.jd
index 0c1d065..2a6fe7a 100644
--- a/docs/html/guide/topics/ui/accessibility/services.jd
+++ b/docs/html/guide/topics/ui/accessibility/services.jd
@@ -10,12 +10,20 @@
   <ol>
     <li><a href="#manifest">Manifest Declarations and Permissions</a>
       <ol>
-        <li><a href="service-declaration">Accessibility service declaration</a></li>
+        <li><a href="#service-declaration">Accessibility service declaration</a></li>
         <li><a href="#service-config">Accessibility service configuration</a></li>
       </ol>
     </li>
+    <li><a href="#register">Registering for Accessibility Events</a></li>
     <li><a href="#methods">AccessibilityService Methods</a></li>
     <li><a href="#event-details">Getting Event Details</a></li>
+    <li><a href="#act-for-users">Taking Action for Users</a>
+      <ol>
+        <li><a href="#detect-gestures">Listening for gestures</a></li>
+        <li><a href="#using-actions">Using accessibility actions</a></li>
+        <li><a href="#focus-types">Using focus types</a></li>
+      </ol>
+    </li>
     <li><a href="#examples">Example Code</a></li>
   </ol>
 
@@ -30,7 +38,7 @@
 
   <h2>See also</h2>
   <ol>
-    <li><a href="{@docRoot}training/accessibility/index.html">Implementing Accessibility</a></li>
+    <li><a href="{@docRoot}training/accessibility/index.html">Training: Implementing Accessibility</a></li>
   </ol>
 
 </div>
@@ -45,20 +53,20 @@
 create and distribute their own services. This document explains the basics of building an
 accessibility service.</p>
 
-<p>The ability for you to build and deploy accessibility services was introduced with Android
-1.6 (API Level 4) and received significant improvements with Android 4.0 (API Level 14). The Android
-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}tools/extras/support-library.html">Support Library</a> and develop for the more
-advanced accessibility features introduced in Android 4.0.</p>
+<p>The ability for you to build and deploy accessibility services was introduced with Android 1.6
+  (API Level 4) and received significant improvements with Android 4.0 (API Level 14). The Android
+  <a href="{@docRoot}tools/extras/support-library.html">Support Library</a> 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 Support Library and develop for the more advanced accessibility features introduced in
+  Android 4.0.</p>
 
 
 <h2 id="manifest">Manifest Declarations and Permissions</h2>
 
 <p>Applications that provide accessibility services must include specific declarations in their
- application manifests in order to be treated as an accessibility service by an Android system.
- This section explains the required and optional settings for accessibility services.</p>
+ application manifests to be treated as an accessibility service by the Android system. This
+ section explains the required and optional settings for accessibility services.</p>
 
 
 <h3 id="service-declaration">Accessibility service declaration</h3>
@@ -66,7 +74,9 @@
 <p>In order to be treated as an accessibility service, your application must include the
 {@code service} element (rather than the {@code activity} element) within the {@code application}
 element in its manifest. In addition, within the {@code service} element, you must also include an
-accessibility service intent filter, as shown in the following sample:</p>
+accessibility service intent filter. For compatiblity with Android 4.1 and higher, the manifest
+must also request the {@link android.Manifest.permission#BIND_ACCESSIBILITY_SERVICE} permission
+as shown in the following sample:</p>
 
 <pre>
 &lt;application&gt;
@@ -76,6 +86,7 @@
       &lt;action android:name=&quot;android.accessibilityservice.AccessibilityService&quot; /&gt;
     &lt;/intent-filter&gt;
   &lt;/service&gt;
+  &lt;uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" /&gt;
 &lt;/application&gt;
 </pre>
 
@@ -123,27 +134,6 @@
 /&gt;
 </pre>
 
-<p>One of the most important functions of the accessibility service configuration parameters is to
-allow you to specify what types of accessibility events your service can handle. Being able to
-specify this information enables accessibility services to cooperate with each other, and allows you
-as a developer the flexibility to handle only specific events types from specific applications. The
-event filtering can include the following criteria:</p>
-
-<ul>
-  <li><strong>Package Names</strong> - Specify the package names of applications whose accessibility
-events you want your service to handle. If this parameter is omitted, your accessibility service is
-considered available to service accessibility events for any application. This parameter can be set
-in the accessibility service configuration files with the {@code android:packageNames} attribute as
-a comma-separated list, or set using the {@link
-android.accessibilityservice.AccessibilityServiceInfo#packageNames
-AccessibilityServiceInfo.packageNames} member.</li>
-  <li><strong>Event Types</strong> - Specify the types of accessibility events you want your service
-to handle. This parameter can be set in the accessibility service configuration files with the
-{@code android:accessibilityEventTypes} attribute as a comma-separated list, or set using the
-{@link android.accessibilityservice.AccessibilityServiceInfo#eventTypes
-AccessibilityServiceInfo.eventTypes} member. </li>
-</ul>
-
 <p>For more information about the XML attributes which can be used in the accessibility service
  configuration file, follow these links to the reference documentation:</p>
 
@@ -162,9 +152,45 @@
 the {@link android.accessibilityservice.AccessibilityServiceInfo} reference documentation.</p>
 
 
+<h2 id="register">Registering for Accessibility Events</h2>
+
+<p>One of the most important functions of the accessibility service configuration parameters is to
+allow you to specify what types of accessibility events your service can handle. Being able to
+specify this information enables accessibility services to cooperate with each other, and allows you
+as a developer the flexibility to handle only specific events types from specific applications. The
+event filtering can include the following criteria:</p>
+
+<ul>
+  <li><strong>Package Names</strong> - Specify the package names of applications whose accessibility
+events you want your service to handle. If this parameter is omitted, your accessibility service is
+considered available to service accessibility events for any application. This parameter can be set
+in the accessibility service configuration files with the {@code android:packageNames} attribute as
+a comma-separated list, or set using the {@link
+android.accessibilityservice.AccessibilityServiceInfo#packageNames
+AccessibilityServiceInfo.packageNames} member.</li>
+  <li><strong>Event Types</strong> - Specify the types of accessibility events you want your service
+to handle. This parameter can be set in the accessibility service configuration files with the
+{@code android:accessibilityEventTypes} attribute as a list separated by the {@code |} character
+(for example {@code accessibilityEventTypes="typeViewClicked|typeViewFocused"}), or set using the
+{@link android.accessibilityservice.AccessibilityServiceInfo#eventTypes
+AccessibilityServiceInfo.eventTypes} member. </li>
+</ul>
+
+<p>When setting up your accessibility service, carefully consider what events your service is able
+to handle and only register for those events. Since users can activate more than one accessibility
+services at a time, your service must not consume events that it is not able to handle. Remember
+that other services may handle those events in order to improve a user's experience.</p>
+
+<p class="note"><strong>Note:</strong> The Android framework dispatches accessibility events to
+more than one accessibility service if the services provide different
+<a href="{@docRoot}reference/android/R.styleable.html#AccessibilityService_accessibilityFeedbackType">
+feedback types</a>. However, if two or more services provide the same feedback type, then only the
+first registered service receives the event.</p>
+
+
 <h2 id="methods">AccessibilityService Methods</h2>
 
-<p>An application that provides accessibility service must extend the {@link
+<p>An accessibility service must extend the {@link
 android.accessibilityservice.AccessibilityService} class and override the following methods from
 that class. These methods are presented in the order in which they are called by the Android system,
 from when the service is started
@@ -188,15 +214,15 @@
 {@link android.view.accessibility.AccessibilityEvent} that matches the event filtering parameters
 specified by your accessibility service. For example, when the user clicks a button or focuses on a
 user interface control in an application for which your accessibility service is providing feedback.
-When this happens, the system calls this method of your service with the associated {@link
-android.view.accessibility.AccessibilityEvent}, which you can then interpret and provide feedback to
-the user. This method may be called many times over the lifecycle of your service.</li>
+When this happens, the system calls this method, passing the associated {@link
+android.view.accessibility.AccessibilityEvent}, which the service can then interpret and use to
+provide feedback to the user. This method may be called many times over the lifecycle of your
+service.</li>
 
   <li>{@link android.accessibilityservice.AccessibilityService#onInterrupt onInterrupt()} -
 (required) This method is called when the system wants to interrupt the feedback your service is
-providing, usually in response to a user taking action, such as moving focus to a different user
-interface control than the one for which you are currently providing feedback. This method may be
-called many times over the lifecycle of your service.</li>
+providing, usually in response to a user action such as moving focus to a different control. This
+method may be called many times over the lifecycle of your service.</li>
 
   <li>{@link android.accessibilityservice.AccessibilityService#onUnbind onUnbind()} - (optional)
 This method is called when the system is about to shutdown the accessibility service. Use this
@@ -206,7 +232,9 @@
 
 <p>These callback methods provide the basic structure for your accessibility service. It is up to
 you to decide on how to process data provided by the Android system in the form of {@link
-android.view.accessibility.AccessibilityEvent} objects and provide feedback to the user.</p>
+android.view.accessibility.AccessibilityEvent} objects and provide feedback to the user. For more
+information about getting information from an accessibility event, see the
+<a href="{@docRoot}training/accessibility/service.html">Implementing Accessibility</a> training.</p>
 
 
 <h2 id="event-details">Getting Event Details</h2>
@@ -214,15 +242,15 @@
 <p>The Android system provides information to accessibility services about the user interface
 interaction through {@link android.view.accessibility.AccessibilityEvent} objects. Prior to Android
 4.0, the information available in an accessibility event, while providing a significant amount of
-detail about a user interface control selected by the user, typically provided limited contextual
+detail about a user interface control selected by the user, offered limited contextual
 information. In many cases, this missing context information might be critical to understanding the
 meaning of the selected control.</p>
 
-<p>A typical example of an interface where context is of critical importance is a calendar or day
-planner. If a user selects a 4:00 PM time slot in a Monday to Friday day list and the accessibility
-service announces “4 PM”, but fails to indicate this is a Friday a Monday, the month or day, this is
-hardly ideal feedback for the user. In this case, the context of a user interface control is of
-critical importance to a user who wants to schedule a meeting.</p>
+<p>An example of an interface where context is critical is a calendar or day planner. If the
+user selects a 4:00 PM time slot in a Monday to Friday day list and the accessibility service
+announces “4 PM”, but does not announce the weekday name, the day of the month, or the month name,
+the resulting feedback is confusing. In this case, the context of a user interface control is
+critical to a user who wants to schedule a meeting.</p>
 
 <p>Android 4.0 significantly extends the amount of information that an accessibility service can
 obtain about an user interface interaction by composing accessibility events based on the view
@@ -245,26 +273,167 @@
 AccessibilityEvent.getRecordCount()} and {@link
 android.view.accessibility.AccessibilityEvent#getRecord getRecord(int)} - These methods allow you to
 retrieve the set of {@link android.view.accessibility.AccessibilityRecord} objects which contributed
-to the {@link android.view.accessibility.AccessibilityEvent} passed to you by the system, which can
-provide more context for your accessibility service.</li>
+to the {@link android.view.accessibility.AccessibilityEvent} passed to you by the system. This level
+of detail provides more context for the event that triggered your accessibility service.</li>
 
   <li>{@link android.view.accessibility.AccessibilityEvent#getSource
 AccessibilityEvent.getSource()} - This method returns an {@link
-android.view.accessibility.AccessibilityNodeInfo} object. This object allows you to request the
-parents and children of the component that originated the accessibility event and investigate their
-contents and state in order to provide
+android.view.accessibility.AccessibilityNodeInfo} object. This object allows you to request view
+layout hierarchy (parents and children) of the component that originated the accessibility event.
+This feature allows an accessibility service to investigate the full context of an event, including
+the content and state of any enclosing views or child views.
 
-    <p class="caution"><strong>Important:</strong> The ability to investigate the full view
+<p class="caution"><strong>Important:</strong> The ability to investigate the view
 hierarchy from an {@link android.view.accessibility.AccessibilityEvent} potentially exposes private
 user information to your accessibility service. For this reason, your service must request this
 level of access through the accessibility <a href="#service-config">service configuration XML</a>
 file, by including the {@code canRetrieveWindowContent} attribute and setting it to {@code true}. If
 you do not include this setting in your service configuration xml file, calls to {@link
 android.view.accessibility.AccessibilityEvent#getSource getSource()} fail.</p>
+
+<p class="note"><strong>Note:</strong> In Android 4.1 (API Level 16) and higher, the
+{@link android.view.accessibility.AccessibilityEvent#getSource getSource()} method,
+as well as {@link android.view.accessibility.AccessibilityNodeInfo#getChild
+AccessibilityNodeInfo.getChild()} and
+{@link android.view.accessibility.AccessibilityNodeInfo#getParent getParent()}, return only
+view objects that are considered important for accessibility (views that draw content or respond to
+user actions). If your service requires all views, it can request them by setting the
+{@link android.accessibilityservice.AccessibilityServiceInfo#flags flags} member of the service's
+{@link android.accessibilityservice.AccessibilityServiceInfo} instance to
+{@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_INCLUDE_NOT_IMPORTANT_VIEWS}.</p>
   </li>
 </ul>
 
 
+<h2 id="act-for-users">Taking Action for Users</h2>
+
+<p>Starting with Android 4.0 (API Level 14), accessibility services can act on behalf
+  of users, including changing the input focus and selecting (activating) user interface elements.
+  In Android 4.1 (API Level 16) the range of actions has been expanded to include scrolling lists
+  and interacting with text fields. Accessibility services can
+  also take global actions, such as navigating to the Home screen, pressing the Back button, opening
+  the notifications screen and recent applications list. Android 4.1 also includes a new type of
+  focus, <em>Accessibilty Focus</em>, which makes all visible elements selectable by an
+  accessibility service.</p>
+
+<p>These new capabilities make it possible for developers of accessibility services to create
+  alternative navigation modes such as
+  <a href="{@docRoot}tools/testing/testing_accessibility.html#test-gestures">gesture navigation</a>,
+  and give users with disabilities improved control of their Android devices.</p>
+
+
+<h3 id="detect-gestures">Listening for gestures</h3>
+
+<p>Accessibility services can listen for specific gestures and respond by taking action on behalf
+  of a user. This feature, added in Android 4.1 (API Level 16), and requires that your
+  accessibility service request activation of the Explore by Touch feature. Your service can
+  request this activation by setting the
+  {@link android.accessibilityservice.AccessibilityServiceInfo#flags flags} member of the service’s
+  {@link android.accessibilityservice.AccessibilityServiceInfo} instance to
+  {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_TOUCH_EXPLORATION_MODE},
+  as shown in the following example.
+  </p>
+
+<pre>
+public class MyAccessibilityService extends AccessibilityService {
+    &#64;Override
+    public void onCreate() {
+        getServiceInfo().flags = AccessibilityServiceInfo.FLAG_REQUEST_TOUCH_EXPLORATION_MODE;
+    }
+    ...
+}
+</pre>
+
+<p>Once your service has requested activation of Explore by Touch, the user must allow the
+  feature to be turned on, if it is not already active. When this feature is active, your service
+  receives notification of accessibility gestures through your service's
+  {@link android.accessibilityservice.AccessibilityService#onGesture onGesture()} callback method
+  and can respond by taking actions for the user.</p>
+
+
+<h3 id="using-actions">Using accessibility actions</h3>
+
+<p>Accessibility services can take action on behalf of users to make interacting with applications
+  simpler and more productive. The ability of accessibility services to perform actions was added
+  in Android 4.0 (API Level 14) and significantly expanded with Android 4.1 (API Level 16).</p>
+
+<p>In order to take actions on behalf of users, your accessibility service must
+  <a href="#register">register</a> to receive events from a few or many applications and request
+  permission to view the content of applications by setting the
+  <a href="{@docRoot}reference/android/R.styleable.html#AccessibilityService_canRetrieveWindowContent">
+  {@code android:canRetrieveWindowContent}</a> to {@code true} in the
+  <a href="#service-config">service configuration file</a>. When events are received by your
+  service, it can then retrieve the
+  {@link android.view.accessibility.AccessibilityNodeInfo} object from the event using
+  {@link android.view.accessibility.AccessibilityEvent#getSource getSource()}.
+  With the {@link android.view.accessibility.AccessibilityNodeInfo} object, your service can then
+  explore the view hierarchy to determine what action to take and then act for the user using
+  {@link android.view.accessibility.AccessibilityNodeInfo#performAction performAction()}.</p>
+
+<pre>
+public class MyAccessibilityService extends AccessibilityService {
+
+    &#64;Override
+    public void onAccessibilityEvent(AccessibilityEvent event) {
+        // get the source node of the event
+        AccessibilityNodeInfo nodeInfo = event.getSource();
+
+        // Use the event and node information to determine
+        // what action to take
+
+        // take action on behalf of the user
+        nodeInfo.performAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD);
+
+        // recycle the nodeInfo object
+        nodeInfo.recycle();
+    }
+    ...
+}
+</pre>
+
+<p>The {@link android.view.accessibility.AccessibilityNodeInfo#performAction performAction()} method
+  allows your service to take action within an application. If your service needs to perform a
+  global action such as navigating to the Home screen, pressing the Back button, opening the
+  notifications screen or recent applications list, then use the
+  {@link android.accessibilityservice.AccessibilityService#performGlobalAction performGlobalAction()}
+  method.</p>
+
+
+<h3 id="focus-types">Using focus types</h3>
+
+<p>Android 4.1 (API Level 16) introduces a new type of user interface focus called <em>Accessibility
+  Focus</em>. This type of focus can be used by accessibility services to select any visible user
+  interface element and act on it. This focus type is different from the more well known <em>Input
+  Focus</em>, which determines what on-screen user interface element receives input when a user
+  types characters, presses <strong>Enter</strong> on a keyboard or pushes the center button of a
+  D-pad control.</p>
+
+<p>Accessibility Focus is completely separate and independent from Input Focus. In fact, it is
+  possible for one element in a user interface to have Input Focus while another element has
+  Accessibility Focus. The purpose of Accessibility Focus is to provide accessibility services with
+  a method of interacting with any visible element on a screen, regardless of whether or not the
+  element is input-focusable from a system perspective. You can see accessibility focus in action by
+  testing accessibility gestures. For more information about testing this feature, see
+  <a href="{@docRoot}tools/testing/testing_accessibility.html#test-gestures">Testing gesture
+  navigation</a>.</p>
+
+<p class="note">
+  <strong>Note:</strong> Accessibility services that use Accessibility Focus are responsible for
+  synchronizing the current Input Focus when an element is capable of this type of focus. Services
+  that do not synchronize Input Focus with Accessibility Focus run the risk of causing problems in
+  applications that expect input focus to be in a specific location when certain actions are taken.
+  </p>
+
+<p>An accessibility service can determine what user interface element has Input Focus or
+  Accessibility Focus using the {@link android.view.accessibility.AccessibilityNodeInfo#findFocus
+  AccessibilityNodeInfo.findFocus()} method. You can also search for elements that can be selected
+  with Input Focus using the
+  {@link android.view.accessibility.AccessibilityNodeInfo#focusSearch focusSearch()} method.
+  Finally, your accessibility service can set Accessibility Focus using the
+  {@link android.view.accessibility.AccessibilityNodeInfo#performAction
+  performAction(AccessibilityNodeInfo.ACTION_SET_ACCESSIBILITY_FOCUS)} method.</p>
+
+
 <h2 id="examples">Example Code</h2>
 
 <p>The API Demo project contains two samples which can be used as a starting point for generating
diff --git a/docs/html/guide/topics/ui/controls.jd b/docs/html/guide/topics/ui/controls.jd
index 83bb0c8..a58d9f9 100644
--- a/docs/html/guide/topics/ui/controls.jd
+++ b/docs/html/guide/topics/ui/controls.jd
@@ -15,7 +15,7 @@
 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>
+<pre style="clear:right">
 &lt;?xml version="1.0" encoding="utf-8"?>
 &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
diff --git a/docs/html/guide/topics/ui/controls/checkbox.jd b/docs/html/guide/topics/ui/controls/checkbox.jd
index 35b8f56..ea70980 100644
--- a/docs/html/guide/topics/ui/controls/checkbox.jd
+++ b/docs/html/guide/topics/ui/controls/checkbox.jd
@@ -65,7 +65,7 @@
 <pre>
 public void onCheckboxClicked(View view) {
     // Is the view now checked?
-    boolean checked = (CheckBox) view).isChecked();
+    boolean checked = ((CheckBox) view).isChecked();
     
     // Check which checkbox was clicked
     switch(view.getId()) {
diff --git a/docs/html/guide/topics/ui/controls/radiobutton.jd b/docs/html/guide/topics/ui/controls/radiobutton.jd
index f6f6d49..c96e576 100644
--- a/docs/html/guide/topics/ui/controls/radiobutton.jd
+++ b/docs/html/guide/topics/ui/controls/radiobutton.jd
@@ -72,7 +72,7 @@
 <pre>
 public void onRadioButtonClicked(View view) {
     // Is the button now checked?
-    boolean checked = (RadioButton) view).isChecked();
+    boolean checked = ((RadioButton) view).isChecked();
     
     // Check which radio button was clicked
     switch(view.getId()) {
diff --git a/docs/html/guide/topics/ui/declaring-layout.jd b/docs/html/guide/topics/ui/declaring-layout.jd
index 3c9faa8..e229f23 100644
--- a/docs/html/guide/topics/ui/declaring-layout.jd
+++ b/docs/html/guide/topics/ui/declaring-layout.jd
@@ -32,12 +32,17 @@
     <li>{@link android.view.ViewGroup}</li>
     <li>{@link android.view.ViewGroup.LayoutParams}</li>
   </ol>
-</div>
+  
+  <h2>See also</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/firstapp/building-ui.html">Building a Simple User
+Interface</a></li> </div>
 </div>
 
-<p>Your layout is the architecture for the user interface in an Activity.
-It defines the layout structure and holds all the elements that appear to the user. 
-You can declare your layout in two ways:</p>
+<p>A layout defines the visual structure for a user interface, such as the UI for an <a
+href="{@docRoot}guide/components/activities.html">activity</a> or <a
+href="{@docRoot}guide/topics/appwidgets/index.html">app widget</a>.
+You can declare a layout in two ways:</p>
 <ul>
 <li><strong>Declare UI elements in XML</strong>. Android provides a straightforward XML 
 vocabulary that corresponds to the View classes and subclasses, such as those for widgets and layouts.</li>
@@ -77,16 +82,6 @@
 
 <h2 id="write">Write the XML</h2>
 
-<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}guide/topics/resources/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 web pages in HTML &mdash; with a series of nested elements. </p>
 
 <p>Each layout file must contain exactly one root element, which must be a View or ViewGroup object. Once you've defined the root element, you can add additional layout objects or widgets as child elements to gradually build a View hierarchy that defines your layout. For example, here's an XML layout that uses a vertical {@link android.widget.LinearLayout}
@@ -111,7 +106,8 @@
 <p>After you've declared your layout in XML, save the file with the <code>.xml</code> extension, 
 in your Android project's <code>res/layout/</code> directory, so it will properly compile. </p>
 
-<p>We'll discuss each of the attributes shown here a little later.</p>
+<p>More information about the syntax for a layout XML file is available in the <a
+href="{@docRoot}guide/topics/resources/layout-resource.html">Layout Resources</a> document.</p>
 
 <h2 id="load">Load the XML Resource</h2>
 
@@ -406,13 +402,13 @@
 
 <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>
+  <a href="layout/listview.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>
+  <a href="layout/gridview.html"><img src="{@docRoot}images/ui/gridview-small.png" alt="" /></a>
   <p>Displays a scrolling grid of columns and rows.</p>
 </div>
 
diff --git a/docs/html/guide/topics/ui/dialogs.jd b/docs/html/guide/topics/ui/dialogs.jd
index d1c24df..62c054a 100644
--- a/docs/html/guide/topics/ui/dialogs.jd
+++ b/docs/html/guide/topics/ui/dialogs.jd
@@ -1,680 +1,806 @@
 page.title=Dialogs
-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="#DialogFragment">Creating a Dialog Fragment</a></li>
+  <li><a href="#AlertDialog">Building an Alert Dialog</a>
     <ol>
-      <li><a href="#ShowingADialog">Showing a Dialog</a></li>
-      <li><a href="#DismissingADialog">Dismissing a Dialog</a></li>
-      <li><a href="#AlertDialog">Creating an AlertDialog</a>
-        <ol>
-          <li><a href="#AddingButtons">Adding buttons</a></li>
-          <li><a href="#AddingAList">Adding a list</a></li>
-        </ol>
-      </li>
-      <li><a href="#ProgressDialog">Creating a ProgressDialog</a>
-        <ol>
-          <li><a href="#ShowingAProgressBar">Showing a progress bar</a></li>
-        </ol>
-      </li>
-      <li><a href="#CustomDialog">Creating a Custom Dialog</a></li>
+      <li><a href="#AddingButtons">Adding buttons</a></li>
+      <li><a href="#AddingAList">Adding a list</a></li>
+      <li><a href="#CustomLayout">Creating a Custom Layout</a></li>
     </ol>
+  </li>
+  <li><a href="#PassingEvents">Passing Events Back to the Dialog's Host</a></li>
+  <li><a href="#ShowingADialog">Showing a Dialog</a></li>
+  <li><a href="#FullscreenDialog">Showing a Dialog Fullscreen or as an Embedded Fragment</a>
+    <ol>
+      <li><a href="#ActivityAsDialog">Showing an activity as a dialog on large screens</a></li>
+    </ol>
+  </li>
+  <li><a href="#DismissingADialog">Dismissing a Dialog</a></li>
+</ol>
 
     <h2>Key classes</h2>
     <ol>
-      <li>{@link android.app.Dialog}</li>
-      <li>{@link android.app.AlertDialog}</li>
       <li>{@link android.app.DialogFragment}</li>
-    </ol>
-
-    <h2>Related tutorials</h2>
-    <ol>
-      <li><a href="{@docRoot}resources/tutorials/views/hello-datepicker.html">Hello
-DatePicker</a></li>
-      <li><a href="{@docRoot}resources/tutorials/views/hello-timepicker.html">Hello
-TimePicker</a></li>
+      <li>{@link android.app.AlertDialog}</li>
     </ol>
     
     <h2>See also</h2>
     <ol>
-      <li><a href="{@docRoot}design/building-blocks/dialogs.html">Android Design: Dialogs</a></li>
+      <li><a href="{@docRoot}design/building-blocks/dialogs.html">Dialogs design guide</a></li>
+      <li><a href="{@docRoot}guide/topics/ui/controls/pickers.html">Pickers</a> (Date/Time dialogs)</li>
     </ol>
   </div>
 </div>
 
-<p>A dialog is usually a small window that appears in front of the current Activity.
-The underlying Activity loses focus and the dialog accepts all user interaction. Dialogs are
-normally used for notifications that should interrupt the user and to perform short tasks that
-directly relate to the application in progress (such as a progress bar or a login prompt).</p>
-
-<p>The {@link android.app.Dialog} class is the base class for creating dialogs. However, you
-typically should not instantiate a {@link android.app.Dialog} directly. Instead, you should use one
-of the following subclasses:</p>
-<dl>
-  <dt>{@link android.app.AlertDialog}</dt>
-  <dd>A dialog that can manage zero, one, two, or three buttons, and/or a list of
-    selectable items that can include checkboxes or radio buttons. The AlertDialog 
-    is capable of constructing most dialog user interfaces and is the suggested dialog type.
-    See <a href="#AlertDialog">Creating an AlertDialog</a> below.</dd>
-  <dt>{@link android.app.ProgressDialog}</dt>
-  <dd>A dialog that displays a progress wheel or progress bar. Because it's an extension of
-    the AlertDialog, it also supports buttons.
-    See <a href="#ProgressDialog">Creating a ProgressDialog</a> below.</dd>
-  <dt>{@link android.app.DatePickerDialog}</dt>
-  <dd>A dialog that allows the user to select a date. See the 
-    <a href="{@docRoot}resources/tutorials/views/hello-datepicker.html">Hello DatePicker</a> tutorial.</dd>
-  <dt>{@link android.app.TimePickerDialog}</dt>
-  <dd>A dialog that allows the user to select a time. See the 
-    <a href="{@docRoot}resources/tutorials/views/hello-timepicker.html">Hello TimePicker</a> tutorial.</dd>
-</dl>
-
-<p>If you would like to customize your own dialog, you can extend the
-base {@link android.app.Dialog} object or any of the subclasses listed above and define a new layout.
-See the section on <a href="#CustomDialog">Creating a Custom Dialog</a> below.</p>
+<p>A dialog is a small window that prompts the user to
+make a decision or enter additional information. A dialog does not fill the screen and is
+normally used for modal events that require users to take an action before they can proceed.</p>
 
 <div class="note design">
 <p><strong>Dialog Design</strong></p>
-  <p>For design guidelines, read Android Design's <a
-href="{@docRoot}design/building-blocks/dialogs.html">Dialogs</a> guide.</p>
+  <p>For information about how to design your dialogs, including recommendations
+  for language, read the <a
+href="{@docRoot}design/building-blocks/dialogs.html">Dialogs</a> design guide.</p>
 </div>
 
+<img src="{@docRoot}images/ui/dialogs.png" />
+
+<p>The {@link android.app.Dialog} class is the base class for dialogs, but you
+should avoid instantiating {@link android.app.Dialog} directly.
+Instead, use one of the following subclasses:</p>
+<dl>
+  <dt>{@link android.app.AlertDialog}</dt>
+  <dd>A dialog that can show a title, up to three buttons, a list of
+    selectable items, or a custom layout.</dd>
+  <dt>{@link android.app.DatePickerDialog} or {@link android.app.TimePickerDialog}</dt>
+  <dd>A dialog with a pre-defined UI that allows the user to select a date or time.</dd>
+</dl>
+
+<div class="sidebox">
+<h2>Avoid ProgressDialog</h2>
+<p>Android includes another dialog class called
+{@link android.app.ProgressDialog} that shows a dialog with a progress bar. However, if you
+need to indicate loading or indeterminate progress, you should instead follow the design
+guidelines for <a href="{@docRoot}design/building-blocks/progress.html">Progress &amp;
+Activity</a> and use a {@link android.widget.ProgressBar} in your layout.</p>
+</div>
+
+<p>These classes define the style and structure for your dialog, but you should
+use a {@link android.support.v4.app.DialogFragment} as a container for your dialog.
+The {@link android.support.v4.app.DialogFragment} class provides all the controls you
+need to create your dialog and manage its appearance, instead of calling methods
+on the {@link android.app.Dialog} object.</p>
+
+<p>Using {@link android.support.v4.app.DialogFragment} to manage the dialog
+ensures that it correctly handles lifecycle events
+such as when the user presses the <em>Back</em> button or rotates the screen. The {@link
+android.support.v4.app.DialogFragment} class also allows you to reuse the dialog's UI as an
+embeddable component in a larger UI, just like a traditional {@link
+android.support.v4.app.Fragment} (such as when you want the dialog UI to appear differently
+on large and small screens).</p>
+
+<p>The following sections in this guide describe how to use a {@link
+android.support.v4.app.DialogFragment} in combination with an {@link android.app.AlertDialog}
+object. If you'd like to create a date or time picker, you should instead read the
+<a href="{@docRoot}guide/topics/ui/controls/pickers.html">Pickers</a> guide.</p>
+
+<p class="note"><strong>Note:</strong>
+Because the {@link android.app.DialogFragment} class was originally added with
+Android 3.0 (API level 11), this document describes how to use the {@link
+android.support.v4.app.DialogFragment} class that's provided with the <a
+href="{@docRoot}tools/extras/support-library.html">Support Library</a>. By adding this library
+to your app, you can use {@link android.support.v4.app.DialogFragment} and a variety of other
+APIs on devices running Android 1.6 or higher. If the minimum version your app supports
+is API level 11 or higher, then you can use the framework version of {@link
+android.app.DialogFragment}, but be aware that the links in this document are for the support
+library APIs. When using the support library,
+be sure that you import <code>android.support.v4.app.DialogFragment</code>
+class and <em>not</em> <code>android.app.DialogFragment</code>.</p>
+
+
+<h2 id="DialogFragment">Creating a Dialog Fragment</h2>
+
+<p>You can accomplish a wide variety of dialog designs&mdash;including
+custom layouts and those described in the <a
+href="{@docRoot}design/building-blocks/dialogs.html">Dialogs</a>
+design guide&mdash;by extending
+{@link android.support.v4.app.DialogFragment} and creating a {@link android.app.AlertDialog}
+in the {@link android.support.v4.app.DialogFragment#onCreateDialog
+onCreateDialog()} callback method.</p>
+
+<p>For example, here's a basic {@link android.app.AlertDialog} that's managed within
+a {@link android.support.v4.app.DialogFragment}:</p>
+
+<pre>
+public class FireMissilesDialog extends DialogFragment {
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Use the Builder class for convenient dialog construction
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // FIRE ZE MISSILES!
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // User cancelled the dialog
+                   }
+               });
+        // Create the AlertDialog object and return it
+        return builder.create();
+    }
+}
+</pre>
+
+<div class="figure" style="width:290px;margin:0 0 0 20px">
+<img src="{@docRoot}images/ui/dialog_buttons.png" alt="" />
+<p class="img-caption"><strong>Figure 1.</strong>
+A dialog with a message and two action buttons.</p>
+</div>
+
+<p>Now, when you create an instance of this class and call {@link
+android.support.v4.app.DialogFragment#show show()} on that object, the dialog appears as
+shown in figure 1.</p>
+
+<p>The next section describes more about using the {@link android.app.AlertDialog.Builder}
+APIs to create the dialog.</p>
+
+<p>Depending on how complex your dialog is, you can implement a variety of other callback
+methods in the {@link android.support.v4.app.DialogFragment}, including all the basic
+<a href="{@docRoot}guide/components/fragments.html#Lifecycle">fragment lifecycle methods</a>.
+
+
+
+
+
+<h2 id="AlertDialog">Building an Alert Dialog</h2>
+
+
+<p>The {@link android.app.AlertDialog} class allows you to build a variety of dialog designs and
+is often the only dialog class you'll need.
+As shown in figure 2, there are three regions of an alert dialog:</p>
+
+<div class="figure" style="width:311px;margin-top:0">
+<img src="{@docRoot}images/ui/dialogs_regions.png" alt="" style="margin-bottom:0"/>
+<p class="img-caption"><strong>Figure 2.</strong> The layout of a dialog.</p>
+</div>
+
+<ol>
+<li><b>Title</b>
+  <p>This is optional and should be used only when the content area
+  is occupied by a detailed message, a list, or custom layout. If you need to state
+  a simple message or question (such as the dialog in figure 1), you don't need a title.</li>
+<li><b>Content area</b>
+  <p>This can display a message, a list, or other custom layout.</p></li>
+<li><b>Action buttons</b>
+  <p>There should be no more than three action buttons in a dialog.</p></li>
+</ol>
+
+<p>The {@link android.app.AlertDialog.Builder}
+class provides APIs that allow you to create an {@link android.app.AlertDialog}
+with these kinds of content, including a custom layout.</p>
+
+<p>To build an {@link android.app.AlertDialog}:</p>
+
+<pre>
+<b>// 1. Instantiate an {@link android.app.AlertDialog.Builder} with its constructor</b>
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+
+<b>// 2. Chain together various setter methods to set the dialog characteristics</b>
+builder.setMessage(R.string.dialog_message)
+       .setTitle(R.string.dialog_title);
+
+<b>// 3. Get the {@link android.app.AlertDialog} from {@link android.app.AlertDialog.Builder#create()}</b>
+AlertDialog dialog = builder.create();
+</pre>
+
+<p>The following topics show how to define various dialog attributes using the
+{@link android.app.AlertDialog.Builder} class.</p>
+
+
+
+
+<h3 id="AddingButtons">Adding buttons</h3>
+
+<p>To add action buttons like those in figure 2,
+call the {@link android.app.AlertDialog.Builder#setPositiveButton setPositiveButton()} and
+{@link android.app.AlertDialog.Builder#setNegativeButton setNegativeButton()} methods:</p>
+
+<pre style="clear:right">
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+// Add the buttons
+builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User clicked OK button
+           }
+       });
+builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User cancelled the dialog
+           }
+       });
+// Set other dialog properties
+...
+
+// Create the AlertDialog
+AlertDialog dialog = builder.create();
+</pre>
+
+<p>The <code>set...Button()</code> methods require a title for the button (supplied
+by a <a href="{@docRoot}guide/topics/resources/string-resource.html">string resource</a>) and a 
+{@link android.content.DialogInterface.OnClickListener} that defines the action to take 
+when the user presses the button.</p>
+
+<p>There are three different action buttons you can add:</p>
+<dl>
+  <dt>Positive</dt>
+  <dd>You should use this to accept and continue with the action (the "OK" action).</dd>
+  <dt>Negative</dt>
+  <dd>You should use this to cancel the action.</dd>
+  <dt>Neutral</dt>
+  <dd>You should use this when the user may not want to proceed with the action,
+  but doesn't necessarily want to cancel. It appears between the positive and negative
+  buttons. For example, the action might be "Remind me later."</dd> 
+</dl>
+
+<p>You can add only one of each button type to an {@link
+android.app.AlertDialog}. That is, you cannot have more than one "positive" button.</p>
+
+
+
+<div class="figure" style="width:290px;margin:0 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_list.png" alt="" />
+<p class="img-caption"><strong>Figure 3.</strong>
+A dialog with a title and list.</p>
+</div>
+
+<h3 id="AddingAList">Adding a list</h3>
+
+<p>There are three kinds of lists available with the {@link android.app.AlertDialog} APIs:</p>
+<ul>
+<li>A traditional single-choice list</li>
+<li>A persistent single-choice list (radio buttons)</li>
+<li>A persistent multiple-choice list (checkboxes)</li>
+</ul>
+
+<p>To create a single-choice list like the one in figure 3, 
+use the {@link android.app.AlertDialog.Builder#setItems setItems()} method:</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    builder.setTitle(R.string.pick_color);
+           .setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int which) {
+               // The 'which' argument contains the index position
+               // of the selected item
+           }
+    });
+    return builder.create();
+}
+</pre>
+
+<p>Because the list appears in the dialog's content area,
+the dialog cannot show both a message and a list and you should set a title for the
+dialog with {@link android.app.AlertDialog.Builder#setTitle setTitle()}. 
+To specify the items for the list, call {@link
+android.app.AlertDialog.Builder#setItems setItems()}, passing an array.
+Alternatively, you can specify a list using {@link
+android.app.AlertDialog.Builder#setAdapter setAdapter()}. This allows you to back the list
+with dynamic data (such as from a database) using a {@link android.widget.ListAdapter}.</p>
+
+<p>If you choose to back your list with a {@link android.widget.ListAdapter},
+always use a {@link android.support.v4.content.Loader} so that the content loads
+asynchronously. This is described further in
+<a href="{@docRoot}guide/topics/ui/declaring-layout.html#AdapterViews">Building Layouts
+with an Adapter</a> and the <a href="{@docRoot}guide/components/loaders.html">Loaders</a>
+guide.</p>
+
+<p class="note"><strong>Note:</strong> By default, touching a list item dismisses the dialog,
+unless you're using one of the following persistent choice lists.</p>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_checkboxes.png" />
+<p class="img-caption"><strong>Figure 4.</strong>
+A list of multiple-choice items.</p>
+</div>
+
+
+<h4 id="Checkboxes">Adding a persistent multiple-choice or single-choice list</h4>
+
+<p>To add a list of multiple-choice items (checkboxes) or 
+single-choice items (radio buttons), use the
+{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} or 
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()} methods, respectively.</p>
+
+<p>For example, here's how you can create a multiple-choice list like the
+one shown in figure 4 that saves the selected
+items in an {@link java.util.ArrayList}:</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    mSelectedItems = new ArrayList();  // Where we track the selected items
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Set the dialog title
+    builder.setTitle(R.string.pick_toppings)
+    // Specify the list array, the items to be selected by default (null for none),
+    // and the listener through which to receive callbacks when items are selected
+           .setMultiChoiceItems(R.array.toppings, null,
+                      new DialogInterface.OnMultiChoiceClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int which,
+                       boolean isChecked) {
+                   if (isChecked) {
+                       // If the user checked the item, add it to the selected items
+                       mSelectedItems.add(which);
+                   } else if (mSelectedItems.contains(which)) {
+                       // Else, if the item is already in the array, remove it 
+                       mSelectedItems.remove(Integer.valueOf(which));
+                   }
+               }
+           })
+    // Set the action buttons
+           .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // User clicked OK, so save the mSelectedItems results somewhere
+                   // or return them to the component that opened the dialog
+                   ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   ...
+               }
+           });
+
+    return builder.create();
+}
+</pre>
+
+<p>Although both a traditional list and a list with radio buttons
+provide a "single choice" action, you should use {@link
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()} if you want to persist the user's choice.
+That is, if opening the dialog again later should indicate what the user's current choice is,
+then you create a list with radio buttons.</p>
+
+
+
+
+
+<h3 id="CustomLayout">Creating a Custom Layout</h3>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_custom.png" alt="" />
+<p class="img-caption"><strong>Figure 5.</strong> A custom dialog layout.</p>
+</div>
+
+<p>If you want a custom layout in a dialog, create a layout and add it to an
+{@link android.app.AlertDialog} by calling {@link
+android.app.AlertDialog.Builder#setView setView()} on your {@link
+android.app.AlertDialog.Builder} object.</p>
+
+<p>By default, the custom layout fills the dialog window, but you can still
+use {@link android.app.AlertDialog.Builder} methods to add buttons and a title.</p>
+
+<p>For example, here's the layout file for the dialog in Figure 5:</p>
+
+<p style="clear:right" class="code-caption">res/layout/dialog_signin.xml</p>
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+    &lt;ImageView
+        android:src="@drawable/header_logo"
+        android:layout_width="match_parent"
+        android:layout_height="64dp"
+        android:scaleType="center"
+        android:background="#FFFFBB33"
+        android:contentDescription="@string/app_name" />
+    &lt;EditText
+        android:id="@+id/username"
+        android:inputType="textEmailAddress"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="16dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="4dp"
+        android:hint="@string/username" />
+    &lt;EditText
+        android:id="@+id/password"
+        android:inputType="textPassword"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="4dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="16dp"
+        android:fontFamily="sans-serif"
+        android:hint="@string/password"/>
+&lt;/LinearLayout>
+</pre>
+
+<p class="note"><strong>Tip:</strong> By default, when you set an {@link android.widget.EditText}
+element to use the {@code "textPassword"} input type, the font family is set to monospace, so
+you should change its font family to {@code "sans-serif"} so that both text fields use
+a matching font style.</p>
+
+<p>To inflate the layout in your {@link android.support.v4.app.DialogFragment},
+get a {@link android.view.LayoutInflater} with 
+{@link android.app.Activity#getLayoutInflater()} and call
+{@link android.view.LayoutInflater#inflate inflate()}, where the first parameter
+is the layout resource ID and the second parameter is a parent view for the layout.
+You can then call {@link android.app.AlertDialog#setView setView()}
+to place the layout in the dialog.</p>
+
+<pre>
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Get the layout inflater
+    LayoutInflater inflater = getActivity().getLayoutInflater();
+
+    // Inflate and set the layout for the dialog
+    // Pass null as the parent view because its going in the dialog layout
+    builder.setView(inflater.inflate(R.layout.dialog_signin, null))
+    // Add action buttons
+           .setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // sign in the user ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int id) {
+                   NoticeDialog.this.getDialog().cancel();
+               }
+           });      
+    return builder.create();
+}
+</pre>
+
+<div class="note">
+<p><strong>Tip:</strong> If you want a custom dialog,
+you can instead display an {@link android.app.Activity} as a dialog
+instead of using the {@link android.app.Dialog} APIs. Simply create an activity and set its theme to
+{@link android.R.style#Theme_Holo_Dialog Theme.Holo.Dialog}
+in the <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> manifest element:</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.Dialog" >
+</pre>
+<p>That's it. The activity now displays in a dialog window instead of fullscreen.</p>
+</div>
+
+
+
+<h2 id="PassingEvents">Passing Events Back to the Dialog's Host</h2>
+
+<p>When the user touches one of the dialog's action buttons or selects an item from its list,
+your {@link android.support.v4.app.DialogFragment} might perform the necessary
+action itself, but often you'll want to deliver the event to the activity or fragment that
+opened the dialog. To do this, define an interface with a method for each type of click event,
+then implement that interface in the host component that will
+receive the action events from the dialog.</p>
+
+<p>For example, here's a {@link android.support.v4.app.DialogFragment} that defines an
+interface through which it delivers the events back to the host activity:</p>
+
+<pre>
+public class NoticeDialog extends DialogFragment {
+    
+    /* The activity that creates an instance of this dialog fragment must
+     * implement this interface in order to receive event callbacks.
+     * Each method passes the DialogFragment in case the host needs to query it. */
+    public interface NoticeDialogListener {
+        public void onDialogPositiveClick(DialogFragment dialog);
+        public void onDialogNegativeClick(DialogFragment dialog);
+    }
+    
+    // Use this instance of the interface to deliver action events
+    static NoticeDialogListener mListener;
+        
+    /* Call this to instantiate a new NoticeDialog.
+     * @param activity  The activity hosting the dialog, which must implement the
+     *                  NoticeDialogListener to receive event callbacks.
+     * @returns A new instance of NoticeDialog.
+     * @throws  ClassCastException if the host activity does not
+     *          implement NoticeDialogListener
+     */
+    public static NoticeDialog newInstance(Activity activity) {
+        // Verify that the host activity implements the callback interface
+        try {
+            // Instantiate the NoticeDialogListener so we can send events with it
+            mListener = (NoticeDialogListener) activity;
+        } catch (ClassCastException e) {
+            // The activity doesn't implement the interface, throw exception
+            throw new ClassCastException(activity.toString()
+                    + " must implement NoticeDialogListener");
+        }
+        NoticeDialog frag = new NoticeDialog();
+        return frag;
+    }
+    
+    ...
+}
+</pre>
+
+<p>The activity hosting the dialog creates and shows an instance of the dialog
+by calling {@code NoticeDialog.newInstance()} and receives the dialog's
+events through an implementation of the {@code NoticeDialogListener} interface:</p>
+
+<pre>
+public class MainActivity extends FragmentActivity
+                          implements NoticeDialog.NoticeDialogListener{
+    ...
+    
+    public void showNoticeDialog() {
+        // Create an instance of the dialog fragment and show it
+        DialogFragment dialog = NoticeDialog.newInstance(this);
+        dialog.show(getSupportFragmentManager(), "NoticeDialog");
+    }
+
+    &#64;Override
+    public void onDialogPositiveClick(DialogFragment dialog) {
+        // User touched the dialog's positive button
+        ...
+    }
+
+    &#64;Override
+    public void onDialogNegativeClick(DialogFragment dialog) {
+        // User touched the dialog's negative button
+        ...
+    }
+}
+</pre>
+
+<p>Because the host activity implements the {@code NoticeDialogListener}&mdash;which is
+enforced by the {@code newInstance()} method shown above&mdash;the dialog fragment can use the
+interface callback methods to deliver click events to the activity:</p>
+
+<pre>
+public class NoticeDialog extends DialogFragment {
+    ...
+
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Build the dialog and set up the button click handlers
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the positive button event back to the host activity
+                       mListener.onDialogPositiveClick(NoticeDialog.this);
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the negative button event back to the host activity
+                       mListener.onDialogPositiveClick(NoticeDialog.this);
+                   }
+               });
+        return builder.create();
+    }
+}
+</pre>
+
+
+
 
 
 <h2 id="ShowingADialog">Showing a Dialog</h2>
 
-<p>A dialog is always created and displayed as a part of an {@link android.app.Activity}. 
-You should normally create dialogs from within your Activity's
-{@link android.app.Activity#onCreateDialog(int)} callback method. 
-When you use this callback, the Android system automatically manages the state of 
-each dialog and hooks them to the Activity, effectively making it the "owner" of each dialog.
-As such, each dialog inherits certain properties from the Activity. For example, when a dialog
-is open, the Menu key reveals the options menu defined for the Activity and the volume
-keys modify the audio stream used by the Activity.</p>
+<p>When you want to show your dialog, create an instance of your {@link
+android.support.v4.app.DialogFragment} and call {@link android.support.v4.app.DialogFragment#show
+show()}, passing the {@link android.support.v4.app.FragmentManager} and a tag name
+for the dialog fragment.</p>
 
-<p class="note"><strong>Note:</strong> If you decide to create a dialog outside of the 
-<code>onCreateDialog()</code> method, it will not be attached to an Activity. You can, however,
-attach it to an Activity with {@link android.app.Dialog#setOwnerActivity(Activity)}.</p>
+<p>You can get the {@link android.support.v4.app.FragmentManager} by calling
+{@link android.support.v4.app.FragmentActivity#getSupportFragmentManager()} from
+the {@link android.support.v4.app.FragmentActivity} or {@link
+android.support.v4.app.Fragment#getFragmentManager()} from a {@link
+android.support.v4.app.Fragment}. For example:</p>
 
-<p>When you want to show a dialog, call 
-{@link android.app.Activity#showDialog(int)} and pass it an integer that uniquely identifies the 
-dialog that you want to display.</p>
-
-<p>When a dialog is requested for the first time, Android calls 
-{@link android.app.Activity#onCreateDialog(int)} from your Activity, which is
-where you should instantiate the {@link android.app.Dialog}. This callback method
-is passed the same ID that you passed to {@link android.app.Activity#showDialog(int)}. 
-After you create the Dialog, return the object at the end of the method.</p>
-
-<p>Before the dialog is displayed, Android also calls the optional callback method
-{@link android.app.Activity#onPrepareDialog(int,Dialog)}. Define this method if you want to change
-any properties of the dialog each time it is opened. This method is called
-every time a dialog is opened, whereas {@link android.app.Activity#onCreateDialog(int)} is only
-called the very first time a dialog is opened. If you don't define 
-{@link android.app.Activity#onPrepareDialog(int,Dialog) onPrepareDialog()}, then the dialog will 
-remain the same as it was the previous time it was opened. This method is also passed the dialog's
-ID, along with the Dialog object you created in {@link android.app.Activity#onCreateDialog(int)
-onCreateDialog()}.</p>
-
-<p>The best way to define the {@link android.app.Activity#onCreateDialog(int)} and 
-{@link android.app.Activity#onPrepareDialog(int,Dialog)} callback methods is with a 
-<em>switch</em> statement that checks the <var>id</var> parameter that's passed into the method. 
-Each <em>case</em> should check for a unique dialog ID and then create and define the respective Dialog.
-For example, imagine a game that uses two different dialogs: one to indicate that the game
-has paused and another to indicate that the game is over. First, define an integer ID for
-each dialog:</p>
 <pre>
-static final int DIALOG_PAUSED_ID = 0;
-static final int DIALOG_GAMEOVER_ID = 1;
-</pre>
-
-<p>Then, define the {@link android.app.Activity#onCreateDialog(int)} callback with a 
-switch case for each ID:</p>
-<pre>
-protected Dialog onCreateDialog(int id) {
-    Dialog dialog;
-    switch(id) {
-    case DIALOG_PAUSED_ID:
-        // do the work to define the pause Dialog
-        break;
-    case DIALOG_GAMEOVER_ID:
-        // do the work to define the game over Dialog
-        break;
-    default:
-        dialog = null;
-    }
-    return dialog;
+public void confirmFireMissiles() {
+    DialogFragment newFragment = FireMissilesDialog.newInstance(this);
+    newFragment.show(getSupportFragmentManager(), "missiles");
 }
 </pre>
 
-<p class="note"><strong>Note:</strong> In this example, there's no code inside
-the case statements because the procedure for defining your Dialog is outside the scope
-of this section. See the section below about <a href="#AlertDialog">Creating an AlertDialog</a>,
-offers code suitable for this example.</p>
+<p>The second argument, {@code "missiles"}, is a unique tag name that the system uses to save
+and restore the fragment state when necessary. The tag also allows you to get a handle to
+the fragment by calling {@link android.support.v4.app.FragmentManager#findFragmentByTag
+findFragmentByTag()}.</p>
 
-<p>When it's time to show one of the dialogs, call {@link android.app.Activity#showDialog(int)}
-with the ID of a dialog:</p>
+
+
+
+<h2 id="FullscreenDialog">Showing a Dialog Fullscreen or as an Embedded Fragment</h2>
+
+<p>You might have a UI design in which you want a piece of the UI to appear as a dialog in some
+situations, but as a full screen or embedded fragment in others (perhaps depending on whether
+the device is a large screen or small screen). The {@link android.support.v4.app.DialogFragment}
+class offers you this flexibility because it can still behave as an embeddable {@link
+android.support.v4.app.Fragment}.</p>
+
+<p>However, you cannot use {@link android.app.AlertDialog.Builder AlertDialog.Builder}
+or other {@link android.app.Dialog} objects to build the dialog in this case. If
+you want the {@link android.support.v4.app.DialogFragment} to be
+embeddable, you must define the dialog's UI in a layout, then load the layout in the
+{@link android.support.v4.app.DialogFragment#onCreateView
+onCreateView()} callback.</p>
+
+<p>Here's an example {@link android.support.v4.app.DialogFragment} that can appear as either a
+dialog or an embeddable fragment (using a layout named <code>purchase_items.xml</code>):</p>
+
 <pre>
-showDialog(DIALOG_PAUSED_ID);
+public class CustomLayoutDialog extends DialogFragment {
+    /** The system calls this to get the DialogFragment's layout, regardless
+        of whether it's being displayed as a dialog or an embedded fragment. */
+    &#64;Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        // Inflate the layout to use as dialog or embedded fragment
+        return inflater.inflate(R.layout.purchase_items, container, false);
+    }
+  
+    /** The system calls this only when creating the layout in a dialog. */
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // The only reason you might override this method when using onCreateView() is
+        // to modify any dialog characteristics. For example, the dialog includes a
+        // title by default, but your custom layout might not need it. So here you can
+        // remove the dialog title, but you must call the superclass to get the Dialog.
+        Dialog dialog = super.onCreateDialog(savedInstanceState);
+        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+        return dialog;
+    }
+}
 </pre>
 
+<p>And here's some code that decides whether to show the fragment as a dialog
+or a fullscreen UI, based on the screen size:</p>
+
+<pre>
+public void showDialog() {
+    FragmentManager fragmentManager = getSupportFragmentManager();
+    CustomLayoutDialog newFragment = new CustomLayoutDialog();
+    
+    if (mIsLargeLayout) {
+        // The device is using a large layout, so show the fragment as a dialog
+        newFragment.show(fragmentManager, "dialog");
+    } else {
+        // The device is smaller, so show the fragment fullscreen
+        FragmentTransaction transaction = fragmentManager.beginTransaction();
+        // For a little polish, specify a transition animation
+        transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
+        // To make it fullscreen, use the 'content' root view as the container
+        // for the fragment, which is always the root view for the activity
+        transaction.add(android.R.id.content, newFragment)
+                   .addToBackStack(null).commit();
+    }
+}
+</pre>
+
+<p>For more information about performing fragment transactions, see the
+<a href="{@docRoot}guide/components/fragments.html">Fragments</a> guide.</p>
+
+<p>In this example, the <code>mIsLargeLayout</code> boolean specifies whether the current device
+should use the app's large layout design (and thus show this fragment as a dialog, rather
+than fullscreen). The best way to set this kind of boolean is to declare a
+<a href="{@docRoot}guide/topics/resources/more-resources.html#Bool">bool resource value</a>
+with an <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources"
+>alternative resource</a> value for different screen sizes. For example, here are two
+versions of the bool resource for different screen sizes:</p>
+
+<p class="code-caption">res/values/bools.xml</p>
+<pre>
+&lt;!-- Default boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">false&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p class="code-caption">res/values-large/bools.xml</p>
+<pre>
+&lt;!-- Large screen boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">true&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p>Then you can initialize the {@code mIsLargeLayout} value during the activity's
+{@link android.app.Activity#onCreate onCreate()} method:</p>
+
+<pre>
+boolean mIsLargeLayout;
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_main);
+
+    mIsLargeLayout = getResources().getBoolean(R.bool.large_layout);
+}
+</pre>
+
+
+
+<h3 id="ActivityAsDialog">Showing an activity as a dialog on large screens</h3>
+
+<p>Instead of showing a dialog as a fullscreen UI when on small screens, you can accomplish
+the same result by showing an {@link android.app.Activity} as a dialog when on
+large screens. Which approach you choose depends on your app design, but
+showing an activity as a dialog is often useful when your app is already designed for small
+screens and you'd like to improve the experience on tablets by showing a short-lived activity
+as a dialog.</p>
+
+<p>To show an activity as a dialog only when on large screens,
+apply the {@link android.R.style#Theme_Holo_DialogWhenLarge Theme.Holo.DialogWhenLarge}
+theme to the <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> manifest element:</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.DialogWhenLarge" >
+</pre>
+
+<p>For more information about styling your activities with themes, see the <a
+href="{@docRoot}guide/topics/ui/themes.html">Styles and Themes</a> guide.</p>
+
+
 
 <h2 id="DismissingADialog">Dismissing a Dialog</h2>
 
-<p>When you're ready to close your dialog, you can dismiss it by calling
-{@link android.app.Dialog#dismiss()} on the Dialog object.
-If necessary, you can also call {@link android.app.Activity#dismissDialog(int)} from the
-Activity, which effectively calls {@link android.app.Dialog#dismiss()} on the 
-Dialog for you.</p>
+<p>When the user touches any of the action buttons created with an
+{@link android.app.AlertDialog.Builder}, the system dismisses the dialog for you.</p>
 
-<p>If you are using {@link android.app.Activity#onCreateDialog(int)} to manage the state
-of your dialogs (as discussed in the previous section), then every time your dialog is
-dismissed, the state of the Dialog
-object is retained by the Activity. If you decide that you will no longer need this object or 
-it's important that the state is cleared, then you should call
-{@link android.app.Activity#removeDialog(int)}. This will remove any internal references
-to the object and if the dialog is showing, it will dismiss it.</p>
+<p>The system also dismisses the dialog when the user touches an item in a dialog list, except
+when the list uses radio buttons or checkboxes. Otherwise, you can manually dismiss your dialog
+by calling {@link android.support.v4.app.DialogFragment#dismiss()} on your {@link
+android.support.v4.app.DialogFragment}.</p>
 
-<h3>Using dismiss listeners</h3>
+<p>In case you need to perform certain
+actions when the dialog goes away, you can implement the {@link
+android.support.v4.app.DialogFragment#onDismiss onDismiss()} method in your {@link
+android.support.v4.app.DialogFragment}.</p>
 
-<p>If you'd like your application to perform some procedures the moment that a dialog is dismissed, 
-then you should attach an on-dismiss listener to your Dialog.</p>
+<p>You can also <em>cancel</em> a dialog. This is a special event that indicates the user
+explicitly left the dialog without completing the task. This occurs if the user presses the 
+<em>Back</em> button, touches the screen outside the dialog area,
+or if you explicitly call {@link android.app.Dialog#cancel()} on the {@link
+android.app.Dialog} (such as in response to a "Cancel" button in the dialog).</p>
 
-<p>First define the {@link android.content.DialogInterface.OnDismissListener} interface.
-This interface has just one method,
-{@link android.content.DialogInterface.OnDismissListener#onDismiss(DialogInterface)}, which
-will be called when the dialog is dismissed.
-Then simply pass your OnDismissListener implementation to 
-{@link android.app.Dialog#setOnDismissListener(DialogInterface.OnDismissListener)
-setOnDismissListener()}.</p>
+<p>As shown in the example above, you can respond to the cancel event by implementing
+{@link android.support.v4.app.DialogFragment#onCancel onCancel()} in your {@link
+android.support.v4.app.DialogFragment} class.</p>
 
-<p>However, note that dialogs can also be "cancelled." This is a special case that indicates
-the dialog was explicitly cancelled by the user. This will occur if the user presses the 
-"back" button to close the dialog, or if the dialog explicitly calls {@link android.app.Dialog#cancel()}
-(perhaps from a "Cancel" button in the dialog). When a dialog is cancelled,
-the OnDismissListener will still be notified, but if you'd like to be informed that the dialog
-was explicitly cancelled (and not dismissed normally), then you should register 
-an {@link android.content.DialogInterface.OnCancelListener} with
-{@link android.app.Dialog#setOnCancelListener(DialogInterface.OnCancelListener)
-setOnCancelListener()}.</p>
-
-
-<h2 id="AlertDialog">Creating an AlertDialog</h2>
-
-<p>An {@link android.app.AlertDialog} is an extension of the {@link android.app.Dialog}
-class. It is capable of constructing most dialog user interfaces and is the suggested dialog type.
-You should use it for dialogs that use any of the following features:</p>
-<ul>
-  <li>A title</li>
-  <li>A text message</li>
-  <li>One, two, or three buttons</li>
-  <li>A list of selectable items (with optional checkboxes or radio buttons)</li>
-</ul>
-
-<p>To create an AlertDialog, use the {@link android.app.AlertDialog.Builder} subclass.
-Get a Builder with {@link android.app.AlertDialog.Builder#AlertDialog.Builder(Context)} and
-then use the class's public methods to define all of the
-AlertDialog properties. After you're done with the Builder, retrieve the 
-AlertDialog object with {@link android.app.AlertDialog.Builder#create()}.</p>
-
-<p>The following topics show how to define various properties of the AlertDialog using the
-AlertDialog.Builder class. If you use any of the following sample code inside your 
-{@link android.app.Activity#onCreateDialog(int) onCreateDialog()} callback method, 
-you can return the resulting Dialog object to display the dialog.</p>
-
-
-<h3 id="AddingButtons">Adding buttons</h3>
-
-<img src="{@docRoot}images/dialog_buttons.png" alt="" style="float:right" />
-
-<p>To create an AlertDialog with side-by-side buttons like the one shown in the screenshot to the right,
-use the <code>set...Button()</code> methods:</p>
-
-<pre>
-AlertDialog.Builder builder = new AlertDialog.Builder(this);
-builder.setMessage("Are you sure you want to exit?")
-       .setCancelable(false)
-       .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
-           public void onClick(DialogInterface dialog, int id) {
-                MyActivity.this.finish();
-           }
-       })
-       .setNegativeButton("No", new DialogInterface.OnClickListener() {
-           public void onClick(DialogInterface dialog, int id) {
-                dialog.cancel();
-           }
-       });
-AlertDialog alert = builder.create();
-</pre>
-
-<p>First, add a message for the dialog with 
-{@link android.app.AlertDialog.Builder#setMessage(CharSequence)}. Then, begin
-method-chaining and set the dialog
-to be <em>not cancelable</em> (so the user cannot close the dialog with the back button)
-with {@link android.app.AlertDialog.Builder#setCancelable(boolean)}. For each button, 
-use one of the <code>set...Button()</code> methods, such as
-{@link android.app.AlertDialog.Builder#setPositiveButton(CharSequence,DialogInterface.OnClickListener)
-setPositiveButton()}, that accepts the name for the button and a 
-{@link android.content.DialogInterface.OnClickListener} that defines the action to take 
-when the user selects the button.</p>
-
-<p class="note"><strong>Note:</strong> You can only add one of each button type to the
-AlertDialog. That is, you cannot have more than one "positive" button. This limits the number
-of possible buttons to three: positive, neutral, and negative. These names are technically irrelevant to the
-actual functionality of your buttons, but should help you keep track of which one does what.</p>
-
-
-<h3 id="AddingAList">Adding a list</h3>
-
-<img src="{@docRoot}images/dialog_list.png" alt="" style="float:right" />
-
-<p>To create an AlertDialog with a list of selectable items like the one shown to the right, 
-use the <code>setItems()</code> method:</p>
-
-<pre>
-final CharSequence[] items = {"Red", "Green", "Blue"};
-
-AlertDialog.Builder builder = new AlertDialog.Builder(this);
-builder.setTitle("Pick a color");
-builder.setItems(items, new DialogInterface.OnClickListener() {
-    public void onClick(DialogInterface dialog, int item) {
-        Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
-    }
-});
-AlertDialog alert = builder.create();
-</pre>
-
-<p>First, add a title to the dialog with 
-{@link android.app.AlertDialog.Builder#setTitle(CharSequence)}. 
-Then, add a list of selectable items with
-{@link android.app.AlertDialog.Builder#setItems(CharSequence[],DialogInterface.OnClickListener)
-setItems()}, which accepts the array of items to display and a 
-{@link android.content.DialogInterface.OnClickListener} that defines the action to take 
-when the user selects an item.</p>
-
-
-<h4>Adding checkboxes and radio buttons</h4>
-
-<img src="{@docRoot}images/dialog_singlechoicelist.png" alt="" style="float:right" />
-
-<p>To create a list of multiple-choice items (checkboxes) or 
-single-choice items (radio buttons) inside the dialog, use the
-{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
-DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} and 
-{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
-setSingleChoiceItems()} methods, respectively.
-If you create one of these selectable lists in the
-{@link android.app.Activity#onCreateDialog(int) onCreateDialog()} callback method,
-Android manages the state of the list for you. As long as the Activity is active, 
-the dialog remembers the items that were previously selected, but when the user exits the
-Activity, the selection is lost.
-
-<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/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
-Storage</a> techniques.</p>
-
-<p>To create an AlertDialog with a list of single-choice items like the one shown to the right,
-use the same code from the previous example, but replace the <code>setItems()</code> method with
-{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
-setSingleChoiceItems()}:</p>
-
-<pre>
-final CharSequence[] items = {"Red", "Green", "Blue"};
-
-AlertDialog.Builder builder = new AlertDialog.Builder(this);
-builder.setTitle("Pick a color");
-builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
-    public void onClick(DialogInterface dialog, int item) {
-        Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
-    }
-});
-AlertDialog alert = builder.create();
-</pre>
-
-<p>The second parameter in the
-{@link android.app.AlertDialog.Builder#setSingleChoiceItems(CharSequence[],int,DialogInterface.OnClickListener)
-setSingleChoiceItems()} method is an integer value for the <var>checkedItem</var>, which indicates the 
-zero-based list position of the default selected item. Use "-1" to indicate that no item should be 
-selected by default.</p>
-
-
-<h2 id="ProgressDialog">Creating a ProgressDialog</h2>
-
-<img src="{@docRoot}images/dialog_progress_spinning.png" alt="" style="float:right" />
-
-<p>A {@link android.app.ProgressDialog} is an extension of the {@link android.app.AlertDialog}
-class that can display a progress animation in the form of a spinning wheel, for a task with
-progress that's undefined, or a progress bar, for a task that has a defined progression.
-The dialog can also provide buttons, such as one to cancel a download.</p>
-
-<p>Opening a progress dialog can be as simple as calling 
-{@link android.app.ProgressDialog#show(Context,CharSequence,CharSequence)
-ProgressDialog.show()}. For example, the progress dialog shown to the right can be 
-easily achieved without managing the dialog through the 
-{@link android.app.Activity#onCreateDialog(int)} callback,
-as shown here:</p>
-
-<pre>
-ProgressDialog dialog = ProgressDialog.show(MyActivity.this, "", 
-                        "Loading. Please wait...", true);
-</pre>
-
-<p>The first parameter is the application {@link android.content.Context}, 
-the second is a title for the dialog (left empty), the third is the message, 
-and the last parameter is whether the progress
-is indeterminate (this is only relevant when creating a progress bar, which is
-discussed in the next section).
-</p>
-
-<p>The default style of a progress dialog is the spinning wheel.
-If you want to create a progress bar that shows the loading progress with granularity,
-some more code is required, as discussed in the next section.</p>
-
-
-<h3 id="ShowingAProgressBar">Showing a progress bar</h3>
-
-<img src="/images/dialog_progress_bar.png" alt="" style="float:right" />
-
-<p>To show the progression with an animated progress bar:</p>
-
-<ol>
-  <li>Initialize the 
-    ProgressDialog with the class constructor, 
-    {@link android.app.ProgressDialog#ProgressDialog(Context)}.</li>
-  <li>Set the progress style to "STYLE_HORIZONTAL" with 
-    {@link android.app.ProgressDialog#setProgressStyle(int)} and 
-    set any other properties, such as the message.</li>
-  <li>When you're ready to show the dialog, call 
-    {@link android.app.Dialog#show()} or return the ProgressDialog from the  
-    {@link android.app.Activity#onCreateDialog(int)} callback.</li>
-  <li>You can increment the amount of progress displayed
-    in the bar by calling either {@link android.app.ProgressDialog#setProgress(int)} with a value for 
-    the total percentage completed so far or {@link android.app.ProgressDialog#incrementProgressBy(int)}
-    with an incremental value to add to the total percentage completed so far.</li>
-</ol>
-
-<p>For example, your setup might look like this:</p>
-<pre>
-ProgressDialog progressDialog;
-progressDialog = new ProgressDialog(mContext);
-progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
-progressDialog.setMessage("Loading...");
-progressDialog.setCancelable(false);
-</pre>
-
-<p>The setup is simple. Most of the code needed to create a progress dialog is actually 
-involved in the process that updates it. You might find that it's
-necessary to create a second thread in your application for this work and then report the progress
-back to the Activity's UI thread with a {@link android.os.Handler} object. 
-If you're not familiar with using additional 
-threads with a Handler, see the example Activity below that uses a second thread to
-increment a progress dialog managed by the Activity.</p>
-
-<script type="text/javascript">
-function toggleDiv(link) {
-  var toggleable = $(link).parent();
-  if (toggleable.hasClass("closed")) {
-    $(".toggleme", toggleable).slideDown("fast");
-    toggleable.removeClass("closed");
-    toggleable.addClass("open");
-    $(".toggle-img", toggleable).attr("title", "hide").attr("src", "/assets/images/triangle-opened.png");
-  } else {
-    $(".toggleme", toggleable).slideUp("fast");
-    toggleable.removeClass("open");
-    toggleable.addClass("closed");
-    $(".toggle-img", toggleable).attr("title", "show").attr("src", "/assets/images/triangle-closed.png");
-  }
-  return false;
-}
-</script>
-<style>
-.toggleme {
-  padding:0 0 1px 0;
-}
-.toggleable a {
-  text-decoration:none;
-}
-.toggleable.closed .toggleme {
-  display:none;
-}
-#jd-content .toggle-img {
-  margin:0;
-}
-</style>
-
-<div class="toggleable closed">
-  <a href="#" onclick="return toggleDiv(this)">
-        <img src="/assets/images/triangle-closed.png" class="toggle-img" />
-        <strong>Example ProgressDialog with a second thread</strong></a>
-  <div class="toggleme">
-        <p>This example uses a second thread to track the progress of a process (which actually just
-counts up to 100). The thread sends a {@link android.os.Message} back to the main
-Activity through a {@link android.os.Handler} each time progress is made. The main Activity then updates the 
-ProgressDialog.</p>
-
-<pre>
-package com.example.progressdialog;
-
-import android.app.Activity;
-import android.app.Dialog;
-import android.app.ProgressDialog;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.Button;
-
-public class NotificationTest extends Activity {
-    static final int PROGRESS_DIALOG = 0;
-    Button button;
-    ProgressThread progressThread;
-    ProgressDialog progressDialog;
-   
-    /** Called when the activity is first created. */
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.main);
-
-        // Setup the button that starts the progress dialog
-        button = (Button) findViewById(R.id.progressDialog);
-        button.setOnClickListener(new OnClickListener(){
-            public void onClick(View v) {
-                showDialog(PROGRESS_DIALOG);
-            }
-        }); 
-    }
-   
-    protected Dialog onCreateDialog(int id) {
-        switch(id) {
-        case PROGRESS_DIALOG:
-            progressDialog = new ProgressDialog(NotificationTest.this);
-            progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
-            progressDialog.setMessage("Loading...");
-            return progressDialog;
-        default:
-            return null;
-        }
-    }
-
-    &#64;Override
-    protected void onPrepareDialog(int id, Dialog dialog) {
-        switch(id) {
-        case PROGRESS_DIALOG:
-            progressDialog.setProgress(0);
-            progressThread = new ProgressThread(handler);
-            progressThread.start();
-    }
-
-    // Define the Handler that receives messages from the thread and update the progress
-    final Handler handler = new Handler() {
-        public void handleMessage(Message msg) {
-            int total = msg.arg1;
-            progressDialog.setProgress(total);
-            if (total >= 100){
-                dismissDialog(PROGRESS_DIALOG);
-                progressThread.setState(ProgressThread.STATE_DONE);
-            }
-        }
-    };
-
-    /** Nested class that performs progress calculations (counting) */
-    private class ProgressThread extends Thread {
-        Handler mHandler;
-        final static int STATE_DONE = 0;
-        final static int STATE_RUNNING = 1;
-        int mState;
-        int total;
-       
-        ProgressThread(Handler h) {
-            mHandler = h;
-        }
-       
-        public void run() {
-            mState = STATE_RUNNING;   
-            total = 0;
-            while (mState == STATE_RUNNING) {
-                try {
-                    Thread.sleep(100);
-                } catch (InterruptedException e) {
-                    Log.e("ERROR", "Thread Interrupted");
-                }
-                Message msg = mHandler.obtainMessage();
-                msg.arg1 = total;
-                mHandler.sendMessage(msg);
-                total++;
-            }
-        }
-        
-        /* sets the current state for the thread,
-         * used to stop the thread */
-        public void setState(int state) {
-            mState = state;
-        }
-    }
-}
-</pre>
-  </div> <!-- end toggleme -->
-</div> <!-- end toggleable -->
-
-
-
-<h2 id="CustomDialog">Creating a Custom Dialog</h2>
-
-<img src="{@docRoot}images/dialog_custom.png" alt="" style="float:right" />
-
-<p>If you want a customized design for a dialog, you can create your own layout
-for the dialog window with layout and widget elements.
-After you've defined your layout, pass the root View object or
-layout resource ID to {@link android.app.Dialog#setContentView(View)}.</p>
-
-<p>For example, to create the dialog shown to the right:</p>
-
-<ol>
-  <li>Create an XML layout saved as <code>custom_dialog.xml</code>:
-<pre>
-&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              android:id="@+id/layout_root"
-              android:orientation="horizontal"
-              android:layout_width="fill_parent"
-              android:layout_height="fill_parent"
-              android:padding="10dp"
-              >
-    &lt;ImageView android:id="@+id/image"
-               android:layout_width="wrap_content"
-               android:layout_height="fill_parent"
-               android:layout_marginRight="10dp"
-               />
-    &lt;TextView android:id="@+id/text"
-              android:layout_width="wrap_content"
-              android:layout_height="fill_parent"
-              android:textColor="#FFF"
-              />
-&lt;/LinearLayout>
-</pre>
-
-    <p>This XML defines an {@link android.widget.ImageView} and a {@link android.widget.TextView}
-    inside a {@link android.widget.LinearLayout}.</p>
-  <li>Set the above layout as the dialog's content view and define the content 
-    for the ImageView and TextView elements:</p>
-<pre>
-Context mContext = getApplicationContext();
-Dialog dialog = new Dialog(mContext);
-
-dialog.setContentView(R.layout.custom_dialog);
-dialog.setTitle("Custom Dialog");
-
-TextView text = (TextView) dialog.findViewById(R.id.text);
-text.setText("Hello, this is a custom dialog!");
-ImageView image = (ImageView) dialog.findViewById(R.id.image);
-image.setImageResource(R.drawable.android);
-</pre>
-
-    <p>After you instantiate the Dialog, set your custom layout as the dialog's content view with 
-    {@link android.app.Dialog#setContentView(int)}, passing it the layout resource ID.
-    Now that the Dialog has a defined layout, you can capture View objects from the layout with
-    {@link android.app.Dialog#findViewById(int)} and modify their content.</p>
-  </li>
-
-  <li>That's it. You can now show the dialog as described in 
-    <a href="#ShowingADialog">Showing A Dialog</a>.</li>
-</ol>
-
-<p>A dialog made with the base Dialog class must have a title. If you don't call
-{@link android.app.Dialog#setTitle(CharSequence) setTitle()}, then the space used for the title
-remains empty, but still visible. If you don't want
-a title at all, then you should create your custom dialog using the
-{@link android.app.AlertDialog} class. However, because an AlertDialog is created easiest with 
-the {@link android.app.AlertDialog.Builder} class, you do not have access to the 
-{@link android.app.Dialog#setContentView(int)} method used above. Instead, you must use 
-{@link android.app.AlertDialog.Builder#setView(View)}. This method accepts a {@link android.view.View} object,
-so you need to inflate the layout's root View object from
-XML.</p>
-
-<p>To inflate the XML layout, retrieve the {@link android.view.LayoutInflater} with 
-{@link android.app.Activity#getLayoutInflater()} 
-(or {@link android.content.Context#getSystemService(String) getSystemService()}),
-and then call
-{@link android.view.LayoutInflater#inflate(int, ViewGroup)}, where the first parameter
-is the layout resource ID and the second is the ID of the root View. At this point, you can use
-the inflated layout to find View objects in the layout and define the content for the
-ImageView and TextView elements. Then instantiate the AlertDialog.Builder and set the
-inflated layout for the dialog with {@link android.app.AlertDialog.Builder#setView(View)}.</p>
-
-<p>Here's an example, creating a custom layout in an AlertDialog:</p>
-
-<pre>
-AlertDialog.Builder builder;
-AlertDialog alertDialog;
-
-Context mContext = getApplicationContext();
-LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
-View layout = inflater.inflate(R.layout.custom_dialog,
-                               (ViewGroup) findViewById(R.id.layout_root));
-
-TextView text = (TextView) layout.findViewById(R.id.text);
-text.setText("Hello, this is a custom dialog!");
-ImageView image = (ImageView) layout.findViewById(R.id.image);
-image.setImageResource(R.drawable.android);
-
-builder = new AlertDialog.Builder(mContext);
-builder.setView(layout);
-alertDialog = builder.create();
-</pre>
-
-<p>Using an AlertDialog for your custom layout lets you
-take advantage of built-in AlertDialog features like managed buttons,
-selectable lists, a title, an icon and so on.</p>
-
-<p>For more information, refer to the reference documentation for the 
-{@link android.app.Dialog} and {@link android.app.AlertDialog.Builder} 
-classes.</p>
-
+<p class="note"><strong>Note:</strong> The system calls
+{@link android.support.v4.app.DialogFragment#onDismiss onDismiss()} upon each event that
+invokes the {@link android.support.v4.app.DialogFragment#onCancel onCancel()} callback. However,
+if you call {@link android.app.Dialog#dismiss Dialog.dismiss()} or {@link
+android.support.v4.app.DialogFragment#dismiss DialogFragment.dismiss()},
+the system calls {@link android.support.v4.app.DialogFragment#onDismiss onDismiss()} <em>but
+not</em> {@link android.support.v4.app.DialogFragment#onCancel onCancel()}. So you should generally
+call {@link android.support.v4.app.DialogFragment#dismiss dismiss()} when the user presses the
+<em>positive</em> button in your dialog in order to remove the dialog from view.</p>
 
 
diff --git a/docs/html/guide/topics/ui/layout/gridview.jd b/docs/html/guide/topics/ui/layout/gridview.jd
index 284a25a5..67bdd0f0 100644
--- a/docs/html/guide/topics/ui/layout/gridview.jd
+++ b/docs/html/guide/topics/ui/layout/gridview.jd
@@ -1,4 +1,4 @@
-page.title=Grid
+page.title=Grid View
 parent.title=Layouts
 parent.link=layout-objects.html
 @jd:body
@@ -22,10 +22,15 @@
 scrollable grid. The grid items are automatically inserted to the layout using a {@link
 android.widget.ListAdapter}.</p>
 
+<p>For an introduction to how you can dynamically insert views using an adapter, read
+<a href="{@docRoot}guide/topics/ui/declaring-layout.html#AdapterViews">Building Layouts with
+  an Adapter</a>.</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>
 
diff --git a/docs/html/guide/topics/ui/layout/listview.jd b/docs/html/guide/topics/ui/layout/listview.jd
index 26a7597..fee5292 100644
--- a/docs/html/guide/topics/ui/layout/listview.jd
+++ b/docs/html/guide/topics/ui/layout/listview.jd
@@ -28,6 +28,10 @@
 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>
 
+<p>For an introduction to how you can dynamically insert views using an adapter, read
+<a href="{@docRoot}guide/topics/ui/declaring-layout.html#AdapterViews">Building Layouts with
+  an Adapter</a>.</p>
+
 <img src="{@docRoot}images/ui/listview.png" alt="" />
 
 <h2 id="Loader">Using a Loader</h2>
@@ -147,5 +151,5 @@
 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>
+<code>&lt;uses-permission android:name="android.permission.READ_CONTACTS" /></code></p>
 
diff --git a/docs/html/guide/topics/ui/layout/relative.jd b/docs/html/guide/topics/ui/layout/relative.jd
index ee6cf02..47f9417 100644
--- a/docs/html/guide/topics/ui/layout/relative.jd
+++ b/docs/html/guide/topics/ui/layout/relative.jd
@@ -44,19 +44,19 @@
 include:</p>
 <dl>
   <dt><a
-href="{docRoot}reference/android/widget/RelativeLayout.LayoutParams.html#attr_android:layout_alignParentTop"
+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"
+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"
+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"
+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>
diff --git a/docs/html/guide/topics/ui/settings.jd b/docs/html/guide/topics/ui/settings.jd
new file mode 100644
index 0000000..33e164b
--- /dev/null
+++ b/docs/html/guide/topics/ui/settings.jd
@@ -0,0 +1,1171 @@
+page.title=Settings
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>In this document</h2>
+<ol>
+  <li><a href="#Overview">Overview</a>
+    <ol>
+      <li><a href="#SettingTypes">Preferences</a></li>
+    </ol>
+  </li>
+  <li><a href="#DefiningPrefs">Defining Preferences in XML</a>
+    <ol>
+      <li><a href="#Groups">Creating setting groups</a></li>
+      <li><a href="#Intents">Using intents</a></li>
+    </ol>
+  </li>
+  <li><a href="#Activity">Creating a Preference Activity</a></li>
+  <li><a href="#Fragment">Using Preference Fragments</a></li>
+  <li><a href="#Defaults">Setting Default Values</a></li>
+  <li><a href="#PreferenceHeaders">Using Preference Headers</a>
+    <ol>
+      <li><a href="#CreateHeaders">Creating the headers file</a></li>
+      <li><a href="#DisplayHeaders">Displaying the headers</a></li>
+      <li><a href="#BackCompatHeaders">Supporting older versions with preference headers</a></li>
+    </ol>
+  </li>
+  <li><a href="#ReadingPrefs">Reading Preferences</a>
+    <ol>
+      <li><a href="#Listening">Listening for preference changes</a></li>
+    </ol>
+  </li>
+  <li><a href="#NetworkUsage">Managing Network Usage</a></li>
+  <li><a href="#Custom">Building a Custom Preference</a>
+    <ol>
+      <li><a href="#CustomSelected">Specifying the user interface</a></li>
+      <li><a href="#CustomSave">Saving the setting's value</a></li>
+      <li><a href="#CustomInitialize">Initializing the current value</a></li>
+      <li><a href="#CustomDefault">Providing a default value</a></li>
+      <li><a href="#CustomSaveState">Saving and restoring the Preference's state</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>Key classes</h2>
+<ol>
+  <li>{@link android.preference.Preference}</li>
+  <li>{@link android.preference.PreferenceActivity}</li>
+  <li>{@link android.preference.PreferenceFragment}</li>
+</ol>
+
+
+<h2>See also</h2>
+<ol>
+  <li><a
+href="{@docRoot}design/patterns/settings.html">Settings design guide</a></li>
+</ol>
+</div>
+</div>
+
+
+
+
+<p>Applications often include settings that allow users to modify app features and behaviors. For
+example, some apps allow users to specify whether notifications are enabled or specify how often the
+application syncs data with the cloud.</p>
+
+<p>If you want to provide settings for your app, you should use
+Android's {@link android.preference.Preference} APIs to build an interface that's consistent with
+the user experience in other Android apps (including the system settings). This document describes
+how to build your app settings using {@link android.preference.Preference} APIs.</p>
+
+<div class="note design">
+<p><strong>Settings Design</strong></p>
+  <p>For information about how to design your settings, read the <a
+href="{@docRoot}design/patterns/settings.html">Settings</a> design guide.</p>
+</div>
+
+
+<img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
+<p class="img-caption"><strong>Figure 1.</strong> Screenshots from the Android Messaging app's
+settings. Selecting an item defined by a {@link android.preference.Preference} 
+opens an interface to change the setting.</p>
+
+
+
+
+<h2 id="Overview">Overview</h2>
+
+<p>Instead of using {@link android.view.View} objects to build the user interface, settings are
+built using various subclasses of the {@link android.preference.Preference} class that you
+declare in an XML file.</p>
+
+<p>A {@link android.preference.Preference} object is the building block for a single
+setting. Each {@link android.preference.Preference} appears as an item in a list and provides the
+appropriate UI for users to modify the setting. For example, a {@link
+android.preference.CheckBoxPreference} creates a list item that shows a checkbox, and a {@link
+android.preference.ListPreference} creates an item that opens a dialog with a list of choices.</p>
+
+<p>Each {@link android.preference.Preference} you add has a corresponding key-value pair that
+the system uses to save the setting in a default {@link android.content.SharedPreferences}
+file for your app's settings. When the user changes a setting, the system updates the corresponding
+value in the {@link android.content.SharedPreferences} file for you. The only time you should
+directly interact with the associated {@link android.content.SharedPreferences} file is when you
+need to read the value in order to determine your app's behavior based on the user's setting.</p>
+
+<p>The value saved in {@link android.content.SharedPreferences} for each setting can be one of the
+following data types:</p>
+
+<ul>
+  <li>Boolean</li>
+  <li>Float</li>
+  <li>Int</li>
+  <li>Long</li>
+  <li>String</li>
+  <li>String {@link java.util.Set}</li>
+</ul>
+
+<p>Because your app's settings UI is built using {@link android.preference.Preference} objects
+instead of
+{@link android.view.View} objects, you need to use a specialized {@link android.app.Activity} or
+{@link android.app.Fragment} subclass to display the list settings:</p>
+
+<ul>
+  <li>If your app supports versions of Android older than 3.0 (API level 10 and lower), you must
+build the activity as an extension of the {@link android.preference.PreferenceActivity} class.</li>
+  <li>On Android 3.0 and later, you should instead use a traditional {@link android.app.Activity}
+that hosts a {@link android.preference.PreferenceFragment} that displays your app settings.
+However, you can also use {@link android.preference.PreferenceActivity} to create a two-pane layout
+for large screens when you have multiple groups of settings.</li>
+</ul>
+
+<p>How to set up your {@link android.preference.PreferenceActivity} and instances of {@link
+android.preference.PreferenceFragment} is discussed in the sections about <a
+href="#Activity">Creating a Preference Activity</a> and <a href="#Fragment">Using
+Preference Fragments</a>.</p>
+
+
+<h3 id="SettingTypes">Preferences</h3>
+
+<p>Every setting for your app is represented by a specific subclass of the {@link
+android.preference.Preference} class. Each subclass includes a set of core properties that allow you
+to specify things such as a title for the setting and the default value. Each subclass also provides
+its own specialized properties and user interface. For instance, figure 1 shows a screenshot from
+the Messaging app's settings. Each list item in the settings screen is backed by a different {@link
+android.preference.Preference} object.</p>
+
+<p>A few of the most common preferences are:</p>
+
+<dl>
+  <dt>{@link android.preference.CheckBoxPreference}</dt>
+  <dd>Shows an item with a checkbox for a setting that is either enabled or disabled. The saved
+value is a boolean (<code>true</code> if it's checked).</dd>
+
+  <dt>{@link android.preference.ListPreference}</dt>
+  <dd>Opens a dialog with a list of radio buttons. The saved value
+can be any one of the supported value types (listed above).</dd>
+
+  <dt>{@link android.preference.EditTextPreference}</dt>
+  <dd>Opens a dialog with an {@link android.widget.EditText} widget. The saved value is a {@link
+java.lang.String}.</dd>
+</dl>
+
+<p>See the {@link android.preference.Preference} class for a list of all other subclasses and their
+corresponding properties.</p>
+
+<p>Of course, the built-in classes don't accommodate every need and your application might require
+something more specialized. For example, the platform currently does not provide a {@link
+android.preference.Preference} class for picking a number or a date. So you might need to define
+your own {@link android.preference.Preference} subclass. For help doing so, see the section about <a
+href="#Custom">Building a Custom Preference</a>.</p>
+
+
+
+<h2 id="DefiningPrefs">Defining Preferences in XML</h2>
+
+<p>Although you can instantiate new {@link android.preference.Preference} objects at runtime, you
+should define your list of settings in XML with a hierarchy of {@link android.preference.Preference}
+objects. Using an XML file to define your collection of settings is preferred because the file
+provides an easy-to-read structure that's simple to update. Also, your app's settings are
+generally pre-determined, although you can still modify the collection at runtime.</p>
+
+<p>Each {@link android.preference.Preference} subclass can be declared with an XML element that
+matches the class name, such as {@code &lt;CheckBoxPreference>}.</p>
+
+<p>You must save the XML file in the {@code res/xml/} directory. Although you can name the file
+anything you want, it's traditionally named {@code preferences.xml}. You usually need only one file,
+because branches in the hierarchy (that open their own list of settings) are declared using nested
+instances of {@link android.preference.PreferenceScreen}.</p>
+
+<p class="note"><strong>Note:</strong> If you want to create a multi-pane layout for your
+settings, then you need separate XML files for each fragment.</p>
+
+<p>The root node for the XML file must be a {@link android.preference.PreferenceScreen
+&lt;PreferenceScreen&gt;} element. Within this element is where you add each {@link
+android.preference.Preference}. Each child you add within the
+{@link android.preference.PreferenceScreen &lt;PreferenceScreen&gt;} element appears as a single
+item in the list of settings.</p>
+
+<p>For example:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;CheckBoxPreference
+        android:key="pref_sync"
+        android:title="@string/pref_sync"
+        android:summary="@string/pref_sync_summ"
+        android:defaultValue="true" />
+    &lt;ListPreference
+        android:dependency="pref_sync"
+        android:key="pref_syncConnectionType"
+        android:title="@string/pref_syncConnectionType"
+        android:dialogTitle="@string/pref_syncConnectionType"
+        android:entries="@array/pref_syncConnectionTypes_entries"
+        android:entryValues="@array/pref_syncConnectionTypes_values"
+        android:defaultValue="@string/pref_syncConnectionTypes_default" />
+&lt;/PreferenceScreen>
+</pre>
+
+<p>In this example, there's a {@link android.preference.CheckBoxPreference} and a {@link
+android.preference.ListPreference}. Both items include the following three attributes:</p>
+
+<dl>
+  <dt>{@code android:key}</dt>
+  <dd>This attribute is required for preferences that persist a data value. It specifies the unique
+key (a string) the system uses when saving this setting's value in the {@link
+android.content.SharedPreferences}. 
+  <p>The only instances in which this attribute is <em>not required</em> is when the preference is a
+{@link android.preference.PreferenceCategory} or {@link android.preference.PreferenceScreen}, or the
+preference specifies an {@link android.content.Intent} to invoke (with an <a
+href="#Intents">{@code &lt;intent&gt;}</a> element) or a {@link android.app.Fragment} to display (with an <a
+href="{@docRoot}reference/android/preference/Preference.html#attr_android:fragment">{@code
+android:fragment}</a> attribute).</p>
+  </dd>
+  <dt>{@code android:title}</dt>
+  <dd>This provides a user-visible name for the setting.</dd>
+  <dt>{@code android:defaultValue}</dt>
+  <dd>This specifies the initial value that the system should set in the {@link
+android.content.SharedPreferences} file. You should supply a default value for all
+settings.</dd>
+</dl>
+
+<p>For information about all other supported attributes, see the {@link
+android.preference.Preference} (and respective subclass) documentation.</p>
+
+
+<div class="figure" style="width:300px">
+  <img src="{@docRoot}images/ui/settings/settings-titles.png" alt="" />
+  <p class="img-caption"><strong>Figure 2.</strong> Setting categories
+    with titles. <br/><b>1.</b> The category is specified by the {@link
+android.preference.PreferenceCategory &lt;PreferenceCategory>} element. <br/><b>2.</b> The title is
+specified with the {@code android:title} attribute.</p>
+</div>
+
+
+<p>When your list of settings exceeds about 10 items, you might want to add titles to
+define groups of settings or display those groups in a
+separate screen. These options are described in the following sections.</p>
+
+
+<h3 id="Groups">Creating setting groups</h3>
+
+<p>If you present a list of 10 or more settings, users
+may have difficulty scanning, comprehending, and processing them. You can remedy this by
+dividing some or all of the settings into groups, effectively turning one long list into multiple
+shorter lists. A group of related settings can be presented in one of two ways:</p>
+
+<ul>
+  <li><a href="#Titles">Using titles</a></li>
+  <li><a href="#Subscreens">Using subscreens</a></li>
+</ul>
+
+<p>You can use one or both of these grouping techniques to organize your app's settings. When
+deciding which to use and how to divide your settings, you should follow the guidelines in Android
+Design's <a href="{@docRoot}design/patterns/settings.html">Settings</a> guide.</p>
+
+
+<h4 id="Titles">Using titles</h4>
+
+<p>If you want to provide dividers with headings between groups of settings (as shown in figure 2),
+place each group of {@link android.preference.Preference} objects inside a {@link
+android.preference.PreferenceCategory}.</p>
+
+<p>For example:</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;PreferenceCategory 
+        android:title="&#64;string/pref_sms_storage_title"
+        android:key="pref_key_storage_settings">
+        &lt;CheckBoxPreference
+            android:key="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_auto_delete"
+            android:title="&#64;string/pref_title_auto_delete"
+            android:defaultValue="false"... />
+        &lt;Preference 
+            android:key="pref_key_sms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_sms_delete"... />
+        &lt;Preference 
+            android:key="pref_key_mms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_mms_delete" ... />
+    &lt;/PreferenceCategory>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h4 id="Subscreens">Using subscreens</h4>
+
+<p>If you want to place groups of settings into a subscreen (as shown in figure 3), place the group
+of {@link android.preference.Preference} objects inside a {@link
+android.preference.PreferenceScreen}.</p>
+
+<img src="{@docRoot}images/ui/settings/settings-subscreen.png" alt="" />
+<p class="img-caption"><strong>Figure 3.</strong> Setting subscreens. The {@code
+&lt;PreferenceScreen>} element
+creates an item that, when selected, opens a separate list to display the nested settings.</p>
+
+<p>For example:</p>
+
+<pre>
+&lt;PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;!-- opens a subscreen of settings -->
+    &lt;PreferenceScreen
+        android:key="button_voicemail_category_key"
+        android:title="&#64;string/voicemail"
+        android:persistent="false">
+        &lt;ListPreference
+            android:key="button_voicemail_provider_key"
+            android:title="&#64;string/voicemail_provider" ... />
+        &lt;!-- opens another nested subscreen -->
+        &lt;PreferenceScreen
+            android:key="button_voicemail_setting_key"
+            android:title="&#64;string/voicemail_settings"
+            android:persistent="false">
+            ...
+        &lt;/PreferenceScreen>
+        &lt;RingtonePreference
+            android:key="button_voicemail_ringtone_key"
+            android:title="&#64;string/voicemail_ringtone_title"
+            android:ringtoneType="notification" ... />
+        ...
+    &lt;/PreferenceScreen>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h3 id="Intents">Using intents</h3>
+
+<p>In some cases, you might want a preference item to open a different activity instead of a
+settings screen, such as a web browser to view a web page. To invoke an {@link
+android.content.Intent} when the user selects a preference item, add an {@code &lt;intent&gt;}
+element as a child of the corresponding {@code &lt;Preference&gt;} element.</p>
+
+<p>For example, here's how you can use a preference item to open a web page:</p>
+
+<pre>
+&lt;Preference android:title="@string/prefs_web_page" >
+    &lt;intent android:action="android.intent.action.VIEW"
+            android:data="http://www.example.com" />
+&lt;/Preference>
+</pre>
+
+<p>You can create both implicit and explicit intents using the following attributes:</p>
+
+<dl>
+  <dt>{@code android:action}</dt>
+    <dd>The action to assign, as per the {@link android.content.Intent#setAction setAction()}
+method.</dd>
+  <dt>{@code android:data}</dt>
+    <dd>The data to assign, as per the {@link android.content.Intent#setData setData()} method.</dd>
+  <dt>{@code android:mimeType}</dt>
+    <dd>The MIME type to assign, as per the {@link android.content.Intent#setType setType()}
+method.</dd>
+  <dt>{@code android:targetClass}</dt>
+    <dd>The class part of the component name, as per the {@link android.content.Intent#setComponent
+setComponent()} method.</dd>
+  <dt>{@code android:targetPackage}</dt>
+    <dd>The package part of the component name, as per the {@link
+android.content.Intent#setComponent setComponent()} method.</dd>
+</dl>
+
+
+
+<h2 id="Activity">Creating a Preference Activity</h2>
+
+<p>To display your settings in an activity, extend the {@link
+android.preference.PreferenceActivity} class. This is an extension of the traditional {@link
+android.app.Activity} class that displays a list of settings based on a hierarchy of {@link
+android.preference.Preference} objects. The {@link android.preference.PreferenceActivity}
+automatically persists the settings associated with each {@link
+android.preference.Preference} when the user makes a change.</p>
+
+<p class="note"><strong>Note:</strong> If you're developing your application for Android 3.0 and
+higher, you should instead use {@link android.preference.PreferenceFragment}. Go to the next
+section about <a href="#Fragment">Using Preference Fragments</a>.</p>
+
+<p>The most important thing to remember is that you do not load a layout of views during the {@link
+android.preference.PreferenceActivity#onCreate onCreate()} callback. Instead, you call {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} to
+add the preferences you've declared in an XML file to the activity. For example, here's the bare
+minimum code required for a functional {@link android.preference.PreferenceActivity}:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.preferences);
+    }
+}
+</pre>
+
+<p>This is actually enough code for some apps, because as soon as the user modifies a preference,
+the system saves the changes to a default {@link android.content.SharedPreferences} file that your
+other application components can read when you need to check the user's settings. Many apps,
+however, require a little more code in order to listen for changes that occur to the preferences.
+For information about listening to changes in the {@link android.content.SharedPreferences} file,
+see the section about <a href="#ReadingPrefs">Reading Preferences</a>.</p>
+
+
+
+
+<h2 id="Fragment">Using Preference Fragments</h2>
+
+<p>If you're developing for Android 3.0 (API level 11) and higher, you should use a {@link
+android.preference.PreferenceFragment} to display your list of {@link android.preference.Preference}
+objects. You can add a {@link android.preference.PreferenceFragment} to any activity&mdash;you don't
+need to use {@link android.preference.PreferenceActivity}.</p>
+
+<p><a href="{@docRoot}guide/components/fragments.html">Fragments</a> provide a more
+flexible architecture for your application, compared to using activities alone, no matter what kind
+of activity you're building. As such, we suggest you use {@link
+android.preference.PreferenceFragment} to control the display of your settings instead of {@link
+android.preference.PreferenceActivity} when possible.</p>
+
+<p>Your implementation of {@link android.preference.PreferenceFragment} can be as simple as
+defining the {@link android.preference.PreferenceFragment#onCreate onCreate()} method to load a
+preferences file with {@link android.preference.PreferenceFragment#addPreferencesFromResource
+addPreferencesFromResource()}. For example:</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Load the preferences from an XML resource
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+}
+</pre>
+
+<p>You can then add this fragment to an {@link android.app.Activity} just as you would for any other
+{@link android.app.Fragment}. For example:</p>
+
+<pre>
+public class SettingsActivity extends Activity {
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Display the fragment as the main content.
+        getFragmentManager().beginTransaction()
+                .replace(android.R.id.content, new SettingsFragment())
+                .commit();
+    }
+}
+</pre>
+
+<p class="note"><strong>Note:</strong> A {@link android.preference.PreferenceFragment} doesn't have
+a its own {@link android.content.Context} object. If you need a {@link android.content.Context}
+object, you can call {@link android.app.Fragment#getActivity()}. However, be careful to call
+{@link android.app.Fragment#getActivity()} only when the fragment is attached to an activity. When
+the fragment is not yet attached, or was detached during the end of its lifecycle, {@link
+android.app.Fragment#getActivity()} will return null.</p>
+
+
+<h2 id="Defaults">Setting Default Values</h2>
+
+<p>The preferences you create probably define some important behaviors for your application, so it's
+necessary that you initialize the associated {@link android.content.SharedPreferences} file with
+default values for each {@link android.preference.Preference} when the user first opens your
+application.</p>
+
+<p>The first thing you must do is specify a default value for each {@link
+android.preference.Preference}
+object in your XML file using the {@code android:defaultValue} attribute. The value can be any data
+type that is appropriate for the corresponding {@link android.preference.Preference} object. For
+example:</p>
+
+<pre>
+&lt;!-- default value is a boolean -->
+&lt;CheckBoxPreference
+    android:defaultValue="true"
+    ... />
+
+&lt;!-- default value is a string -->
+&lt;ListPreference
+    android:defaultValue="@string/pref_syncConnectionTypes_default"
+    ... />
+</pre>
+
+<p>Then, from the {@link android.app.Activity#onCreate onCreate()} method in your application's main
+activity&mdash;and in any other activity through which the user may enter your application for the
+first time&mdash;call {@link android.preference.PreferenceManager#setDefaultValues
+setDefaultValues()}:</p>
+
+<pre>
+PreferenceManager.setDefaultValues(this, R.xml.advanced_preferences, false);
+</pre>
+
+<p>Calling this during {@link android.app.Activity#onCreate onCreate()} ensures that your
+application is properly initialized with default settings, which your application might need to
+read in order to determine some behaviors (such as whether to download data while on a
+cellular network).</p>
+
+<p>This method takes three arguments:</p>
+<ul>
+  <li>Your application {@link android.content.Context}.</li>
+  <li>The resource ID for the preference XML file for which you want to set the default values.</li>
+  <li>A boolean indicating whether the default values should be set more than once.
+<p>When <code>false</code>, the system sets the default values only if this method has never been
+called in the past (or the {@link android.preference.PreferenceManager#KEY_HAS_SET_DEFAULT_VALUES}
+in the default value shared preferences file is false).</p></li>
+</ul>
+
+<p>As long as you set the third argument to <code>false</code>, you can safely call this method
+every time your activity starts without overriding the user's saved preferences by resetting them to
+the defaults. However, if you set it to <code>true</code>, you will override any previous
+values with the defaults.</p>
+
+
+
+<h2 id="PreferenceHeaders">Using Preference Headers</h2>
+
+<p>In rare cases, you might want to design your settings such that the first screen
+displays only a list of <a href="#Subscreens">subscreens</a> (such as in the system Settings app,
+as shown in figures 4 and 5). When you're developing such a design for Android 3.0 and higher, you
+should use a new "headers" feature in Android 3.0, instead of building subscreens with nested
+{@link android.preference.PreferenceScreen} elements.</p>
+
+<p>To build your settings with headers, you need to:</p>
+<ol>
+  <li>Separate each group of settings into separate instances of {@link
+android.preference.PreferenceFragment}. That is, each group of settings needs a separate XML
+file.</li>
+  <li>Create an XML headers file that lists each settings group and declares which fragment
+contains the corresponding list of settings.</li>
+  <li>Extend the {@link android.preference.PreferenceActivity} class to host your settings.</li>
+  <li>Implement the {@link
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} callback to specify the
+headers file.</li>
+</ol>
+
+<p>A great benefit to using this design is that {@link android.preference.PreferenceActivity}
+automatically presents the two-pane layout shown in figure 4 when running on large screens.</p>
+
+<p>Even if your application supports versions of Android older than 3.0, you can build your
+application to use {@link android.preference.PreferenceFragment} for a two-pane presentation on
+newer devices while still supporting a traditional multi-screen hierarchy on older
+devices (see the section about <a href="#BackCompatHeaders">Supporting older versions with
+preference headers</a>).</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-tablet.png" alt="" />
+<p class="img-caption"><strong>Figure 4.</strong> Two-pane layout with headers. <br/><b>1.</b> The
+headers are defined with an XML headers file. <br/><b>2.</b> Each group of settings is defined by a
+{@link android.preference.PreferenceFragment} that's specified by a {@code &lt;header>} element in
+the headers file.</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-handset.png" alt="" />
+<p class="img-caption"><strong>Figure 5.</strong> A handset device with setting headers. When an
+item is selected, the associated {@link android.preference.PreferenceFragment} replaces the
+headers.</p>
+
+
+<h3 id="CreateHeaders" style="clear:left">Creating the headers file</h3>
+
+<p>Each group of settings in your list of headers is specified by a single {@code &lt;header>}
+element inside a root {@code &lt;preference-headers>} element. For example:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;!-- key/value pairs can be included as arguments for the fragment. -->
+        &lt;extra android:name="someKey" android:value="someHeaderValue" />
+    &lt;/header>
+&lt;/preference-headers>
+</pre>
+
+<p>With the {@code android:fragment} attribute, each header declares an instance of {@link
+android.preference.PreferenceFragment} that should open when the user selects the header.</p>
+
+<p>The {@code &lt;extras>} element allows you to pass key-value pairs to the fragment in a {@link
+android.os.Bundle}. The fragment can retrieve the arguments by calling {@link
+android.app.Fragment#getArguments()}. You might pass arguments to the fragment for a variety of
+reasons, but one good reason is to reuse the same subclass of {@link
+android.preference.PreferenceFragment} for each group and use the argument to specify which
+preferences XML file the fragment should load.</p>
+
+<p>For example, here's a fragment that can be reused for multiple settings groups, when each
+header defines an {@code &lt;extra>} argument with the {@code "settings"} key:</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        String settings = getArguments().getString("settings");
+        if ("notifications".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_wifi);
+        } else if ("sync".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_sync);
+        }
+    }
+}
+</pre>
+
+
+
+<h3 id="DisplayHeaders">Displaying the headers</h3>
+
+<p>To display the preference headers, you must implement the {@link
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} callback method and call
+{@link android.preference.PreferenceActivity#loadHeadersFromResource
+loadHeadersFromResource()}. For example:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onBuildHeaders(List&lt;Header> target) {
+        loadHeadersFromResource(R.xml.preference_headers, target);
+    }
+}
+</pre>
+
+<p>When the user selects an item from the list of headers, the system opens the associated {@link
+android.preference.PreferenceFragment}.</p>
+
+<p class="note"><strong>Note:</strong> When using preference headers, your subclass of {@link
+android.preference.PreferenceActivity} doesn't need to implement the {@link
+android.preference.PreferenceActivity#onCreate onCreate()} method, because the only required
+task for the activity is to load the headers.</p>
+
+
+<h3 id="BackCompatHeaders">Supporting older versions with preference headers</h3>
+
+<p>If your application supports versions of Android older than 3.0, you can still use headers to
+provide a two-pane layout when running on Android 3.0 and higher. All you need to do is create an
+additional preferences XML file that uses basic {@link android.preference.Preference
+&lt;Preference>} elements that behave like the header items (to be used by the older Android
+versions).</p>
+
+<p>Instead of opening a new {@link android.preference.PreferenceScreen}, however, each of the {@link
+android.preference.Preference &lt;Preference>} elements sends an {@link android.content.Intent} to
+the {@link android.preference.PreferenceActivity} that specifies which preference XML file to
+load.</p>
+
+<p>For example, here's an XML file for preference headers that is used on Android 3.0
+and higher ({@code res/xml/preference_headers.xml}):</p> 
+
+<pre>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" />
+&lt;/preference-headers>
+</pre>
+
+<p>And here is a preference file that provides the same headers for versions older than
+Android 3.0 ({@code res/xml/preference_headers_legacy.xml}):</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;Preference 
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one"  >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_ONE" />
+    &lt;/Preference>
+    &lt;Preference 
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_TWO" />
+    &lt;/Preference>
+&lt;/PreferenceScreen>
+</pre>
+
+<p>Because support for {@code &lt;preference-headers>} was added in Android 3.0, the system calls
+{@link android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} in your {@link
+android.preference.PreferenceActivity} only when running on Androd 3.0 or higher. In order to load
+the "legacy" headers file ({@code preference_headers_legacy.xml}), you must check the Android
+version and, if the version is older than Android 3.0 ({@link
+android.os.Build.VERSION_CODES#HONEYCOMB}), call {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} to
+load the legacy header file. For example:</p>
+
+<pre>
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    ...
+
+    if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+
+// Called only on Honeycomb and later
+&#64;Override
+public void onBuildHeaders(List&lt;Header> target) {
+   loadHeadersFromResource(R.xml.preference_headers, target);
+}
+</pre>
+
+<p>The only thing left to do is handle the {@link android.content.Intent} that's passed into the
+activity to identify which preference file to load. So retrieve the intent's action and compare it
+to known action strings that you've used in the preference XML's {@code &lt;intent>} tags:</p>
+
+<pre>
+final static String ACTION_PREFS_ONE = "com.example.prefs.PREFS_ONE";
+...
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+
+    String action = getIntent().getAction();
+    if (action != null &amp;&amp; action.equals(ACTION_PREFS_ONE)) {
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+
+    else if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+</pre>
+
+<p>Beware that consecutive calls to {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} will
+stack all the preferences in a single list, so be sure that it's only called once by chaining the
+conditions with else-if statements.</p>
+
+
+
+
+
+<h2 id="ReadingPrefs">Reading Preferences</h2>
+
+<p>By default, all your app's preferences are saved to a file that's accessible from anywhere
+within your application by calling the static method {@link
+android.preference.PreferenceManager#getDefaultSharedPreferences
+PreferenceManager.getDefaultSharedPreferences()}. This returns the {@link
+android.content.SharedPreferences} object containing all the key-value pairs that are associated
+with the {@link android.preference.Preference} objects used in your {@link
+android.preference.PreferenceActivity}.</p>
+
+<p>For example, here's how you can read one of the preference values from any other activity in your
+application:</p>
+
+<pre>
+SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
+String syncConnPref = sharedPref.getString(SettingsActivity.KEY_PREF_SYNC_CONN, "");
+</pre>
+
+
+
+<h3 id="Listening">Listening for preference changes</h3>
+
+<p>There are several reasons you might want to be notified as soon as the use changes one of the
+preferences. In order to receive a callback when a change happens to any one of the preferences,
+implement the {@link android.content.SharedPreferences.OnSharedPreferenceChangeListener
+SharedPreference.OnSharedPreferenceChangeListener} interface and register the listener for the
+{@link android.content.SharedPreferences} object by calling {@link
+android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
+registerOnSharedPreferenceChangeListener()}.</p>
+
+<p>The interface has only one callback method, {@link
+android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged
+onSharedPreferenceChanged()}, and you might find it easiest to implement the interface as a part of
+your activity. For example:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity
+                              implements OnSharedPreferenceChangeListener {
+    public static final String KEY_PREF_SYNC_CONN = "pref_syncConnectionType";
+    ...
+
+    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
+        if (key.equals(KEY_PREF_SYNC_CONN)) {
+            Preference connectionPref = findPreference(key);
+            // Set summary to be the user-description for the selected value
+            connectionPref.setSummary(sharedPreferences.getString(key, ""));
+        }
+    }
+}
+</pre>
+
+<p>In this example, the method checks whether the changed setting is for a known preference key. It
+calls {@link android.preference.PreferenceActivity#findPreference findPreference()} to get the
+{@link android.preference.Preference} object that was changed so it can modify the item's
+summary to be a description of the user's selection. That is, when the setting is a {@link
+android.preference.ListPreference} or other multiple choice setting, you should call {@link
+android.preference.Preference#setSummary setSummary()} when the setting changes to display the
+current status (such as the Sleep setting shown in figure 5).</p>
+
+<p class="note"><strong>Note:</strong> As described in the Android Design document about <a
+href="{@docRoot}design/patterns/settings.html">Settings</a>, we recommend that you update the
+summary for a {@link android.preference.ListPreference} each time the user changes the preference in
+order to describe the current setting.</p>
+
+<p>For proper lifecycle management in the activity, we recommend that you register and unregister
+your {@link android.content.SharedPreferences.OnSharedPreferenceChangeListener} during the {@link
+android.app.Activity#onResume} and {@link android.app.Activity#onPause} callbacks, respectively:</p>
+
+<pre>
+&#64;Override
+protected void onResume() {
+    super.onResume();
+    getPreferenceScreen().getSharedPreferences()
+            .registerOnSharedPreferenceChangeListener(this);
+}
+
+&#64;Override
+protected void onPause() {
+    super.onPause();
+    getPreferenceScreen().getSharedPreferences()
+            .unregisterOnSharedPreferenceChangeListener(this);
+}
+</pre>
+
+
+
+<h2 id="NetworkUsage">Managing Network Usage</h2>
+
+
+<p>Beginning with Android 4.0, the system's Settings application allows users to see how much
+network data their applications are using while in the foreground and background. Users can then
+disable the use of background data for individual apps. In order to avoid users disabling your app's
+access to data from the background, you should use the data connection efficiently and allow
+users to refine your app's data usage through your application settings.<p>
+
+<p>For example, you might allow the user to control how often your app syncs data, whether your app
+performs uploads/downloads only when on Wi-Fi, whether your app uses data while roaming, etc. With
+these controls available to them, users are much less likely to disable your app's access to data
+when they approach the limits they set in the system Settings, because they can instead precisely
+control how much data your app uses.</p>
+
+<p>Once you've added the necessary preferences in your {@link android.preference.PreferenceActivity}
+to control your app's data habits, you should add an intent filter for {@link
+android.content.Intent#ACTION_MANAGE_NETWORK_USAGE} in your manifest file. For example:</p>
+
+<pre>
+&lt;activity android:name="SettingsActivity" ... >
+    &lt;intent-filter>
+       &lt;action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />
+       &lt;category android:name="android.intent.category.DEFAULT" />
+    &lt;/intent-filter>
+&lt;/activity>
+</pre>
+
+<p>This intent filter indicates to the system that this is the activity that controls your
+application's data usage. Thus, when the user inspects how much data your app is using from the
+system's Settings app, a <em>View application settings</em> button is available that launches your
+{@link android.preference.PreferenceActivity} so the user can refine how much data your app
+uses.</p>
+
+
+
+
+
+
+
+<h2 id="Custom">Building a Custom Preference</h2>
+
+<p>The Android framework includes a variety of {@link android.preference.Preference} subclasses that
+allow you to build a UI for several different types of settings.
+However, you might discover a setting you need for which there’s no built-in solution, such as a
+number picker or date picker. In such a case, you’ll need to create a custom preference by extending
+the {@link android.preference.Preference} class or one of the other subclasses.</p>
+
+<p>When you extend the {@link android.preference.Preference} class, there are a few important
+things you need to do:</p>
+
+<ul>
+  <li>Specify the user interface that appears when the user selects the settings.</li>
+  <li>Save the setting's value when appropriate.</li>
+  <li>Initialize the {@link android.preference.Preference} with the current (or default) value
+when it comes into view.</li>
+  <li>Provide the default value when requested by the system.</li>
+  <li>If the {@link android.preference.Preference} provides its own UI (such as a dialog), save
+and restore the state to handle lifecycle changes (such as when the user rotates the screen).</li>
+</ul>
+
+<p>The following sections describe how to accomplish each of these tasks.</p>
+
+
+
+<h3 id="CustomSelected">Specifying the user interface</h3>
+
+  <p>If you directly extend the {@link android.preference.Preference} class, you need to implement
+{@link android.preference.Preference#onClick()} to define the action that occurs when the user
+selects the item. However, most custom settings extend {@link android.preference.DialogPreference} to
+show a dialog, which simplifies the procedure. When you extend {@link
+android.preference.DialogPreference}, you must call {@link
+android.preference.DialogPreference#setDialogLayoutResource setDialogLayoutResourcs()} during in the
+class constructor to specify the layout for the dialog.</p>
+
+  <p>For example, here's the constructor for a custom {@link
+android.preference.DialogPreference} that declares the layout and specifies the text for the
+default positive and negative dialog buttons:</p>
+
+<pre>
+public class NumberPickerPreference extends DialogPreference {
+    public NumberPickerPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        
+        setDialogLayoutResource(R.layout.numberpicker_dialog);
+        setPositiveButtonText(android.R.string.ok);
+        setNegativeButtonText(android.R.string.cancel);
+        
+        setDialogIcon(null);
+    }
+    ...
+}
+</pre>
+
+
+
+<h3 id="CustomSave">Saving the setting's value</h3>
+
+<p>You can save a value for the setting at any time by calling one of the {@link
+android.preference.Preference} class's {@code persist*()} methods, such as {@link
+android.preference.Preference#persistInt persistInt()} if the setting's value is an integer or
+{@link android.preference.Preference#persistBoolean persistBoolean()} to save a boolean.</p>
+
+<p class="note"><strong>Note:</strong> Each {@link android.preference.Preference} can save only one
+data type, so you must use the {@code persist*()} method appropriate for the data type used by your
+custom {@link android.preference.Preference}.</p>
+
+<p>When you choose to persist the setting can depend on which {@link
+android.preference.Preference} class you extend. If you extend {@link
+android.preference.DialogPreference}, then you should persist the value only when the dialog
+closes due to a positive result (the user selects the "OK" button).</p>
+
+<p>When a {@link android.preference.DialogPreference} closes, the system calls the {@link
+android.preference.DialogPreference#onDialogClosed onDialogClosed()} method. The method includes a
+boolean argument that specifies whether the user result is "positive"&mdash;if the value is
+<code>true</code>, then the user selected the positive button and you should save the new value. For
+example:</p>
+
+<pre>
+&#64;Override
+protected void onDialogClosed(boolean positiveResult) {
+    // When the user selects "OK", persist the new value
+    if (positiveResult) {
+        persistInt(mNewValue);
+    }
+}
+</pre>
+
+<p>In this example, <code>mNewValue</code> is a class member that holds the setting's current
+value. Calling {@link android.preference.Preference#persistInt persistInt()} saves the value to
+the {@link android.content.SharedPreferences} file (automatically using the key that's
+specified in the XML file for this {@link android.preference.Preference}).</p>
+
+
+<h3 id="CustomInitialize">Initializing the current value</h3>
+
+<p>When the system adds your {@link android.preference.Preference} to the screen, it
+calls {@link android.preference.Preference#onSetInitialValue onSetInitialValue()} to notify
+you whether the setting has a persisted value. If there is no persisted value, this call provides
+you the default value.</p>
+
+<p>The {@link android.preference.Preference#onSetInitialValue onSetInitialValue()} method passes
+a boolean, <code>restorePersistedValue</code>, to indicate whether a value has already been persisted
+for the setting. If it is <code>true</code>, then you should retrieve the persisted value by calling
+one of the {@link
+android.preference.Preference} class's {@code getPersisted*()} methods, such as {@link
+android.preference.Preference#getPersistedInt getPersistedInt()} for an integer value. You'll
+usually want to retrieve the persisted value so you can properly update the UI to reflect the
+previously saved value.</p>
+
+<p>If <code>restorePersistedValue</code> is <code>false</code>, then you
+should use the default value that is passed in the second argument.</p>
+
+<pre>
+&#64;Override
+protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
+    if (restorePersistedValue) {
+        // Restore existing state
+        mCurrentValue = this.getPersistedInt(DEFAULT_VALUE);
+    } else {
+        // Set default state from the XML attribute
+        mCurrentValue = (Integer) defaultValue;
+        persistInt(mCurrentValue);
+    }
+}
+</pre>
+
+<p>Each {@code getPersisted*()} method takes an argument that specifies the
+default value to use in case there is actually no persisted value or the key does not exist. In
+the example above, a local constant is used to specify the default value in case {@link
+android.preference.Preference#getPersistedInt getPersistedInt()} can't return a persisted value.</p>
+
+<p class="caution"><strong>Caution:</strong> You <strong>cannot</strong> use the
+<code>defaultValue</code> as the default value in the {@code getPersisted*()} method, because
+its value is always null when <code>restorePersistedValue</code> is <code>true</code>.</p>
+
+
+<h3 id="CustomDefault">Providing a default value</h3>
+
+<p>If the instance of your {@link android.preference.Preference} class specifies a default value
+(with the {@code android:defaultValue} attribute), then the
+system calls {@link android.preference.Preference#onGetDefaultValue
+onGetDefaultValue()} when it instantiates the object in order to retrieve the value. You must
+implement this method in order for the system to save the default value in the {@link
+android.content.SharedPreferences}. For example:</p>
+
+<pre>
+&#64;Override
+protected Object onGetDefaultValue(TypedArray a, int index) {
+    return a.getInteger(index, DEFAULT_VALUE);
+}
+</pre>
+
+<p>The method arguments provide everything you need: the array of attributes and the index
+position of the {@code android:defaultValue}, which you must retrieve. The reason you must
+implement this method to extract the default value from the attribute is because you must specify
+a local default value for the attribute in case the value is undefined.</p>
+
+
+
+<h3 id="CustomSaveState">Saving and restoring the Preference's state</h3>
+
+<p>Just like a {@link android.view.View} in a layout, your {@link android.preference.Preference}
+subclass is responsible for saving and restoring its state in case the activity or fragment is
+restarted (such as when the user rotates the screen). To properly save and
+restore the state of your {@link android.preference.Preference} class, you must implement the
+lifecycle callback methods {@link android.preference.Preference#onSaveInstanceState
+onSaveInstanceState()} and {@link
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()}.</p>
+
+<p>The state of your {@link android.preference.Preference} is defined by an object that implements
+the {@link android.os.Parcelable} interface. The Android framework provides such an object for you
+as a starting point to define your state object: the {@link
+android.preference.Preference.BaseSavedState} class.</p>
+
+<p>To define how your {@link android.preference.Preference} class saves its state, you should
+extend the {@link android.preference.Preference.BaseSavedState} class. You need to override just
+ a few methods and define the {@link android.preference.Preference.BaseSavedState#CREATOR}
+object.</p>
+
+<p>For most apps, you can copy the following implementation and simply change the lines that
+handle the {@code value} if your {@link android.preference.Preference} subclass saves a data
+type other than an integer.</p>
+
+<pre>
+private static class SavedState extends BaseSavedState {
+    // Member that holds the setting's value
+    // Change this data type to match the type saved by your Preference
+    int value;
+
+    public SavedState(Parcelable superState) {
+        super(superState);
+    }
+
+    public SavedState(Parcel source) {
+        super(source);
+        // Get the current preference's value
+        value = source.readInt();  // Change this to read the appropriate data type
+    }
+
+    &#64;Override
+    public void writeToParcel(Parcel dest, int flags) {
+        super.writeToParcel(dest, flags);
+        // Write the preference's value
+        dest.writeInt(value);  // Change this to write the appropriate data type
+    }
+
+    // Standard creator object using an instance of this class
+    public static final Parcelable.Creator&lt;SavedState> CREATOR =
+            new Parcelable.Creator&lt;SavedState>() {
+
+        public SavedState createFromParcel(Parcel in) {
+            return new SavedState(in);
+        }
+
+        public SavedState[] newArray(int size) {
+            return new SavedState[size];
+        }
+    };
+}
+</pre>
+
+<p>With the above implementation of {@link android.preference.Preference.BaseSavedState} added
+to your app (usually as a subclass of your {@link android.preference.Preference} subclass), you
+then need to implement the {@link android.preference.Preference#onSaveInstanceState
+onSaveInstanceState()} and {@link
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()} methods for your
+{@link android.preference.Preference} subclass.</p>
+
+<p>For example:</p>
+
+<pre>
+&#64;Override
+protected Parcelable onSaveInstanceState() {
+    final Parcelable superState = super.onSaveInstanceState();
+    // Check whether this Preference is persistent (continually saved)
+    if (isPersistent()) {
+        // No need to save instance state since it's persistent, use superclass state
+        return superState;
+    }
+
+    // Create instance of custom BaseSavedState
+    final SavedState myState = new SavedState(superState);
+    // Set the state's value with the class member that holds current setting value
+    myState.value = mNewValue;
+    return myState;
+}
+
+&#64;Override
+protected void onRestoreInstanceState(Parcelable state) {
+    // Check whether we saved the state in onSaveInstanceState
+    if (state == null || !state.getClass().equals(SavedState.class)) {
+        // Didn't save the state, so call superclass
+        super.onRestoreInstanceState(state);
+        return;
+    }
+
+    // Cast state to custom BaseSavedState and pass to superclass
+    SavedState myState = (SavedState) state;
+    super.onRestoreInstanceState(myState.getSuperState());
+    
+    // Set this Preference's widget to reflect the restored state
+    mNumberPicker.setValue(myState.value);
+}
+</pre>
+
diff --git a/docs/html/guide/topics/ui/themes.jd b/docs/html/guide/topics/ui/themes.jd
index d787492..bc1c4f0 100644
--- a/docs/html/guide/topics/ui/themes.jd
+++ b/docs/html/guide/topics/ui/themes.jd
@@ -413,8 +413,8 @@
 themes will give you a better understanding of what style properties each one provides.
 For a better reference to the Android styles and themes, see the following source code:</p>
 <ul>
-	<li><a href="http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core/res/res/values/styles.xml;h=d7b654e49809cb97a35682754b1394af5c8bc88b;hb=HEAD">Android Styles (styles.xml)</a></li>
-	<li><a href="http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core/res/res/values/themes.xml;h=6b3d7407d1c895a3c297e60d5beac98e2d34c271;hb=HEAD">Android Themes (themes.xml)</a></li>
+	<li><a href="https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/styles.xml">Android Styles (styles.xml)</a></li>
+	<li><a href="https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xml">Android Themes (themes.xml)</a></li>
 </ul>
 
 <p>These files will help you learn through example. For instance, in the Android themes source code,
@@ -422,9 +422,8 @@
 you'll see all of the properties that are used to style dialogs that are used by the Android
 framework.</p>
 
-<p>For more information about the syntax used to create styles in XML, see
-<a href="{@docRoot}guide/topics/resources/available-resources.html#stylesandthemes">Available Resource Types:
-Style and Themes</a>.</p>
+<p>For more information about the syntax for styles and themes in XML, see the
+<a href="{@docRoot}guide/topics/resources/style-resource.html">Style Resource</a> document.</p>
 
 <p>For a reference of available style attributes that you can use to define a style or theme
 (e.g., "windowBackground" or "textAppearance"), see {@link android.R.attr} or the respective
diff --git a/docs/html/guide/webapps/targeting.jd b/docs/html/guide/webapps/targeting.jd
index 46f769c..7410202 100644
--- a/docs/html/guide/webapps/targeting.jd
+++ b/docs/html/guide/webapps/targeting.jd
@@ -270,7 +270,7 @@
 
 <p>The density of a device's screen is based on the screen resolution, as defined by the number of
 dots per inch (dpi). There are three screen
-density categories supported by Android: low (ldpi), medium (mdpi), and high (mdpi). A screen
+density categories supported by Android: low (ldpi), medium (mdpi), and high (hdpi). A screen
 with low density has fewer available pixels per inch, whereas a screen with high density has more
 pixels per inch (compared to a medium density screen). The Android Browser and {@link
 android.webkit.WebView} target a medium density screen by default.</p>
diff --git a/docs/html/images/brand/Android_Robot_100.png b/docs/html/images/brand/Android_Robot_100.png
new file mode 100644
index 0000000..946ee3a
--- /dev/null
+++ b/docs/html/images/brand/Android_Robot_100.png
Binary files differ
diff --git a/docs/html/images/brand/Android_Robot_200.png b/docs/html/images/brand/Android_Robot_200.png
new file mode 100644
index 0000000..40bf934
--- /dev/null
+++ b/docs/html/images/brand/Android_Robot_200.png
Binary files differ
diff --git a/docs/html/images/brand/Android_Robot_500.png b/docs/html/images/brand/Android_Robot_500.png
new file mode 100644
index 0000000..1fbfc51
--- /dev/null
+++ b/docs/html/images/brand/Android_Robot_500.png
Binary files differ
diff --git a/docs/html/images/brand/Android_Robot_outlined.ai b/docs/html/images/brand/Android_Robot_outlined.ai
new file mode 100644
index 0000000..9105cba
--- /dev/null
+++ b/docs/html/images/brand/Android_Robot_outlined.ai
Binary files differ
diff --git a/docs/html/images/brand/Google_Play_Store.ai b/docs/html/images/brand/Google_Play_Store.ai
new file mode 100644
index 0000000..51f07c6
--- /dev/null
+++ b/docs/html/images/brand/Google_Play_Store.ai
Binary files differ
diff --git a/docs/html/images/brand/Google_Play_Store_48.png b/docs/html/images/brand/Google_Play_Store_48.png
new file mode 100644
index 0000000..2f0cfe0
--- /dev/null
+++ b/docs/html/images/brand/Google_Play_Store_48.png
Binary files differ
diff --git a/docs/html/images/brand/Google_Play_Store_96.png b/docs/html/images/brand/Google_Play_Store_96.png
new file mode 100644
index 0000000..6e2c835
--- /dev/null
+++ b/docs/html/images/brand/Google_Play_Store_96.png
Binary files differ
diff --git a/docs/html/images/brand/android_logo_no.png b/docs/html/images/brand/android_logo_no.png
new file mode 100644
index 0000000..8de22d8
--- /dev/null
+++ b/docs/html/images/brand/android_logo_no.png
Binary files differ
diff --git a/docs/html/images/brand/droid.gif b/docs/html/images/brand/droid.gif
deleted file mode 100644
index 7c7b941..0000000
--- a/docs/html/images/brand/droid.gif
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/en_app_rgb_wo.ai b/docs/html/images/brand/en_app_rgb_wo.ai
new file mode 100644
index 0000000..db27314
--- /dev/null
+++ b/docs/html/images/brand/en_app_rgb_wo.ai
Binary files differ
diff --git a/docs/html/images/brand/en_app_rgb_wo_45.png b/docs/html/images/brand/en_app_rgb_wo_45.png
new file mode 100644
index 0000000..9891cbb
--- /dev/null
+++ b/docs/html/images/brand/en_app_rgb_wo_45.png
Binary files differ
diff --git a/docs/html/images/brand/en_app_rgb_wo_60.png b/docs/html/images/brand/en_app_rgb_wo_60.png
new file mode 100644
index 0000000..649e782
--- /dev/null
+++ b/docs/html/images/brand/en_app_rgb_wo_60.png
Binary files differ
diff --git a/docs/html/images/brand/en_generic_rgb_wo.ai b/docs/html/images/brand/en_generic_rgb_wo.ai
new file mode 100644
index 0000000..57c1e47
--- /dev/null
+++ b/docs/html/images/brand/en_generic_rgb_wo.ai
Binary files differ
diff --git a/docs/html/images/brand/en_generic_rgb_wo_45.png b/docs/html/images/brand/en_generic_rgb_wo_45.png
new file mode 100644
index 0000000..73dd393
--- /dev/null
+++ b/docs/html/images/brand/en_generic_rgb_wo_45.png
Binary files differ
diff --git a/docs/html/images/brand/en_generic_rgb_wo_60.png b/docs/html/images/brand/en_generic_rgb_wo_60.png
new file mode 100644
index 0000000..9a50aff
--- /dev/null
+++ b/docs/html/images/brand/en_generic_rgb_wo_60.png
Binary files differ
diff --git a/docs/html/images/brand/google_play_logo_450.png b/docs/html/images/brand/google_play_logo_450.png
deleted file mode 100644
index 59a1fcf..0000000
--- a/docs/html/images/brand/google_play_logo_450.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/learnmore.gif b/docs/html/images/brand/learnmore.gif
deleted file mode 100644
index 70a8e6b..0000000
--- a/docs/html/images/brand/learnmore.gif
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/logo_android.gif b/docs/html/images/brand/logo_android.gif
deleted file mode 100644
index 169c764..0000000
--- a/docs/html/images/brand/logo_android.gif
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/mediaplayer.gif b/docs/html/images/brand/mediaplayer.gif
deleted file mode 100644
index 860d110..0000000
--- a/docs/html/images/brand/mediaplayer.gif
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/mediaplayer.png b/docs/html/images/brand/mediaplayer.png
new file mode 100644
index 0000000..f857d5f
--- /dev/null
+++ b/docs/html/images/brand/mediaplayer.png
Binary files differ
diff --git a/docs/html/images/brand/norad.gif b/docs/html/images/brand/norad.gif
deleted file mode 100644
index d8707bd..0000000
--- a/docs/html/images/brand/norad.gif
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/dialog_buttons.png b/docs/html/images/dialog_buttons.png
deleted file mode 100755
index 81aaec4..0000000
--- a/docs/html/images/dialog_buttons.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/dialog_custom.png b/docs/html/images/dialog_custom.png
deleted file mode 100755
index b2523fd..0000000
--- a/docs/html/images/dialog_custom.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/dialog_list.png b/docs/html/images/dialog_list.png
deleted file mode 100755
index f2736bf..0000000
--- a/docs/html/images/dialog_list.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/dialog_progress_bar.png b/docs/html/images/dialog_progress_bar.png
deleted file mode 100755
index 3e74419..0000000
--- a/docs/html/images/dialog_progress_bar.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/dialog_progress_spinning.png b/docs/html/images/dialog_progress_spinning.png
deleted file mode 100755
index 501f4802..0000000
--- a/docs/html/images/dialog_progress_spinning.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/dialog_singlechoicelist.png b/docs/html/images/dialog_singlechoicelist.png
deleted file mode 100755
index 90629f0f..0000000
--- a/docs/html/images/dialog_singlechoicelist.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/distribute/instapaper.png b/docs/html/images/distribute/instapaper.png
new file mode 100644
index 0000000..ffbf052
--- /dev/null
+++ b/docs/html/images/distribute/instapaper.png
Binary files differ
diff --git a/docs/html/images/distribute/mint.png b/docs/html/images/distribute/mint.png
new file mode 100644
index 0000000..50d90d5
--- /dev/null
+++ b/docs/html/images/distribute/mint.png
Binary files differ
diff --git a/docs/html/images/distribute/tinyvillage.png b/docs/html/images/distribute/tinyvillage.png
new file mode 100644
index 0000000..cde77f0
--- /dev/null
+++ b/docs/html/images/distribute/tinyvillage.png
Binary files differ
diff --git a/docs/html/images/systrace/display-rhythm.png b/docs/html/images/systrace/display-rhythm.png
new file mode 100644
index 0000000..a249161
--- /dev/null
+++ b/docs/html/images/systrace/display-rhythm.png
Binary files differ
diff --git a/docs/html/images/systrace/process-rhythm.png b/docs/html/images/systrace/process-rhythm.png
new file mode 100644
index 0000000..7498cc7
--- /dev/null
+++ b/docs/html/images/systrace/process-rhythm.png
Binary files differ
diff --git a/docs/html/images/systrace/report.png b/docs/html/images/systrace/report.png
new file mode 100644
index 0000000..a642960
--- /dev/null
+++ b/docs/html/images/systrace/report.png
Binary files differ
diff --git a/docs/html/images/tools/avd_manager.png b/docs/html/images/tools/avd_manager.png
new file mode 100644
index 0000000..f8a173c
--- /dev/null
+++ b/docs/html/images/tools/avd_manager.png
Binary files differ
diff --git a/docs/html/images/tools/eclipse-new.png b/docs/html/images/tools/eclipse-new.png
new file mode 100644
index 0000000..d918427
--- /dev/null
+++ b/docs/html/images/tools/eclipse-new.png
Binary files differ
diff --git a/docs/html/images/tools/eclipse-run.png b/docs/html/images/tools/eclipse-run.png
new file mode 100644
index 0000000..925f0b9
--- /dev/null
+++ b/docs/html/images/tools/eclipse-run.png
Binary files differ
diff --git a/docs/html/images/tools/lint.png b/docs/html/images/tools/lint.png
new file mode 100644
index 0000000..889e325
--- /dev/null
+++ b/docs/html/images/tools/lint.png
Binary files differ
diff --git a/docs/html/images/tools/lint_output.png b/docs/html/images/tools/lint_output.png
new file mode 100644
index 0000000..554aee7
--- /dev/null
+++ b/docs/html/images/tools/lint_output.png
Binary files differ
diff --git a/docs/html/images/tools/new_adt_project.png b/docs/html/images/tools/new_adt_project.png
new file mode 100644
index 0000000..0f0e883
--- /dev/null
+++ b/docs/html/images/tools/new_adt_project.png
Binary files differ
diff --git a/docs/html/images/tools/sdk_manager.png b/docs/html/images/tools/sdk_manager.png
new file mode 100644
index 0000000..08ffda8
--- /dev/null
+++ b/docs/html/images/tools/sdk_manager.png
Binary files differ
diff --git a/docs/html/images/training/firstapp/adt-firstapp-setup.png b/docs/html/images/training/firstapp/adt-firstapp-setup.png
index c092562..daf02b25 100644
--- a/docs/html/images/training/firstapp/adt-firstapp-setup.png
+++ b/docs/html/images/training/firstapp/adt-firstapp-setup.png
Binary files differ
diff --git a/docs/html/images/training/firstapp/adt-new-activity.png b/docs/html/images/training/firstapp/adt-new-activity.png
new file mode 100644
index 0000000..2d579d3
--- /dev/null
+++ b/docs/html/images/training/firstapp/adt-new-activity.png
Binary files differ
diff --git a/docs/html/images/ui-ex-multi-pane.png b/docs/html/images/ui-ex-multi-pane.png
new file mode 100644
index 0000000..188bb8b
--- /dev/null
+++ b/docs/html/images/ui-ex-multi-pane.png
Binary files differ
diff --git a/docs/html/images/ui-ex-single-panes.png b/docs/html/images/ui-ex-single-panes.png
new file mode 100644
index 0000000..dff24a7
--- /dev/null
+++ b/docs/html/images/ui-ex-single-panes.png
Binary files differ
diff --git a/docs/html/images/ui/dialog_buttons.png b/docs/html/images/ui/dialog_buttons.png
new file mode 100644
index 0000000..ed952a1
--- /dev/null
+++ b/docs/html/images/ui/dialog_buttons.png
Binary files differ
diff --git a/docs/html/images/ui/dialog_checkboxes.png b/docs/html/images/ui/dialog_checkboxes.png
new file mode 100644
index 0000000..8f272e5
--- /dev/null
+++ b/docs/html/images/ui/dialog_checkboxes.png
Binary files differ
diff --git a/docs/html/images/ui/dialog_custom.png b/docs/html/images/ui/dialog_custom.png
new file mode 100644
index 0000000..244473b
--- /dev/null
+++ b/docs/html/images/ui/dialog_custom.png
Binary files differ
diff --git a/docs/html/images/ui/dialog_list.png b/docs/html/images/ui/dialog_list.png
new file mode 100644
index 0000000..437fc74
--- /dev/null
+++ b/docs/html/images/ui/dialog_list.png
Binary files differ
diff --git a/docs/html/images/ui/dialogs.png b/docs/html/images/ui/dialogs.png
new file mode 100644
index 0000000..d45b0b5
--- /dev/null
+++ b/docs/html/images/ui/dialogs.png
Binary files differ
diff --git a/docs/html/images/ui/dialogs_regions.png b/docs/html/images/ui/dialogs_regions.png
new file mode 100644
index 0000000..2bfc1a4
--- /dev/null
+++ b/docs/html/images/ui/dialogs_regions.png
Binary files differ
diff --git a/docs/html/images/ui/settings/settings-headers-handset.png b/docs/html/images/ui/settings/settings-headers-handset.png
new file mode 100644
index 0000000..d04ad17
--- /dev/null
+++ b/docs/html/images/ui/settings/settings-headers-handset.png
Binary files differ
diff --git a/docs/html/images/ui/settings/settings-headers-tablet.png b/docs/html/images/ui/settings/settings-headers-tablet.png
new file mode 100644
index 0000000..d0da5f2
--- /dev/null
+++ b/docs/html/images/ui/settings/settings-headers-tablet.png
Binary files differ
diff --git a/docs/html/images/ui/settings/settings-subscreen.png b/docs/html/images/ui/settings/settings-subscreen.png
new file mode 100644
index 0000000..17de231
--- /dev/null
+++ b/docs/html/images/ui/settings/settings-subscreen.png
Binary files differ
diff --git a/docs/html/images/ui/settings/settings-titles.png b/docs/html/images/ui/settings/settings-titles.png
new file mode 100644
index 0000000..df4e1b4
--- /dev/null
+++ b/docs/html/images/ui/settings/settings-titles.png
Binary files differ
diff --git a/docs/html/images/ui/settings/settings.png b/docs/html/images/ui/settings/settings.png
new file mode 100644
index 0000000..db9976c
--- /dev/null
+++ b/docs/html/images/ui/settings/settings.png
Binary files differ
diff --git a/docs/html/intl/ja/index.jd b/docs/html/intl/ja/index.jd
deleted file mode 100644
index ac36f90..0000000
--- a/docs/html/intl/ja/index.jd
+++ /dev/null
@@ -1,159 +0,0 @@
-home=true
-@jd:body
-
-
-	<div id="mainBodyFixed">
-              <div id="mainBodyLeft">			
-                    <div id="homeMiddle">
-                        <div id="topAnnouncement">
-                            <div id="homeTitle">
-                                <h2>デベロッパーへのお知らせ</h2>
-                            </div><!-- end homeTitle -->
-                            <div id="announcement-block">
-                            <!-- total max width is 520px -->
-                                <img src="/assets/images/home/android_adc.png" alt="Android Developer Challenge 2" width="232px" />
-                                <div id="announcement" style="width:275px">
-                                  <p>第2Android Developer Challengeが、遂に登場しました!このアプリケーション開発コンテストでは、Androidのユーザなら誰でも簡単に参加でき、一等の賞金は$250,000 です。登録の締切日は8月31日になります。</p>
-                                  <p><a href="http://code.google.com/android/adc/">Android  Developer Challengeについて詳しくはこちら &raquo;</a></p>
-                                </div> <!-- end annoucement -->
-                            </div> <!-- end annoucement-block -->  
-                        </div><!-- end topAnnouncement -->
-                        <div id="carouselMain" style="height:210px"> <!-- this height can be adjusted based on the content height -->
-                        </div>
-                            <div class="clearer"></div>
-                        <div id="carouselWheel">
-                            <div class="app-list-container" align="center"> 
-                                <a href="javascript:{}" id="arrow-left" onclick="" class="arrow-left-off"></a>
-                                <div id="list-clip">
-                                    <div style="left: 0px;" id="app-list">
-                                      <!-- populated by buildCarousel() -->
-                                    </div>
-                                </div><!-- end list-clip -->
-                                <a href="javascript:{ page_right(); }" id="arrow-right" onclick="" class="arrow-right-on"></a>
-                                <div class="clearer"></div>
-                            </div><!-- end app-list container -->
-                        </div><!-- end carouselWheel -->
-                    </div><!-- end homeMiddle -->
-
-                    <div style="clear:both">&nbsp;</div>
-              </div><!-- end mainBodyLeft -->
-
-              <div id="mainBodyRight">
-                      <table id="rightColumn">
-                              <tr>
-                                      <td class="imageCell"><a href="{@docRoot}sdk/index.html"><img src="{@docRoot}assets/images/icon_download.jpg" style="padding:0" /></a></td>
-                                      <td>
-                                              <h2 class="green">ダウンロード</h2>
-                                              <p>Android SDK には、優れたアプリケーションの作成に必要となるツール、サンプル コード、ドキュメントが含まれています。  </p>
-                                              <p><a href="{@docRoot}sdk/index.html">詳細 &raquo;</a></p>
-                                      </td>
-                              </tr>
-                              <tr>
-                                      <td colspan="2"><div class="seperator">&nbsp;</div></td>
-                              </tr>
-                              <tr>
-                                      <td class="imageCell"><a href="http://play.google.com/apps/publish"><img src="{@docRoot}assets/images/icon_play.png" style="padding:0" /></a></td>
-                                      <td>
-                                              <h2 class="green">公開</h2>
-                                              <p>Android マーケットは、アプリケーションを携帯端末に配信するためのオープン サービスです。</p>
-                                              <p><a href="http://play.google.com/apps/publish">詳細 &raquo;</a></p>
-                                      </td>
-                              </tr>
-                              <tr>
-                                      <td colspan="2"><div class="seperator">&nbsp;</div></td>
-                              </tr>
-                              <tr>
-                                      <td class="imageCell"><a href="http://source.android.com"><img src="{@docRoot}assets/images/icon_contribute.jpg" style="padding:0" /></a></td>
-                                      <td>
-                                              <h2 class="green">貢献</h2>
-                                              <p>Android オープンソース プロジェクトでは、プラットフォーム全体のソースコードを公開しています。</p>
-                                              <p><a href="http://source.android.com">詳細 &raquo;</a></p>
-                                      </td>
-                              </tr>
-                              <tr>
-                                      <td colspan="2"><div class="seperator">&nbsp;</div></td>
-                              </tr>
-                              <tr>
-                                      <td class="imageCell"><a href="http://www.youtube.com/user/androiddevelopers"><img src="{@docRoot}assets/images/video-droid.png" style="padding:0" /></a></td>
-                                      <td>
-                                              <h2 class="green">再生</h2>
-                                              <object width="150" height="140"><param name="movie" value="http://www.youtube.com/v/GARMe7Km_gk&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/GARMe7Km_gk&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="150" height="140"></embed></object>
-                                              <p style="margin-top:1em"><a href="{@docRoot}videos/index.html">その他の Android 動画 &raquo;</a></p>
-                                      </td>
-                              </tr>
-
-                      </table>
-              </div>
-	</div>
-
-<!--[if lte IE 6]>
-  <style>
-    #arrow-left {
-      margin:0 0 0 5px;
-    }
-    #arrow-right {
-      margin-left:0;
-    }
-    .app-list-container {
-      margin: 37px 0 0 23px;
-    }
-    div#list-clip { 
-      width:468px;
-    }
-  </style>
-<![endif]-->
-
-<script type="text/javascript">
-
-// * -- carousel dictionary -- * //
-  /* layout:  imgLeft, imgRight, imgTop
-     icon:    image for carousel entry. cropped (height:70px, width:90px)
-     name:    string for carousel entry
-     img:     image for bulletin post. cropped (height: 170, width:230px)
-     title:   header for bulletin (optional, insert "" value to skip
-     desc:    the bulletin post. must include html tags. 
-  */
-
-  var droidList = {
-    'sdk': {
-      'layout':"imgLeft",
-      'icon':"sdk-small.png",
-      'name':"Android 2.0",
-      'img':"eclair-android.png",
-      'title':"Android 2.0",
-      'desc': "<p>Android 2.0 の最新バージョンが公開されました。このリリースには Android 2.0 用の API、最新版デベロッパーツール、複数プラットフォーム(バージョン)サポート、そして Google API のアドオンが含まれています。</p><p><a href='{@docRoot}sdk/index.html'>Android SDK をダウンロード &raquo;</a></p>"
-    },
-    
-    'io': {
-      'layout':"imgLeft",
-      'icon':"io-small.png",
-      'name':"Google I/O",
-      'img':"io-large.png",
-      'title':"Google I/O Developer Conference",
-      'desc': "<p>Google I/O は、サンフランシスコの Moscone Center で 5 月 27~28 日に開催された開発者会議です。このイベントに参加できなかった方は、各アンドロイド向けセッションを、YouTube ビデオ資料で体験する事が可能<nobr>です</nobr>。</p><p><a href='{@docRoot}videos/index.html'>セッションを参照してください &raquo;</a></p>"
-    },
-
-    'mapskey': {
-      'layout':"imgLeft",
-      'icon':"maps-small.png",
-      'name':"Maps API キー",
-      'img':"maps-large.png",
-      'title':"Maps API キー",
-      'desc':"<p>MapView から Google マップを利用する Android アプリケーションを開発する場合は、アプリケーションを登録して Maps API キーを取得する必要があります。この API キーが無いアプリケーションは、Android 上で動作しません。キーの取得は、簡単な手順で行うことができます。</p><p><a href='http://code.google.com/android/add-ons/google-apis/maps-overview.html'>詳細 &raquo;</a></p>"
-    },
-
-    'devphone': {
-      'layout':"imgLeft",
-      'icon':"devphone-small.png",
-      'name':"Dev Phone 1",
-      'img':"devphone-large.png",
-      'title':"Android Dev Phone 1",
-      'desc': "<p>この携帯電話を使用することで、開発した Android アプリケーションの実行とデバッグを行うことができます。Android オペレーティングシステムを変更してからリビルドし、携帯電話に書き込むことができます。Android Dev Phone 1 は携帯通信会社に依存しておらず、<a href='http://play.google.com/apps/publish'>Android マーケット</a>に登録済みのデベロッパーなら誰でも購入可能です。</p><p><a href='/tools/device.html#dev-phone-1'>Android Dev Phone 1 の詳細&raquo;</a></p>"
-    }
-
-  }
-</script>
-<script type="text/javascript" src="{@docRoot}assets/carousel.js"></script>
-<script type="text/javascript">
-  initCarousel("sdk");
-</script>
diff --git a/docs/html/legal.jd b/docs/html/legal.jd
index 3c614d3..1698af0f 100644
--- a/docs/html/legal.jd
+++ b/docs/html/legal.jd
@@ -18,12 +18,11 @@
 <p>To start developing apps for Android, <a
 href="{@docRoot}sdk/index.html">download the free Android SDK</a>.</p>
 
-
-
 <h2 id="Brands">Android Brands</h2>
 
-<p>The "Android" name and <img src="images/android-logo.png" alt="Android"
-style="margin:0;padding:0 2px;vertical-align:baseline" /> logo are trademarks of Google Inc.
+<p>The "Android" name, the <img src="images/android-logo.png" alt="Android"
+style="margin:0;padding:0 2px;vertical-align:baseline" /> logo, and
+<a href="http://www.google.com/permissions/">other trademarks</a> are property of Google Inc.
 You may not use the logo or the logo's custom typeface.</p>
 
 <p>You may use the word "Android" in a product name only as a descriptor, such as "for Android"
@@ -40,9 +39,9 @@
 use of it must be attributed as such.</p>
 
 <p>For more information about Android brands, see the <a
-href="{@docRoot}distribute/googleplay/promote/brand.html">Android Branding Guidelines</a>.</p>
+href="{@docRoot}distribute/googleplay/promote/brand.html">Brand Guidelines</a>.</p>
 
-
+<p>All other trademarks are the property of their respective owners.</p>
 
 <h2 id="WebSite">Web Site Content</h2>
 
@@ -126,4 +125,6 @@
 href="http://developer.android.com">developer.android.com</a> are subject to their own terms, as
 documented on their respective web sites. </p>
 
+
+
 </div>
\ No newline at end of file
diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
index df97855..cf85a34 100644
--- a/docs/html/sdk/index.jd
+++ b/docs/html/sdk/index.jd
@@ -2,21 +2,21 @@
 header.hide=1
 page.metaDescription=Download the official Android SDK to develop apps for Android-powered devices.
 
-sdk.win_installer=installer_r20.0.1-windows.exe
-sdk.win_installer_bytes=70486979
-sdk.win_installer_checksum=a8df28a29c7b8598e4c50f363692256d
+sdk.win_installer=installer_r20.0.3-windows.exe
+sdk.win_installer_bytes=70495456
+sdk.win_installer_checksum=cf23b95d0c9cd57fac3c3be253171af4
 
-sdk.win_download=android-sdk_r20.0.1-windows.zip
-sdk.win_bytes=90370975
-sdk.win_checksum=5774f536892036f87d3bf6502862cea5
+sdk.win_download=android-sdk_r20.0.3-windows.zip
+sdk.win_bytes=90379469
+sdk.win_checksum=cd895c79201f7f02507eb3c3868a1c5e
 
-sdk.mac_download=android-sdk_r20.0.1-macosx.zip
-sdk.mac_bytes=58217336
-sdk.mac_checksum=cc132d04bc551b23b0c507cf5943df57
+sdk.mac_download=android-sdk_r20.0.3-macosx.zip
+sdk.mac_bytes=58218455
+sdk.mac_checksum=07dc88ba2c0817ef178a665d002831bf
 
-sdk.linux_download=android-sdk_r20.0.1-linux.tgz
-sdk.linux_bytes=82607616
-sdk.linux_checksum=cd7176831087f53e46123dd91551be32
+sdk.linux_download=android-sdk_r20.0.3-linux.tgz
+sdk.linux_bytes=82616305
+sdk.linux_checksum=0d53c2c31d6b5d0cf7385bccd0b06c27
 
 @jd:body
 
@@ -141,3 +141,4 @@
     $('.reqs').show();
   }
 </script>
+
diff --git a/docs/html/sdk/installing/adding-packages.jd b/docs/html/sdk/installing/adding-packages.jd
index 7765343..65c5d94 100644
--- a/docs/html/sdk/installing/adding-packages.jd
+++ b/docs/html/sdk/installing/adding-packages.jd
@@ -4,8 +4,9 @@
 @jd:body
 
 
-<p>The Android SDK separates different parts of the SDK into separately downloadable packages. The
-SDK starter package that you've installed includes only the SDK Tools. To develop an Android app,
+<p>The Android SDK separates tools, platforms, and other components into packages you can
+  download using the Android SDK Manager. The original
+SDK package you've downloaded includes only the SDK Tools. To develop an Android app,
 you also need to download at least one Android platform and the latest SDK Platform-tools.</p>
 
 <p>You can update and install SDK packages at any time using the Android SDK Manager.</p>
@@ -48,28 +49,32 @@
   <dd><strong>Required.</strong> You must install this package when you install the SDK for
 the first time.</dd>
   <dt>SDK Platform</dt>
-  <dd><strong>Required.</strong>You need to download <strong
-style="color:red">at least one platform</strong> into your environment so you're
-able to compile your application. In order to provide the best user experience on the latest
-devices, we recommend that you use the latest platform version as your build target. You'll
-still be able to run your app on older versions, but you must build against the latest version
-in order to use new features when running on devices with the latest version of Android.</dd>
+  <dd><strong>Required.</strong>You must download <em>at least one platform</em> into your
+environment so you're able to compile your application. In order to provide the best user experience
+on the latest devices, we recommend that you use the latest platform version as your build target.
+You'll still be able to run your app on older versions, but you must build against the latest
+version in order to use new features when running on devices with the latest version of Android.
+  <p>To get started, download the latest Android version, plus the lowest version you plan
+  to support (we recommend Android 2.2 for your lowest version).</p></dd>
   <dt>System Image</dt>
   <dd>Recommended. Although you might have one or more Android-powered devices on which to test
  your app, it's unlikely you have a device for every version of Android your app supports. It's
-a good practice to download a system image for each version of Android you support and use them
-to test your app on the Android emulator.</dd>
+a good practice to download system images for all versions of Android your app supports and test
+your app running on them with the <a href="{@docRoot}tools/devices/emulator.html">Android emulator</a>.</dd>
+  <dt>Android Support</dt>
+  <dd>Recommended. Includes a static library that allows you to use some of the latest
+Android APIs (such as <a href="{@docRoot}guide/components/fragments.html">fragments</a>,
+plus others not included in the framework at all) on devices running
+a platform version as old as Android 1.6. All of the activity templates available when creating
+a new project with the <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a>
+require this. For more information, read <a
+href="{@docRoot}tools/extras/support-library.html">Support Library</a>.</dd>
   <dt>SDK Samples</dt>
   <dd>Recommended. The samples give you source code that you can use to learn about
 Android, load as a project and run, or reuse in your own app. Note that multiple
 samples packages are available &mdash; one for each Android platform version. When
 you are choosing a samples package to download, select the one whose API Level
 matches the API Level of the Android platform that you plan to use.</dd>
-  <dt>Android Support</dt>
-  <dd>Recommended. The APIs available in this static library allow you to use a variety of new
-framework features (including some not available in even the latest version) on devices running
-a platform version as old as Android 1.6. For more information, read <a
-href="{@docRoot}tools/extras/support-library.html">Support Library</a>.</dd>
 </dl>
 
 
diff --git a/docs/html/sdk/installing/installing-adt.jd b/docs/html/sdk/installing/installing-adt.jd
index 60f67a2..feec56df 100644
--- a/docs/html/sdk/installing/installing-adt.jd
+++ b/docs/html/sdk/installing/installing-adt.jd
@@ -1,9 +1,9 @@
 page.title=Installing the Eclipse Plugin
 walkthru=1
-adt.zip.version=20.0.1
-adt.zip.download=ADT-20.0.1.zip
-adt.zip.bytes=12387574
-adt.zip.checksum=6ebd7f8566bfd2cd031b07d56d49542d
+adt.zip.version=20.0.3
+adt.zip.download=ADT-20.0.3.zip
+adt.zip.bytes=12390954
+adt.zip.checksum=869a536b1c56d0cd920ed9ae259ae619
 
 @jd:body
 
@@ -11,7 +11,7 @@
 
 <p>Android offers a custom plugin for the Eclipse IDE, called Android
 Development Tools (ADT). This plugin is designed to give you a powerful, integrated
-environment in which to develop Android apps. It extends the capabilites
+environment in which to develop Android apps. It extends the capabilities
 of Eclipse to let you quickly set up new Android projects, build an app
 UI, debug your app, and export signed (or unsigned) app packages (APKs) for distribution.
 </p>
@@ -39,21 +39,21 @@
 
 <ol>
     <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Install New
-Software...</strong>.</li>
+Software</strong>.</li>
     <li>Click <strong>Add</strong>, in the top-right corner.</li>
     <li>In the Add Repository dialog that appears, enter "ADT Plugin" for the <em>Name</em> and the
 following URL for the <em>Location</em>:
       <pre>https://dl-ssl.google.com/android/eclipse/</pre>
     </li>
-    <li>Click <strong>OK</strong>
-      <p>Note: If you have trouble acquiring the plugin, try using "http" in the Location URL,
+    <li>Click <strong>OK</strong>.
+      <p>If you have trouble acquiring the plugin, try using "http" in the Location URL,
 instead of "https" (https is preferred for security reasons).</p></li>
     <li>In the Available Software dialog, select the checkbox next to Developer Tools and click
 <strong>Next</strong>.</li>
     <li>In the next window, you'll see a list of the tools to be downloaded. Click
 <strong>Next</strong>. </li>
     <li>Read and accept the license agreements, then click <strong>Finish</strong>.
-      <p>Note: If you get a security warning saying that the authenticity or validity of
+      <p>If you get a security warning saying that the authenticity or validity of
 the software can't be established, click <strong>OK</strong>.</p></li>
     <li>When the installation completes, restart Eclipse. </li>
 </ol>
@@ -63,23 +63,20 @@
 
 <h2 id="Configure">Configure the ADT Plugin</h2>
 
-<p>After you've installed ADT and restarted Eclipse, you
+<p>Once Eclipse restarts, you
   must specify the location of your Android SDK directory:</p>
 
 <ol>
-    <li>Select <strong>Window</strong> &gt; <strong>Preferences...</strong> to open the Preferences
-        panel (on Mac OS X, select <strong>Eclipse</strong> &gt; <strong>Preferences</strong>).</li>
-    <li>Select <strong>Android</strong> from the left panel.</li>
-      <p>You may see a dialog asking whether you want to send usage statistics to Google. If so,
-make your choice and click <strong>Proceed</strong>.</p>
-    <li>For the <em>SDK Location</em> in the main panel, click <strong>Browse...</strong> and
-        locate your downloaded Android SDK directory (such as <code>android-sdk-windows</code>).</li>
-    <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
+    <li>In the "Welcome to Android Development" window that appears, select <strong>Use
+existing SDKs</strong>.</li>
+    <li>Browse and select the location of the Android SDK directory you recently
+downloaded.</li>
+    <li>Click <strong>Next</strong>.</li>
 </ol>
 
 
 <p>If you haven't encountered any errors, you're done setting up ADT
-  and can continue to the next step of the SDK installation.</p>
+  and can continue to <a href="{@docRoot}sdk/installing/next.html">Next Steps</a>.</p>
 
 
 
@@ -148,17 +145,15 @@
 manually install it:</p>
 
 <ol>
-  <li>Download the current ADT Plugin zip file from the table below (do not unpack it).
+  <li>Download the ADT Plugin zip file (do not unpack it):
 
   <table class="download">
     <tr>
-      <th>Name</th>
       <th>Package</th>
       <th>Size</th>
       <th>MD5 Checksum</th>
   </tr>
   <tr>
-    <td>ADT {@adtZipVersion}</td>
     <td>
       <a href="http://dl.google.com/android/{@adtZipDownload}">{@adtZipDownload}</a>
     </td>
@@ -169,16 +164,20 @@
 </li>
 
 </li>
-  <li>Follow steps 1 and 2 in the <a href="#installing">default install
-      instructions</a> (above).</li>
-  <li>In the Add Site dialog, click <strong>Archive</strong>.</li>
-  <li>Browse and select the downloaded zip file.</li>
-  <li>Enter a name for the local update site (e.g.,
-      "Android Plugin") in the "Name" field.</li>
-  <li>Click <strong>OK</strong>.
-  <li>Follow the remaining procedures as listed for
-      <a href="#installing">default installation</a> above,
-      starting from step 4.</li>
+  <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Install New
+Software</strong>.</li>
+  <li>Click <strong>Add</strong>, in the top-right corner.</li>
+  <li>In the Add Repository dialog, click <strong>Archive</strong>.</li>
+  <li>Select the downloaded {@adtZipDownload} file and click <strong>OK</strong>.</li>
+  <li>Enter "ADT Plugin" for the name and click <strong>OK</strong>.
+  <li>In the Available Software dialog, select the checkbox next to Developer Tools and click
+<strong>Next</strong>.</li>
+  <li>In the next window, you'll see a list of the tools to be downloaded. Click
+<strong>Next</strong>. </li>
+  <li>Read and accept the license agreements, then click <strong>Finish</strong>.
+    <p>If you get a security warning saying that the authenticity or validity of
+the software can't be established, click <strong>OK</strong>.</p></li>
+  <li>When the installation completes, restart Eclipse. </li>
 </ol>
 
 <p>To update your plugin once you've installed using the zip file, you will have
@@ -204,3 +203,4 @@
 ...then your development machine lacks a suitable Java VM. Installing Sun
 Java 6 will resolve this issue and you can then reinstall the ADT
 Plugin.</p>
+
diff --git a/docs/html/shareables/README b/docs/html/shareables/README
new file mode 100644
index 0000000..241618e
--- /dev/null
+++ b/docs/html/shareables/README
@@ -0,0 +1,8 @@
+DO NOT PUT ANY FILES IN THIS DIRECTORY
+
+All URLS pointing to this directory redirect to a corresponding location
+at http://commondatastorage.googleapis.com/androiddevelopers/shareables/
+
+This directory was originally created for downloadable items such as ZIP files,
+but we've moved them all to Google Cloud Storage to reduce the size
+of the Android Developers site.
\ No newline at end of file
diff --git a/docs/html/shareables/app_widget_templates-v4.0.zip b/docs/html/shareables/app_widget_templates-v4.0.zip
deleted file mode 100644
index b16ef12..0000000
--- a/docs/html/shareables/app_widget_templates-v4.0.zip
+++ /dev/null
Binary files differ
diff --git a/docs/html/shareables/icon_templates-v2.0.zip b/docs/html/shareables/icon_templates-v2.0.zip
deleted file mode 100644
index 1b94698..0000000
--- a/docs/html/shareables/icon_templates-v2.0.zip
+++ /dev/null
Binary files differ
diff --git a/docs/html/shareables/icon_templates-v2.3.zip b/docs/html/shareables/icon_templates-v2.3.zip
deleted file mode 100644
index 58d90ae..0000000
--- a/docs/html/shareables/icon_templates-v2.3.zip
+++ /dev/null
Binary files differ
diff --git a/docs/html/shareables/icon_templates-v4.0.zip b/docs/html/shareables/icon_templates-v4.0.zip
deleted file mode 100644
index 49e629f..0000000
--- a/docs/html/shareables/icon_templates-v4.0.zip
+++ /dev/null
Binary files differ
diff --git a/docs/html/shareables/sample_images.zip b/docs/html/shareables/sample_images.zip
deleted file mode 100644
index 007a68a..0000000
--- a/docs/html/shareables/sample_images.zip
+++ /dev/null
Binary files differ
diff --git a/docs/html/shareables/search_icons.zip b/docs/html/shareables/search_icons.zip
deleted file mode 100644
index bc98465..0000000
--- a/docs/html/shareables/search_icons.zip
+++ /dev/null
Binary files differ
diff --git a/docs/html/shareables/training/BitmapFun.zip b/docs/html/shareables/training/BitmapFun.zip
deleted file mode 100644
index e7e71f9..0000000
--- a/docs/html/shareables/training/BitmapFun.zip
+++ /dev/null
Binary files differ
diff --git a/docs/html/shareables/training/TabCompat.zip b/docs/html/shareables/training/TabCompat.zip
deleted file mode 100644
index b70b442..0000000
--- a/docs/html/shareables/training/TabCompat.zip
+++ /dev/null
Binary files differ
diff --git a/docs/html/shareables/training/nsdchat.zip b/docs/html/shareables/training/nsdchat.zip
new file mode 100644
index 0000000..a106975
--- /dev/null
+++ b/docs/html/shareables/training/nsdchat.zip
Binary files differ
diff --git a/docs/html/sitemap.txt b/docs/html/sitemap.txt
index f904cb4..6924ef3 100644
--- a/docs/html/sitemap.txt
+++ b/docs/html/sitemap.txt
@@ -2,7 +2,7 @@
 http://developer.android.com/design/index.html
 http://developer.android.com/develop/index.html
 http://developer.android.com/distribute/index.html
-http://developer.android.com/support.html
+http://developer.android.com/about/index.html
 http://developer.android.com/design/style/index.html
 http://developer.android.com/design/patterns/index.html
 http://developer.android.com/design/building-blocks/index.html
@@ -16,9 +16,14 @@
 http://developer.android.com/distribute/googleplay/promote/index.html
 http://developer.android.com/distribute/open.html
 http://developer.android.com/about/versions/jelly-bean.html
-http://developer.android.com/about/index.html
+http://developer.android.com/support.html
 http://developer.android.com/legal.html
 http://developer.android.com/license.html
+http://developer.android.com/reference/android/support/v4/app/DialogFragment.html
+http://developer.android.com/guide/google/play/billing/index.html
+http://developer.android.com/guide/topics/providers/contacts-provider.html
+http://developer.android.com/training/efficient-downloads/index.html
+http://developer.android.com/training/backward-compatible-ui/index.html
 http://developer.android.com/design/get-started/creative-vision.html
 http://developer.android.com/design/get-started/principles.html
 http://developer.android.com/design/get-started/ui-overview.html
@@ -64,132 +69,20 @@
 http://developer.android.com/distribute/googleplay/promote/linking.html
 http://developer.android.com/distribute/googleplay/promote/badges.html
 http://developer.android.com/distribute/googleplay/promote/brand.html
-http://developer.android.com/reference/android/support/v4/app/DialogFragment.html
-http://developer.android.com/guide/google/play/billing/index.html
-http://developer.android.com/guide/topics/providers/contacts-provider.html
-http://developer.android.com/training/efficient-downloads/index.html
-http://developer.android.com/training/backward-compatible-ui/index.html
-http://developer.android.com/training/basics/firstapp/index.html
-http://developer.android.com/training/basics/firstapp/creating-project.html
-http://developer.android.com/training/basics/firstapp/running-app.html
-http://developer.android.com/training/basics/firstapp/building-ui.html
-http://developer.android.com/training/basics/firstapp/starting-activity.html
-http://developer.android.com/training/basics/activity-lifecycle/index.html
-http://developer.android.com/training/basics/activity-lifecycle/starting.html
-http://developer.android.com/training/basics/activity-lifecycle/pausing.html
-http://developer.android.com/training/basics/activity-lifecycle/stopping.html
-http://developer.android.com/training/basics/activity-lifecycle/recreating.html
-http://developer.android.com/training/basics/supporting-devices/index.html
-http://developer.android.com/training/basics/supporting-devices/languages.html
-http://developer.android.com/training/basics/supporting-devices/screens.html
-http://developer.android.com/training/basics/supporting-devices/platforms.html
-http://developer.android.com/training/basics/fragments/index.html
-http://developer.android.com/training/basics/fragments/support-lib.html
-http://developer.android.com/training/basics/fragments/creating.html
-http://developer.android.com/training/basics/fragments/fragment-ui.html
-http://developer.android.com/training/basics/fragments/communicating.html
-http://developer.android.com/training/basics/intents/index.html
-http://developer.android.com/training/basics/intents/sending.html
-http://developer.android.com/training/basics/intents/result.html
-http://developer.android.com/training/basics/intents/filters.html
-http://developer.android.com/training/advanced.html
-http://developer.android.com/training/basics/location/index.html
-http://developer.android.com/training/basics/location/locationmanager.html
-http://developer.android.com/training/basics/location/currentlocation.html
-http://developer.android.com/training/basics/location/geocoding.html
-http://developer.android.com/training/basics/network-ops/index.html
-http://developer.android.com/training/basics/network-ops/connecting.html
-http://developer.android.com/training/basics/network-ops/managing.html
-http://developer.android.com/training/basics/network-ops/xml.html
-http://developer.android.com/training/efficient-downloads/efficient-network-access.html
-http://developer.android.com/training/efficient-downloads/regular_updates.html
-http://developer.android.com/training/efficient-downloads/redundant_redundant.html
-http://developer.android.com/training/efficient-downloads/connectivity_patterns.html
-http://developer.android.com/training/cloudsync/index.html
-http://developer.android.com/training/cloudsync/aesync.html
-http://developer.android.com/training/cloudsync/backupapi.html
-http://developer.android.com/training/multiscreen/index.html
-http://developer.android.com/training/multiscreen/screensizes.html
-http://developer.android.com/training/multiscreen/screendensities.html
-http://developer.android.com/training/multiscreen/adaptui.html
-http://developer.android.com/training/improving-layouts/index.html
-http://developer.android.com/training/improving-layouts/optimizing-layout.html
-http://developer.android.com/training/improving-layouts/reusing-layouts.html
-http://developer.android.com/training/improving-layouts/loading-ondemand.html
-http://developer.android.com/training/improving-layouts/smooth-scrolling.html
-http://developer.android.com/training/managing-audio/index.html
-http://developer.android.com/training/managing-audio/volume-playback.html
-http://developer.android.com/training/managing-audio/audio-focus.html
-http://developer.android.com/training/managing-audio/audio-output.html
-http://developer.android.com/training/monitoring-device-state/index.html
-http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
-http://developer.android.com/training/monitoring-device-state/docking-monitoring.html
-http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html
-http://developer.android.com/training/monitoring-device-state/manifest-receivers.html
-http://developer.android.com/training/custom-views/index.html
-http://developer.android.com/training/custom-views/create-view.html
-http://developer.android.com/training/custom-views/custom-drawing.html
-http://developer.android.com/training/custom-views/making-interactive.html
-http://developer.android.com/training/custom-views/optimizing-view.html
-http://developer.android.com/training/search/index.html
-http://developer.android.com/training/search/setup.html
-http://developer.android.com/training/search/search.html
-http://developer.android.com/training/search/backward-compat.html
-http://developer.android.com/training/id-auth/index.html
-http://developer.android.com/training/id-auth/identify.html
-http://developer.android.com/training/id-auth/authenticate.html
-http://developer.android.com/training/id-auth/custom_auth.html
-http://developer.android.com/training/sharing/index.html
-http://developer.android.com/training/sharing/send.html
-http://developer.android.com/training/sharing/receive.html
-http://developer.android.com/training/sharing/shareaction.html
-http://developer.android.com/training/camera/index.html
-http://developer.android.com/training/camera/photobasics.html
-http://developer.android.com/training/camera/videobasics.html
-http://developer.android.com/training/camera/cameradirect.html
-http://developer.android.com/training/multiple-apks/index.html
-http://developer.android.com/training/multiple-apks/api.html
-http://developer.android.com/training/multiple-apks/screensize.html
-http://developer.android.com/training/multiple-apks/texture.html
-http://developer.android.com/training/multiple-apks/multiple.html
-http://developer.android.com/training/backward-compatible-ui/abstracting.html
-http://developer.android.com/training/backward-compatible-ui/new-implementation.html
-http://developer.android.com/training/backward-compatible-ui/older-implementation.html
-http://developer.android.com/training/backward-compatible-ui/using-component.html
-http://developer.android.com/training/enterprise/index.html
-http://developer.android.com/training/enterprise/device-management-policy.html
-http://developer.android.com/training/monetization/index.html
-http://developer.android.com/training/monetization/ads-and-ux.html
-http://developer.android.com/training/design-navigation/index.html
-http://developer.android.com/training/design-navigation/screen-planning.html
-http://developer.android.com/training/design-navigation/multiple-sizes.html
-http://developer.android.com/training/design-navigation/descendant-lateral.html
-http://developer.android.com/training/design-navigation/ancestral-temporal.html
-http://developer.android.com/training/design-navigation/wireframing.html
-http://developer.android.com/training/implementing-navigation/index.html
-http://developer.android.com/training/implementing-navigation/lateral.html
-http://developer.android.com/training/implementing-navigation/ancestral.html
-http://developer.android.com/training/implementing-navigation/temporal.html
-http://developer.android.com/training/implementing-navigation/descendant.html
-http://developer.android.com/training/tv/index.html
-http://developer.android.com/training/tv/optimizing-layouts-tv.html
-http://developer.android.com/training/tv/optimizing-navigation-tv.html
-http://developer.android.com/training/tv/unsupported-features-tv.html
-http://developer.android.com/training/displaying-bitmaps/index.html
-http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
-http://developer.android.com/training/displaying-bitmaps/process-bitmap.html
-http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
-http://developer.android.com/training/displaying-bitmaps/display-bitmap.html
-http://developer.android.com/training/accessibility/index.html
-http://developer.android.com/training/accessibility/accessible-app.html
-http://developer.android.com/training/accessibility/service.html
-http://developer.android.com/training/graphics/opengl/index.html
-http://developer.android.com/training/graphics/opengl/environment.html
-http://developer.android.com/training/graphics/opengl/shapes.html
-http://developer.android.com/training/graphics/opengl/draw.html
-http://developer.android.com/training/graphics/opengl/projection.html
-http://developer.android.com/training/graphics/opengl/motion.html
-http://developer.android.com/training/graphics/opengl/touch.html
+http://developer.android.com/distribute/promote/device-art.html
+http://developer.android.com/about/start.html
+http://developer.android.com/about/versions/android-4.1.html
+http://developer.android.com/about/versions/android-4.0-highlights.html
+http://developer.android.com/about/versions/android-4.0.3.html
+http://developer.android.com/about/versions/android-4.0.html
+http://developer.android.com/about/versions/android-3.0-highlights.html
+http://developer.android.com/about/versions/android-3.2.html
+http://developer.android.com/about/versions/android-3.1.html
+http://developer.android.com/about/versions/android-3.0.html
+http://developer.android.com/about/versions/android-2.3-highlights.html
+http://developer.android.com/about/versions/android-2.3.4.html
+http://developer.android.com/about/versions/android-2.3.3.html
+http://developer.android.com/about/dashboards/index.html
 http://developer.android.com/guide/components/fundamentals.html
 http://developer.android.com/guide/components/activities.html
 http://developer.android.com/guide/components/fragments.html
@@ -252,6 +145,7 @@
 http://developer.android.com/guide/topics/ui/menus.html
 http://developer.android.com/guide/topics/ui/dialogs.html
 http://developer.android.com/guide/topics/ui/actionbar.html
+http://developer.android.com/guide/topics/ui/settings.html
 http://developer.android.com/guide/topics/ui/notifiers/index.html
 http://developer.android.com/guide/topics/ui/notifiers/toasts.html
 http://developer.android.com/guide/topics/ui/notifiers/notifications.html
@@ -366,6 +260,9 @@
 http://developer.android.com/guide/google/gcm/demo.html
 http://developer.android.com/guide/google/gcm/adv.html
 http://developer.android.com/guide/google/gcm/c2dm.html
+http://developer.android.com/training/basics/activity-lifecycle/index.html
+http://developer.android.com/training/basics/fragments/index.html
+http://developer.android.com/training/sharing/index.html
 http://developer.android.com/reference/android/package-summary.html
 http://developer.android.com/reference/android/accessibilityservice/package-summary.html
 http://developer.android.com/reference/android/accounts/package-summary.html
@@ -581,6 +478,7 @@
 http://developer.android.com/tools/debugging/debugging-projects-cmdline.html
 http://developer.android.com/tools/debugging/ddms.html
 http://developer.android.com/tools/debugging/debugging-log.html
+http://developer.android.com/tools/debugging/improving-w-lint.html
 http://developer.android.com/tools/debugging/debugging-ui.html
 http://developer.android.com/tools/debugging/debugging-tracing.html
 http://developer.android.com/tools/debugging/debugging-devtools.html
@@ -600,7 +498,7 @@
 http://developer.android.com/tools/help/etc1tool.html
 http://developer.android.com/tools/help/hierarchy-viewer.html
 http://developer.android.com/tools/help/hprof-conv.html
-http://developer.android.com/tools/help/layoutopt.html
+http://developer.android.com/tools/help/lint.html
 http://developer.android.com/tools/help/logcat.html
 http://developer.android.com/tools/help/mksdcard.html
 http://developer.android.com/tools/help/monkey.html
@@ -625,175 +523,406 @@
 http://developer.android.com/tools/adk/adk.html
 http://developer.android.com/tools/adk/aoa.html
 http://developer.android.com/tools/adk/aoa2.html
-http://developer.android.com/about/start.html
-http://developer.android.com/about/versions/android-4.1.html
-http://developer.android.com/about/versions/android-4.0-highlights.html
-http://developer.android.com/about/versions/android-4.0.3.html
-http://developer.android.com/about/versions/android-4.0.html
-http://developer.android.com/about/versions/android-3.0-highlights.html
-http://developer.android.com/about/versions/android-3.2.html
-http://developer.android.com/about/versions/android-3.1.html
-http://developer.android.com/about/versions/android-3.0.html
-http://developer.android.com/about/versions/android-2.3-highlights.html
-http://developer.android.com/about/versions/android-2.3.4.html
-http://developer.android.com/about/versions/android-2.3.3.html
-http://developer.android.com/about/dashboards/index.html
+http://developer.android.com/training/basics/firstapp/index.html
+http://developer.android.com/training/basics/firstapp/creating-project.html
+http://developer.android.com/training/basics/firstapp/running-app.html
+http://developer.android.com/training/basics/firstapp/building-ui.html
+http://developer.android.com/training/basics/firstapp/starting-activity.html
+http://developer.android.com/training/basics/activity-lifecycle/starting.html
+http://developer.android.com/training/basics/activity-lifecycle/pausing.html
+http://developer.android.com/training/basics/activity-lifecycle/stopping.html
+http://developer.android.com/training/basics/activity-lifecycle/recreating.html
+http://developer.android.com/training/basics/supporting-devices/index.html
+http://developer.android.com/training/basics/supporting-devices/languages.html
+http://developer.android.com/training/basics/supporting-devices/screens.html
+http://developer.android.com/training/basics/supporting-devices/platforms.html
+http://developer.android.com/training/basics/fragments/support-lib.html
+http://developer.android.com/training/basics/fragments/creating.html
+http://developer.android.com/training/basics/fragments/fragment-ui.html
+http://developer.android.com/training/basics/fragments/communicating.html
+http://developer.android.com/training/basics/intents/index.html
+http://developer.android.com/training/basics/intents/sending.html
+http://developer.android.com/training/basics/intents/result.html
+http://developer.android.com/training/basics/intents/filters.html
+http://developer.android.com/training/advanced.html
+http://developer.android.com/training/basics/location/index.html
+http://developer.android.com/training/basics/location/locationmanager.html
+http://developer.android.com/training/basics/location/currentlocation.html
+http://developer.android.com/training/basics/location/geocoding.html
+http://developer.android.com/training/basics/network-ops/index.html
+http://developer.android.com/training/basics/network-ops/connecting.html
+http://developer.android.com/training/basics/network-ops/managing.html
+http://developer.android.com/training/basics/network-ops/xml.html
+http://developer.android.com/training/efficient-downloads/efficient-network-access.html
+http://developer.android.com/training/efficient-downloads/regular_updates.html
+http://developer.android.com/training/efficient-downloads/redundant_redundant.html
+http://developer.android.com/training/efficient-downloads/connectivity_patterns.html
+http://developer.android.com/training/cloudsync/index.html
+http://developer.android.com/training/cloudsync/backupapi.html
+http://developer.android.com/training/cloudsync/gcm.html
+http://developer.android.com/training/multiscreen/index.html
+http://developer.android.com/training/multiscreen/screensizes.html
+http://developer.android.com/training/multiscreen/screendensities.html
+http://developer.android.com/training/multiscreen/adaptui.html
+http://developer.android.com/training/improving-layouts/index.html
+http://developer.android.com/training/improving-layouts/optimizing-layout.html
+http://developer.android.com/training/improving-layouts/reusing-layouts.html
+http://developer.android.com/training/improving-layouts/loading-ondemand.html
+http://developer.android.com/training/improving-layouts/smooth-scrolling.html
+http://developer.android.com/training/managing-audio/index.html
+http://developer.android.com/training/managing-audio/volume-playback.html
+http://developer.android.com/training/managing-audio/audio-focus.html
+http://developer.android.com/training/managing-audio/audio-output.html
+http://developer.android.com/training/monitoring-device-state/index.html
+http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
+http://developer.android.com/training/monitoring-device-state/docking-monitoring.html
+http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html
+http://developer.android.com/training/monitoring-device-state/manifest-receivers.html
+http://developer.android.com/training/custom-views/index.html
+http://developer.android.com/training/custom-views/create-view.html
+http://developer.android.com/training/custom-views/custom-drawing.html
+http://developer.android.com/training/custom-views/making-interactive.html
+http://developer.android.com/training/custom-views/optimizing-view.html
+http://developer.android.com/training/search/index.html
+http://developer.android.com/training/search/setup.html
+http://developer.android.com/training/search/search.html
+http://developer.android.com/training/search/backward-compat.html
+http://developer.android.com/training/id-auth/index.html
+http://developer.android.com/training/id-auth/identify.html
+http://developer.android.com/training/id-auth/authenticate.html
+http://developer.android.com/training/id-auth/custom_auth.html
+http://developer.android.com/training/sharing/send.html
+http://developer.android.com/training/sharing/receive.html
+http://developer.android.com/training/sharing/shareaction.html
+http://developer.android.com/training/camera/index.html
+http://developer.android.com/training/camera/photobasics.html
+http://developer.android.com/training/camera/videobasics.html
+http://developer.android.com/training/camera/cameradirect.html
+http://developer.android.com/training/multiple-apks/index.html
+http://developer.android.com/training/multiple-apks/api.html
+http://developer.android.com/training/multiple-apks/screensize.html
+http://developer.android.com/training/multiple-apks/texture.html
+http://developer.android.com/training/multiple-apks/multiple.html
+http://developer.android.com/training/backward-compatible-ui/abstracting.html
+http://developer.android.com/training/backward-compatible-ui/new-implementation.html
+http://developer.android.com/training/backward-compatible-ui/older-implementation.html
+http://developer.android.com/training/backward-compatible-ui/using-component.html
+http://developer.android.com/training/enterprise/index.html
+http://developer.android.com/training/enterprise/device-management-policy.html
+http://developer.android.com/training/monetization/index.html
+http://developer.android.com/training/monetization/ads-and-ux.html
+http://developer.android.com/training/design-navigation/index.html
+http://developer.android.com/training/design-navigation/screen-planning.html
+http://developer.android.com/training/design-navigation/multiple-sizes.html
+http://developer.android.com/training/design-navigation/descendant-lateral.html
+http://developer.android.com/training/design-navigation/ancestral-temporal.html
+http://developer.android.com/training/design-navigation/wireframing.html
+http://developer.android.com/training/implementing-navigation/index.html
+http://developer.android.com/training/implementing-navigation/lateral.html
+http://developer.android.com/training/implementing-navigation/ancestral.html
+http://developer.android.com/training/implementing-navigation/temporal.html
+http://developer.android.com/training/implementing-navigation/descendant.html
+http://developer.android.com/training/tv/index.html
+http://developer.android.com/training/tv/optimizing-layouts-tv.html
+http://developer.android.com/training/tv/optimizing-navigation-tv.html
+http://developer.android.com/training/tv/unsupported-features-tv.html
+http://developer.android.com/training/displaying-bitmaps/index.html
+http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
+http://developer.android.com/training/displaying-bitmaps/process-bitmap.html
+http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
+http://developer.android.com/training/displaying-bitmaps/display-bitmap.html
+http://developer.android.com/training/accessibility/index.html
+http://developer.android.com/training/accessibility/accessible-app.html
+http://developer.android.com/training/accessibility/service.html
+http://developer.android.com/training/graphics/opengl/index.html
+http://developer.android.com/training/graphics/opengl/environment.html
+http://developer.android.com/training/graphics/opengl/shapes.html
+http://developer.android.com/training/graphics/opengl/draw.html
+http://developer.android.com/training/graphics/opengl/projection.html
+http://developer.android.com/training/graphics/opengl/motion.html
+http://developer.android.com/training/graphics/opengl/touch.html
+http://developer.android.com/training/connect-devices-wirelessly/index.html
+http://developer.android.com/training/connect-devices-wirelessly/nsd.html
+http://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html
+http://developer.android.com/training/connect-devices-wirelessly/nsd-wifi-direct.html
 http://developer.android.com/
-http://developer.android.com/reference/java/io/InputStream.html
-http://developer.android.com/reference/android/content/res/Resources.html
-http://developer.android.com/reference/android/content/res/AssetManager.html
-http://developer.android.com/reference/android/content/res/Configuration.html
-http://developer.android.com/reference/android/app/UiModeManager.html
-http://developer.android.com/reference/android/app/SearchManager.html
-http://developer.android.com/reference/android/widget/SearchView.html
-http://developer.android.com/resources/samples/SearchableDictionary/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/SearchViewActionBar.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/SearchViewFilterMode.html
-http://developer.android.com/shareables/search_icons.zip
-http://developer.android.com/reference/android/widget/EditText.html
-http://developer.android.com/reference/android/content/Intent.html
-http://developer.android.com/reference/android/app/Activity.html
-http://developer.android.com/reference/android/app/SearchableInfo.html
-http://developer.android.com/reference/android/widget/ListView.html
-http://developer.android.com/reference/android/app/ListActivity.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
-http://developer.android.com/reference/android/widget/Adapter.html
-http://developer.android.com/reference/android/view/View.html
-http://developer.android.com/reference/android/widget/CursorAdapter.html
-http://developer.android.com/reference/android/database/Cursor.html
-http://developer.android.com/reference/android/widget/BaseAdapter.html
-http://developer.android.com/reference/android/app/Dialog.html
-http://developer.android.com/reference/android/app/SearchManager.OnDismissListener.html
-http://developer.android.com/reference/android/app/SearchManager.OnCancelListener.html
-http://developer.android.com/reference/android/os/Bundle.html
-http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/android/searchabledict/SearchableDictionary.html
-http://developer.android.com/reference/android/view/ViewStub.html
-http://developer.android.com/reference/android/renderscript/ScriptC.html
-http://developer.android.com/reference/android/renderscript/Script.FieldBase.html
-http://developer.android.com/reference/renderscript/rs__core_8rsh.html
-http://developer.android.com/reference/android/renderscript/Allocation.html
-http://developer.android.com/reference/android/renderscript/Element.html
-http://developer.android.com/reference/android/renderscript/Type.html
-http://developer.android.com/reference/android/os/PatternMatcher.html
-http://developer.android.com/shareables/training/NewsReader.zip
-http://developer.android.com/reference/android/widget/LinearLayout.html
-http://developer.android.com/reference/android/widget/RelativeLayout.html
-http://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html
-http://developer.android.com/reference/android/app/Service.html
-http://developer.android.com/reference/android/app/IntentService.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html
-http://developer.android.com/reference/android/content/Context.html
-http://developer.android.com/reference/android/os/AsyncTask.html
-http://developer.android.com/reference/android/os/HandlerThread.html
-http://developer.android.com/reference/java/lang/Thread.html
-http://developer.android.com/reference/android/os/IBinder.html
-http://developer.android.com/reference/android/app/PendingIntent.html
-http://developer.android.com/reference/android/app/Notification.html
-http://developer.android.com/reference/java/lang/ref/PhantomReference.html
-http://developer.android.com/reference/java/lang/ref/Reference.html
-http://developer.android.com/reference/java/lang/ref/SoftReference.html
-http://developer.android.com/reference/java/lang/ref/WeakReference.html
-http://developer.android.com/reference/java/lang/Object.html
-http://developer.android.com/reference/java/lang/Class.html
-http://developer.android.com/reference/java/lang/String.html
-http://developer.android.com/reference/java/lang/InterruptedException.html
-http://developer.android.com/reference/java/lang/IllegalArgumentException.html
-http://developer.android.com/reference/java/security/interfaces/DSAKey.html
-http://developer.android.com/reference/java/security/interfaces/DSAKeyPairGenerator.html
-http://developer.android.com/reference/java/security/interfaces/DSAParams.html
-http://developer.android.com/reference/java/security/interfaces/DSAPrivateKey.html
-http://developer.android.com/reference/java/security/interfaces/DSAPublicKey.html
-http://developer.android.com/reference/java/security/interfaces/ECKey.html
-http://developer.android.com/reference/java/security/interfaces/ECPrivateKey.html
-http://developer.android.com/reference/java/security/interfaces/ECPublicKey.html
-http://developer.android.com/reference/java/security/interfaces/RSAKey.html
-http://developer.android.com/reference/java/security/interfaces/RSAMultiPrimePrivateCrtKey.html
-http://developer.android.com/reference/java/security/interfaces/RSAPrivateCrtKey.html
-http://developer.android.com/reference/java/security/interfaces/RSAPrivateKey.html
-http://developer.android.com/reference/java/security/interfaces/RSAPublicKey.html
-http://developer.android.com/reference/org/apache/http/conn/ClientConnectionManager.html
-http://developer.android.com/reference/org/apache/http/conn/ClientConnectionManagerFactory.html
-http://developer.android.com/reference/org/apache/http/conn/ClientConnectionOperator.html
-http://developer.android.com/reference/org/apache/http/conn/ClientConnectionRequest.html
-http://developer.android.com/reference/org/apache/http/conn/ConnectionKeepAliveStrategy.html
-http://developer.android.com/reference/org/apache/http/conn/ConnectionReleaseTrigger.html
-http://developer.android.com/reference/org/apache/http/conn/EofSensorWatcher.html
-http://developer.android.com/reference/org/apache/http/conn/ManagedClientConnection.html
-http://developer.android.com/reference/org/apache/http/conn/OperatedClientConnection.html
-http://developer.android.com/reference/org/apache/http/conn/BasicEofSensorWatcher.html
-http://developer.android.com/reference/org/apache/http/conn/BasicManagedEntity.html
-http://developer.android.com/reference/org/apache/http/conn/EofSensorInputStream.html
-http://developer.android.com/reference/org/apache/http/conn/MultihomePlainSocketFactory.html
-http://developer.android.com/reference/org/apache/http/conn/ConnectionPoolTimeoutException.html
-http://developer.android.com/reference/org/apache/http/conn/ConnectTimeoutException.html
-http://developer.android.com/reference/org/apache/http/conn/HttpHostConnectException.html
-http://developer.android.com/reference/org/apache/http/HttpClientConnection.html
-http://developer.android.com/reference/org/apache/http/conn/scheme/SocketFactory.html
-http://developer.android.com/reference/org/apache/http/conn/scheme/Scheme.html
-http://developer.android.com/reference/org/apache/http/conn/scheme/SchemeRegistry.html
-http://developer.android.com/reference/org/apache/http/conn/routing/HttpRoute.html
-http://developer.android.com/reference/java/net/InetAddress.html
-http://developer.android.com/reference/java/net/ConnectException.html
-http://developer.android.com/reference/org/apache/http/HttpHost.html
-http://developer.android.com/reference/android/support/v4/content/Loader.OnLoadCompleteListener.html
-http://developer.android.com/reference/android/support/v4/content/AsyncTaskLoader.html
-http://developer.android.com/reference/android/support/v4/content/ContextCompat.html
-http://developer.android.com/reference/android/support/v4/content/CursorLoader.html
-http://developer.android.com/reference/android/support/v4/content/IntentCompat.html
-http://developer.android.com/reference/android/support/v4/content/Loader.html
-http://developer.android.com/reference/android/support/v4/content/Loader.ForceLoadContentObserver.html
-http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html
-http://developer.android.com/reference/android/content/AsyncTaskLoader.html
-http://developer.android.com/reference/android/content/CursorLoader.html
-http://developer.android.com/reference/android/content/Loader.html
-http://developer.android.com/reference/android/widget/Button.html
-http://developer.android.com/reference/android/app/Fragment.html
-http://developer.android.com/reference/android/app/FragmentManager.html
-http://developer.android.com/reference/android/app/FragmentTransaction.html
-http://developer.android.com/resources/samples/HoneycombGallery/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/index.html
-http://developer.android.com/reference/android/view/ViewGroup.html
-http://developer.android.com/reference/android/app/DialogFragment.html
-http://developer.android.com/reference/android/app/ListFragment.html
-http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html
-http://developer.android.com/reference/android/preference/PreferenceFragment.html
+http://developer.android.com/reference/android/app/Instrumentation.html
+http://developer.android.com/tools/help/ddms.html
+http://developer.android.com/reference/android/widget/QuickContactBadge.html
+http://developer.android.com/guide/practices/ui_guidelines/icon_design.html
+http://developer.android.com/reference/org/w3c/dom/Attr.html
+http://developer.android.com/reference/org/w3c/dom/CDATASection.html
+http://developer.android.com/reference/org/w3c/dom/CharacterData.html
+http://developer.android.com/reference/org/w3c/dom/Comment.html
+http://developer.android.com/reference/org/w3c/dom/Document.html
+http://developer.android.com/reference/org/w3c/dom/DocumentFragment.html
+http://developer.android.com/reference/org/w3c/dom/DocumentType.html
+http://developer.android.com/reference/org/w3c/dom/DOMConfiguration.html
+http://developer.android.com/reference/org/w3c/dom/DOMError.html
+http://developer.android.com/reference/org/w3c/dom/DOMErrorHandler.html
+http://developer.android.com/reference/org/w3c/dom/DOMImplementation.html
+http://developer.android.com/reference/org/w3c/dom/DOMImplementationList.html
+http://developer.android.com/reference/org/w3c/dom/DOMImplementationSource.html
+http://developer.android.com/reference/org/w3c/dom/DOMLocator.html
+http://developer.android.com/reference/org/w3c/dom/DOMStringList.html
+http://developer.android.com/reference/org/w3c/dom/Element.html
+http://developer.android.com/reference/org/w3c/dom/Entity.html
+http://developer.android.com/reference/org/w3c/dom/EntityReference.html
+http://developer.android.com/reference/org/w3c/dom/NamedNodeMap.html
+http://developer.android.com/reference/org/w3c/dom/NameList.html
+http://developer.android.com/reference/org/w3c/dom/Node.html
+http://developer.android.com/reference/org/w3c/dom/NodeList.html
+http://developer.android.com/reference/org/w3c/dom/Notation.html
+http://developer.android.com/reference/org/w3c/dom/ProcessingInstruction.html
+http://developer.android.com/reference/org/w3c/dom/Text.html
+http://developer.android.com/reference/org/w3c/dom/TypeInfo.html
+http://developer.android.com/reference/org/w3c/dom/UserDataHandler.html
+http://developer.android.com/reference/org/w3c/dom/DOMException.html
+http://developer.android.com/reference/javax/xml/parsers/DocumentBuilder.html
 http://developer.android.com/reference/android/preference/Preference.html
 http://developer.android.com/reference/android/preference/PreferenceActivity.html
-http://developer.android.com/reference/android/view/LayoutInflater.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentRetainInstance.html
-http://developer.android.com/reference/java/lang/ClassCastException.html
-http://developer.android.com/reference/android/content/ContentUris.html
-http://developer.android.com/reference/android/content/ContentProvider.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.html
-http://developer.android.com/reference/android/widget/FrameLayout.html
-http://developer.android.com/resources/samples/get.html
-http://developer.android.com/reference/android/net/Uri.html
-http://developer.android.com/resources/samples/NotePad/index.html
-http://developer.android.com/reference/android/content/AbstractThreadedSyncAdapter.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/index.html
-http://developer.android.com/reference/android/provider/BaseColumns.html
-http://developer.android.com/reference/android/content/ContentResolver.html
-http://developer.android.com/reference/android/provider/ContactsContract.Data.html
-http://developer.android.com/reference/android/content/UriMatcher.html
-http://developer.android.com/reference/android/net/Uri.Builder.html
-http://developer.android.com/reference/java/lang/Exception.html
-http://developer.android.com/reference/android/database/MatrixCursor.html
-http://developer.android.com/reference/java/lang/NullPointerException.html
-http://developer.android.com/reference/android/content/ContentValues.html
-http://developer.android.com/reference/android/provider/ContactsContract.html
-http://developer.android.com/guide/topics/security/security.html
-http://developer.android.com/reference/android/support/v4/accessibilityservice/AccessibilityServiceInfoCompat.html
-http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html
-http://developer.android.com/reference/android/app/NotificationManager.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.Media.html
-http://developer.android.com/reference/android/provider/MediaStore.html
-http://developer.android.com/reference/android/graphics/drawable/LevelListDrawable.html
+http://developer.android.com/reference/android/preference/PreferenceFragment.html
+http://developer.android.com/reference/android/view/View.html
+http://developer.android.com/reference/android/preference/CheckBoxPreference.html
+http://developer.android.com/reference/android/preference/ListPreference.html
+http://developer.android.com/reference/android/content/SharedPreferences.html
+http://developer.android.com/reference/java/util/Set.html
+http://developer.android.com/reference/android/app/Activity.html
+http://developer.android.com/reference/android/app/Fragment.html
+http://developer.android.com/reference/android/preference/EditTextPreference.html
+http://developer.android.com/reference/android/widget/EditText.html
+http://developer.android.com/reference/java/lang/String.html
+http://developer.android.com/reference/android/preference/PreferenceScreen.html
+http://developer.android.com/reference/android/preference/PreferenceCategory.html
+http://developer.android.com/reference/android/content/Intent.html
+http://developer.android.com/reference/android/content/Context.html
+http://developer.android.com/reference/android/preference/PreferenceManager.html
+http://developer.android.com/reference/android/os/Bundle.html
+http://developer.android.com/reference/android/os/Build.VERSION_CODES.html
+http://developer.android.com/reference/android/content/SharedPreferences.OnSharedPreferenceChangeListener.html
+http://developer.android.com/reference/android/preference/DialogPreference.html
+http://developer.android.com/reference/android/os/Parcelable.html
+http://developer.android.com/reference/android/preference/Preference.BaseSavedState.html
+http://developer.android.com/reference/org/apache/http/message/HeaderValueFormatter.html
+http://developer.android.com/reference/org/apache/http/message/HeaderValueParser.html
+http://developer.android.com/reference/org/apache/http/message/LineFormatter.html
+http://developer.android.com/reference/org/apache/http/message/LineParser.html
+http://developer.android.com/reference/org/apache/http/message/BasicHeader.html
+http://developer.android.com/reference/org/apache/http/message/BasicHeaderElement.html
+http://developer.android.com/reference/org/apache/http/message/BasicHeaderElementIterator.html
+http://developer.android.com/reference/org/apache/http/message/BasicHeaderIterator.html
+http://developer.android.com/reference/org/apache/http/message/BasicHeaderValueFormatter.html
+http://developer.android.com/reference/org/apache/http/message/BasicHeaderValueParser.html
+http://developer.android.com/reference/org/apache/http/message/BasicHttpEntityEnclosingRequest.html
+http://developer.android.com/reference/org/apache/http/message/BasicHttpRequest.html
+http://developer.android.com/reference/org/apache/http/message/BasicHttpResponse.html
+http://developer.android.com/reference/org/apache/http/message/BasicLineFormatter.html
+http://developer.android.com/reference/org/apache/http/message/BasicLineParser.html
+http://developer.android.com/reference/org/apache/http/message/BasicListHeaderIterator.html
+http://developer.android.com/reference/org/apache/http/message/BasicNameValuePair.html
+http://developer.android.com/reference/org/apache/http/message/BasicRequestLine.html
+http://developer.android.com/reference/org/apache/http/message/BasicStatusLine.html
+http://developer.android.com/reference/org/apache/http/message/BasicTokenIterator.html
+http://developer.android.com/reference/org/apache/http/message/BufferedHeader.html
+http://developer.android.com/reference/org/apache/http/message/HeaderGroup.html
+http://developer.android.com/reference/org/apache/http/message/ParserCursor.html
+http://developer.android.com/reference/org/apache/http/HeaderElementIterator.html
+http://developer.android.com/reference/org/apache/http/HeaderIterator.html
+http://developer.android.com/reference/java/util/List.html
+http://developer.android.com/reference/org/apache/http/HttpRequest.html
+http://developer.android.com/reference/org/apache/http/TokenIterator.html
+http://developer.android.com/reference/org/apache/http/client/entity/UrlEncodedFormEntity.html
+http://developer.android.com/reference/android/media/AudioManager.html
+http://developer.android.com/reference/android/content/BroadcastReceiver.html
+http://developer.android.com/reference/android/view/KeyEvent.html
+http://developer.android.com/reference/android/appwidget/AppWidgetProvider.html
+http://developer.android.com/reference/android/appwidget/AppWidgetProviderInfo.html
+http://developer.android.com/reference/android/appwidget/AppWidgetManager.html
+http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
+http://developer.android.com/reference/android/app/AlarmManager.html
 http://developer.android.com/reference/android/widget/RemoteViews.html
-http://developer.android.com/reference/android/widget/TextView.html
+http://developer.android.com/reference/android/widget/FrameLayout.html
+http://developer.android.com/reference/android/widget/LinearLayout.html
+http://developer.android.com/reference/android/widget/RelativeLayout.html
+http://developer.android.com/reference/android/widget/AnalogClock.html
+http://developer.android.com/reference/android/widget/Button.html
 http://developer.android.com/reference/android/widget/Chronometer.html
+http://developer.android.com/reference/android/widget/ImageButton.html
+http://developer.android.com/reference/android/widget/ImageView.html
 http://developer.android.com/reference/android/widget/ProgressBar.html
+http://developer.android.com/reference/android/widget/TextView.html
+http://developer.android.com/reference/android/widget/ViewFlipper.html
+http://developer.android.com/reference/android/widget/ListView.html
+http://developer.android.com/reference/android/widget/GridView.html
+http://developer.android.com/reference/android/widget/StackView.html
+http://developer.android.com/reference/android/widget/AdapterViewFlipper.html
+http://developer.android.com/reference/android/app/Service.html
+http://developer.android.com/reference/android/app/PendingIntent.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetProvider.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetConfigure.html
+http://developer.android.com/reference/android/widget/RemoteViewsService.html
+http://developer.android.com/reference/android/widget/ViewAnimator.html
+http://developer.android.com/reference/android/widget/Adapter.html
+http://developer.android.com/reference/android/widget/RemoteViewsService.RemoteViewsFactory.html
+http://developer.android.com/resources/samples/StackWidget/index.html
+http://developer.android.com/resources/samples/images/StackWidget.png
+http://developer.android.com/reference/android/widget/Toast.html
+http://developer.android.com/reference/android/Manifest.permission.html
+http://developer.android.com/resources/samples/WeatherListWidget/index.html
+http://developer.android.com/reference/android/content/ContentProvider.html
+http://developer.android.com/reference/android/net/Uri.html
+http://developer.android.com/reference/android/content/pm/PackageManager.html
+http://developer.android.com/shareables/training/OpenGLES.zip
+http://developer.android.com/reference/android/graphics/Canvas.html
+http://developer.android.com/reference/android/graphics/drawable/Drawable.html
+http://developer.android.com/reference/android/opengl/GLSurfaceView.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/ArcShape.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/OvalShape.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/PathShape.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/RectShape.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/RoundRectShape.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/Shape.html
+http://developer.android.com/reference/android/graphics/Path.html
+http://developer.android.com/reference/android/graphics/drawable/ShapeDrawable.html
+http://developer.android.com/reference/android/widget/ToggleButton.html
+http://developer.android.com/reference/android/widget/Switch.html
+http://developer.android.com/reference/android/widget/CompoundButton.html
+http://developer.android.com/reference/android/R.attr.html
+http://developer.android.com/reference/android/widget/CompoundButton.OnCheckedChangeListener.html
+http://developer.android.com/reference/javax/xml/xpath/XPath.html
+http://developer.android.com/reference/javax/xml/xpath/XPathExpression.html
+http://developer.android.com/reference/javax/xml/xpath/XPathFunction.html
+http://developer.android.com/reference/javax/xml/xpath/XPathFunctionResolver.html
+http://developer.android.com/reference/javax/xml/xpath/XPathVariableResolver.html
+http://developer.android.com/reference/javax/xml/xpath/XPathConstants.html
+http://developer.android.com/reference/javax/xml/xpath/XPathFactory.html
+http://developer.android.com/reference/javax/xml/xpath/XPathException.html
+http://developer.android.com/reference/javax/xml/xpath/XPathExpressionException.html
+http://developer.android.com/reference/javax/xml/xpath/XPathFactoryConfigurationException.html
+http://developer.android.com/reference/javax/xml/xpath/XPathFunctionException.html
+http://developer.android.com/reference/javax/xml/namespace/QName.html
+http://developer.android.com/reference/android/support/v4/content/CursorLoader.html
+http://developer.android.com/reference/android/database/Cursor.html
+http://developer.android.com/reference/android/support/v4/app/LoaderManager.LoaderCallbacks.html
+http://developer.android.com/reference/android/support/v4/content/Loader.html
+http://developer.android.com/reference/android/app/ListActivity.html
+http://developer.android.com/reference/android/content/res/Resources.html
+http://developer.android.com/reference/java/security/Certificate.html
+http://developer.android.com/reference/java/security/DomainCombiner.html
+http://developer.android.com/reference/java/security/Guard.html
+http://developer.android.com/reference/java/security/Key.html
+http://developer.android.com/reference/java/security/KeyStore.Entry.html
+http://developer.android.com/reference/java/security/KeyStore.LoadStoreParameter.html
+http://developer.android.com/reference/java/security/KeyStore.ProtectionParameter.html
+http://developer.android.com/reference/java/security/Policy.Parameters.html
+http://developer.android.com/reference/java/security/Principal.html
+http://developer.android.com/reference/java/security/PrivateKey.html
+http://developer.android.com/reference/java/security/PrivilegedAction.html
+http://developer.android.com/reference/java/security/PrivilegedExceptionAction.html
+http://developer.android.com/reference/java/security/PublicKey.html
+http://developer.android.com/reference/java/security/AccessControlContext.html
+http://developer.android.com/reference/java/security/AccessController.html
+http://developer.android.com/reference/java/security/AlgorithmParameterGenerator.html
+http://developer.android.com/reference/java/security/AlgorithmParameterGeneratorSpi.html
+http://developer.android.com/reference/java/security/AlgorithmParameters.html
+http://developer.android.com/reference/java/security/AlgorithmParametersSpi.html
+http://developer.android.com/reference/java/security/AllPermission.html
+http://developer.android.com/reference/java/security/AuthProvider.html
+http://developer.android.com/reference/java/security/BasicPermission.html
+http://developer.android.com/reference/java/security/CodeSigner.html
+http://developer.android.com/reference/java/security/CodeSource.html
+http://developer.android.com/reference/java/security/DigestInputStream.html
+http://developer.android.com/reference/java/security/DigestOutputStream.html
+http://developer.android.com/reference/java/security/GuardedObject.html
+http://developer.android.com/reference/java/security/Identity.html
+http://developer.android.com/reference/java/security/IdentityScope.html
+http://developer.android.com/reference/java/security/KeyFactory.html
+http://developer.android.com/reference/java/security/KeyFactorySpi.html
+http://developer.android.com/reference/java/security/KeyPair.html
+http://developer.android.com/reference/java/security/KeyPairGenerator.html
+http://developer.android.com/reference/java/security/KeyPairGeneratorSpi.html
+http://developer.android.com/reference/java/security/KeyRep.html
+http://developer.android.com/reference/java/security/KeyStore.html
+http://developer.android.com/reference/java/security/KeyStore.Builder.html
+http://developer.android.com/reference/java/security/KeyStore.CallbackHandlerProtection.html
+http://developer.android.com/reference/java/security/KeyStore.PasswordProtection.html
+http://developer.android.com/reference/java/security/KeyStore.PrivateKeyEntry.html
+http://developer.android.com/reference/java/security/KeyStore.SecretKeyEntry.html
+http://developer.android.com/reference/java/security/KeyStore.TrustedCertificateEntry.html
+http://developer.android.com/reference/java/security/KeyStoreSpi.html
+http://developer.android.com/reference/java/security/MessageDigest.html
+http://developer.android.com/reference/java/security/MessageDigestSpi.html
+http://developer.android.com/reference/java/security/Permission.html
+http://developer.android.com/reference/java/security/PermissionCollection.html
+http://developer.android.com/reference/java/security/Permissions.html
+http://developer.android.com/reference/java/security/Policy.html
+http://developer.android.com/reference/java/security/PolicySpi.html
+http://developer.android.com/reference/java/security/ProtectionDomain.html
+http://developer.android.com/reference/java/security/Provider.html
+http://developer.android.com/reference/java/security/Provider.Service.html
+http://developer.android.com/reference/java/security/SecureClassLoader.html
+http://developer.android.com/reference/java/security/SecureRandom.html
+http://developer.android.com/reference/java/security/SecureRandomSpi.html
+http://developer.android.com/reference/java/security/Security.html
+http://developer.android.com/reference/java/security/SecurityPermission.html
+http://developer.android.com/reference/java/security/Signature.html
+http://developer.android.com/reference/java/security/SignatureSpi.html
+http://developer.android.com/reference/java/security/SignedObject.html
+http://developer.android.com/reference/java/security/Signer.html
+http://developer.android.com/reference/java/security/Timestamp.html
+http://developer.android.com/reference/java/security/UnresolvedPermission.html
+http://developer.android.com/reference/java/security/KeyRep.Type.html
+http://developer.android.com/reference/java/security/AccessControlException.html
+http://developer.android.com/reference/java/security/DigestException.html
+http://developer.android.com/reference/java/security/GeneralSecurityException.html
+http://developer.android.com/reference/java/security/InvalidAlgorithmParameterException.html
+http://developer.android.com/reference/java/security/InvalidKeyException.html
+http://developer.android.com/reference/java/security/InvalidParameterException.html
+http://developer.android.com/reference/java/security/KeyException.html
+http://developer.android.com/reference/java/security/KeyManagementException.html
+http://developer.android.com/reference/java/security/KeyStoreException.html
+http://developer.android.com/reference/java/security/NoSuchAlgorithmException.html
+http://developer.android.com/reference/java/security/NoSuchProviderException.html
+http://developer.android.com/reference/java/security/PrivilegedActionException.html
+http://developer.android.com/reference/java/security/ProviderException.html
+http://developer.android.com/reference/java/security/SignatureException.html
+http://developer.android.com/reference/java/security/UnrecoverableEntryException.html
+http://developer.android.com/reference/java/security/UnrecoverableKeyException.html
+http://developer.android.com/reference/javax/security/auth/callback/CallbackHandler.html
+http://developer.android.com/reference/android/app/FragmentTransaction.html
+http://developer.android.com/reference/android/app/FragmentManager.html
+http://developer.android.com/reference/android/app/FragmentManager.OnBackStackChangedListener.html
+http://developer.android.com/reference/android/webkit/WebView.html
+http://developer.android.com/reference/android/view/MotionEvent.html
+http://developer.android.com/guide/practices/ui_guidelines/icon_design_launcher.html
+http://developer.android.com/reference/android/util/Log.html
+http://developer.android.com/reference/android/os/Debug.html
+http://developer.android.com/guide/practices/optimizing-for-3.0.html
+http://developer.android.com/reference/android/nfc/NdefMessage.html
+http://developer.android.com/reference/android/nfc/Tag.html
+http://developer.android.com/reference/android/nfc/tech/TagTechnology.html
+http://developer.android.com/reference/android/nfc/tech/NfcA.html
+http://developer.android.com/reference/android/nfc/tech/NfcB.html
+http://developer.android.com/reference/android/nfc/tech/NfcF.html
+http://developer.android.com/reference/android/nfc/tech/NfcV.html
+http://developer.android.com/reference/android/nfc/tech/IsoDep.html
+http://developer.android.com/reference/android/nfc/tech/Ndef.html
+http://developer.android.com/reference/android/nfc/tech/NdefFormatable.html
+http://developer.android.com/reference/android/nfc/tech/MifareClassic.html
+http://developer.android.com/reference/android/nfc/tech/MifareUltralight.html
+http://developer.android.com/reference/android/nfc/NfcAdapter.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.html
+http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityEventCompat.html
+http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityManagerCompat.html
+http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat.html
+http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityNodeInfoCompat.html
+http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityNodeProviderCompat.html
+http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityRecordCompat.html
+http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html
+http://developer.android.com/reference/android/view/accessibility/AccessibilityManager.html
+http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html
+http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeProvider.html
+http://developer.android.com/reference/android/view/accessibility/AccessibilityRecord.html
 http://developer.android.com/reference/android/app/backup/BackupHelper.html
 http://developer.android.com/reference/android/app/backup/BackupAgent.html
 http://developer.android.com/reference/android/app/backup/BackupAgentHelper.html
@@ -805,50 +934,7 @@
 http://developer.android.com/reference/android/app/backup/FullBackupDataOutput.html
 http://developer.android.com/reference/android/app/backup/RestoreObserver.html
 http://developer.android.com/reference/android/app/backup/SharedPreferencesBackupHelper.html
-http://developer.android.com/reference/android/content/SharedPreferences.html
-http://developer.android.com/reference/android/support/v4/util/LongSparseArray.html
-http://developer.android.com/reference/android/support/v4/util/LruCache.html
-http://developer.android.com/reference/android/support/v4/util/SparseArrayCompat.html
-http://developer.android.com/reference/android/util/LruCache.html
-http://developer.android.com/reference/android/util/SparseArray.html
-http://developer.android.com/shareables/training/BitmapFun.zip
-http://developer.android.com/reference/android/widget/GridView.html
-http://developer.android.com/reference/android/support/v4/view/ViewPager.html
-http://developer.android.com/reference/java/util/LinkedHashMap.html
-http://developer.android.com/reference/android/widget/ImageView.html
-http://developer.android.com/reference/android/content/ServiceConnection.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html
-http://developer.android.com/reference/android/os/Binder.html
-http://developer.android.com/reference/android/os/Messenger.html
-http://developer.android.com/reference/android/os/Handler.html
-http://developer.android.com/reference/android/os/Message.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceActivities.html
-http://developer.android.com/resources/samples/ApiDemos/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerService.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerServiceActivities.html
-http://developer.android.com/reference/android/os/DeadObjectException.html
-http://developer.android.com/reference/org/apache/http/conn/util/InetAddressUtils.html
-http://developer.android.com/shareables/training/PhotoIntentActivity.zip
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/PoolEntryRequest.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/RefQueueHandler.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/AbstractConnPool.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/BasicPooledConnAdapter.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/BasicPoolEntry.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/ConnPoolByRoute.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/RefQueueWorker.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/RouteSpecificPool.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/WaitingThread.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/WaitingThreadAborter.html
-http://developer.android.com/reference/android/content/IntentFilter.html
-http://developer.android.com/reference/android/content/BroadcastReceiver.html
-http://developer.android.com/reference/android/content/pm/PackageManager.html
-http://developer.android.com/reference/android/content/ComponentName.html
-http://developer.android.com/reference/android/view/Menu.html
-http://developer.android.com/reference/android/app/AliasActivity.html
-http://developer.android.com/reference/android/app/Application.html
-http://developer.android.com/reference/android/app/ActionBar.html
+http://developer.android.com/reference/java/io/InputStream.html
 http://developer.android.com/reference/android/widget/AbsListView.MultiChoiceModeListener.html
 http://developer.android.com/reference/android/widget/AbsListView.OnScrollListener.html
 http://developer.android.com/reference/android/widget/AbsListView.RecyclerListener.html
@@ -861,7 +947,6 @@
 http://developer.android.com/reference/android/widget/CalendarView.OnDateChangeListener.html
 http://developer.android.com/reference/android/widget/Checkable.html
 http://developer.android.com/reference/android/widget/Chronometer.OnChronometerTickListener.html
-http://developer.android.com/reference/android/widget/CompoundButton.OnCheckedChangeListener.html
 http://developer.android.com/reference/android/widget/DatePicker.OnDateChangedListener.html
 http://developer.android.com/reference/android/widget/ExpandableListAdapter.html
 http://developer.android.com/reference/android/widget/ExpandableListView.OnChildClickListener.html
@@ -883,7 +968,6 @@
 http://developer.android.com/reference/android/widget/PopupWindow.OnDismissListener.html
 http://developer.android.com/reference/android/widget/RadioGroup.OnCheckedChangeListener.html
 http://developer.android.com/reference/android/widget/RatingBar.OnRatingBarChangeListener.html
-http://developer.android.com/reference/android/widget/RemoteViewsService.RemoteViewsFactory.html
 http://developer.android.com/reference/android/widget/SearchView.OnCloseListener.html
 http://developer.android.com/reference/android/widget/SearchView.OnQueryTextListener.html
 http://developer.android.com/reference/android/widget/SearchView.OnSuggestionListener.html
@@ -914,16 +998,15 @@
 http://developer.android.com/reference/android/widget/AdapterView.html
 http://developer.android.com/reference/android/widget/AdapterView.AdapterContextMenuInfo.html
 http://developer.android.com/reference/android/widget/AdapterViewAnimator.html
-http://developer.android.com/reference/android/widget/AdapterViewFlipper.html
 http://developer.android.com/reference/android/widget/AlphabetIndexer.html
-http://developer.android.com/reference/android/widget/AnalogClock.html
 http://developer.android.com/reference/android/widget/ArrayAdapter.html
 http://developer.android.com/reference/android/widget/AutoCompleteTextView.html
+http://developer.android.com/reference/android/widget/BaseAdapter.html
 http://developer.android.com/reference/android/widget/BaseExpandableListAdapter.html
 http://developer.android.com/reference/android/widget/CalendarView.html
 http://developer.android.com/reference/android/widget/CheckBox.html
 http://developer.android.com/reference/android/widget/CheckedTextView.html
-http://developer.android.com/reference/android/widget/CompoundButton.html
+http://developer.android.com/reference/android/widget/CursorAdapter.html
 http://developer.android.com/reference/android/widget/CursorTreeAdapter.html
 http://developer.android.com/reference/android/widget/DatePicker.html
 http://developer.android.com/reference/android/widget/DialerFilter.html
@@ -942,7 +1025,6 @@
 http://developer.android.com/reference/android/widget/GridLayout.Spec.html
 http://developer.android.com/reference/android/widget/HeaderViewListAdapter.html
 http://developer.android.com/reference/android/widget/HorizontalScrollView.html
-http://developer.android.com/reference/android/widget/ImageButton.html
 http://developer.android.com/reference/android/widget/ImageSwitcher.html
 http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html
 http://developer.android.com/reference/android/widget/ListPopupWindow.html
@@ -954,26 +1036,25 @@
 http://developer.android.com/reference/android/widget/OverScroller.html
 http://developer.android.com/reference/android/widget/PopupMenu.html
 http://developer.android.com/reference/android/widget/PopupWindow.html
-http://developer.android.com/reference/android/widget/QuickContactBadge.html
 http://developer.android.com/reference/android/widget/RadioButton.html
 http://developer.android.com/reference/android/widget/RadioGroup.html
 http://developer.android.com/reference/android/widget/RadioGroup.LayoutParams.html
 http://developer.android.com/reference/android/widget/RatingBar.html
-http://developer.android.com/reference/android/widget/RemoteViewsService.html
+http://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html
 http://developer.android.com/reference/android/widget/ResourceCursorAdapter.html
 http://developer.android.com/reference/android/widget/ResourceCursorTreeAdapter.html
 http://developer.android.com/reference/android/widget/Scroller.html
 http://developer.android.com/reference/android/widget/ScrollView.html
+http://developer.android.com/reference/android/widget/SearchView.html
 http://developer.android.com/reference/android/widget/SeekBar.html
 http://developer.android.com/reference/android/widget/ShareActionProvider.html
 http://developer.android.com/reference/android/widget/SimpleAdapter.html
+http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html
 http://developer.android.com/reference/android/widget/SimpleCursorTreeAdapter.html
 http://developer.android.com/reference/android/widget/SimpleExpandableListAdapter.html
 http://developer.android.com/reference/android/widget/SlidingDrawer.html
 http://developer.android.com/reference/android/widget/Space.html
 http://developer.android.com/reference/android/widget/Spinner.html
-http://developer.android.com/reference/android/widget/StackView.html
-http://developer.android.com/reference/android/widget/Switch.html
 http://developer.android.com/reference/android/widget/TabHost.html
 http://developer.android.com/reference/android/widget/TabHost.TabSpec.html
 http://developer.android.com/reference/android/widget/TableLayout.html
@@ -984,12 +1065,8 @@
 http://developer.android.com/reference/android/widget/TextSwitcher.html
 http://developer.android.com/reference/android/widget/TextView.SavedState.html
 http://developer.android.com/reference/android/widget/TimePicker.html
-http://developer.android.com/reference/android/widget/Toast.html
-http://developer.android.com/reference/android/widget/ToggleButton.html
 http://developer.android.com/reference/android/widget/TwoLineListItem.html
 http://developer.android.com/reference/android/widget/VideoView.html
-http://developer.android.com/reference/android/widget/ViewAnimator.html
-http://developer.android.com/reference/android/widget/ViewFlipper.html
 http://developer.android.com/reference/android/widget/ViewSwitcher.html
 http://developer.android.com/reference/android/widget/ZoomButton.html
 http://developer.android.com/reference/android/widget/ZoomButtonsController.html
@@ -997,48 +1074,41 @@
 http://developer.android.com/reference/android/widget/ImageView.ScaleType.html
 http://developer.android.com/reference/android/widget/TextView.BufferType.html
 http://developer.android.com/reference/android/widget/RemoteViews.ActionException.html
-http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
-http://developer.android.com/resources/tutorials/views/hello-relativelayout.html
+http://developer.android.com/reference/android/view/View.OnClickListener.html
+http://developer.android.com/reference/java/lang/Object.html
 http://developer.android.com/reference/java/lang/RuntimeException.html
-http://developer.android.com/reference/android/R.attr.html
 http://developer.android.com/reference/android/util/Property.html
 http://developer.android.com/reference/java/lang/Float.html
 http://developer.android.com/reference/android/util/AttributeSet.html
-http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html
-http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html
+http://developer.android.com/reference/android/graphics/ColorFilter.html
+http://developer.android.com/reference/android/graphics/Matrix.html
+http://developer.android.com/reference/android/graphics/PorterDuff.Mode.html
+http://developer.android.com/reference/android/graphics/Bitmap.html
+http://developer.android.com/reference/android/graphics/drawable/LevelListDrawable.html
 http://developer.android.com/reference/java/util/ArrayList.html
-http://developer.android.com/reference/android/view/DragEvent.html
-http://developer.android.com/reference/android/graphics/Canvas.html
-http://developer.android.com/reference/android/os/Parcelable.html
-http://developer.android.com/reference/android/view/MotionEvent.html
-http://developer.android.com/reference/android/view/KeyEvent.html
-http://developer.android.com/reference/java/lang/CharSequence.html
-http://developer.android.com/reference/android/graphics/Rect.html
-http://developer.android.com/reference/android/graphics/Region.html
-http://developer.android.com/reference/android/view/animation/Transformation.html
-http://developer.android.com/reference/android/graphics/Point.html
-http://developer.android.com/reference/android/view/animation/LayoutAnimationController.html
-http://developer.android.com/reference/android/view/animation/Animation.AnimationListener.html
-http://developer.android.com/reference/android/animation/LayoutTransition.html
-http://developer.android.com/reference/android/view/ViewParent.html
-http://developer.android.com/reference/android/graphics/drawable/Drawable.html
-http://developer.android.com/reference/android/view/ViewGroup.OnHierarchyChangeListener.html
-http://developer.android.com/reference/android/view/ActionMode.html
-http://developer.android.com/reference/android/view/ActionMode.Callback.html
 http://developer.android.com/reference/android/view/View.OnAttachStateChangeListener.html
 http://developer.android.com/reference/android/view/View.OnLayoutChangeListener.html
 http://developer.android.com/reference/android/view/ViewPropertyAnimator.html
+http://developer.android.com/reference/java/lang/CharSequence.html
 http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html
+http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html
 http://developer.android.com/reference/android/view/ContextMenu.html
-http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeProvider.html
+http://developer.android.com/reference/android/content/res/Configuration.html
+http://developer.android.com/reference/android/view/DragEvent.html
+http://developer.android.com/reference/android/util/SparseArray.html
+http://developer.android.com/reference/android/graphics/Rect.html
 http://developer.android.com/reference/android/view/animation/Animation.html
+http://developer.android.com/reference/android/os/IBinder.html
 http://developer.android.com/reference/android/view/ContextMenu.ContextMenuInfo.html
-http://developer.android.com/reference/android/graphics/Bitmap.html
+http://developer.android.com/reference/android/graphics/Point.html
+http://developer.android.com/reference/android/os/Handler.html
 http://developer.android.com/reference/android/view/KeyEvent.DispatcherState.html
-http://developer.android.com/reference/android/graphics/Matrix.html
+http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
 http://developer.android.com/reference/android/view/View.OnFocusChangeListener.html
+http://developer.android.com/reference/android/view/ViewParent.html
 http://developer.android.com/reference/android/view/TouchDelegate.html
 http://developer.android.com/reference/android/view/ViewTreeObserver.html
+http://developer.android.com/reference/android/view/ViewGroup.html
 http://developer.android.com/reference/android/content/res/TypedArray.html
 http://developer.android.com/reference/android/view/inputmethod/InputConnection.html
 http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html
@@ -1046,7 +1116,6 @@
 http://developer.android.com/reference/java/lang/Runnable.html
 http://developer.android.com/reference/android/view/View.AccessibilityDelegate.html
 http://developer.android.com/reference/android/graphics/Paint.html
-http://developer.android.com/reference/android/view/View.OnClickListener.html
 http://developer.android.com/reference/android/view/View.OnCreateContextMenuListener.html
 http://developer.android.com/reference/android/view/View.OnDragListener.html
 http://developer.android.com/reference/android/view/View.OnGenericMotionListener.html
@@ -1055,53 +1124,16 @@
 http://developer.android.com/reference/android/view/View.OnLongClickListener.html
 http://developer.android.com/reference/android/view/View.OnSystemUiVisibilityChangeListener.html
 http://developer.android.com/reference/android/view/View.OnTouchListener.html
+http://developer.android.com/reference/android/view/ActionMode.html
+http://developer.android.com/reference/android/view/ActionMode.Callback.html
 http://developer.android.com/reference/android/content/ClipData.html
 http://developer.android.com/reference/android/view/View.DragShadowBuilder.html
+http://developer.android.com/reference/java/lang/Class.html
 http://developer.android.com/reference/android/graphics/drawable/Drawable.Callback.html
-http://developer.android.com/reference/android/view/ViewManager.html
 http://developer.android.com/reference/android/view/accessibility/AccessibilityEventSource.html
-http://developer.android.com/reference/android/view/Gravity.html
-http://developer.android.com/reference/android/view/View.MeasureSpec.html
-http://developer.android.com/guide/topics/ui/accessibility/service-declaration
-http://developer.android.com/reference/android/accessibilityservice/AccessibilityServiceInfo.html
-http://developer.android.com/reference/android/view/accessibility/AccessibilityRecord.html
-http://developer.android.com/reference/android/R.styleable.html
-http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityEventCompat.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/accessibility/ClockBackService.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/accessibility/TaskBackService.html
-http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityRecordCompat.html
-http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityNodeInfoCompat.html
-http://developer.android.com/reference/android/app/Instrumentation.html
-http://developer.android.com/reference/android/view/ActionProvider.html
-http://developer.android.com/reference/android/view/MenuItem.html
-http://developer.android.com/sdk/api_diff/15/changes.html
-http://developer.android.com/reference/android/provider/ContactsContract.StreamItems.html
-http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.html
-http://developer.android.com/reference/android/provider/ContactsContract.StreamItemPhotos.html
-http://developer.android.com/reference/android/provider/CalendarContract.Colors.html
-http://developer.android.com/reference/android/provider/CalendarContract.ColorsColumns.html
-http://developer.android.com/reference/android/provider/CalendarContract.CalendarColumns.html
-http://developer.android.com/reference/android/provider/CalendarContract.AttendeesColumns.html
-http://developer.android.com/reference/android/provider/CalendarContract.EventsColumns.html
-http://developer.android.com/reference/android/appwidget/AppWidgetHostView.html
-http://developer.android.com/reference/android/view/textservice/SpellCheckerSession.html
-http://developer.android.com/reference/android/view/textservice/SuggestionsInfo.html
-http://developer.android.com/reference/android/text/style/SuggestionSpan.html
-http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html
-http://developer.android.com/reference/android/graphics/SurfaceTexture.html
-http://developer.android.com/reference/android/view/Surface.html
-http://developer.android.com/reference/android/opengl/GLES11Ext.html
-http://developer.android.com/reference/android/provider/Settings.Secure.html
-http://developer.android.com/reference/android/speech/tts/TextToSpeech.html
-http://developer.android.com/reference/android/speech/tts/UtteranceProgressListener.html
-http://developer.android.com/reference/android/database/CrossProcessCursorWrapper.html
-http://developer.android.com/reference/android/database/CrossProcessCursor.html
-http://developer.android.com/reference/android/database/CursorWindow.html
-http://developer.android.com/reference/android/media/MediaMetadataRetriever.html
-http://developer.android.com/reference/android/media/CamcorderProfile.html
-http://developer.android.com/reference/android/hardware/Camera.Parameters.html
-http://developer.android.com/reference/android/hardware/Camera.html
-http://developer.android.com/reference/android/Manifest.permission.html
+http://developer.android.com/reference/android/provider/ContactsContract.Contacts.html
+http://developer.android.com/reference/java/awt/font/NumericShaper.html
+http://developer.android.com/reference/java/awt/font/TextAttribute.html
 http://developer.android.com/reference/android/animation/Animator.AnimatorListener.html
 http://developer.android.com/reference/android/animation/LayoutTransition.TransitionListener.html
 http://developer.android.com/reference/android/animation/TimeAnimator.TimeListener.html
@@ -1116,750 +1148,190 @@
 http://developer.android.com/reference/android/animation/FloatEvaluator.html
 http://developer.android.com/reference/android/animation/IntEvaluator.html
 http://developer.android.com/reference/android/animation/Keyframe.html
+http://developer.android.com/reference/android/animation/LayoutTransition.html
 http://developer.android.com/reference/android/animation/ObjectAnimator.html
 http://developer.android.com/reference/android/animation/PropertyValuesHolder.html
 http://developer.android.com/reference/android/animation/TimeAnimator.html
 http://developer.android.com/reference/android/animation/ValueAnimator.html
-http://developer.android.com/reference/android/view/ActionProvider.VisibilityListener.html
-http://developer.android.com/reference/android/view/Choreographer.FrameCallback.html
-http://developer.android.com/reference/android/view/CollapsibleActionView.html
-http://developer.android.com/reference/android/view/GestureDetector.OnDoubleTapListener.html
-http://developer.android.com/reference/android/view/GestureDetector.OnGestureListener.html
-http://developer.android.com/reference/android/view/InputQueue.Callback.html
-http://developer.android.com/reference/android/view/LayoutInflater.Factory.html
-http://developer.android.com/reference/android/view/LayoutInflater.Factory2.html
-http://developer.android.com/reference/android/view/LayoutInflater.Filter.html
-http://developer.android.com/reference/android/view/MenuItem.OnActionExpandListener.html
-http://developer.android.com/reference/android/view/MenuItem.OnMenuItemClickListener.html
-http://developer.android.com/reference/android/view/ScaleGestureDetector.OnScaleGestureListener.html
-http://developer.android.com/reference/android/view/SubMenu.html
-http://developer.android.com/reference/android/view/SurfaceHolder.html
-http://developer.android.com/reference/android/view/SurfaceHolder.Callback.html
-http://developer.android.com/reference/android/view/SurfaceHolder.Callback2.html
-http://developer.android.com/reference/android/view/TextureView.SurfaceTextureListener.html
-http://developer.android.com/reference/android/view/ViewStub.OnInflateListener.html
-http://developer.android.com/reference/android/view/ViewTreeObserver.OnDrawListener.html
-http://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalFocusChangeListener.html
-http://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalLayoutListener.html
-http://developer.android.com/reference/android/view/ViewTreeObserver.OnPreDrawListener.html
-http://developer.android.com/reference/android/view/ViewTreeObserver.OnScrollChangedListener.html
-http://developer.android.com/reference/android/view/ViewTreeObserver.OnTouchModeChangeListener.html
-http://developer.android.com/reference/android/view/Window.Callback.html
-http://developer.android.com/reference/android/view/WindowManager.html
-http://developer.android.com/reference/android/view/AbsSavedState.html
-http://developer.android.com/reference/android/view/Choreographer.html
-http://developer.android.com/reference/android/view/ContextThemeWrapper.html
-http://developer.android.com/reference/android/view/Display.html
-http://developer.android.com/reference/android/view/FocusFinder.html
-http://developer.android.com/reference/android/view/GestureDetector.html
-http://developer.android.com/reference/android/view/GestureDetector.SimpleOnGestureListener.html
-http://developer.android.com/reference/android/view/HapticFeedbackConstants.html
-http://developer.android.com/reference/android/view/InputDevice.html
-http://developer.android.com/reference/android/view/InputDevice.MotionRange.html
-http://developer.android.com/reference/android/view/InputEvent.html
-http://developer.android.com/reference/android/view/InputQueue.html
-http://developer.android.com/reference/android/view/KeyCharacterMap.html
-http://developer.android.com/reference/android/view/KeyCharacterMap.KeyData.html
-http://developer.android.com/reference/android/view/MenuInflater.html
-http://developer.android.com/reference/android/view/MotionEvent.PointerCoords.html
-http://developer.android.com/reference/android/view/MotionEvent.PointerProperties.html
-http://developer.android.com/reference/android/view/OrientationEventListener.html
-http://developer.android.com/reference/android/view/OrientationListener.html
-http://developer.android.com/reference/android/view/ScaleGestureDetector.html
-http://developer.android.com/reference/android/view/ScaleGestureDetector.SimpleOnScaleGestureListener.html
-http://developer.android.com/reference/android/view/SoundEffectConstants.html
-http://developer.android.com/reference/android/view/SurfaceView.html
-http://developer.android.com/reference/android/view/TextureView.html
-http://developer.android.com/reference/android/view/VelocityTracker.html
-http://developer.android.com/reference/android/view/View.BaseSavedState.html
-http://developer.android.com/reference/android/view/ViewConfiguration.html
-http://developer.android.com/reference/android/view/ViewDebug.html
-http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html
-http://developer.android.com/reference/android/view/Window.html
-http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html
-http://developer.android.com/reference/android/view/ViewDebug.HierarchyTraceType.html
-http://developer.android.com/reference/android/view/ViewDebug.RecyclerTraceType.html
-http://developer.android.com/reference/android/view/InflateException.html
-http://developer.android.com/reference/android/view/KeyCharacterMap.UnavailableException.html
-http://developer.android.com/reference/android/view/Surface.OutOfResourcesException.html
-http://developer.android.com/reference/android/view/SurfaceHolder.BadSurfaceTypeException.html
-http://developer.android.com/reference/android/view/WindowManager.BadTokenException.html
-http://developer.android.com/reference/android/webkit/WebView.html
-http://developer.android.com/reference/android/webkit/WebSettings.html
-http://developer.android.com/reference/android/webkit/WebViewClient.html
-http://developer.android.com/resources/tutorials/views/hello-webview.html
-http://developer.android.com/reference/org/apache/http/auth/AuthScheme.html
-http://developer.android.com/reference/org/apache/http/auth/AuthSchemeFactory.html
-http://developer.android.com/reference/org/apache/http/auth/Credentials.html
-http://developer.android.com/reference/org/apache/http/auth/AUTH.html
-http://developer.android.com/reference/org/apache/http/auth/AuthSchemeRegistry.html
-http://developer.android.com/reference/org/apache/http/auth/AuthScope.html
-http://developer.android.com/reference/org/apache/http/auth/AuthState.html
-http://developer.android.com/reference/org/apache/http/auth/BasicUserPrincipal.html
-http://developer.android.com/reference/org/apache/http/auth/NTCredentials.html
-http://developer.android.com/reference/org/apache/http/auth/NTUserPrincipal.html
-http://developer.android.com/reference/org/apache/http/auth/UsernamePasswordCredentials.html
-http://developer.android.com/reference/org/apache/http/auth/AuthenticationException.html
-http://developer.android.com/reference/org/apache/http/auth/InvalidCredentialsException.html
-http://developer.android.com/reference/org/apache/http/auth/MalformedChallengeException.html
-http://developer.android.com/reference/android/media/AudioManager.html
-http://developer.android.com/reference/android/view/animation/Interpolator.html
-http://developer.android.com/reference/android/view/animation/AccelerateDecelerateInterpolator.html
-http://developer.android.com/reference/android/view/animation/AccelerateInterpolator.html
-http://developer.android.com/reference/android/view/animation/AlphaAnimation.html
-http://developer.android.com/reference/android/view/animation/Animation.Description.html
-http://developer.android.com/reference/android/view/animation/AnimationSet.html
-http://developer.android.com/reference/android/view/animation/AnimationUtils.html
-http://developer.android.com/reference/android/view/animation/AnticipateInterpolator.html
-http://developer.android.com/reference/android/view/animation/AnticipateOvershootInterpolator.html
-http://developer.android.com/reference/android/view/animation/BounceInterpolator.html
-http://developer.android.com/reference/android/view/animation/CycleInterpolator.html
-http://developer.android.com/reference/android/view/animation/DecelerateInterpolator.html
-http://developer.android.com/reference/android/view/animation/GridLayoutAnimationController.html
-http://developer.android.com/reference/android/view/animation/GridLayoutAnimationController.AnimationParameters.html
-http://developer.android.com/reference/android/view/animation/LayoutAnimationController.AnimationParameters.html
-http://developer.android.com/reference/android/view/animation/LinearInterpolator.html
-http://developer.android.com/reference/android/view/animation/OvershootInterpolator.html
-http://developer.android.com/reference/android/view/animation/RotateAnimation.html
-http://developer.android.com/reference/android/view/animation/ScaleAnimation.html
-http://developer.android.com/reference/android/view/animation/TranslateAnimation.html
-http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html
-http://developer.android.com/reference/org/xmlpull/v1/sax2/Driver.html
-http://developer.android.com/reference/android/media/effect/EffectUpdateListener.html
-http://developer.android.com/reference/android/media/effect/Effect.html
-http://developer.android.com/reference/android/media/effect/EffectContext.html
-http://developer.android.com/reference/android/media/effect/EffectFactory.html
-http://developer.android.com/reference/android/opengl/GLES20.html
-http://developer.android.com/reference/android/provider/CalendarContract.Calendars.html
-http://developer.android.com/reference/android/provider/CalendarContract.Events.html
-http://developer.android.com/reference/android/provider/CalendarContract.Attendees.html
-http://developer.android.com/reference/android/provider/CalendarContract.Reminders.html
-http://developer.android.com/reference/android/provider/CalendarContract.html
-http://developer.android.com/reference/android/provider/CalendarContract.Instances.html
-http://developer.android.com/reference/android/content/AsyncQueryHandler.html
-http://developer.android.com/reference/android/provider/CalendarContract.SyncColumns.html
-http://developer.android.com/reference/android/accounts/AccountManager.html
-http://developer.android.com/reference/java/util/TimeZone.html
-http://developer.android.com/reference/android/provider/CalendarContract.RemindersColumns.html
-http://developer.android.com/reference/android/provider/CalendarContract.CalendarCache.html
-http://developer.android.com/resources/tutorials/views/hello-datepicker.html
-http://developer.android.com/reference/android/app/DatePickerDialog.html
-http://developer.android.com/reference/java/security/acl/Acl.html
-http://developer.android.com/reference/java/security/acl/AclEntry.html
-http://developer.android.com/reference/java/security/acl/Group.html
-http://developer.android.com/reference/java/security/acl/Owner.html
-http://developer.android.com/reference/java/security/acl/Permission.html
-http://developer.android.com/reference/java/security/acl/AclNotFoundException.html
-http://developer.android.com/reference/java/security/acl/LastOwnerException.html
-http://developer.android.com/reference/java/security/acl/NotOwnerException.html
-http://developer.android.com/shareables/training/OpenGLES.zip
-http://developer.android.com/reference/android/opengl/GLSurfaceView.html
-http://developer.android.com/reference/org/apache/http/client/methods/AbortableHttpRequest.html
-http://developer.android.com/reference/android/text/style/AbsoluteSizeSpan.html
-http://developer.android.com/reference/android/accounts/AbstractAccountAuthenticator.html
-http://developer.android.com/reference/org/apache/http/impl/client/AbstractAuthenticationHandler.html
-http://developer.android.com/reference/org/apache/http/impl/conn/AbstractClientConnAdapter.html
-http://developer.android.com/reference/java/util/AbstractCollection.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/AbstractCookieAttributeHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/AbstractCookieSpec.html
-http://developer.android.com/reference/org/apache/http/cookie/CookieAttributeHandler.html
-http://developer.android.com/reference/android/database/AbstractCursor.html
-http://developer.android.com/reference/android/database/AbstractCursor.SelfContentObserver.html
-http://developer.android.com/reference/java/util/concurrent/AbstractExecutorService.html
-http://developer.android.com/reference/java/util/concurrent/ExecutorService.html
-http://developer.android.com/reference/org/apache/http/impl/client/AbstractHttpClient.html
-http://developer.android.com/reference/org/apache/http/impl/AbstractHttpClientConnection.html
+http://developer.android.com/reference/android/security/KeyChainAliasCallback.html
+http://developer.android.com/reference/android/security/KeyChain.html
+http://developer.android.com/reference/android/security/KeyChainException.html
+http://developer.android.com/reference/android/net/TrafficStats.html
+http://developer.android.com/reference/org/apache/http/client/HttpClient.html
+http://developer.android.com/reference/java/net/URLConnection.html
+http://developer.android.com/reference/org/apache/http/ConnectionReuseStrategy.html
+http://developer.android.com/reference/org/apache/http/FormattedHeader.html
+http://developer.android.com/reference/org/apache/http/Header.html
+http://developer.android.com/reference/org/apache/http/HeaderElement.html
+http://developer.android.com/reference/org/apache/http/HttpClientConnection.html
+http://developer.android.com/reference/org/apache/http/HttpConnection.html
+http://developer.android.com/reference/org/apache/http/HttpConnectionMetrics.html
+http://developer.android.com/reference/org/apache/http/HttpEntity.html
+http://developer.android.com/reference/org/apache/http/HttpEntityEnclosingRequest.html
+http://developer.android.com/reference/org/apache/http/HttpInetConnection.html
+http://developer.android.com/reference/org/apache/http/HttpMessage.html
+http://developer.android.com/reference/org/apache/http/HttpRequestFactory.html
+http://developer.android.com/reference/org/apache/http/HttpRequestInterceptor.html
+http://developer.android.com/reference/org/apache/http/HttpResponse.html
+http://developer.android.com/reference/org/apache/http/HttpResponseFactory.html
+http://developer.android.com/reference/org/apache/http/HttpResponseInterceptor.html
+http://developer.android.com/reference/org/apache/http/HttpServerConnection.html
+http://developer.android.com/reference/org/apache/http/HttpStatus.html
+http://developer.android.com/reference/org/apache/http/NameValuePair.html
+http://developer.android.com/reference/org/apache/http/ReasonPhraseCatalog.html
+http://developer.android.com/reference/org/apache/http/RequestLine.html
+http://developer.android.com/reference/org/apache/http/StatusLine.html
+http://developer.android.com/reference/org/apache/http/HttpHost.html
+http://developer.android.com/reference/org/apache/http/HttpVersion.html
+http://developer.android.com/reference/org/apache/http/ProtocolVersion.html
+http://developer.android.com/reference/org/apache/http/ConnectionClosedException.html
+http://developer.android.com/reference/org/apache/http/HttpException.html
+http://developer.android.com/reference/org/apache/http/MalformedChunkCodingException.html
+http://developer.android.com/reference/org/apache/http/MethodNotSupportedException.html
+http://developer.android.com/reference/org/apache/http/NoHttpResponseException.html
+http://developer.android.com/reference/org/apache/http/ParseException.html
+http://developer.android.com/reference/org/apache/http/ProtocolException.html
+http://developer.android.com/reference/org/apache/http/UnsupportedHttpVersionException.html
+http://developer.android.com/reference/java/util/Iterator.html
+http://developer.android.com/shareables/training/DeviceManagement.zip
+http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html
+http://developer.android.com/reference/java/lang/SecurityException.html
+http://developer.android.com/reference/android/net/sip/SipRegistrationListener.html
+http://developer.android.com/reference/android/net/sip/SipAudioCall.html
+http://developer.android.com/reference/android/net/sip/SipAudioCall.Listener.html
+http://developer.android.com/reference/android/net/sip/SipErrorCode.html
+http://developer.android.com/reference/android/net/sip/SipManager.html
+http://developer.android.com/reference/android/net/sip/SipProfile.html
+http://developer.android.com/reference/android/net/sip/SipProfile.Builder.html
+http://developer.android.com/reference/android/net/sip/SipSession.html
+http://developer.android.com/reference/android/net/sip/SipSession.Listener.html
+http://developer.android.com/reference/android/net/sip/SipSession.State.html
+http://developer.android.com/reference/android/net/sip/SipException.html
+http://developer.android.com/resources/samples/SearchableDictionary/index.html
+http://developer.android.com/reference/org/apache/http/io/HttpMessageParser.html
+http://developer.android.com/reference/org/apache/http/io/HttpMessageWriter.html
+http://developer.android.com/reference/org/apache/http/io/HttpTransportMetrics.html
 http://developer.android.com/reference/org/apache/http/io/SessionInputBuffer.html
 http://developer.android.com/reference/org/apache/http/io/SessionOutputBuffer.html
-http://developer.android.com/reference/org/apache/http/entity/AbstractHttpEntity.html
-http://developer.android.com/reference/org/apache/http/params/AbstractHttpParams.html
-http://developer.android.com/reference/org/apache/http/impl/AbstractHttpServerConnection.html
-http://developer.android.com/reference/android/inputmethodservice/AbstractInputMethodService.html
-http://developer.android.com/reference/android/inputmethodservice/AbstractInputMethodService.AbstractInputMethodImpl.html
-http://developer.android.com/reference/android/view/inputmethod/InputMethod.html
-http://developer.android.com/reference/android/inputmethodservice/AbstractInputMethodService.AbstractInputMethodSessionImpl.html
-http://developer.android.com/reference/android/view/inputmethod/InputMethodSession.html
-http://developer.android.com/reference/java/nio/channels/spi/AbstractInterruptibleChannel.html
-http://developer.android.com/reference/java/util/AbstractList.html
-http://developer.android.com/reference/java/util/AbstractMap.html
-http://developer.android.com/reference/java/util/AbstractMap.SimpleEntry.html
-http://developer.android.com/reference/java/util/AbstractMap.SimpleImmutableEntry.html
-http://developer.android.com/reference/org/apache/http/impl/io/AbstractMessageParser.html
-http://developer.android.com/reference/org/apache/http/impl/io/AbstractMessageWriter.html
-http://developer.android.com/reference/java/lang/AbstractMethodError.html
-http://developer.android.com/reference/java/util/concurrent/locks/AbstractOwnableSynchronizer.html
-http://developer.android.com/reference/org/apache/http/impl/conn/AbstractPooledConnAdapter.html
-http://developer.android.com/reference/org/apache/http/impl/conn/AbstractPoolEntry.html
-http://developer.android.com/reference/java/util/prefs/AbstractPreferences.html
-http://developer.android.com/reference/java/util/AbstractQueue.html
-http://developer.android.com/reference/java/util/Queue.html
-http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.html
-http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedSynchronizer.html
-http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.ConditionObject.html
-http://developer.android.com/reference/java/util/concurrent/locks/Lock.html
-http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedSynchronizer.ConditionObject.html
-http://developer.android.com/reference/java/nio/channels/spi/AbstractSelectableChannel.html
-http://developer.android.com/reference/java/nio/channels/spi/AbstractSelectionKey.html
-http://developer.android.com/reference/java/nio/channels/spi/AbstractSelector.html
-http://developer.android.com/reference/java/util/AbstractSequentialList.html
-http://developer.android.com/reference/org/apache/http/impl/io/AbstractSessionInputBuffer.html
-http://developer.android.com/reference/org/apache/http/impl/io/AbstractSessionOutputBuffer.html
-http://developer.android.com/reference/java/io/OutputStream.html
-http://developer.android.com/reference/java/util/AbstractSet.html
-http://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier.html
-http://developer.android.com/reference/org/apache/http/conn/ssl/X509HostnameVerifier.html
-http://developer.android.com/reference/android/database/AbstractWindowedCursor.html
-http://developer.android.com/reference/java/security/AccessControlContext.html
-http://developer.android.com/reference/java/security/AccessControlException.html
-http://developer.android.com/reference/java/security/AccessController.html
-http://developer.android.com/reference/android/support/v4/view/AccessibilityDelegateCompat.html
-http://developer.android.com/reference/android/view/accessibility/AccessibilityManager.html
-http://developer.android.com/reference/android/view/accessibility/AccessibilityManager.AccessibilityStateChangeListener.html
-http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityManagerCompat.html
-http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat.html
-http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityNodeProviderCompat.html
-http://developer.android.com/reference/java/lang/reflect/AccessibleObject.html
-http://developer.android.com/reference/android/accounts/Account.html
-http://developer.android.com/reference/android/accounts/AccountAuthenticatorActivity.html
-http://developer.android.com/reference/android/accounts/AccountAuthenticatorResponse.html
-http://developer.android.com/reference/android/accounts/AccountManagerCallback.html
-http://developer.android.com/reference/android/accounts/AccountManagerFuture.html
-http://developer.android.com/reference/android/accounts/AccountsException.html
-http://developer.android.com/reference/android/media/audiofx/AcousticEchoCanceler.html
-http://developer.android.com/reference/android/app/ActionBar.LayoutParams.html
-http://developer.android.com/reference/android/app/ActionBar.OnMenuVisibilityListener.html
-http://developer.android.com/reference/android/app/ActionBar.OnNavigationListener.html
-http://developer.android.com/reference/android/app/ActionBar.Tab.html
-http://developer.android.com/reference/android/app/ActionBar.TabListener.html
-http://developer.android.com/reference/android/support/v4/app/ActivityCompat.html
-http://developer.android.com/reference/android/app/ActivityGroup.html
-http://developer.android.com/reference/android/content/pm/ActivityInfo.html
-http://developer.android.com/reference/android/support/v4/content/pm/ActivityInfoCompat.html
-http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase.html
-http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase2.html
-http://developer.android.com/reference/android/app/ActivityManager.html
-http://developer.android.com/reference/android/app/ActivityManager.MemoryInfo.html
-http://developer.android.com/reference/android/app/ActivityManager.ProcessErrorStateInfo.html
-http://developer.android.com/reference/android/app/ActivityManager.RecentTaskInfo.html
-http://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo.html
-http://developer.android.com/reference/android/app/ActivityManager.RunningServiceInfo.html
-http://developer.android.com/reference/android/app/ActivityManager.RunningTaskInfo.html
-http://developer.android.com/reference/android/content/ActivityNotFoundException.html
-http://developer.android.com/reference/android/app/ActivityOptions.html
-http://developer.android.com/reference/android/test/ActivityTestCase.html
-http://developer.android.com/reference/android/test/ActivityUnitTestCase.html
-http://developer.android.com/reference/android/location/Address.html
-http://developer.android.com/reference/java/util/zip/Adler32.html
+http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html
+http://developer.android.com/reference/org/xmlpull/v1/XmlSerializer.html
+http://developer.android.com/reference/org/xmlpull/v1/XmlPullParserFactory.html
+http://developer.android.com/reference/org/xmlpull/v1/XmlPullParserException.html
+http://developer.android.com/reference/android/net/nsd/NsdManager.DiscoveryListener.html
+http://developer.android.com/reference/android/net/nsd/NsdManager.RegistrationListener.html
+http://developer.android.com/reference/android/net/nsd/NsdManager.ResolveListener.html
+http://developer.android.com/reference/android/net/nsd/NsdManager.html
+http://developer.android.com/reference/android/net/nsd/NsdServiceInfo.html
+http://developer.android.com/reference/android/text/Editable.html
+http://developer.android.com/reference/android/util/SparseBooleanArray.html
+http://developer.android.com/reference/android/graphics/Region.html
+http://developer.android.com/reference/android/view/animation/Transformation.html
+http://developer.android.com/reference/android/view/animation/LayoutAnimationController.html
+http://developer.android.com/reference/android/view/animation/Animation.AnimationListener.html
+http://developer.android.com/reference/android/view/ViewGroup.OnHierarchyChangeListener.html
+http://developer.android.com/reference/android/text/TextWatcher.html
+http://developer.android.com/reference/android/view/ViewManager.html
+http://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalLayoutListener.html
+http://developer.android.com/reference/android/view/ViewTreeObserver.OnTouchModeChangeListener.html
+http://developer.android.com/reference/android/view/View.MeasureSpec.html
+http://developer.android.com/reference/java/io/Serializable.html
+http://developer.android.com/reference/java/lang/NullPointerException.html
+http://developer.android.com/reference/java/security/spec/PKCS8EncodedKeySpec.html
+http://developer.android.com/reference/javax/crypto/spec/SecretKeySpec.html
+http://developer.android.com/reference/java/security/spec/X509EncodedKeySpec.html
+http://developer.android.com/reference/java/io/ObjectStreamException.html
+http://developer.android.com/reference/android/provider/BaseColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.AttendeesColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.CalendarAlertsColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.CalendarCacheColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.CalendarColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.CalendarSyncColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.ColorsColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.EventDaysColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.EventsColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.ExtendedPropertiesColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.RemindersColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.SyncColumns.html
+http://developer.android.com/reference/android/provider/Contacts.ContactMethodsColumns.html
+http://developer.android.com/reference/android/provider/Contacts.ExtensionsColumns.html
+http://developer.android.com/reference/android/provider/Contacts.GroupsColumns.html
+http://developer.android.com/reference/android/provider/Contacts.OrganizationColumns.html
+http://developer.android.com/reference/android/provider/Contacts.PeopleColumns.html
+http://developer.android.com/reference/android/provider/Contacts.PhonesColumns.html
+http://developer.android.com/reference/android/provider/Contacts.PhotosColumns.html
+http://developer.android.com/reference/android/provider/Contacts.PresenceColumns.html
+http://developer.android.com/reference/android/provider/Contacts.SettingsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.BaseSyncColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.BaseTypes.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.CommonColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.ContactNameColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.ContactOptionsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.ContactsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.ContactStatusColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.DataColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.DataColumnsWithJoins.html
+http://developer.android.com/reference/android/provider/ContactsContract.DisplayNameSources.html
+http://developer.android.com/reference/android/provider/ContactsContract.FullNameStyle.html
+http://developer.android.com/reference/android/provider/ContactsContract.GroupsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.PhoneLookupColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.PhoneticNameStyle.html
+http://developer.android.com/reference/android/provider/ContactsContract.PresenceColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.RawContactsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.SettingsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.StatusColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.StreamItemPhotosColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.StreamItemsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.SyncColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.AlbumColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.ArtistColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.AudioColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.GenresColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.PlaylistsColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Files.FileColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Images.ImageColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.MediaColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Video.VideoColumns.html
+http://developer.android.com/reference/android/provider/OpenableColumns.html
+http://developer.android.com/reference/android/provider/SyncStateContract.Columns.html
 http://developer.android.com/reference/android/provider/AlarmClock.html
-http://developer.android.com/reference/android/app/AlarmManager.html
-http://developer.android.com/reference/android/app/AlertDialog.html
-http://developer.android.com/reference/android/app/AlertDialog.Builder.html
-http://developer.android.com/reference/java/security/AlgorithmParameterGenerator.html
-http://developer.android.com/reference/java/security/AlgorithmParameterGeneratorSpi.html
-http://developer.android.com/reference/java/security/AlgorithmParameters.html
-http://developer.android.com/reference/java/security/spec/AlgorithmParameterSpec.html
-http://developer.android.com/reference/java/security/AlgorithmParametersSpi.html
-http://developer.android.com/reference/android/text/style/AlignmentSpan.html
-http://developer.android.com/reference/android/text/style/AlignmentSpan.Standard.html
-http://developer.android.com/reference/org/apache/http/client/params/AllClientPNames.html
-http://developer.android.com/reference/android/renderscript/Allocation.MipmapControl.html
-http://developer.android.com/reference/android/renderscript/AllocationAdapter.html
-http://developer.android.com/reference/org/apache/http/conn/ssl/AllowAllHostnameVerifier.html
-http://developer.android.com/reference/java/security/AllPermission.html
-http://developer.android.com/reference/java/nio/channels/AlreadyConnectedException.html
-http://developer.android.com/reference/android/text/AlteredCharSequence.html
-http://developer.android.com/reference/android/text/AndroidCharacter.html
-http://developer.android.com/reference/android/util/AndroidException.html
-http://developer.android.com/reference/android/net/http/AndroidHttpClient.html
-http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpClient.html
-http://developer.android.com/reference/org/apache/http/HttpRequestInterceptor.html
-http://developer.android.com/reference/android/util/AndroidRuntimeException.html
-http://developer.android.com/reference/android/test/AndroidTestCase.html
-http://developer.android.com/reference/android/test/AndroidTestRunner.html
-http://developer.android.com/reference/android/graphics/drawable/Animatable.html
-http://developer.android.com/reference/java/lang/reflect/AnnotatedElement.html
-http://developer.android.com/reference/android/text/Annotation.html
-http://developer.android.com/reference/java/lang/annotation/Annotation.html
-http://developer.android.com/reference/java/text/Annotation.html
-http://developer.android.com/reference/java/lang/annotation/AnnotationFormatError.html
-http://developer.android.com/reference/java/lang/annotation/AnnotationTypeMismatchException.html
-http://developer.android.com/reference/java/lang/Appendable.html
-http://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html
-http://developer.android.com/reference/android/app/ApplicationErrorReport.html
-http://developer.android.com/reference/android/app/ApplicationErrorReport.AnrInfo.html
-http://developer.android.com/reference/android/app/ApplicationErrorReport.BatteryInfo.html
-http://developer.android.com/reference/android/app/ApplicationErrorReport.CrashInfo.html
-http://developer.android.com/reference/android/app/ApplicationErrorReport.RunningServiceInfo.html
-http://developer.android.com/reference/android/content/pm/ApplicationInfo.html
-http://developer.android.com/reference/android/content/pm/ApplicationInfo.DisplayNameComparator.html
-http://developer.android.com/reference/android/test/ApplicationTestCase.html
-http://developer.android.com/reference/android/appwidget/AppWidgetHost.html
-http://developer.android.com/reference/android/appwidget/AppWidgetManager.html
-http://developer.android.com/reference/android/appwidget/AppWidgetProvider.html
-http://developer.android.com/reference/android/appwidget/AppWidgetProviderInfo.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/ArcShape.html
-http://developer.android.com/reference/java/lang/ArithmeticException.html
-http://developer.android.com/reference/java/lang/reflect/Array.html
-http://developer.android.com/reference/java/sql/Array.html
-http://developer.android.com/reference/java/util/concurrent/ArrayBlockingQueue.html
-http://developer.android.com/reference/java/util/concurrent/BlockingQueue.html
-http://developer.android.com/reference/java/util/ArrayDeque.html
-http://developer.android.com/reference/java/util/Deque.html
-http://developer.android.com/reference/java/lang/ArrayIndexOutOfBoundsException.html
-http://developer.android.com/reference/java/util/List.html
-http://developer.android.com/reference/java/util/Arrays.html
-http://developer.android.com/reference/java/lang/ArrayStoreException.html
-http://developer.android.com/reference/android/text/method/ArrowKeyMovementMethod.html
-http://developer.android.com/reference/junit/framework/Assert.html
-http://developer.android.com/reference/java/lang/AssertionError.html
-http://developer.android.com/reference/android/test/AssertionFailedError.html
-http://developer.android.com/reference/junit/framework/AssertionFailedError.html
-http://developer.android.com/reference/android/content/res/AssetFileDescriptor.html
-http://developer.android.com/reference/android/content/res/AssetFileDescriptor.AutoCloseInputStream.html
-http://developer.android.com/reference/android/os/ParcelFileDescriptor.html
-http://developer.android.com/reference/android/content/res/AssetFileDescriptor.AutoCloseOutputStream.html
-http://developer.android.com/reference/android/content/res/AssetManager.AssetInputStream.html
-http://developer.android.com/reference/java/nio/channels/AsynchronousCloseException.html
-http://developer.android.com/reference/android/media/AsyncPlayer.html
-http://developer.android.com/reference/android/content/AsyncQueryHandler.WorkerArgs.html
-http://developer.android.com/reference/android/content/AsyncQueryHandler.WorkerHandler.html
-http://developer.android.com/reference/android/os/AsyncTask.Status.html
-http://developer.android.com/reference/java/util/concurrent/atomic/AtomicBoolean.html
-http://developer.android.com/reference/java/util/concurrent/atomic/AtomicInteger.html
-http://developer.android.com/reference/java/util/concurrent/atomic/AtomicIntegerArray.html
-http://developer.android.com/reference/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.html
-http://developer.android.com/reference/java/util/concurrent/atomic/AtomicLong.html
-http://developer.android.com/reference/java/util/concurrent/atomic/AtomicLongArray.html
-http://developer.android.com/reference/java/util/concurrent/atomic/AtomicLongFieldUpdater.html
-http://developer.android.com/reference/java/util/concurrent/atomic/AtomicMarkableReference.html
-http://developer.android.com/reference/java/util/concurrent/atomic/AtomicReference.html
-http://developer.android.com/reference/java/util/concurrent/atomic/AtomicReferenceArray.html
-http://developer.android.com/reference/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.html
-http://developer.android.com/reference/java/util/concurrent/atomic/AtomicStampedReference.html
-http://developer.android.com/reference/org/w3c/dom/Attr.html
-http://developer.android.com/reference/java/text/AttributedCharacterIterator.html
-http://developer.android.com/reference/java/text/CharacterIterator.html
-http://developer.android.com/reference/java/text/AttributedCharacterIterator.Attribute.html
-http://developer.android.com/reference/java/text/AttributedString.html
-http://developer.android.com/reference/org/xml/sax/AttributeList.html
-http://developer.android.com/reference/org/xml/sax/Attributes.html
-http://developer.android.com/reference/org/xml/sax/helpers/AttributeListImpl.html
-http://developer.android.com/reference/org/xml/sax/helpers/AttributesImpl.html
-http://developer.android.com/reference/java/util/jar/Attributes.html
-http://developer.android.com/reference/java/util/jar/Attributes.Name.html
-http://developer.android.com/reference/org/xml/sax/ext/Attributes2.html
-http://developer.android.com/reference/org/xml/sax/ext/Attributes2Impl.html
-http://developer.android.com/reference/android/net/rtp/AudioCodec.html
-http://developer.android.com/reference/android/net/rtp/AudioStream.html
-http://developer.android.com/reference/android/media/audiofx/AudioEffect.html
-http://developer.android.com/reference/android/media/audiofx/AudioEffect.Descriptor.html
-http://developer.android.com/reference/android/media/audiofx/AudioEffect.OnControlStatusChangeListener.html
-http://developer.android.com/reference/android/media/audiofx/AudioEffect.OnEnableStatusChangeListener.html
-http://developer.android.com/reference/android/media/AudioFormat.html
-http://developer.android.com/reference/android/net/rtp/AudioGroup.html
-http://developer.android.com/reference/android/media/AudioManager.OnAudioFocusChangeListener.html
-http://developer.android.com/reference/android/media/AudioRecord.html
-http://developer.android.com/reference/android/media/AudioRecord.OnRecordPositionUpdateListener.html
-http://developer.android.com/reference/android/net/rtp/RtpStream.html
-http://developer.android.com/reference/android/media/AudioTrack.html
-http://developer.android.com/reference/android/media/AudioTrack.OnPlaybackPositionUpdateListener.html
-http://developer.android.com/reference/org/apache/http/client/AuthenticationHandler.html
-http://developer.android.com/reference/java/net/Authenticator.html
-http://developer.android.com/reference/java/net/Authenticator.RequestorType.html
-http://developer.android.com/reference/android/accounts/AuthenticatorDescription.html
-http://developer.android.com/reference/android/accounts/AuthenticatorException.html
-http://developer.android.com/reference/org/apache/http/auth/params/AuthParamBean.html
-http://developer.android.com/reference/org/apache/http/auth/params/AuthParams.html
-http://developer.android.com/reference/org/apache/http/params/HttpParams.html
-http://developer.android.com/reference/javax/security/auth/AuthPermission.html
-http://developer.android.com/reference/org/apache/http/auth/params/AuthPNames.html
-http://developer.android.com/reference/org/apache/http/client/params/AuthPolicy.html
-http://developer.android.com/reference/java/security/AuthProvider.html
-http://developer.android.com/reference/org/apache/http/impl/auth/AuthSchemeBase.html
-http://developer.android.com/reference/android/media/audiofx/AutomaticGainControl.html
-http://developer.android.com/reference/android/text/AutoText.html
-http://developer.android.com/reference/android/graphics/AvoidXfermode.html
-http://developer.android.com/reference/android/graphics/AvoidXfermode.Mode.html
-http://developer.android.com/reference/android/text/style/BackgroundColorSpan.html
-http://developer.android.com/reference/java/util/prefs/BackingStoreException.html
-http://developer.android.com/reference/javax/crypto/BadPaddingException.html
-http://developer.android.com/reference/android/os/BadParcelableException.html
-http://developer.android.com/reference/android/util/Base64.html
-http://developer.android.com/reference/android/util/Base64DataException.html
-http://developer.android.com/reference/android/util/Base64InputStream.html
-http://developer.android.com/reference/android/util/Base64OutputStream.html
-http://developer.android.com/reference/dalvik/system/BaseDexClassLoader.html
-http://developer.android.com/reference/java/lang/ClassLoader.html
-http://developer.android.com/reference/android/view/inputmethod/BaseInputConnection.html
-http://developer.android.com/reference/android/text/method/BaseKeyListener.html
-http://developer.android.com/reference/android/text/method/BaseMovementMethod.html
-http://developer.android.com/reference/android/renderscript/BaseObj.html
-http://developer.android.com/reference/junit/runner/BaseTestRunner.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BasicClientCookie.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BasicClientCookie2.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BasicCommentHandler.html
-http://developer.android.com/reference/org/apache/http/impl/client/BasicCookieStore.html
-http://developer.android.com/reference/org/apache/http/client/CookieStore.html
-http://developer.android.com/reference/org/apache/http/impl/client/BasicCredentialsProvider.html
-http://developer.android.com/reference/org/apache/http/client/CredentialsProvider.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BasicDomainHandler.html
-http://developer.android.com/reference/android/support/v13/dreams/BasicDream.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BasicExpiresHandler.html
-http://developer.android.com/reference/org/apache/http/message/BasicHeader.html
-http://developer.android.com/reference/org/apache/http/message/BasicHeaderElement.html
-http://developer.android.com/reference/org/apache/http/message/BasicHeaderElementIterator.html
-http://developer.android.com/reference/org/apache/http/HeaderElementIterator.html
-http://developer.android.com/reference/org/apache/http/message/BasicHeaderIterator.html
-http://developer.android.com/reference/org/apache/http/HeaderIterator.html
-http://developer.android.com/reference/org/apache/http/message/BasicHeaderValueFormatter.html
-http://developer.android.com/reference/org/apache/http/message/BasicHeaderValueParser.html
-http://developer.android.com/reference/org/apache/http/protocol/BasicHttpContext.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpContext.html
-http://developer.android.com/reference/org/apache/http/entity/BasicHttpEntity.html
-http://developer.android.com/reference/org/apache/http/message/BasicHttpEntityEnclosingRequest.html
-http://developer.android.com/reference/org/apache/http/params/BasicHttpParams.html
-http://developer.android.com/reference/org/apache/http/protocol/BasicHttpProcessor.html
-http://developer.android.com/reference/org/apache/http/message/BasicHttpRequest.html
-http://developer.android.com/reference/org/apache/http/message/BasicHttpResponse.html
-http://developer.android.com/reference/org/apache/http/message/BasicLineFormatter.html
-http://developer.android.com/reference/org/apache/http/message/BasicLineParser.html
-http://developer.android.com/reference/org/apache/http/message/BasicListHeaderIterator.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BasicMaxAgeHandler.html
-http://developer.android.com/reference/org/apache/http/message/BasicNameValuePair.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BasicPathHandler.html
-http://developer.android.com/reference/java/security/BasicPermission.html
-http://developer.android.com/reference/org/apache/http/message/BasicRequestLine.html
-http://developer.android.com/reference/org/apache/http/HttpRequest.html
-http://developer.android.com/reference/org/apache/http/impl/client/BasicResponseHandler.html
-http://developer.android.com/reference/org/apache/http/client/ResponseHandler.html
-http://developer.android.com/reference/org/apache/http/conn/routing/BasicRouteDirector.html
-http://developer.android.com/reference/org/apache/http/conn/routing/HttpRouteDirector.html
-http://developer.android.com/reference/org/apache/http/impl/auth/BasicScheme.html
-http://developer.android.com/reference/org/apache/http/impl/auth/BasicSchemeFactory.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BasicSecureHandler.html
-http://developer.android.com/reference/org/apache/http/message/BasicStatusLine.html
-http://developer.android.com/reference/org/apache/http/message/BasicTokenIterator.html
-http://developer.android.com/reference/org/apache/http/TokenIterator.html
-http://developer.android.com/reference/android/media/audiofx/BassBoost.html
-http://developer.android.com/reference/android/media/audiofx/BassBoost.OnParameterChangeListener.html
-http://developer.android.com/reference/android/media/audiofx/BassBoost.Settings.html
-http://developer.android.com/reference/java/sql/BatchUpdateException.html
-http://developer.android.com/reference/android/os/BatteryManager.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BestMatchSpec.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BestMatchSpecFactory.html
-http://developer.android.com/reference/java/text/Bidi.html
-http://developer.android.com/reference/java/math/BigDecimal.html
-http://developer.android.com/reference/java/math/BigInteger.html
-http://developer.android.com/reference/java/net/BindException.html
-http://developer.android.com/reference/android/graphics/Bitmap.CompressFormat.html
-http://developer.android.com/reference/android/graphics/Bitmap.Config.html
-http://developer.android.com/reference/android/graphics/drawable/BitmapDrawable.html
-http://developer.android.com/reference/android/graphics/BitmapFactory.html
-http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html
-http://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html
-http://developer.android.com/reference/android/graphics/BitmapShader.html
-http://developer.android.com/reference/java/util/BitSet.html
-http://developer.android.com/reference/java/sql/Blob.html
-http://developer.android.com/reference/java/util/concurrent/BlockingDeque.html
-http://developer.android.com/reference/android/bluetooth/BluetoothA2dp.html
-http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html
-http://developer.android.com/reference/android/bluetooth/BluetoothAssignedNumbers.html
-http://developer.android.com/reference/android/bluetooth/BluetoothClass.html
-http://developer.android.com/reference/android/bluetooth/BluetoothClass.Device.html
-http://developer.android.com/reference/android/bluetooth/BluetoothClass.Device.Major.html
-http://developer.android.com/reference/android/bluetooth/BluetoothClass.Service.html
-http://developer.android.com/reference/android/bluetooth/BluetoothHeadset.html
-http://developer.android.com/reference/android/bluetooth/BluetoothHealth.html
-http://developer.android.com/reference/android/bluetooth/BluetoothHealthAppConfiguration.html
-http://developer.android.com/reference/android/bluetooth/BluetoothHealthCallback.html
-http://developer.android.com/reference/android/bluetooth/BluetoothProfile.html
-http://developer.android.com/reference/android/bluetooth/BluetoothProfile.ServiceListener.html
-http://developer.android.com/reference/android/bluetooth/BluetoothServerSocket.html
-http://developer.android.com/reference/android/bluetooth/BluetoothSocket.html
-http://developer.android.com/reference/android/graphics/BlurMaskFilter.html
-http://developer.android.com/reference/android/graphics/BlurMaskFilter.Blur.html
-http://developer.android.com/reference/java/lang/Boolean.html
-http://developer.android.com/reference/android/text/BoringLayout.html
-http://developer.android.com/reference/android/text/BoringLayout.Metrics.html
-http://developer.android.com/reference/java/text/BreakIterator.html
-http://developer.android.com/reference/android/content/BroadcastReceiver.PendingResult.html
-http://developer.android.com/reference/java/util/concurrent/BrokenBarrierException.html
 http://developer.android.com/reference/android/provider/Browser.html
 http://developer.android.com/reference/android/provider/Browser.BookmarkColumns.html
 http://developer.android.com/reference/android/provider/Browser.SearchColumns.html
-http://developer.android.com/reference/org/apache/http/conn/ssl/BrowserCompatHostnameVerifier.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BrowserCompatSpec.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BrowserCompatSpecFactory.html
-http://developer.android.com/reference/java/nio/Buffer.html
-http://developer.android.com/reference/org/apache/http/message/BufferedHeader.html
-http://developer.android.com/reference/org/apache/http/entity/BufferedHttpEntity.html
-http://developer.android.com/reference/java/io/BufferedInputStream.html
-http://developer.android.com/reference/java/io/BufferedOutputStream.html
-http://developer.android.com/reference/java/io/BufferedReader.html
-http://developer.android.com/reference/java/io/Reader.html
-http://developer.android.com/reference/java/io/BufferedWriter.html
-http://developer.android.com/reference/java/io/Writer.html
-http://developer.android.com/reference/java/nio/BufferOverflowException.html
-http://developer.android.com/reference/java/nio/BufferUnderflowException.html
-http://developer.android.com/reference/android/os/Build.html
-http://developer.android.com/reference/android/os/Build.VERSION.html
-http://developer.android.com/reference/android/os/Build.VERSION_CODES.html
-http://developer.android.com/reference/android/text/style/BulletSpan.html
-http://developer.android.com/reference/java/lang/Byte.html
-http://developer.android.com/reference/android/renderscript/Byte2.html
-http://developer.android.com/reference/android/renderscript/Byte3.html
-http://developer.android.com/reference/android/renderscript/Byte4.html
-http://developer.android.com/reference/org/apache/http/util/ByteArrayBuffer.html
-http://developer.android.com/reference/org/apache/http/entity/ByteArrayEntity.html
-http://developer.android.com/reference/java/io/ByteArrayInputStream.html
-http://developer.android.com/reference/java/io/ByteArrayOutputStream.html
-http://developer.android.com/reference/java/nio/ByteBuffer.html
-http://developer.android.com/reference/java/nio/channels/ByteChannel.html
-http://developer.android.com/reference/java/nio/ByteOrder.html
-http://developer.android.com/reference/android/webkit/CacheManager.html
-http://developer.android.com/reference/android/webkit/CacheManager.CacheResult.html
-http://developer.android.com/reference/java/net/CacheRequest.html
-http://developer.android.com/reference/java/net/CacheResponse.html
-http://developer.android.com/reference/java/util/Calendar.html
+http://developer.android.com/reference/android/provider/CalendarContract.html
+http://developer.android.com/reference/android/provider/CalendarContract.Attendees.html
 http://developer.android.com/reference/android/provider/CalendarContract.CalendarAlerts.html
-http://developer.android.com/reference/android/provider/CalendarContract.CalendarAlertsColumns.html
-http://developer.android.com/reference/android/provider/CalendarContract.CalendarCacheColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.CalendarCache.html
 http://developer.android.com/reference/android/provider/CalendarContract.CalendarEntity.html
-http://developer.android.com/reference/android/provider/CalendarContract.CalendarSyncColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.Calendars.html
+http://developer.android.com/reference/android/provider/CalendarContract.Colors.html
 http://developer.android.com/reference/android/provider/CalendarContract.EventDays.html
-http://developer.android.com/reference/android/provider/CalendarContract.EventDaysColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.Events.html
 http://developer.android.com/reference/android/provider/CalendarContract.EventsEntity.html
 http://developer.android.com/reference/android/provider/CalendarContract.ExtendedProperties.html
-http://developer.android.com/reference/android/provider/CalendarContract.ExtendedPropertiesColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.Instances.html
+http://developer.android.com/reference/android/provider/CalendarContract.Reminders.html
 http://developer.android.com/reference/android/provider/CalendarContract.SyncState.html
-http://developer.android.com/reference/java/util/concurrent/Callable.html
-http://developer.android.com/reference/java/sql/CallableStatement.html
-http://developer.android.com/reference/javax/security/auth/callback/Callback.html
-http://developer.android.com/reference/javax/security/auth/callback/CallbackHandler.html
 http://developer.android.com/reference/android/provider/CallLog.html
 http://developer.android.com/reference/android/provider/CallLog.Calls.html
-http://developer.android.com/reference/android/graphics/Camera.html
-http://developer.android.com/reference/android/hardware/Camera.Area.html
-http://developer.android.com/reference/android/hardware/Camera.AutoFocusCallback.html
-http://developer.android.com/reference/android/hardware/Camera.AutoFocusMoveCallback.html
-http://developer.android.com/reference/android/hardware/Camera.CameraInfo.html
-http://developer.android.com/reference/android/hardware/Camera.ErrorCallback.html
-http://developer.android.com/reference/android/hardware/Camera.Face.html
-http://developer.android.com/reference/android/hardware/Camera.FaceDetectionListener.html
-http://developer.android.com/reference/android/hardware/Camera.OnZoomChangeListener.html
-http://developer.android.com/reference/android/hardware/Camera.PictureCallback.html
-http://developer.android.com/reference/android/hardware/Camera.PreviewCallback.html
-http://developer.android.com/reference/android/hardware/Camera.ShutterCallback.html
-http://developer.android.com/reference/android/hardware/Camera.Size.html
-http://developer.android.com/reference/android/media/CameraProfile.html
-http://developer.android.com/reference/java/util/concurrent/CancellationException.html
-http://developer.android.com/reference/java/util/concurrent/FutureTask.html
-http://developer.android.com/reference/android/os/CancellationSignal.html
-http://developer.android.com/reference/android/os/CancellationSignal.OnCancelListener.html
-http://developer.android.com/reference/java/nio/channels/CancelledKeyException.html
-http://developer.android.com/reference/android/graphics/Canvas.EdgeType.html
-http://developer.android.com/reference/android/graphics/Canvas.VertexMode.html
-http://developer.android.com/reference/org/w3c/dom/CDATASection.html
-http://developer.android.com/reference/android/telephony/cdma/CdmaCellLocation.html
-http://developer.android.com/reference/android/telephony/CellLocation.html
-http://developer.android.com/reference/java/security/Certificate.html
-http://developer.android.com/reference/java/security/cert/Certificate.html
-http://developer.android.com/reference/javax/security/cert/Certificate.html
-http://developer.android.com/reference/java/security/cert/Certificate.CertificateRep.html
-http://developer.android.com/reference/java/security/cert/CertificateEncodingException.html
-http://developer.android.com/reference/javax/security/cert/CertificateEncodingException.html
-http://developer.android.com/reference/java/security/cert/CertificateException.html
-http://developer.android.com/reference/javax/security/cert/CertificateException.html
-http://developer.android.com/reference/java/security/cert/CertificateExpiredException.html
-http://developer.android.com/reference/javax/security/cert/CertificateExpiredException.html
-http://developer.android.com/reference/java/security/cert/CertificateFactory.html
-http://developer.android.com/reference/java/security/cert/CertificateFactorySpi.html
-http://developer.android.com/reference/java/security/cert/CertificateNotYetValidException.html
-http://developer.android.com/reference/javax/security/cert/CertificateNotYetValidException.html
-http://developer.android.com/reference/java/security/cert/CertificateParsingException.html
-http://developer.android.com/reference/javax/security/cert/CertificateParsingException.html
-http://developer.android.com/reference/java/security/cert/CertPath.html
-http://developer.android.com/reference/java/security/cert/CertPath.CertPathRep.html
-http://developer.android.com/reference/java/security/cert/CertPathBuilder.html
-http://developer.android.com/reference/java/security/cert/CertPathBuilderException.html
-http://developer.android.com/reference/java/security/cert/CertPathBuilderResult.html
-http://developer.android.com/reference/java/security/cert/CertPathBuilderSpi.html
-http://developer.android.com/reference/java/security/cert/CertPathParameters.html
-http://developer.android.com/reference/javax/net/ssl/CertPathTrustManagerParameters.html
-http://developer.android.com/reference/javax/net/ssl/TrustManager.html
-http://developer.android.com/reference/java/security/cert/CertPathValidator.html
-http://developer.android.com/reference/java/security/cert/CertPathValidatorException.html
-http://developer.android.com/reference/java/security/cert/CertPathValidatorResult.html
-http://developer.android.com/reference/java/security/cert/CertPathValidatorSpi.html
-http://developer.android.com/reference/java/security/cert/CertSelector.html
-http://developer.android.com/reference/java/security/cert/CertStore.html
-http://developer.android.com/reference/java/security/cert/CertStoreException.html
-http://developer.android.com/reference/java/security/cert/CertStoreParameters.html
-http://developer.android.com/reference/java/security/cert/CertStoreSpi.html
-http://developer.android.com/reference/java/nio/channels/Channel.html
-http://developer.android.com/reference/java/nio/channels/Channels.html
-http://developer.android.com/reference/java/lang/Character.html
-http://developer.android.com/reference/java/lang/Character.Subset.html
-http://developer.android.com/reference/java/lang/Character.UnicodeBlock.html
-http://developer.android.com/reference/java/nio/charset/CharacterCodingException.html
-http://developer.android.com/reference/org/w3c/dom/CharacterData.html
-http://developer.android.com/reference/android/text/method/CharacterPickerDialog.html
-http://developer.android.com/reference/android/text/style/CharacterStyle.html
-http://developer.android.com/reference/android/database/CharArrayBuffer.html
-http://developer.android.com/reference/org/apache/http/util/CharArrayBuffer.html
-http://developer.android.com/reference/java/io/CharArrayReader.html
-http://developer.android.com/reference/java/io/CharArrayWriter.html
-http://developer.android.com/reference/java/nio/CharBuffer.html
-http://developer.android.com/reference/java/io/CharConversionException.html
-http://developer.android.com/reference/java/nio/charset/Charset.html
-http://developer.android.com/reference/java/nio/charset/CharsetDecoder.html
-http://developer.android.com/reference/java/nio/charset/CharsetEncoder.html
-http://developer.android.com/reference/java/nio/charset/spi/CharsetProvider.html
-http://developer.android.com/reference/android/preference/CheckBoxPreference.html
-http://developer.android.com/reference/java/util/zip/CheckedInputStream.html
-http://developer.android.com/reference/java/util/zip/CheckedOutputStream.html
-http://developer.android.com/reference/java/util/zip/Checksum.html
-http://developer.android.com/reference/java/util/zip/CRC32.html
-http://developer.android.com/reference/java/text/ChoiceFormat.html
-http://developer.android.com/reference/org/apache/http/impl/io/ChunkedInputStream.html
-http://developer.android.com/reference/org/apache/http/impl/io/ChunkedOutputStream.html
-http://developer.android.com/reference/javax/crypto/Cipher.html
-http://developer.android.com/reference/javax/crypto/CipherInputStream.html
-http://developer.android.com/reference/javax/crypto/CipherOutputStream.html
-http://developer.android.com/reference/javax/crypto/CipherSpi.html
-http://developer.android.com/reference/org/apache/http/client/CircularRedirectException.html
-http://developer.android.com/reference/java/lang/ClassCircularityError.html
-http://developer.android.com/reference/java/lang/ClassFormatError.html
-http://developer.android.com/reference/java/lang/ClassNotFoundException.html
-http://developer.android.com/reference/android/text/style/ClickableSpan.html
-http://developer.android.com/reference/org/apache/http/client/protocol/ClientContext.html
-http://developer.android.com/reference/org/apache/http/client/protocol/ClientContextConfigurer.html
-http://developer.android.com/reference/org/apache/http/cookie/ClientCookie.html
-http://developer.android.com/reference/org/apache/http/cookie/Cookie.html
-http://developer.android.com/reference/java/sql/ClientInfoStatus.html
-http://developer.android.com/reference/org/apache/http/client/params/ClientParamBean.html
-http://developer.android.com/reference/org/apache/http/impl/client/ClientParamsStack.html
-http://developer.android.com/reference/org/apache/http/client/params/ClientPNames.html
-http://developer.android.com/reference/org/apache/http/client/ClientProtocolException.html
-http://developer.android.com/reference/android/content/ClipboardManager.html
-http://developer.android.com/reference/android/text/ClipboardManager.html
-http://developer.android.com/reference/android/content/ClipboardManager.OnPrimaryClipChangedListener.html
-http://developer.android.com/reference/android/content/ClipData.Item.html
-http://developer.android.com/reference/android/content/ClipDescription.html
-http://developer.android.com/reference/android/graphics/drawable/ClipDrawable.html
-http://developer.android.com/reference/java/sql/Clob.html
-http://developer.android.com/reference/java/lang/Cloneable.html
-http://developer.android.com/reference/java/lang/CloneNotSupportedException.html
-http://developer.android.com/reference/org/apache/http/client/utils/CloneUtils.html
-http://developer.android.com/reference/java/io/Closeable.html
-http://developer.android.com/reference/java/io/IOException.html
-http://developer.android.com/reference/java/nio/channels/ClosedByInterruptException.html
-http://developer.android.com/reference/java/nio/channels/ClosedChannelException.html
-http://developer.android.com/reference/java/nio/channels/ClosedSelectorException.html
-http://developer.android.com/reference/java/nio/channels/Selector.html
-http://developer.android.com/reference/java/nio/charset/CoderMalfunctionError.html
-http://developer.android.com/reference/java/nio/charset/CoderResult.html
-http://developer.android.com/reference/java/security/CodeSigner.html
-http://developer.android.com/reference/java/security/CodeSource.html
-http://developer.android.com/reference/java/nio/charset/CodingErrorAction.html
-http://developer.android.com/reference/java/text/CollationElementIterator.html
-http://developer.android.com/reference/java/text/CollationKey.html
-http://developer.android.com/reference/java/text/Collator.html
-http://developer.android.com/reference/java/util/Collection.html
-http://developer.android.com/reference/java/security/cert/CollectionCertStoreParameters.html
-http://developer.android.com/reference/java/util/Collections.html
-http://developer.android.com/reference/android/graphics/Color.html
-http://developer.android.com/reference/android/graphics/drawable/ColorDrawable.html
-http://developer.android.com/reference/android/graphics/ColorFilter.html
-http://developer.android.com/reference/android/graphics/ColorMatrix.html
-http://developer.android.com/reference/android/graphics/ColorMatrixColorFilter.html
-http://developer.android.com/reference/android/content/res/ColorStateList.html
-http://developer.android.com/reference/org/w3c/dom/Comment.html
-http://developer.android.com/reference/javax/sql/CommonDataSource.html
-http://developer.android.com/reference/java/lang/Comparable.html
-http://developer.android.com/reference/java/util/Comparator.html
-http://developer.android.com/reference/android/test/ComparisonFailure.html
-http://developer.android.com/reference/junit/framework/ComparisonFailure.html
-http://developer.android.com/reference/java/lang/Compiler.html
-http://developer.android.com/reference/android/view/inputmethod/CompletionInfo.html
-http://developer.android.com/reference/java/util/concurrent/CompletionService.html
-http://developer.android.com/reference/android/content/ComponentCallbacks.html
-http://developer.android.com/reference/android/content/ComponentCallbacks2.html
-http://developer.android.com/reference/android/content/pm/ComponentInfo.html
-http://developer.android.com/reference/android/content/pm/ServiceInfo.html
-http://developer.android.com/reference/android/graphics/ComposePathEffect.html
-http://developer.android.com/reference/android/graphics/ComposeShader.html
-http://developer.android.com/reference/android/graphics/Xfermode.html
-http://developer.android.com/reference/java/util/concurrent/ConcurrentHashMap.html
-http://developer.android.com/reference/java/util/concurrent/ConcurrentLinkedQueue.html
-http://developer.android.com/reference/java/util/concurrent/ConcurrentMap.html
-http://developer.android.com/reference/java/util/Map.html
-http://developer.android.com/reference/java/util/ConcurrentModificationException.html
-http://developer.android.com/reference/java/util/concurrent/ConcurrentNavigableMap.html
-http://developer.android.com/reference/java/util/NavigableMap.html
-http://developer.android.com/reference/java/util/concurrent/ConcurrentSkipListMap.html
-http://developer.android.com/reference/java/util/concurrent/ConcurrentSkipListSet.html
-http://developer.android.com/reference/java/util/NavigableSet.html
-http://developer.android.com/reference/java/util/concurrent/locks/Condition.html
-http://developer.android.com/reference/android/os/ConditionVariable.html
-http://developer.android.com/reference/android/util/Config.html
-http://developer.android.com/reference/android/content/pm/ConfigurationInfo.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnConnectionParamBean.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnConnectionPNames.html
-http://developer.android.com/reference/java/sql/Connection.html
-http://developer.android.com/reference/org/apache/http/ConnectionClosedException.html
-http://developer.android.com/reference/javax/sql/ConnectionEvent.html
-http://developer.android.com/reference/javax/sql/PooledConnection.html
-http://developer.android.com/reference/javax/sql/ConnectionEventListener.html
-http://developer.android.com/reference/java/nio/channels/ConnectionPendingException.html
-http://developer.android.com/reference/java/nio/channels/SocketChannel.html
-http://developer.android.com/reference/javax/sql/ConnectionPoolDataSource.html
-http://developer.android.com/reference/org/apache/http/ConnectionReuseStrategy.html
-http://developer.android.com/reference/android/net/ConnectivityManager.html
-http://developer.android.com/reference/android/support/v4/net/ConnectivityManagerCompat.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnManagerParamBean.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnManagerParams.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnManagerPNames.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnPerRoute.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnPerRouteBean.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnRouteParamBean.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnRouteParams.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnRoutePNames.html
-http://developer.android.com/reference/java/io/Console.html
-http://developer.android.com/reference/java/util/logging/ConsoleHandler.html
-http://developer.android.com/reference/android/webkit/ConsoleMessage.html
-http://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel.html
-http://developer.android.com/reference/java/lang/reflect/Constructor.html
 http://developer.android.com/reference/android/provider/Contacts.html
 http://developer.android.com/reference/android/provider/Contacts.ContactMethods.html
-http://developer.android.com/reference/android/provider/Contacts.ContactMethodsColumns.html
 http://developer.android.com/reference/android/provider/Contacts.Extensions.html
-http://developer.android.com/reference/android/provider/Contacts.ExtensionsColumns.html
 http://developer.android.com/reference/android/provider/Contacts.GroupMembership.html
 http://developer.android.com/reference/android/provider/Contacts.Groups.html
-http://developer.android.com/reference/android/provider/Contacts.GroupsColumns.html
 http://developer.android.com/reference/android/provider/Contacts.Intents.html
 http://developer.android.com/reference/android/provider/Contacts.Intents.Insert.html
 http://developer.android.com/reference/android/provider/Contacts.Intents.UI.html
-http://developer.android.com/reference/android/provider/Contacts.OrganizationColumns.html
 http://developer.android.com/reference/android/provider/Contacts.Organizations.html
 http://developer.android.com/reference/android/provider/Contacts.People.html
 http://developer.android.com/reference/android/provider/Contacts.People.ContactMethods.html
 http://developer.android.com/reference/android/provider/Contacts.People.Extensions.html
 http://developer.android.com/reference/android/provider/Contacts.People.Phones.html
-http://developer.android.com/reference/android/provider/Contacts.PeopleColumns.html
 http://developer.android.com/reference/android/provider/Contacts.Phones.html
-http://developer.android.com/reference/android/provider/Contacts.PhonesColumns.html
 http://developer.android.com/reference/android/provider/Contacts.Photos.html
-http://developer.android.com/reference/android/provider/Contacts.PhotosColumns.html
-http://developer.android.com/reference/android/provider/Contacts.PresenceColumns.html
 http://developer.android.com/reference/android/provider/Contacts.Settings.html
-http://developer.android.com/reference/android/provider/Contacts.SettingsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.html
 http://developer.android.com/reference/android/provider/ContactsContract.AggregationExceptions.html
-http://developer.android.com/reference/android/provider/ContactsContract.BaseSyncColumns.html
 http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.BaseTypes.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.CommonColumns.html
 http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Email.html
 http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Event.html
 http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.GroupMembership.html
@@ -1875,203 +1347,74 @@
 http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.StructuredName.html
 http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.StructuredPostal.html
 http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Website.html
-http://developer.android.com/reference/android/provider/ContactsContract.ContactNameColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.ContactOptionsColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.Contacts.html
 http://developer.android.com/reference/android/provider/ContactsContract.Contacts.AggregationSuggestions.html
 http://developer.android.com/reference/android/provider/ContactsContract.Contacts.Data.html
 http://developer.android.com/reference/android/provider/ContactsContract.Contacts.Entity.html
 http://developer.android.com/reference/android/provider/ContactsContract.Contacts.Photo.html
 http://developer.android.com/reference/android/provider/ContactsContract.Contacts.StreamItems.html
-http://developer.android.com/reference/android/provider/ContactsContract.ContactsColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.ContactStatusColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.DataColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.DataColumnsWithJoins.html
+http://developer.android.com/reference/android/provider/ContactsContract.Data.html
 http://developer.android.com/reference/android/provider/ContactsContract.DataUsageFeedback.html
 http://developer.android.com/reference/android/provider/ContactsContract.Directory.html
-http://developer.android.com/reference/android/provider/ContactsContract.DisplayNameSources.html
 http://developer.android.com/reference/android/provider/ContactsContract.DisplayPhoto.html
-http://developer.android.com/reference/android/provider/ContactsContract.FullNameStyle.html
 http://developer.android.com/reference/android/provider/ContactsContract.Groups.html
-http://developer.android.com/reference/android/provider/ContactsContract.GroupsColumns.html
 http://developer.android.com/reference/android/provider/ContactsContract.Intents.html
 http://developer.android.com/reference/android/provider/ContactsContract.Intents.Insert.html
 http://developer.android.com/reference/android/provider/ContactsContract.PhoneLookup.html
-http://developer.android.com/reference/android/provider/ContactsContract.PhoneLookupColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.PhoneticNameStyle.html
 http://developer.android.com/reference/android/provider/ContactsContract.Presence.html
-http://developer.android.com/reference/android/provider/ContactsContract.PresenceColumns.html
 http://developer.android.com/reference/android/provider/ContactsContract.Profile.html
 http://developer.android.com/reference/android/provider/ContactsContract.ProfileSyncState.html
 http://developer.android.com/reference/android/provider/ContactsContract.QuickContact.html
+http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.html
 http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.Data.html
 http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.DisplayPhoto.html
 http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.Entity.html
 http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.StreamItems.html
-http://developer.android.com/reference/android/provider/ContactsContract.RawContactsColumns.html
 http://developer.android.com/reference/android/provider/ContactsContract.RawContactsEntity.html
 http://developer.android.com/reference/android/provider/ContactsContract.Settings.html
-http://developer.android.com/reference/android/provider/ContactsContract.SettingsColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.StatusColumns.html
 http://developer.android.com/reference/android/provider/ContactsContract.StatusUpdates.html
-http://developer.android.com/reference/android/provider/ContactsContract.StreamItemPhotosColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.StreamItemPhotos.html
+http://developer.android.com/reference/android/provider/ContactsContract.StreamItems.html
 http://developer.android.com/reference/android/provider/ContactsContract.StreamItems.StreamItemPhotos.html
-http://developer.android.com/reference/android/provider/ContactsContract.StreamItemsColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.SyncColumns.html
 http://developer.android.com/reference/android/provider/ContactsContract.SyncState.html
-http://developer.android.com/reference/java/net/ContentHandler.html
-http://developer.android.com/reference/org/xml/sax/ContentHandler.html
-http://developer.android.com/reference/java/net/ContentHandlerFactory.html
-http://developer.android.com/reference/org/apache/http/impl/io/ContentLengthInputStream.html
-http://developer.android.com/reference/org/apache/http/impl/io/ContentLengthOutputStream.html
-http://developer.android.com/reference/org/apache/http/entity/ContentLengthStrategy.html
-http://developer.android.com/reference/android/database/ContentObservable.html
-http://developer.android.com/reference/android/database/Observable.html
-http://developer.android.com/reference/android/database/ContentObserver.html
-http://developer.android.com/reference/org/apache/http/entity/ContentProducer.html
+http://developer.android.com/reference/android/provider/LiveFolders.html
+http://developer.android.com/reference/android/provider/MediaStore.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.Albums.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.Artists.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.Artists.Albums.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.Genres.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.Genres.Members.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.Media.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.Playlists.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.Playlists.Members.html
+http://developer.android.com/reference/android/provider/MediaStore.Files.html
+http://developer.android.com/reference/android/provider/MediaStore.Images.html
+http://developer.android.com/reference/android/provider/MediaStore.Images.Media.html
+http://developer.android.com/reference/android/provider/MediaStore.Images.Thumbnails.html
+http://developer.android.com/reference/android/provider/MediaStore.Video.html
+http://developer.android.com/reference/android/provider/MediaStore.Video.Media.html
+http://developer.android.com/reference/android/provider/MediaStore.Video.Thumbnails.html
+http://developer.android.com/reference/android/provider/SearchRecentSuggestions.html
+http://developer.android.com/reference/android/provider/Settings.html
+http://developer.android.com/reference/android/provider/Settings.NameValueTable.html
+http://developer.android.com/reference/android/provider/Settings.Secure.html
+http://developer.android.com/reference/android/provider/Settings.System.html
+http://developer.android.com/reference/android/provider/SyncStateContract.html
+http://developer.android.com/reference/android/provider/SyncStateContract.Constants.html
+http://developer.android.com/reference/android/provider/SyncStateContract.Helpers.html
+http://developer.android.com/reference/android/provider/UserDictionary.html
+http://developer.android.com/reference/android/provider/UserDictionary.Words.html
+http://developer.android.com/reference/android/provider/VoicemailContract.html
+http://developer.android.com/reference/android/provider/VoicemailContract.Status.html
+http://developer.android.com/reference/android/provider/VoicemailContract.Voicemails.html
+http://developer.android.com/reference/android/provider/Settings.SettingNotFoundException.html
+http://developer.android.com/reference/android/accounts/Account.html
+http://developer.android.com/reference/android/content/SearchRecentSuggestionsProvider.html
+http://developer.android.com/reference/org/apache/http/params/HttpParams.html
+http://developer.android.com/reference/android/content/ClipboardManager.OnPrimaryClipChangedListener.html
+http://developer.android.com/reference/android/content/ComponentCallbacks.html
+http://developer.android.com/reference/android/content/ComponentCallbacks2.html
 http://developer.android.com/reference/android/content/ContentProvider.PipeDataWriter.html
-http://developer.android.com/reference/android/content/ContentProviderClient.html
-http://developer.android.com/reference/android/content/ContentProviderOperation.html
-http://developer.android.com/reference/android/content/ContentProviderOperation.Builder.html
-http://developer.android.com/reference/android/content/ContentProviderResult.html
-http://developer.android.com/reference/android/content/ContentQueryMap.html
-http://developer.android.com/reference/android/content/ContextWrapper.html
-http://developer.android.com/reference/java/net/CookieHandler.html
-http://developer.android.com/reference/org/apache/http/cookie/CookieIdentityComparator.html
-http://developer.android.com/reference/android/webkit/CookieManager.html
-http://developer.android.com/reference/java/net/CookieManager.html
-http://developer.android.com/reference/org/apache/http/cookie/CookieOrigin.html
-http://developer.android.com/reference/org/apache/http/cookie/CookiePathComparator.html
-http://developer.android.com/reference/java/net/CookiePolicy.html
-http://developer.android.com/reference/org/apache/http/client/params/CookiePolicy.html
-http://developer.android.com/reference/org/apache/http/cookie/CookieSpec.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/CookieSpecBase.html
-http://developer.android.com/reference/org/apache/http/cookie/CookieSpecFactory.html
-http://developer.android.com/reference/org/apache/http/cookie/params/CookieSpecParamBean.html
-http://developer.android.com/reference/org/apache/http/cookie/params/CookieSpecPNames.html
-http://developer.android.com/reference/org/apache/http/cookie/CookieSpecRegistry.html
-http://developer.android.com/reference/java/net/CookieStore.html
-http://developer.android.com/reference/android/webkit/CookieSyncManager.html
-http://developer.android.com/reference/java/util/concurrent/CopyOnWriteArrayList.html
-http://developer.android.com/reference/java/util/concurrent/CopyOnWriteArraySet.html
-http://developer.android.com/reference/java/util/Set.html
-http://developer.android.com/reference/org/apache/http/params/CoreConnectionPNames.html
-http://developer.android.com/reference/org/apache/http/params/CoreProtocolPNames.html
-http://developer.android.com/reference/android/graphics/CornerPathEffect.html
-http://developer.android.com/reference/android/view/inputmethod/CorrectionInfo.html
-http://developer.android.com/reference/java/util/concurrent/CountDownLatch.html
-http://developer.android.com/reference/android/os/CountDownTimer.html
-http://developer.android.com/reference/android/net/Credentials.html
-http://developer.android.com/reference/android/location/Criteria.html
-http://developer.android.com/reference/java/security/cert/CRL.html
-http://developer.android.com/reference/java/security/cert/CRLException.html
-http://developer.android.com/reference/java/security/cert/CRLSelector.html
-http://developer.android.com/reference/java/util/Currency.html
-http://developer.android.com/reference/android/support/v4/widget/CursorAdapter.html
-http://developer.android.com/reference/android/database/CursorIndexOutOfBoundsException.html
-http://developer.android.com/reference/android/database/CursorJoiner.html
-http://developer.android.com/reference/android/database/CursorJoiner.Result.html
-http://developer.android.com/reference/android/database/CursorWrapper.html
-http://developer.android.com/reference/java/util/concurrent/CyclicBarrier.html
-http://developer.android.com/reference/android/graphics/DashPathEffect.html
-http://developer.android.com/reference/android/database/DatabaseErrorHandler.html
-http://developer.android.com/reference/java/sql/DatabaseMetaData.html
-http://developer.android.com/reference/android/database/DatabaseUtils.html
-http://developer.android.com/reference/android/database/DatabaseUtils.InsertHelper.html
-http://developer.android.com/reference/android/support/v4/database/DatabaseUtilsCompat.html
-http://developer.android.com/reference/java/util/zip/DataFormatException.html
-http://developer.android.com/reference/java/nio/channels/DatagramChannel.html
-http://developer.android.com/reference/java/net/DatagramPacket.html
-http://developer.android.com/reference/java/net/DatagramSocket.html
-http://developer.android.com/reference/java/net/DatagramSocketImpl.html
-http://developer.android.com/reference/java/net/DatagramSocketImplFactory.html
-http://developer.android.com/reference/java/io/DataInput.html
-http://developer.android.com/reference/java/io/DataInputStream.html
-http://developer.android.com/reference/java/io/DataOutput.html
-http://developer.android.com/reference/java/io/DataOutputStream.html
-http://developer.android.com/reference/android/database/DataSetObservable.html
-http://developer.android.com/reference/android/database/DataSetObserver.html
-http://developer.android.com/reference/javax/sql/DataSource.html
-http://developer.android.com/reference/java/sql/DataTruncation.html
-http://developer.android.com/reference/javax/xml/datatype/DatatypeConfigurationException.html
-http://developer.android.com/reference/javax/xml/datatype/DatatypeConstants.html
-http://developer.android.com/reference/javax/xml/datatype/DatatypeConstants.Field.html
-http://developer.android.com/reference/javax/xml/datatype/Duration.html
-http://developer.android.com/reference/javax/xml/datatype/DatatypeFactory.html
-http://developer.android.com/reference/java/sql/Date.html
-http://developer.android.com/reference/java/util/Date.html
-http://developer.android.com/reference/android/text/format/DateFormat.html
-http://developer.android.com/reference/java/text/DateFormat.html
-http://developer.android.com/reference/java/text/DateFormat.Field.html
-http://developer.android.com/reference/java/text/SimpleDateFormat.html
-http://developer.android.com/reference/java/text/DateFormatSymbols.html
-http://developer.android.com/reference/android/text/method/DateKeyListener.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/DateParseException.html
-http://developer.android.com/reference/android/app/DatePickerDialog.OnDateSetListener.html
-http://developer.android.com/reference/android/webkit/DateSorter.html
-http://developer.android.com/reference/android/text/method/DateTimeKeyListener.html
-http://developer.android.com/reference/android/text/format/DateUtils.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/DateUtils.html
-http://developer.android.com/reference/android/os/Debug.html
-http://developer.android.com/reference/android/os/Debug.InstructionCount.html
-http://developer.android.com/reference/android/os/Debug.MemoryInfo.html
-http://developer.android.com/reference/android/util/DebugUtils.html
-http://developer.android.com/reference/java/text/DecimalFormat.html
-http://developer.android.com/reference/java/text/NumberFormat.html
-http://developer.android.com/reference/java/text/DecimalFormatSymbols.html
-http://developer.android.com/reference/org/xml/sax/ext/DeclHandler.html
-http://developer.android.com/reference/org/apache/http/impl/conn/DefaultClientConnection.html
-http://developer.android.com/reference/org/apache/http/impl/conn/DefaultClientConnectionOperator.html
-http://developer.android.com/reference/org/apache/http/impl/client/DefaultConnectionKeepAliveStrategy.html
-http://developer.android.com/reference/org/apache/http/impl/DefaultConnectionReuseStrategy.html
-http://developer.android.com/reference/android/database/DefaultDatabaseErrorHandler.html
-http://developer.android.com/reference/org/apache/http/protocol/DefaultedHttpContext.html
-http://developer.android.com/reference/org/apache/http/params/DefaultedHttpParams.html
-http://developer.android.com/reference/org/xml/sax/helpers/DefaultHandler.html
-http://developer.android.com/reference/org/xml/sax/ext/DefaultHandler2.html
-http://developer.android.com/reference/org/xml/sax/ext/LexicalHandler.html
-http://developer.android.com/reference/org/xml/sax/ext/EntityResolver2.html
-http://developer.android.com/reference/org/apache/http/impl/DefaultHttpClientConnection.html
-http://developer.android.com/reference/org/apache/http/impl/DefaultHttpRequestFactory.html
-http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.html
-http://developer.android.com/reference/org/apache/http/client/HttpRequestRetryHandler.html
-http://developer.android.com/reference/org/apache/http/impl/DefaultHttpResponseFactory.html
-http://developer.android.com/reference/org/apache/http/impl/conn/DefaultHttpRoutePlanner.html
-http://developer.android.com/reference/org/apache/http/conn/routing/HttpRoutePlanner.html
-http://developer.android.com/reference/org/apache/http/impl/DefaultHttpServerConnection.html
-http://developer.android.com/reference/org/apache/http/impl/client/DefaultProxyAuthenticationHandler.html
-http://developer.android.com/reference/org/apache/http/impl/client/DefaultRedirectHandler.html
-http://developer.android.com/reference/org/apache/http/client/RedirectHandler.html
-http://developer.android.com/reference/org/apache/http/impl/client/DefaultRequestDirector.html
-http://developer.android.com/reference/org/apache/http/client/RequestDirector.html
-http://developer.android.com/reference/org/apache/http/impl/conn/DefaultResponseParser.html
-http://developer.android.com/reference/org/apache/http/impl/client/DefaultTargetAuthenticationHandler.html
-http://developer.android.com/reference/org/apache/http/impl/client/DefaultUserTokenHandler.html
-http://developer.android.com/reference/java/util/zip/Deflater.html
-http://developer.android.com/reference/java/util/zip/DeflaterInputStream.html
-http://developer.android.com/reference/java/util/zip/DeflaterOutputStream.html
-http://developer.android.com/reference/java/util/concurrent/Delayed.html
-http://developer.android.com/reference/java/util/concurrent/DelayQueue.html
-http://developer.android.com/reference/java/lang/Deprecated.html
-http://developer.android.com/reference/javax/crypto/spec/DESedeKeySpec.html
-http://developer.android.com/reference/javax/crypto/spec/DESKeySpec.html
-http://developer.android.com/reference/javax/security/auth/Destroyable.html
-http://developer.android.com/reference/javax/security/auth/DestroyFailedException.html
-http://developer.android.com/reference/android/app/admin/DeviceAdminInfo.html
-http://developer.android.com/reference/android/app/admin/DeviceAdminReceiver.html
-http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html
-http://developer.android.com/reference/dalvik/system/DexClassLoader.html
-http://developer.android.com/reference/dalvik/system/DexFile.html
-http://developer.android.com/reference/android/net/DhcpInfo.html
-http://developer.android.com/reference/javax/crypto/spec/DHGenParameterSpec.html
-http://developer.android.com/reference/javax/crypto/interfaces/DHKey.html
-http://developer.android.com/reference/javax/crypto/spec/DHParameterSpec.html
-http://developer.android.com/reference/javax/crypto/interfaces/DHPrivateKey.html
-http://developer.android.com/reference/javax/crypto/spec/DHPrivateKeySpec.html
-http://developer.android.com/reference/javax/crypto/interfaces/DHPublicKey.html
-http://developer.android.com/reference/javax/crypto/spec/DHPublicKeySpec.html
-http://developer.android.com/reference/android/text/method/DialerKeyListener.html
-http://developer.android.com/reference/android/text/method/KeyListener.html
 http://developer.android.com/reference/android/content/DialogInterface.html
 http://developer.android.com/reference/android/content/DialogInterface.OnCancelListener.html
 http://developer.android.com/reference/android/content/DialogInterface.OnClickListener.html
@@ -2079,1454 +1422,590 @@
 http://developer.android.com/reference/android/content/DialogInterface.OnKeyListener.html
 http://developer.android.com/reference/android/content/DialogInterface.OnMultiChoiceClickListener.html
 http://developer.android.com/reference/android/content/DialogInterface.OnShowListener.html
-http://developer.android.com/reference/android/preference/DialogPreference.html
-http://developer.android.com/reference/java/util/Dictionary.html
-http://developer.android.com/reference/java/security/DigestException.html
-http://developer.android.com/reference/java/security/DigestInputStream.html
-http://developer.android.com/reference/java/security/DigestOutputStream.html
-http://developer.android.com/reference/org/apache/http/impl/auth/DigestScheme.html
-http://developer.android.com/reference/org/apache/http/impl/auth/DigestSchemeFactory.html
-http://developer.android.com/reference/android/text/method/DigitsKeyListener.html
-http://developer.android.com/reference/android/graphics/DiscretePathEffect.html
-http://developer.android.com/reference/android/util/DisplayMetrics.html
-http://developer.android.com/reference/org/w3c/dom/Document.html
-http://developer.android.com/reference/javax/xml/parsers/DocumentBuilder.html
-http://developer.android.com/reference/javax/xml/parsers/DocumentBuilderFactory.html
-http://developer.android.com/reference/java/lang/annotation/Documented.html
-http://developer.android.com/reference/org/w3c/dom/DocumentFragment.html
-http://developer.android.com/reference/org/xml/sax/DocumentHandler.html
-http://developer.android.com/reference/org/w3c/dom/DocumentType.html
-http://developer.android.com/reference/java/security/DomainCombiner.html
-http://developer.android.com/reference/org/w3c/dom/DOMConfiguration.html
-http://developer.android.com/reference/org/w3c/dom/DOMError.html
-http://developer.android.com/reference/org/w3c/dom/DOMErrorHandler.html
-http://developer.android.com/reference/org/w3c/dom/DOMException.html
-http://developer.android.com/reference/org/w3c/dom/DOMImplementation.html
-http://developer.android.com/reference/org/w3c/dom/DOMImplementationList.html
-http://developer.android.com/reference/org/w3c/dom/ls/DOMImplementationLS.html
-http://developer.android.com/reference/org/w3c/dom/DOMImplementationSource.html
-http://developer.android.com/reference/javax/xml/transform/dom/DOMLocator.html
-http://developer.android.com/reference/org/w3c/dom/DOMLocator.html
-http://developer.android.com/reference/javax/xml/transform/dom/DOMResult.html
-http://developer.android.com/reference/javax/xml/transform/dom/DOMSource.html
-http://developer.android.com/reference/org/w3c/dom/DOMStringList.html
-http://developer.android.com/reference/java/lang/Double.html
-http://developer.android.com/reference/android/renderscript/Double2.html
-http://developer.android.com/reference/android/renderscript/Double3.html
-http://developer.android.com/reference/android/renderscript/Double4.html
-http://developer.android.com/reference/java/nio/DoubleBuffer.html
-http://developer.android.com/reference/android/webkit/DownloadListener.html
+http://developer.android.com/reference/android/content/EntityIterator.html
+http://developer.android.com/reference/android/content/IntentSender.OnFinished.html
+http://developer.android.com/reference/android/content/Loader.OnLoadCanceledListener.html
+http://developer.android.com/reference/android/content/Loader.OnLoadCompleteListener.html
+http://developer.android.com/reference/android/content/ServiceConnection.html
+http://developer.android.com/reference/android/content/SharedPreferences.Editor.html
+http://developer.android.com/reference/android/content/SyncStatusObserver.html
+http://developer.android.com/reference/android/content/AbstractThreadedSyncAdapter.html
+http://developer.android.com/reference/android/content/AsyncQueryHandler.html
+http://developer.android.com/reference/android/content/AsyncQueryHandler.WorkerArgs.html
+http://developer.android.com/reference/android/content/AsyncQueryHandler.WorkerHandler.html
+http://developer.android.com/reference/android/content/AsyncTaskLoader.html
+http://developer.android.com/reference/android/content/BroadcastReceiver.PendingResult.html
+http://developer.android.com/reference/android/content/ClipboardManager.html
+http://developer.android.com/reference/android/content/ClipData.Item.html
+http://developer.android.com/reference/android/content/ClipDescription.html
+http://developer.android.com/reference/android/content/ComponentName.html
+http://developer.android.com/reference/android/content/ContentProviderClient.html
+http://developer.android.com/reference/android/content/ContentProviderOperation.html
+http://developer.android.com/reference/android/content/ContentProviderOperation.Builder.html
+http://developer.android.com/reference/android/content/ContentProviderResult.html
+http://developer.android.com/reference/android/content/ContentQueryMap.html
+http://developer.android.com/reference/android/content/ContentResolver.html
+http://developer.android.com/reference/android/content/ContentUris.html
+http://developer.android.com/reference/android/content/ContentValues.html
+http://developer.android.com/reference/android/content/ContextWrapper.html
+http://developer.android.com/reference/android/content/CursorLoader.html
+http://developer.android.com/reference/android/content/Entity.html
+http://developer.android.com/reference/android/content/Entity.NamedContentValues.html
+http://developer.android.com/reference/android/content/Intent.FilterComparison.html
+http://developer.android.com/reference/android/content/Intent.ShortcutIconResource.html
+http://developer.android.com/reference/android/content/IntentFilter.html
+http://developer.android.com/reference/android/content/IntentFilter.AuthorityEntry.html
+http://developer.android.com/reference/android/content/IntentSender.html
+http://developer.android.com/reference/android/content/Loader.html
+http://developer.android.com/reference/android/content/Loader.ForceLoadContentObserver.html
+http://developer.android.com/reference/android/content/MutableContextWrapper.html
+http://developer.android.com/reference/android/content/PeriodicSync.html
+http://developer.android.com/reference/android/content/SyncAdapterType.html
+http://developer.android.com/reference/android/content/SyncContext.html
+http://developer.android.com/reference/android/content/SyncInfo.html
+http://developer.android.com/reference/android/content/SyncResult.html
+http://developer.android.com/reference/android/content/SyncStats.html
+http://developer.android.com/reference/android/content/UriMatcher.html
+http://developer.android.com/reference/android/content/ActivityNotFoundException.html
+http://developer.android.com/reference/android/content/IntentFilter.MalformedMimeTypeException.html
+http://developer.android.com/reference/android/content/IntentSender.SendIntentException.html
+http://developer.android.com/reference/android/content/OperationApplicationException.html
+http://developer.android.com/reference/android/content/ReceiverCallNotAllowedException.html
+http://developer.android.com/reference/android/test/mock/MockContentProvider.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
+http://developer.android.com/reference/android/content/pm/ProviderInfo.html
+http://developer.android.com/reference/android/content/pm/PathPermission.html
+http://developer.android.com/reference/android/content/res/AssetFileDescriptor.html
+http://developer.android.com/reference/android/os/ParcelFileDescriptor.html
+http://developer.android.com/reference/android/os/CancellationSignal.html
+http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html
+http://developer.android.com/reference/android/database/SQLException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html
+http://developer.android.com/reference/android/app/ActivityManager.html
+http://developer.android.com/reference/java/io/FileNotFoundException.html
+http://developer.android.com/reference/java/lang/IllegalArgumentException.html
+http://developer.android.com/reference/android/os/OperationCanceledException.html
+http://developer.android.com/reference/java/lang/Cloneable.html
+http://developer.android.com/reference/java/lang/CloneNotSupportedException.html
+http://developer.android.com/reference/java/lang/Throwable.html
+http://developer.android.com/reference/java/lang/Exception.html
+http://developer.android.com/reference/java/lang/StackTraceElement.html
+http://developer.android.com/reference/java/io/PrintWriter.html
+http://developer.android.com/reference/java/io/PrintStream.html
+http://developer.android.com/reference/android/app/ActionBar.OnMenuVisibilityListener.html
+http://developer.android.com/reference/android/app/ActionBar.OnNavigationListener.html
+http://developer.android.com/reference/android/app/ActionBar.TabListener.html
+http://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html
+http://developer.android.com/reference/android/app/DatePickerDialog.OnDateSetListener.html
+http://developer.android.com/reference/android/app/FragmentBreadCrumbs.OnBreadCrumbClickListener.html
+http://developer.android.com/reference/android/app/FragmentManager.BackStackEntry.html
+http://developer.android.com/reference/android/app/KeyguardManager.OnKeyguardExitResult.html
+http://developer.android.com/reference/android/app/LoaderManager.LoaderCallbacks.html
+http://developer.android.com/reference/android/app/PendingIntent.OnFinished.html
+http://developer.android.com/reference/android/app/SearchManager.OnCancelListener.html
+http://developer.android.com/reference/android/app/SearchManager.OnDismissListener.html
+http://developer.android.com/reference/android/app/TimePickerDialog.OnTimeSetListener.html
+http://developer.android.com/reference/android/app/ActionBar.html
+http://developer.android.com/reference/android/app/ActionBar.LayoutParams.html
+http://developer.android.com/reference/android/app/ActionBar.Tab.html
+http://developer.android.com/reference/android/app/ActivityGroup.html
+http://developer.android.com/reference/android/app/ActivityManager.MemoryInfo.html
+http://developer.android.com/reference/android/app/ActivityManager.ProcessErrorStateInfo.html
+http://developer.android.com/reference/android/app/ActivityManager.RecentTaskInfo.html
+http://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo.html
+http://developer.android.com/reference/android/app/ActivityManager.RunningServiceInfo.html
+http://developer.android.com/reference/android/app/ActivityManager.RunningTaskInfo.html
+http://developer.android.com/reference/android/app/ActivityOptions.html
+http://developer.android.com/reference/android/app/AlertDialog.html
+http://developer.android.com/reference/android/app/AlertDialog.Builder.html
+http://developer.android.com/reference/android/app/AliasActivity.html
+http://developer.android.com/reference/android/app/Application.html
+http://developer.android.com/reference/android/app/ApplicationErrorReport.html
+http://developer.android.com/reference/android/app/ApplicationErrorReport.AnrInfo.html
+http://developer.android.com/reference/android/app/ApplicationErrorReport.BatteryInfo.html
+http://developer.android.com/reference/android/app/ApplicationErrorReport.CrashInfo.html
+http://developer.android.com/reference/android/app/ApplicationErrorReport.RunningServiceInfo.html
+http://developer.android.com/reference/android/app/DatePickerDialog.html
+http://developer.android.com/reference/android/app/Dialog.html
+http://developer.android.com/reference/android/app/DialogFragment.html
 http://developer.android.com/reference/android/app/DownloadManager.html
 http://developer.android.com/reference/android/app/DownloadManager.Query.html
 http://developer.android.com/reference/android/app/DownloadManager.Request.html
-http://developer.android.com/reference/android/graphics/drawable/Drawable.ConstantState.html
-http://developer.android.com/reference/android/graphics/drawable/DrawableContainer.html
-http://developer.android.com/reference/android/graphics/drawable/DrawableContainer.DrawableContainerState.html
-http://developer.android.com/reference/android/text/style/DrawableMarginSpan.html
-http://developer.android.com/reference/android/graphics/DrawFilter.html
-http://developer.android.com/reference/java/sql/Driver.html
-http://developer.android.com/reference/java/sql/DriverManager.html
-http://developer.android.com/reference/java/sql/DriverPropertyInfo.html
-http://developer.android.com/reference/android/drm/DrmConvertedStatus.html
-http://developer.android.com/reference/android/drm/DrmErrorEvent.html
-http://developer.android.com/reference/android/drm/DrmManagerClient.OnErrorListener.html
-http://developer.android.com/reference/android/drm/DrmEvent.html
-http://developer.android.com/reference/android/drm/DrmInfo.html
-http://developer.android.com/reference/android/drm/DrmInfoEvent.html
-http://developer.android.com/reference/android/drm/DrmManagerClient.OnInfoListener.html
-http://developer.android.com/reference/android/drm/DrmInfoRequest.html
-http://developer.android.com/reference/android/drm/DrmInfoStatus.html
-http://developer.android.com/reference/android/drm/DrmManagerClient.html
-http://developer.android.com/reference/android/drm/DrmManagerClient.OnEventListener.html
-http://developer.android.com/reference/android/drm/DrmRights.html
-http://developer.android.com/reference/android/drm/DrmStore.html
-http://developer.android.com/reference/android/drm/DrmStore.Action.html
-http://developer.android.com/reference/android/drm/DrmStore.ConstraintsColumns.html
-http://developer.android.com/reference/android/drm/DrmStore.DrmObjectType.html
-http://developer.android.com/reference/android/drm/DrmStore.Playback.html
-http://developer.android.com/reference/android/drm/DrmStore.RightsStatus.html
-http://developer.android.com/reference/android/drm/DrmSupportInfo.html
-http://developer.android.com/reference/android/drm/DrmUtils.html
-http://developer.android.com/reference/android/drm/DrmUtils.ExtendedMetadataParser.html
-http://developer.android.com/reference/android/os/DropBoxManager.html
-http://developer.android.com/reference/android/os/DropBoxManager.Entry.html
-http://developer.android.com/reference/java/security/spec/DSAParameterSpec.html
-http://developer.android.com/reference/java/security/spec/DSAPrivateKeySpec.html
-http://developer.android.com/reference/java/security/spec/DSAPublicKeySpec.html
-http://developer.android.com/reference/org/xml/sax/DTDHandler.html
-http://developer.android.com/reference/java/util/DuplicateFormatFlagsException.html
-http://developer.android.com/reference/android/text/style/DynamicDrawableSpan.html
-http://developer.android.com/reference/android/text/DynamicLayout.html
-http://developer.android.com/reference/android/text/style/EasyEditSpan.html
-http://developer.android.com/reference/java/security/spec/ECField.html
-http://developer.android.com/reference/java/security/spec/ECFieldF2m.html
-http://developer.android.com/reference/java/security/spec/ECFieldFp.html
-http://developer.android.com/reference/java/security/spec/ECGenParameterSpec.html
-http://developer.android.com/reference/java/security/spec/ECParameterSpec.html
-http://developer.android.com/reference/java/security/spec/ECPoint.html
-http://developer.android.com/reference/java/security/spec/ECPrivateKeySpec.html
-http://developer.android.com/reference/java/security/spec/ECPublicKeySpec.html
-http://developer.android.com/reference/android/support/v4/widget/EdgeEffectCompat.html
-http://developer.android.com/reference/android/text/Editable.html
-http://developer.android.com/reference/android/text/Editable.Factory.html
-http://developer.android.com/reference/android/preference/EditTextPreference.html
-http://developer.android.com/reference/javax/microedition/khronos/egl/EGL.html
-http://developer.android.com/reference/javax/microedition/khronos/egl/EGL10.html
-http://developer.android.com/reference/javax/microedition/khronos/egl/EGL11.html
-http://developer.android.com/reference/javax/microedition/khronos/egl/EGLConfig.html
-http://developer.android.com/reference/javax/microedition/khronos/egl/EGLContext.html
-http://developer.android.com/reference/javax/microedition/khronos/egl/EGLDisplay.html
-http://developer.android.com/reference/javax/microedition/khronos/egl/EGLSurface.html
-http://developer.android.com/reference/android/sax/Element.html
-http://developer.android.com/reference/org/w3c/dom/Element.html
-http://developer.android.com/reference/android/renderscript/Element.Builder.html
-http://developer.android.com/reference/android/renderscript/Element.DataKind.html
-http://developer.android.com/reference/android/renderscript/Element.DataType.html
-http://developer.android.com/reference/android/sax/ElementListener.html
-http://developer.android.com/reference/java/lang/annotation/ElementType.html
-http://developer.android.com/reference/java/security/spec/EllipticCurve.html
-http://developer.android.com/reference/android/graphics/EmbossMaskFilter.html
-http://developer.android.com/reference/java/util/EmptyStackException.html
-http://developer.android.com/reference/java/security/spec/EncodedKeySpec.html
-http://developer.android.com/reference/org/apache/http/util/EncodingUtils.html
-http://developer.android.com/reference/javax/crypto/EncryptedPrivateKeyInfo.html
-http://developer.android.com/reference/android/sax/EndElementListener.html
-http://developer.android.com/reference/android/sax/EndTextElementListener.html
-http://developer.android.com/reference/org/apache/http/impl/EnglishReasonPhraseCatalog.html
-http://developer.android.com/reference/android/content/Entity.html
-http://developer.android.com/reference/org/w3c/dom/Entity.html
-http://developer.android.com/reference/android/content/Entity.NamedContentValues.html
-http://developer.android.com/reference/org/apache/http/impl/entity/EntityDeserializer.html
-http://developer.android.com/reference/org/apache/http/impl/client/EntityEnclosingRequestWrapper.html
-http://developer.android.com/reference/org/apache/http/HttpEntityEnclosingRequest.html
-http://developer.android.com/reference/android/content/EntityIterator.html
-http://developer.android.com/reference/java/util/Iterator.html
-http://developer.android.com/reference/org/w3c/dom/EntityReference.html
-http://developer.android.com/reference/org/xml/sax/EntityResolver.html
-http://developer.android.com/reference/org/apache/http/impl/entity/EntitySerializer.html
-http://developer.android.com/reference/org/apache/http/entity/EntityTemplate.html
-http://developer.android.com/reference/org/apache/http/util/EntityUtils.html
-http://developer.android.com/reference/org/apache/http/HttpEntity.html
-http://developer.android.com/reference/java/lang/Enum.html
-http://developer.android.com/reference/java/lang/EnumConstantNotPresentException.html
-http://developer.android.com/reference/java/util/Enumeration.html
-http://developer.android.com/reference/java/util/EnumMap.html
-http://developer.android.com/reference/java/util/EnumSet.html
-http://developer.android.com/reference/android/os/Environment.html
-http://developer.android.com/reference/android/media/audiofx/EnvironmentalReverb.html
-http://developer.android.com/reference/android/media/audiofx/EnvironmentalReverb.OnParameterChangeListener.html
-http://developer.android.com/reference/android/media/audiofx/EnvironmentalReverb.Settings.html
-http://developer.android.com/reference/java/io/EOFException.html
-http://developer.android.com/reference/android/media/audiofx/Equalizer.html
-http://developer.android.com/reference/android/media/audiofx/Equalizer.OnParameterChangeListener.html
-http://developer.android.com/reference/android/media/audiofx/Equalizer.Settings.html
-http://developer.android.com/reference/java/lang/Error.html
-http://developer.android.com/reference/org/xml/sax/ErrorHandler.html
-http://developer.android.com/reference/javax/xml/transform/ErrorListener.html
-http://developer.android.com/reference/javax/xml/transform/Transformer.html
-http://developer.android.com/reference/java/util/logging/ErrorManager.html
-http://developer.android.com/reference/java/util/logging/Handler.html
-http://developer.android.com/reference/android/opengl/ETC1.html
-http://developer.android.com/reference/android/opengl/ETC1Util.html
-http://developer.android.com/reference/android/opengl/ETC1Util.ETC1Texture.html
-http://developer.android.com/reference/java/util/EventListener.html
-http://developer.android.com/reference/java/util/EventListenerProxy.html
-http://developer.android.com/reference/android/util/EventLog.html
-http://developer.android.com/reference/android/util/EventLog.Event.html
-http://developer.android.com/reference/android/util/EventLogTags.html
-http://developer.android.com/reference/android/util/EventLogTags.Description.html
-http://developer.android.com/reference/java/util/EventObject.html
-http://developer.android.com/reference/java/lang/ExceptionInInitializerError.html
-http://developer.android.com/reference/org/apache/http/util/ExceptionUtils.html
-http://developer.android.com/reference/java/util/concurrent/Exchanger.html
-http://developer.android.com/reference/org/apache/http/protocol/ExecutionContext.html
-http://developer.android.com/reference/java/util/concurrent/ExecutionException.html
-http://developer.android.com/reference/java/util/concurrent/Executor.html
-http://developer.android.com/reference/java/util/concurrent/ExecutorCompletionService.html
-http://developer.android.com/reference/java/util/concurrent/Executors.html
-http://developer.android.com/reference/java/util/concurrent/ScheduledExecutorService.html
-http://developer.android.com/reference/java/util/concurrent/ThreadFactory.html
-http://developer.android.com/reference/java/util/concurrent/Future.html
-http://developer.android.com/reference/javax/crypto/ExemptionMechanism.html
-http://developer.android.com/reference/javax/crypto/ExemptionMechanismException.html
-http://developer.android.com/reference/javax/crypto/ExemptionMechanismSpi.html
-http://developer.android.com/reference/android/media/ExifInterface.html
 http://developer.android.com/reference/android/app/ExpandableListActivity.html
-http://developer.android.com/reference/java/io/Externalizable.html
-http://developer.android.com/reference/android/inputmethodservice/ExtractEditText.html
-http://developer.android.com/reference/android/view/inputmethod/ExtractedText.html
-http://developer.android.com/reference/android/view/inputmethod/ExtractedTextRequest.html
-http://developer.android.com/reference/android/media/FaceDetector.html
-http://developer.android.com/reference/android/media/FaceDetector.Face.html
-http://developer.android.com/reference/javax/xml/parsers/FactoryConfigurationError.html
-http://developer.android.com/reference/android/content/pm/FeatureInfo.html
-http://developer.android.com/reference/java/lang/reflect/Field.html
-http://developer.android.com/reference/android/renderscript/FieldPacker.html
-http://developer.android.com/reference/java/text/FieldPosition.html
-http://developer.android.com/reference/java/io/File.html
-http://developer.android.com/reference/android/renderscript/FileA3D.html
-http://developer.android.com/reference/android/renderscript/FileA3D.EntryType.html
-http://developer.android.com/reference/android/renderscript/FileA3D.IndexEntry.html
-http://developer.android.com/reference/java/nio/channels/FileChannel.html
-http://developer.android.com/reference/java/nio/channels/FileChannel.MapMode.html
-http://developer.android.com/reference/java/io/FileDescriptor.html
-http://developer.android.com/reference/org/apache/http/entity/FileEntity.html
-http://developer.android.com/reference/java/io/FileFilter.html
-http://developer.android.com/reference/java/util/logging/FileHandler.html
-http://developer.android.com/reference/java/io/FileInputStream.html
-http://developer.android.com/reference/java/nio/channels/FileLock.html
-http://developer.android.com/reference/java/nio/channels/FileLockInterruptionException.html
-http://developer.android.com/reference/java/io/FilenameFilter.html
-http://developer.android.com/reference/java/net/FileNameMap.html
-http://developer.android.com/reference/java/io/FileNotFoundException.html
-http://developer.android.com/reference/android/os/FileObserver.html
-http://developer.android.com/reference/java/io/FileOutputStream.html
-http://developer.android.com/reference/java/io/FilePermission.html
-http://developer.android.com/reference/java/io/FileReader.html
-http://developer.android.com/reference/java/io/FileWriter.html
-http://developer.android.com/reference/java/util/logging/Filter.html
-http://developer.android.com/reference/java/io/FilterInputStream.html
-http://developer.android.com/reference/java/io/FilterOutputStream.html
-http://developer.android.com/reference/java/io/FilterReader.html
-http://developer.android.com/reference/java/io/FilterWriter.html
-http://developer.android.com/reference/android/test/FlakyTest.html
-http://developer.android.com/reference/android/test/InstrumentationTestCase.html
-http://developer.android.com/reference/android/renderscript/Float2.html
-http://developer.android.com/reference/android/renderscript/Float3.html
-http://developer.android.com/reference/android/renderscript/Float4.html
-http://developer.android.com/reference/java/nio/FloatBuffer.html
-http://developer.android.com/reference/android/util/FloatMath.html
-http://developer.android.com/reference/java/lang/Math.html
-http://developer.android.com/reference/java/io/Flushable.html
-http://developer.android.com/reference/android/renderscript/Font.html
-http://developer.android.com/reference/android/renderscript/Font.Style.html
-http://developer.android.com/reference/android/text/style/ForegroundColorSpan.html
-http://developer.android.com/reference/java/text/Format.html
-http://developer.android.com/reference/java/text/Format.Field.html
-http://developer.android.com/reference/android/nfc/FormatException.html
-http://developer.android.com/reference/java/util/FormatFlagsConversionMismatchException.html
-http://developer.android.com/reference/java/util/Formattable.html
-http://developer.android.com/reference/java/util/FormattableFlags.html
-http://developer.android.com/reference/org/apache/http/FormattedHeader.html
-http://developer.android.com/reference/android/text/format/Formatter.html
-http://developer.android.com/reference/java/util/Formatter.html
-http://developer.android.com/reference/java/util/logging/Formatter.html
-http://developer.android.com/reference/java/util/logging/LogRecord.html
-http://developer.android.com/reference/java/util/Formatter.BigDecimalLayoutForm.html
-http://developer.android.com/reference/java/util/FormatterClosedException.html
-http://developer.android.com/reference/android/support/v4/app/Fragment.html
-http://developer.android.com/reference/android/app/Fragment.InstantiationException.html
-http://developer.android.com/reference/android/support/v4/app/Fragment.InstantiationException.html
 http://developer.android.com/reference/android/app/Fragment.SavedState.html
-http://developer.android.com/reference/android/support/v4/app/Fragment.SavedState.html
-http://developer.android.com/reference/android/support/v4/app/FragmentManager.html
-http://developer.android.com/reference/android/support/v4/app/FragmentActivity.html
 http://developer.android.com/reference/android/app/FragmentBreadCrumbs.html
-http://developer.android.com/reference/android/app/FragmentBreadCrumbs.OnBreadCrumbClickListener.html
-http://developer.android.com/reference/android/support/v13/app/FragmentCompat.html
+http://developer.android.com/reference/android/app/Instrumentation.ActivityMonitor.html
+http://developer.android.com/reference/android/app/Instrumentation.ActivityResult.html
+http://developer.android.com/reference/android/app/IntentService.html
+http://developer.android.com/reference/android/app/KeyguardManager.html
+http://developer.android.com/reference/android/app/KeyguardManager.KeyguardLock.html
+http://developer.android.com/reference/android/app/LauncherActivity.html
+http://developer.android.com/reference/android/app/LauncherActivity.IconResizer.html
+http://developer.android.com/reference/android/app/LauncherActivity.ListItem.html
+http://developer.android.com/reference/android/app/ListFragment.html
+http://developer.android.com/reference/android/app/LoaderManager.html
+http://developer.android.com/reference/android/app/LocalActivityManager.html
+http://developer.android.com/reference/android/app/MediaRouteActionProvider.html
+http://developer.android.com/reference/android/app/MediaRouteButton.html
+http://developer.android.com/reference/android/app/NativeActivity.html
+http://developer.android.com/reference/android/app/Notification.html
+http://developer.android.com/reference/android/app/Notification.BigPictureStyle.html
+http://developer.android.com/reference/android/app/Notification.BigTextStyle.html
+http://developer.android.com/reference/android/app/Notification.Builder.html
+http://developer.android.com/reference/android/app/Notification.InboxStyle.html
+http://developer.android.com/reference/android/app/Notification.Style.html
+http://developer.android.com/reference/android/app/NotificationManager.html
+http://developer.android.com/reference/android/app/ProgressDialog.html
+http://developer.android.com/reference/android/app/SearchableInfo.html
+http://developer.android.com/reference/android/app/SearchManager.html
+http://developer.android.com/reference/android/app/TabActivity.html
+http://developer.android.com/reference/android/app/TaskStackBuilder.html
+http://developer.android.com/reference/android/app/TimePickerDialog.html
+http://developer.android.com/reference/android/app/UiModeManager.html
+http://developer.android.com/reference/android/app/WallpaperInfo.html
+http://developer.android.com/reference/android/app/WallpaperManager.html
+http://developer.android.com/reference/android/app/Fragment.InstantiationException.html
+http://developer.android.com/reference/android/app/PendingIntent.CanceledException.html
+http://developer.android.com/reference/android/inputmethodservice/AbstractInputMethodService.html
+http://developer.android.com/reference/android/speech/RecognitionService.html
+http://developer.android.com/reference/android/service/textservice/SpellCheckerService.html
+http://developer.android.com/reference/android/speech/tts/TextToSpeechService.html
+http://developer.android.com/reference/android/net/VpnService.html
+http://developer.android.com/reference/android/service/wallpaper/WallpaperService.html
+http://developer.android.com/reference/android/inputmethodservice/InputMethodService.html
+http://developer.android.com/reference/android/R.styleable.html
+http://developer.android.com/guide/topics/fundamentals/services.html
+http://developer.android.com/guide/developing/tools/aidl.html
+http://developer.android.com/guide/topics/security/security.html
+http://developer.android.com/reference/android/os/Messenger.html
+http://developer.android.com/reference/android/accounts/AccountManager.html
+http://developer.android.com/reference/android/text/ClipboardManager.html
+http://developer.android.com/reference/android/net/ConnectivityManager.html
+http://developer.android.com/reference/android/os/DropBoxManager.html
+http://developer.android.com/reference/android/hardware/input/InputManager.html
+http://developer.android.com/reference/android/view/LayoutInflater.html
+http://developer.android.com/reference/android/location/LocationManager.html
+http://developer.android.com/reference/android/media/MediaRouter.html
+http://developer.android.com/reference/android/nfc/NfcManager.html
+http://developer.android.com/reference/android/os/PowerManager.html
+http://developer.android.com/reference/android/hardware/SensorManager.html
+http://developer.android.com/reference/android/os/storage/StorageManager.html
+http://developer.android.com/reference/android/telephony/TelephonyManager.html
+http://developer.android.com/reference/android/view/textservice/TextServicesManager.html
+http://developer.android.com/reference/android/hardware/usb/UsbManager.html
+http://developer.android.com/reference/android/os/Vibrator.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html
+http://developer.android.com/reference/android/net/wifi/WifiManager.html
+http://developer.android.com/reference/android/view/WindowManager.html
+http://developer.android.com/reference/java/io/FileDescriptor.html
+http://developer.android.com/reference/android/content/pm/ApplicationInfo.html
+http://developer.android.com/reference/android/content/res/AssetManager.html
+http://developer.android.com/reference/java/io/File.html
+http://developer.android.com/reference/java/lang/ClassLoader.html
+http://developer.android.com/reference/android/os/Environment.html
+http://developer.android.com/reference/android/os/Looper.html
+http://developer.android.com/reference/android/content/res/Resources.Theme.html
+http://developer.android.com/reference/java/io/FileInputStream.html
+http://developer.android.com/reference/java/io/FileOutputStream.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.CursorFactory.html
+http://developer.android.com/reference/android/database/DatabaseErrorHandler.html
+http://developer.android.com/reference/java/util/Formatter.html
+http://developer.android.com/reference/android/os/AsyncTask.html
+http://developer.android.com/reference/android/content/pm/ServiceInfo.html
+http://developer.android.com/reference/android/appwidget/AppWidgetHost.html
+http://developer.android.com/reference/android/view/InputDevice.html
+http://developer.android.com/guide/topics/fundamentals/activities.html
 http://developer.android.com/guide/topics/fundamentals/fragments.html
-http://developer.android.com/reference/android/app/FragmentManager.BackStackEntry.html
+http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html
+http://developer.android.com/reference/java/lang/IllegalStateException.html
+http://developer.android.com/reference/javax/xml/namespace/NamespaceContext.html
+http://developer.android.com/reference/javax/xml/transform/Source.html
+http://developer.android.com/reference/javax/xml/XMLConstants.html
+http://developer.android.com/reference/javax/xml/transform/Transformer.html
+http://developer.android.com/reference/javax/sql/CommonDataSource.html
+http://developer.android.com/reference/javax/sql/ConnectionEventListener.html
+http://developer.android.com/reference/javax/sql/ConnectionPoolDataSource.html
+http://developer.android.com/reference/javax/sql/DataSource.html
+http://developer.android.com/reference/javax/sql/PooledConnection.html
+http://developer.android.com/reference/javax/sql/RowSet.html
+http://developer.android.com/reference/javax/sql/RowSetInternal.html
+http://developer.android.com/reference/javax/sql/RowSetListener.html
+http://developer.android.com/reference/javax/sql/RowSetMetaData.html
+http://developer.android.com/reference/javax/sql/RowSetReader.html
+http://developer.android.com/reference/javax/sql/RowSetWriter.html
+http://developer.android.com/reference/javax/sql/StatementEventListener.html
+http://developer.android.com/reference/javax/sql/ConnectionEvent.html
+http://developer.android.com/reference/javax/sql/RowSetEvent.html
+http://developer.android.com/reference/javax/sql/StatementEvent.html
+http://developer.android.com/reference/android/view/animation/Interpolator.html
+http://developer.android.com/reference/android/view/ViewConfiguration.html
+http://developer.android.com/reference/android/view/accessibility/AccessibilityManager.AccessibilityStateChangeListener.html
+http://developer.android.com/reference/android/os/Parcelable.Creator.html
+http://developer.android.com/reference/android/os/Parcel.html
+http://developer.android.com/reference/android/net/wifi/ScanResult.html
+http://developer.android.com/reference/android/net/wifi/WifiConfiguration.html
+http://developer.android.com/reference/android/net/wifi/WifiConfiguration.AuthAlgorithm.html
+http://developer.android.com/reference/android/net/wifi/WifiConfiguration.GroupCipher.html
+http://developer.android.com/reference/android/net/wifi/WifiConfiguration.KeyMgmt.html
+http://developer.android.com/reference/android/net/wifi/WifiConfiguration.PairwiseCipher.html
+http://developer.android.com/reference/android/net/wifi/WifiConfiguration.Protocol.html
+http://developer.android.com/reference/android/net/wifi/WifiConfiguration.Status.html
+http://developer.android.com/reference/android/net/wifi/WifiInfo.html
+http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html
+http://developer.android.com/reference/android/net/wifi/WifiManager.WifiLock.html
+http://developer.android.com/reference/android/net/wifi/WpsInfo.html
+http://developer.android.com/reference/android/net/wifi/SupplicantState.html
+http://developer.android.com/reference/java/security/spec/AlgorithmParameterSpec.html
+http://developer.android.com/reference/java/nio/ByteBuffer.html
+http://developer.android.com/reference/android/test/PerformanceTestCase.html
+http://developer.android.com/reference/android/test/PerformanceTestCase.Intermediates.html
+http://developer.android.com/reference/android/test/TestSuiteProvider.html
+http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase.html
+http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase2.html
+http://developer.android.com/reference/android/test/ActivityTestCase.html
+http://developer.android.com/reference/android/test/ActivityUnitTestCase.html
+http://developer.android.com/reference/android/test/AndroidTestCase.html
+http://developer.android.com/reference/android/test/AndroidTestRunner.html
+http://developer.android.com/reference/android/test/ApplicationTestCase.html
+http://developer.android.com/reference/android/test/InstrumentationTestCase.html
+http://developer.android.com/reference/android/test/InstrumentationTestRunner.html
+http://developer.android.com/reference/android/test/InstrumentationTestSuite.html
+http://developer.android.com/reference/android/test/IsolatedContext.html
+http://developer.android.com/reference/android/test/LoaderTestCase.html
+http://developer.android.com/reference/android/test/MoreAsserts.html
+http://developer.android.com/reference/android/test/ProviderTestCase.html
+http://developer.android.com/reference/android/test/ProviderTestCase2.html
+http://developer.android.com/reference/android/test/RenamingDelegatingContext.html
+http://developer.android.com/reference/android/test/ServiceTestCase.html
+http://developer.android.com/reference/android/test/SingleLaunchActivityTestCase.html
+http://developer.android.com/reference/android/test/SyncBaseInstrumentation.html
+http://developer.android.com/reference/android/test/TouchUtils.html
+http://developer.android.com/reference/android/test/ViewAsserts.html
+http://developer.android.com/reference/android/test/AssertionFailedError.html
+http://developer.android.com/reference/android/test/ComparisonFailure.html
+http://developer.android.com/reference/junit/framework/TestCase.html
+http://developer.android.com/reference/junit/framework/TestSuite.html
+http://developer.android.com/reference/android/test/mock/MockApplication.html
+http://developer.android.com/reference/android/text/util/Rfc822Tokenizer.html
+http://developer.android.com/reference/org/apache/http/impl/DefaultConnectionReuseStrategy.html
+http://developer.android.com/reference/org/apache/http/impl/NoConnectionReuseStrategy.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpContext.html
+http://developer.android.com/reference/android/support/v4/database/DatabaseUtilsCompat.html
+http://developer.android.com/reference/android/database/DatabaseUtils.html
 http://developer.android.com/reference/android/support/v4/app/FragmentManager.BackStackEntry.html
-http://developer.android.com/reference/android/support/v4/app/FragmentTransaction.html
-http://developer.android.com/reference/android/app/FragmentManager.OnBackStackChangedListener.html
 http://developer.android.com/reference/android/support/v4/app/FragmentManager.OnBackStackChangedListener.html
-http://developer.android.com/reference/android/support/v13/app/FragmentPagerAdapter.html
-http://developer.android.com/reference/android/support/v4/view/PagerAdapter.html
+http://developer.android.com/reference/android/support/v4/app/ActivityCompat.html
+http://developer.android.com/reference/android/support/v4/app/Fragment.html
+http://developer.android.com/reference/android/support/v4/app/Fragment.SavedState.html
+http://developer.android.com/reference/android/support/v4/app/FragmentActivity.html
+http://developer.android.com/reference/android/support/v4/app/FragmentManager.html
 http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html
-http://developer.android.com/reference/android/support/v13/app/FragmentStatePagerAdapter.html
 http://developer.android.com/reference/android/support/v4/app/FragmentStatePagerAdapter.html
-http://developer.android.com/reference/java/nio/channels/GatheringByteChannel.html
-http://developer.android.com/reference/java/security/GeneralSecurityException.html
-http://developer.android.com/reference/java/lang/reflect/GenericArrayType.html
-http://developer.android.com/reference/java/lang/reflect/GenericDeclaration.html
-http://developer.android.com/reference/java/lang/reflect/GenericSignatureFormatError.html
-http://developer.android.com/reference/android/location/Geocoder.html
-http://developer.android.com/reference/android/webkit/GeolocationPermissions.html
-http://developer.android.com/reference/android/webkit/GeolocationPermissions.Callback.html
-http://developer.android.com/reference/android/hardware/GeomagneticField.html
-http://developer.android.com/reference/android/gesture/Gesture.html
-http://developer.android.com/reference/android/gesture/GestureLibraries.html
-http://developer.android.com/reference/android/gesture/GestureLibrary.html
-http://developer.android.com/reference/android/gesture/GestureOverlayView.html
-http://developer.android.com/reference/android/gesture/GestureOverlayView.OnGestureListener.html
-http://developer.android.com/reference/android/gesture/GestureOverlayView.OnGesturePerformedListener.html
-http://developer.android.com/reference/android/gesture/GestureOverlayView.OnGesturingListener.html
-http://developer.android.com/reference/android/gesture/GesturePoint.html
-http://developer.android.com/reference/android/gesture/GestureStore.html
-http://developer.android.com/reference/android/gesture/GestureStroke.html
-http://developer.android.com/reference/android/gesture/GestureUtils.html
-http://developer.android.com/reference/android/text/GetChars.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL10.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL10Ext.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11Ext.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11ExtensionPack.html
-http://developer.android.com/reference/android/opengl/GLDebugHelper.html
-http://developer.android.com/reference/android/opengl/GLES10.html
-http://developer.android.com/reference/android/opengl/GLES10Ext.html
-http://developer.android.com/reference/android/opengl/GLES11.html
-http://developer.android.com/reference/android/opengl/GLException.html
-http://developer.android.com/reference/android/opengl/GLSurfaceView.EGLConfigChooser.html
-http://developer.android.com/reference/android/opengl/GLSurfaceView.EGLContextFactory.html
-http://developer.android.com/reference/android/opengl/GLSurfaceView.EGLWindowSurfaceFactory.html
-http://developer.android.com/reference/android/opengl/GLSurfaceView.GLWrapper.html
-http://developer.android.com/reference/android/opengl/GLSurfaceView.Renderer.html
-http://developer.android.com/reference/android/opengl/GLU.html
-http://developer.android.com/reference/android/opengl/GLUtils.html
-http://developer.android.com/reference/android/location/GpsSatellite.html
-http://developer.android.com/reference/android/location/GpsStatus.html
-http://developer.android.com/reference/android/location/GpsStatus.Listener.html
-http://developer.android.com/reference/android/location/GpsStatus.NmeaListener.html
-http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.Orientation.html
-http://developer.android.com/reference/java/util/GregorianCalendar.html
-http://developer.android.com/reference/android/telephony/gsm/GsmCellLocation.html
-http://developer.android.com/reference/java/security/Guard.html
-http://developer.android.com/reference/java/security/GuardedObject.html
-http://developer.android.com/reference/java/util/zip/GZIPInputStream.html
-http://developer.android.com/reference/java/util/zip/GZIPOutputStream.html
-http://developer.android.com/reference/android/os/MessageQueue.html
+http://developer.android.com/reference/android/support/v4/app/FragmentTransaction.html
+http://developer.android.com/reference/android/support/v4/app/ListFragment.html
+http://developer.android.com/reference/android/support/v4/app/LoaderManager.html
+http://developer.android.com/reference/android/support/v4/app/NavUtils.html
+http://developer.android.com/reference/android/support/v4/app/NotificationCompat.html
+http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Action.html
+http://developer.android.com/reference/android/support/v4/app/NotificationCompat.BigPictureStyle.html
+http://developer.android.com/reference/android/support/v4/app/NotificationCompat.BigTextStyle.html
+http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html
+http://developer.android.com/reference/android/support/v4/app/NotificationCompat.InboxStyle.html
+http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Style.html
+http://developer.android.com/reference/android/support/v4/app/ServiceCompat.html
+http://developer.android.com/reference/android/support/v4/app/ShareCompat.html
+http://developer.android.com/reference/android/support/v4/app/ShareCompat.IntentBuilder.html
+http://developer.android.com/reference/android/support/v4/app/ShareCompat.IntentReader.html
+http://developer.android.com/reference/android/support/v4/app/TaskStackBuilder.html
+http://developer.android.com/reference/android/support/v4/app/TaskStackBuilderHoneycomb.html
+http://developer.android.com/reference/android/support/v4/app/Fragment.InstantiationException.html
+http://developer.android.com/reference/android/support/v4/view/PagerAdapter.html
+http://developer.android.com/reference/org/apache/http/impl/conn/AbstractClientConnAdapter.html
+http://developer.android.com/reference/org/apache/http/impl/AbstractHttpClientConnection.html
+http://developer.android.com/reference/org/apache/http/impl/conn/AbstractPooledConnAdapter.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/BasicPooledConnAdapter.html
+http://developer.android.com/reference/org/apache/http/impl/conn/DefaultClientConnection.html
+http://developer.android.com/reference/org/apache/http/impl/DefaultHttpClientConnection.html
+http://developer.android.com/reference/org/apache/http/conn/ManagedClientConnection.html
+http://developer.android.com/reference/org/apache/http/conn/OperatedClientConnection.html
+http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.ConnAdapter.html
+http://developer.android.com/reference/org/apache/http/impl/SocketHttpClientConnection.html
+http://developer.android.com/reference/org/apache/http/impl/conn/AbstractPoolEntry.html
+http://developer.android.com/reference/java/io/IOException.html
+http://developer.android.com/reference/org/apache/http/auth/params/AuthPNames.html
+http://developer.android.com/reference/org/apache/http/auth/params/AuthParamBean.html
+http://developer.android.com/reference/org/apache/http/auth/params/AuthParams.html
+http://developer.android.com/reference/android/content/pm/LabeledIntent.html
+http://developer.android.com/guide/topics/intents/intents-filters.html
+http://developer.android.com/reference/android/view/Menu.html
+http://developer.android.com/reference/java/lang/Integer.html
+http://developer.android.com/reference/android/content/pm/ActivityInfo.html
+http://developer.android.com/reference/android/os/BatteryManager.html
+http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html
+http://developer.android.com/reference/java/net/URISyntaxException.html
+http://developer.android.com/shareables/training/EffectiveNavigation.zip
+http://developer.android.com/reference/java/lang/System.html
+http://developer.android.com/reference/android/os/CancellationSignal.OnCancelListener.html
 http://developer.android.com/reference/android/os/Handler.Callback.html
-http://developer.android.com/reference/org/xml/sax/HandlerBase.html
-http://developer.android.com/reference/javax/net/ssl/HandshakeCompletedEvent.html
-http://developer.android.com/reference/javax/net/ssl/HandshakeCompletedListener.html
-http://developer.android.com/reference/java/util/HashMap.html
-http://developer.android.com/reference/java/util/HashSet.html
-http://developer.android.com/reference/java/util/Hashtable.html
-http://developer.android.com/reference/org/apache/http/Header.html
-http://developer.android.com/reference/org/apache/http/HeaderElement.html
-http://developer.android.com/reference/org/apache/http/message/HeaderGroup.html
-http://developer.android.com/reference/org/apache/http/message/HeaderValueFormatter.html
-http://developer.android.com/reference/org/apache/http/message/HeaderValueParser.html
-http://developer.android.com/reference/android/text/method/HideReturnsTransformationMethod.html
-http://developer.android.com/reference/org/apache/http/conn/scheme/HostNameResolver.html
-http://developer.android.com/reference/javax/net/ssl/HostnameVerifier.html
-http://developer.android.com/reference/android/text/Html.html
-http://developer.android.com/reference/android/text/Html.ImageGetter.html
-http://developer.android.com/reference/android/text/Html.TagHandler.html
-http://developer.android.com/reference/org/apache/http/protocol/HTTP.html
-http://developer.android.com/reference/org/apache/http/params/HttpAbstractParamBean.html
-http://developer.android.com/reference/android/webkit/HttpAuthHandler.html
-http://developer.android.com/reference/org/apache/http/client/HttpClient.html
-http://developer.android.com/reference/org/apache/http/client/params/HttpClientParams.html
-http://developer.android.com/reference/org/apache/http/HttpConnection.html
-http://developer.android.com/reference/org/apache/http/HttpConnectionMetrics.html
-http://developer.android.com/reference/org/apache/http/impl/HttpConnectionMetricsImpl.html
-http://developer.android.com/reference/org/apache/http/params/HttpConnectionParamBean.html
-http://developer.android.com/reference/org/apache/http/params/HttpConnectionParams.html
-http://developer.android.com/reference/java/net/HttpCookie.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpDateGenerator.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpDelete.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpEntityEnclosingRequestBase.html
-http://developer.android.com/reference/org/apache/http/entity/HttpEntityWrapper.html
-http://developer.android.com/reference/org/apache/http/HttpException.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpExpectationVerifier.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpGet.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpHead.html
-http://developer.android.com/reference/org/apache/http/HttpInetConnection.html
-http://developer.android.com/reference/org/apache/http/HttpMessage.html
-http://developer.android.com/reference/org/apache/http/io/HttpMessageParser.html
-http://developer.android.com/reference/org/apache/http/io/HttpMessageWriter.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpOptions.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpPost.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpProcessor.html
-http://developer.android.com/reference/org/apache/http/params/HttpProtocolParamBean.html
-http://developer.android.com/reference/org/apache/http/params/HttpProtocolParams.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpPut.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpRequestBase.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpRequestExecutor.html
-http://developer.android.com/reference/org/apache/http/HttpRequestFactory.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandler.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandlerRegistry.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandlerResolver.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpRequestInterceptorList.html
-http://developer.android.com/reference/org/apache/http/impl/io/HttpRequestParser.html
-http://developer.android.com/reference/org/apache/http/impl/io/HttpRequestWriter.html
-http://developer.android.com/reference/org/apache/http/HttpResponse.html
-http://developer.android.com/reference/android/net/http/HttpResponseCache.html
-http://developer.android.com/reference/org/apache/http/client/HttpResponseException.html
-http://developer.android.com/reference/org/apache/http/HttpResponseFactory.html
-http://developer.android.com/reference/org/apache/http/HttpResponseInterceptor.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpResponseInterceptorList.html
-http://developer.android.com/reference/org/apache/http/impl/io/HttpResponseParser.html
-http://developer.android.com/reference/org/apache/http/impl/io/HttpResponseWriter.html
-http://developer.android.com/reference/java/net/HttpRetryException.html
-http://developer.android.com/reference/org/apache/http/HttpServerConnection.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpService.html
-http://developer.android.com/reference/org/apache/http/HttpStatus.html
-http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html
-http://developer.android.com/reference/java/net/HttpURLConnection.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpTrace.html
-http://developer.android.com/reference/org/apache/http/io/HttpTransportMetrics.html
-http://developer.android.com/reference/org/apache/http/impl/io/HttpTransportMetricsImpl.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpUriRequest.html
-http://developer.android.com/reference/java/net/URLConnection.html
-http://developer.android.com/reference/org/apache/http/HttpVersion.html
 http://developer.android.com/reference/android/os/IBinder.DeathRecipient.html
-http://developer.android.com/reference/android/text/style/IconMarginSpan.html
-http://developer.android.com/reference/java/security/Identity.html
-http://developer.android.com/reference/java/security/Principal.html
-http://developer.android.com/reference/java/security/KeyStore.html
-http://developer.android.com/reference/java/util/IdentityHashMap.html
-http://developer.android.com/reference/org/apache/http/impl/io/IdentityInputStream.html
-http://developer.android.com/reference/org/apache/http/impl/io/IdentityOutputStream.html
-http://developer.android.com/reference/java/security/IdentityScope.html
-http://developer.android.com/reference/org/apache/http/impl/conn/IdleConnectionHandler.html
-http://developer.android.com/reference/java/net/IDN.html
 http://developer.android.com/reference/android/os/IInterface.html
-http://developer.android.com/reference/java/lang/IllegalAccessError.html
+http://developer.android.com/reference/android/os/MessageQueue.IdleHandler.html
+http://developer.android.com/reference/android/os/Parcelable.ClassLoaderCreator.html
+http://developer.android.com/reference/android/os/RecoverySystem.ProgressListener.html
+http://developer.android.com/reference/android/os/Binder.html
+http://developer.android.com/reference/android/os/Build.html
+http://developer.android.com/reference/android/os/Build.VERSION.html
+http://developer.android.com/reference/android/os/ConditionVariable.html
+http://developer.android.com/reference/android/os/CountDownTimer.html
+http://developer.android.com/reference/android/os/Debug.InstructionCount.html
+http://developer.android.com/reference/android/os/Debug.MemoryInfo.html
+http://developer.android.com/reference/android/os/DropBoxManager.Entry.html
+http://developer.android.com/reference/android/os/FileObserver.html
+http://developer.android.com/reference/android/os/HandlerThread.html
+http://developer.android.com/reference/android/os/MemoryFile.html
+http://developer.android.com/reference/android/os/Message.html
+http://developer.android.com/reference/android/os/MessageQueue.html
+http://developer.android.com/reference/android/os/ParcelFileDescriptor.AutoCloseInputStream.html
+http://developer.android.com/reference/android/os/ParcelFileDescriptor.AutoCloseOutputStream.html
+http://developer.android.com/reference/android/os/ParcelUuid.html
+http://developer.android.com/reference/android/os/PatternMatcher.html
+http://developer.android.com/reference/android/os/PowerManager.WakeLock.html
+http://developer.android.com/reference/android/os/Process.html
+http://developer.android.com/reference/android/os/RecoverySystem.html
+http://developer.android.com/reference/android/os/RemoteCallbackList.html
+http://developer.android.com/reference/android/os/ResultReceiver.html
+http://developer.android.com/reference/android/os/StatFs.html
+http://developer.android.com/reference/android/os/StrictMode.html
+http://developer.android.com/reference/android/os/StrictMode.ThreadPolicy.html
+http://developer.android.com/reference/android/os/StrictMode.ThreadPolicy.Builder.html
+http://developer.android.com/reference/android/os/StrictMode.VmPolicy.html
+http://developer.android.com/reference/android/os/StrictMode.VmPolicy.Builder.html
+http://developer.android.com/reference/android/os/SystemClock.html
+http://developer.android.com/reference/android/os/TokenWatcher.html
+http://developer.android.com/reference/android/os/WorkSource.html
+http://developer.android.com/reference/android/os/AsyncTask.Status.html
+http://developer.android.com/reference/android/os/BadParcelableException.html
+http://developer.android.com/reference/android/os/DeadObjectException.html
+http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html
+http://developer.android.com/reference/android/os/ParcelFormatException.html
+http://developer.android.com/reference/android/os/RemoteException.html
+http://developer.android.com/reference/android/os/TransactionTooLargeException.html
+http://developer.android.com/reference/java/lang/Appendable.html
+http://developer.android.com/reference/java/lang/Comparable.html
+http://developer.android.com/reference/java/lang/Iterable.html
+http://developer.android.com/reference/java/lang/Readable.html
+http://developer.android.com/reference/java/lang/Thread.UncaughtExceptionHandler.html
+http://developer.android.com/reference/java/lang/Boolean.html
+http://developer.android.com/reference/java/lang/Byte.html
+http://developer.android.com/reference/java/lang/Character.html
+http://developer.android.com/reference/java/lang/Character.Subset.html
+http://developer.android.com/reference/java/lang/Character.UnicodeBlock.html
+http://developer.android.com/reference/java/lang/Compiler.html
+http://developer.android.com/reference/java/lang/Double.html
+http://developer.android.com/reference/java/lang/Enum.html
+http://developer.android.com/reference/java/lang/InheritableThreadLocal.html
+http://developer.android.com/reference/java/lang/Long.html
+http://developer.android.com/reference/java/lang/Math.html
+http://developer.android.com/reference/java/lang/Number.html
+http://developer.android.com/reference/java/lang/Package.html
+http://developer.android.com/reference/java/lang/Process.html
+http://developer.android.com/reference/java/lang/ProcessBuilder.html
+http://developer.android.com/reference/java/lang/Runtime.html
+http://developer.android.com/reference/java/lang/RuntimePermission.html
+http://developer.android.com/reference/java/lang/SecurityManager.html
+http://developer.android.com/reference/java/lang/Short.html
+http://developer.android.com/reference/java/lang/StrictMath.html
+http://developer.android.com/reference/java/lang/StringBuffer.html
+http://developer.android.com/reference/java/lang/StringBuilder.html
+http://developer.android.com/reference/java/lang/Thread.html
+http://developer.android.com/reference/java/lang/ThreadGroup.html
+http://developer.android.com/reference/java/lang/ThreadLocal.html
+http://developer.android.com/reference/java/lang/Void.html
+http://developer.android.com/reference/java/lang/Thread.State.html
+http://developer.android.com/reference/java/lang/ArithmeticException.html
+http://developer.android.com/reference/java/lang/ArrayIndexOutOfBoundsException.html
+http://developer.android.com/reference/java/lang/ArrayStoreException.html
+http://developer.android.com/reference/java/lang/ClassCastException.html
+http://developer.android.com/reference/java/lang/ClassNotFoundException.html
+http://developer.android.com/reference/java/lang/EnumConstantNotPresentException.html
 http://developer.android.com/reference/java/lang/IllegalAccessException.html
+http://developer.android.com/reference/java/lang/IllegalMonitorStateException.html
+http://developer.android.com/reference/java/lang/IllegalThreadStateException.html
+http://developer.android.com/reference/java/lang/IndexOutOfBoundsException.html
+http://developer.android.com/reference/java/lang/InstantiationException.html
+http://developer.android.com/reference/java/lang/InterruptedException.html
+http://developer.android.com/reference/java/lang/NegativeArraySizeException.html
+http://developer.android.com/reference/java/lang/NoSuchFieldException.html
+http://developer.android.com/reference/java/lang/NoSuchMethodException.html
+http://developer.android.com/reference/java/lang/NumberFormatException.html
+http://developer.android.com/reference/java/lang/StringIndexOutOfBoundsException.html
+http://developer.android.com/reference/java/lang/TypeNotPresentException.html
+http://developer.android.com/reference/java/lang/UnsupportedOperationException.html
+http://developer.android.com/reference/java/lang/AbstractMethodError.html
+http://developer.android.com/reference/java/lang/AssertionError.html
+http://developer.android.com/reference/java/lang/ClassCircularityError.html
+http://developer.android.com/reference/java/lang/ClassFormatError.html
+http://developer.android.com/reference/java/lang/Error.html
+http://developer.android.com/reference/java/lang/ExceptionInInitializerError.html
+http://developer.android.com/reference/java/lang/IllegalAccessError.html
+http://developer.android.com/reference/java/lang/IncompatibleClassChangeError.html
+http://developer.android.com/reference/java/lang/InstantiationError.html
+http://developer.android.com/reference/java/lang/InternalError.html
+http://developer.android.com/reference/java/lang/LinkageError.html
+http://developer.android.com/reference/java/lang/NoClassDefFoundError.html
+http://developer.android.com/reference/java/lang/NoSuchFieldError.html
+http://developer.android.com/reference/java/lang/NoSuchMethodError.html
+http://developer.android.com/reference/java/lang/OutOfMemoryError.html
+http://developer.android.com/reference/java/lang/StackOverflowError.html
+http://developer.android.com/reference/java/lang/ThreadDeath.html
+http://developer.android.com/reference/java/lang/UnknownError.html
+http://developer.android.com/reference/java/lang/UnsatisfiedLinkError.html
+http://developer.android.com/reference/java/lang/UnsupportedClassVersionError.html
+http://developer.android.com/reference/java/lang/VerifyError.html
+http://developer.android.com/reference/java/lang/VirtualMachineError.html
+http://developer.android.com/reference/java/io/Closeable.html
+http://developer.android.com/shareables/sample_images.zip
+http://developer.android.com/reference/android/os/storage/OnObbStateChangeListener.html
+http://developer.android.com/reference/android/view/ActionProvider.VisibilityListener.html
+http://developer.android.com/reference/android/view/Choreographer.FrameCallback.html
+http://developer.android.com/reference/android/view/CollapsibleActionView.html
+http://developer.android.com/reference/android/view/GestureDetector.OnDoubleTapListener.html
+http://developer.android.com/reference/android/view/GestureDetector.OnGestureListener.html
+http://developer.android.com/reference/android/view/InputQueue.Callback.html
+http://developer.android.com/reference/android/view/LayoutInflater.Factory.html
+http://developer.android.com/reference/android/view/LayoutInflater.Factory2.html
+http://developer.android.com/reference/android/view/LayoutInflater.Filter.html
+http://developer.android.com/reference/android/view/MenuItem.html
+http://developer.android.com/reference/android/view/MenuItem.OnActionExpandListener.html
+http://developer.android.com/reference/android/view/MenuItem.OnMenuItemClickListener.html
+http://developer.android.com/reference/android/view/ScaleGestureDetector.OnScaleGestureListener.html
+http://developer.android.com/reference/android/view/SubMenu.html
+http://developer.android.com/reference/android/view/SurfaceHolder.html
+http://developer.android.com/reference/android/view/SurfaceHolder.Callback.html
+http://developer.android.com/reference/android/view/SurfaceHolder.Callback2.html
+http://developer.android.com/reference/android/view/TextureView.SurfaceTextureListener.html
+http://developer.android.com/reference/android/view/ViewStub.OnInflateListener.html
+http://developer.android.com/reference/android/view/ViewTreeObserver.OnDrawListener.html
+http://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalFocusChangeListener.html
+http://developer.android.com/reference/android/view/ViewTreeObserver.OnPreDrawListener.html
+http://developer.android.com/reference/android/view/ViewTreeObserver.OnScrollChangedListener.html
+http://developer.android.com/reference/android/view/Window.Callback.html
+http://developer.android.com/reference/android/view/AbsSavedState.html
+http://developer.android.com/reference/android/view/ActionProvider.html
+http://developer.android.com/reference/android/view/Choreographer.html
+http://developer.android.com/reference/android/view/ContextThemeWrapper.html
+http://developer.android.com/reference/android/view/Display.html
+http://developer.android.com/reference/android/view/FocusFinder.html
+http://developer.android.com/reference/android/view/GestureDetector.html
+http://developer.android.com/reference/android/view/GestureDetector.SimpleOnGestureListener.html
+http://developer.android.com/reference/android/view/Gravity.html
+http://developer.android.com/reference/android/view/HapticFeedbackConstants.html
+http://developer.android.com/reference/android/view/InputDevice.MotionRange.html
+http://developer.android.com/reference/android/view/InputEvent.html
+http://developer.android.com/reference/android/view/InputQueue.html
+http://developer.android.com/reference/android/view/KeyCharacterMap.html
+http://developer.android.com/reference/android/view/KeyCharacterMap.KeyData.html
+http://developer.android.com/reference/android/view/MenuInflater.html
+http://developer.android.com/reference/android/view/MotionEvent.PointerCoords.html
+http://developer.android.com/reference/android/view/MotionEvent.PointerProperties.html
+http://developer.android.com/reference/android/view/OrientationEventListener.html
+http://developer.android.com/reference/android/view/OrientationListener.html
+http://developer.android.com/reference/android/view/ScaleGestureDetector.html
+http://developer.android.com/reference/android/view/ScaleGestureDetector.SimpleOnScaleGestureListener.html
+http://developer.android.com/reference/android/view/SoundEffectConstants.html
+http://developer.android.com/reference/android/view/Surface.html
+http://developer.android.com/reference/android/view/SurfaceView.html
+http://developer.android.com/reference/android/view/TextureView.html
+http://developer.android.com/reference/android/view/VelocityTracker.html
+http://developer.android.com/reference/android/view/View.BaseSavedState.html
+http://developer.android.com/reference/android/view/ViewDebug.html
+http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html
+http://developer.android.com/reference/android/view/ViewStub.html
+http://developer.android.com/reference/android/view/Window.html
+http://developer.android.com/reference/android/view/ViewDebug.HierarchyTraceType.html
+http://developer.android.com/reference/android/view/ViewDebug.RecyclerTraceType.html
+http://developer.android.com/reference/android/view/InflateException.html
+http://developer.android.com/reference/android/view/KeyCharacterMap.UnavailableException.html
+http://developer.android.com/reference/android/view/Surface.OutOfResourcesException.html
+http://developer.android.com/reference/android/view/SurfaceHolder.BadSurfaceTypeException.html
+http://developer.android.com/reference/android/view/WindowManager.BadTokenException.html
+http://developer.android.com/reference/android/content/pm/ResolveInfo.html
+http://developer.android.com/reference/org/apache/http/impl/DefaultHttpServerConnection.html
+http://developer.android.com/reference/org/apache/http/impl/SocketHttpServerConnection.html
+http://developer.android.com/reference/java/net/InetAddress.html
+http://developer.android.com/reference/android/media/effect/EffectUpdateListener.html
+http://developer.android.com/reference/android/media/effect/Effect.html
+http://developer.android.com/reference/android/media/effect/EffectContext.html
+http://developer.android.com/reference/android/media/effect/EffectFactory.html
+http://developer.android.com/reference/android/opengl/GLES20.html
+http://developer.android.com/reference/java/sql/ResultSetMetaData.html
+http://developer.android.com/reference/java/sql/Wrapper.html
+http://developer.android.com/reference/java/sql/SQLException.html
+http://developer.android.com/reference/android/util/AndroidRuntimeException.html
+http://developer.android.com/reference/java/lang/annotation/AnnotationTypeMismatchException.html
+http://developer.android.com/reference/java/nio/BufferOverflowException.html
+http://developer.android.com/reference/java/nio/BufferUnderflowException.html
+http://developer.android.com/reference/java/util/ConcurrentModificationException.html
+http://developer.android.com/reference/java/util/EmptyStackException.html
+http://developer.android.com/reference/android/opengl/GLException.html
+http://developer.android.com/reference/java/lang/annotation/IncompleteAnnotationException.html
+http://developer.android.com/reference/org/w3c/dom/ls/LSException.html
+http://developer.android.com/reference/java/lang/reflect/MalformedParameterizedTypeException.html
+http://developer.android.com/reference/android/media/MediaCodec.CryptoException.html
+http://developer.android.com/reference/java/util/MissingResourceException.html
+http://developer.android.com/reference/java/util/NoSuchElementException.html
+http://developer.android.com/reference/android/util/NoSuchPropertyException.html
+http://developer.android.com/reference/android/renderscript/RSRuntimeException.html
+http://developer.android.com/reference/java/util/concurrent/RejectedExecutionException.html
+http://developer.android.com/reference/java/util/concurrent/Executor.html
+http://developer.android.com/reference/android/content/res/Resources.NotFoundException.html
+http://developer.android.com/reference/android/database/StaleDataException.html
+http://developer.android.com/reference/android/util/TimeFormatException.html
+http://developer.android.com/reference/java/lang/reflect/UndeclaredThrowableException.html
+http://developer.android.com/reference/org/apache/http/impl/auth/UnsupportedDigestAlgorithmException.html
+http://developer.android.com/reference/java/nio/channels/AlreadyConnectedException.html
+http://developer.android.com/reference/java/util/concurrent/CancellationException.html
+http://developer.android.com/reference/java/nio/channels/CancelledKeyException.html
+http://developer.android.com/reference/java/nio/channels/ClosedSelectorException.html
+http://developer.android.com/reference/java/nio/channels/ConnectionPendingException.html
+http://developer.android.com/reference/android/database/CursorIndexOutOfBoundsException.html
+http://developer.android.com/reference/java/util/DuplicateFormatFlagsException.html
+http://developer.android.com/reference/java/util/FormatFlagsConversionMismatchException.html
+http://developer.android.com/reference/java/util/FormatterClosedException.html
 http://developer.android.com/reference/java/nio/channels/IllegalBlockingModeException.html
-http://developer.android.com/reference/javax/crypto/IllegalBlockSizeException.html
 http://developer.android.com/reference/java/nio/charset/IllegalCharsetNameException.html
+http://developer.android.com/reference/java/util/concurrent/FutureTask.html
+http://developer.android.com/reference/java/nio/channels/Selector.html
+http://developer.android.com/reference/java/nio/channels/SocketChannel.html
 http://developer.android.com/reference/java/util/IllegalFormatCodePointException.html
 http://developer.android.com/reference/java/util/IllegalFormatConversionException.html
 http://developer.android.com/reference/java/util/IllegalFormatException.html
 http://developer.android.com/reference/java/util/IllegalFormatFlagsException.html
 http://developer.android.com/reference/java/util/IllegalFormatPrecisionException.html
 http://developer.android.com/reference/java/util/IllegalFormatWidthException.html
-http://developer.android.com/reference/java/lang/IllegalMonitorStateException.html
 http://developer.android.com/reference/java/nio/channels/IllegalSelectorException.html
-http://developer.android.com/reference/java/lang/IllegalStateException.html
-http://developer.android.com/reference/java/lang/IllegalThreadStateException.html
-http://developer.android.com/reference/android/graphics/ImageFormat.html
-http://developer.android.com/reference/android/text/style/ImageSpan.html
-http://developer.android.com/reference/java/lang/IncompatibleClassChangeError.html
-http://developer.android.com/reference/java/lang/annotation/IncompleteAnnotationException.html
-http://developer.android.com/reference/java/beans/IndexedPropertyChangeEvent.html
-http://developer.android.com/reference/java/beans/PropertyChangeEvent.html
-http://developer.android.com/reference/java/lang/IndexOutOfBoundsException.html
-http://developer.android.com/reference/java/net/Inet4Address.html
-http://developer.android.com/reference/java/net/Inet6Address.html
-http://developer.android.com/reference/java/net/InetSocketAddress.html
-http://developer.android.com/reference/java/util/zip/Inflater.html
-http://developer.android.com/reference/java/util/zip/InflaterInputStream.html
-http://developer.android.com/reference/java/util/zip/InflaterOutputStream.html
-http://developer.android.com/reference/java/lang/InheritableThreadLocal.html
-http://developer.android.com/reference/java/lang/annotation/Inherited.html
-http://developer.android.com/reference/android/view/inputmethod/InputBinding.html
-http://developer.android.com/reference/android/view/inputmethod/InputConnectionWrapper.html
-http://developer.android.com/reference/android/text/InputFilter.html
-http://developer.android.com/reference/android/text/InputFilter.AllCaps.html
-http://developer.android.com/reference/android/text/InputFilter.LengthFilter.html
-http://developer.android.com/reference/android/hardware/input/InputManager.html
-http://developer.android.com/reference/android/hardware/input/InputManager.InputDeviceListener.html
-http://developer.android.com/reference/android/view/inputmethod/InputMethod.SessionCallback.html
-http://developer.android.com/reference/android/view/inputmethod/InputMethodInfo.html
-http://developer.android.com/reference/android/inputmethodservice/InputMethodService.html
-http://developer.android.com/reference/android/inputmethodservice/InputMethodService.InputMethodImpl.html
-http://developer.android.com/reference/android/inputmethodservice/InputMethodService.InputMethodSessionImpl.html
-http://developer.android.com/reference/android/inputmethodservice/InputMethodService.Insets.html
-http://developer.android.com/reference/android/view/inputmethod/InputMethodSession.EventCallback.html
-http://developer.android.com/reference/android/view/inputmethod/InputMethodSubtype.html
 http://developer.android.com/reference/java/util/InputMismatchException.html
-http://developer.android.com/reference/org/xml/sax/InputSource.html
-http://developer.android.com/reference/org/apache/http/entity/InputStreamEntity.html
-http://developer.android.com/reference/java/io/InputStreamReader.html
-http://developer.android.com/reference/android/text/InputType.html
-http://developer.android.com/reference/android/graphics/drawable/InsetDrawable.html
-http://developer.android.com/reference/java/lang/InstantiationError.html
-http://developer.android.com/reference/java/lang/InstantiationException.html
-http://developer.android.com/reference/android/app/Instrumentation.ActivityMonitor.html
-http://developer.android.com/reference/android/app/Instrumentation.ActivityResult.html
-http://developer.android.com/reference/android/content/pm/InstrumentationInfo.html
-http://developer.android.com/reference/android/test/InstrumentationTestRunner.html
-http://developer.android.com/reference/junit/framework/TestCase.html
-http://developer.android.com/reference/android/test/InstrumentationTestSuite.html
-http://developer.android.com/reference/junit/framework/TestSuite.html
-http://developer.android.com/reference/android/renderscript/Int2.html
-http://developer.android.com/reference/android/renderscript/Int3.html
-http://developer.android.com/reference/android/renderscript/Int4.html
-http://developer.android.com/reference/java/nio/IntBuffer.html
-http://developer.android.com/reference/java/lang/Integer.html
-http://developer.android.com/reference/android/content/Intent.FilterComparison.html
-http://developer.android.com/reference/android/content/Intent.ShortcutIconResource.html
-http://developer.android.com/reference/android/content/IntentFilter.AuthorityEntry.html
-http://developer.android.com/reference/android/content/IntentFilter.MalformedMimeTypeException.html
-http://developer.android.com/reference/android/content/IntentSender.html
-http://developer.android.com/reference/android/content/IntentSender.OnFinished.html
-http://developer.android.com/reference/android/content/IntentSender.SendIntentException.html
-http://developer.android.com/reference/java/net/InterfaceAddress.html
-http://developer.android.com/reference/java/lang/InternalError.html
-http://developer.android.com/reference/android/graphics/Interpolator.html
-http://developer.android.com/reference/android/graphics/Interpolator.Result.html
-http://developer.android.com/reference/java/io/InterruptedIOException.html
-http://developer.android.com/reference/java/nio/channels/InterruptibleChannel.html
-http://developer.android.com/reference/java/security/InvalidAlgorithmParameterException.html
-http://developer.android.com/reference/java/io/InvalidClassException.html
-http://developer.android.com/reference/java/security/InvalidKeyException.html
-http://developer.android.com/reference/java/security/spec/InvalidKeySpecException.html
 http://developer.android.com/reference/java/nio/InvalidMarkException.html
-http://developer.android.com/reference/java/io/InvalidObjectException.html
-http://developer.android.com/reference/java/security/InvalidParameterException.html
-http://developer.android.com/reference/java/security/spec/InvalidParameterSpecException.html
-http://developer.android.com/reference/java/util/prefs/InvalidPreferencesFormatException.html
-http://developer.android.com/reference/java/util/InvalidPropertiesFormatException.html
-http://developer.android.com/reference/java/lang/reflect/InvocationHandler.html
-http://developer.android.com/reference/java/lang/reflect/InvocationTargetException.html
-http://developer.android.com/reference/java/io/IOError.html
-http://developer.android.com/reference/android/nfc/tech/IsoDep.html
-http://developer.android.com/reference/android/nfc/Tag.html
-http://developer.android.com/reference/android/test/IsolatedContext.html
-http://developer.android.com/reference/java/lang/Iterable.html
-http://developer.android.com/reference/javax/crypto/spec/IvParameterSpec.html
-http://developer.android.com/reference/java/util/jar/JarEntry.html
-http://developer.android.com/reference/java/util/jar/JarException.html
-http://developer.android.com/reference/java/util/jar/JarFile.html
-http://developer.android.com/reference/java/util/jar/JarInputStream.html
-http://developer.android.com/reference/java/util/jar/JarOutputStream.html
-http://developer.android.com/reference/java/net/JarURLConnection.html
-http://developer.android.com/reference/android/media/JetPlayer.html
-http://developer.android.com/reference/android/media/JetPlayer.OnJetEventListener.html
-http://developer.android.com/reference/org/json/JSONArray.html
-http://developer.android.com/reference/org/json/JSONException.html
-http://developer.android.com/reference/org/json/JSONObject.html
-http://developer.android.com/reference/android/util/JsonReader.html
-http://developer.android.com/reference/org/json/JSONStringer.html
-http://developer.android.com/reference/android/util/JsonToken.html
-http://developer.android.com/reference/org/json/JSONTokener.html
-http://developer.android.com/reference/android/util/JsonWriter.html
-http://developer.android.com/reference/android/webkit/JsPromptResult.html
-http://developer.android.com/reference/android/webkit/JsResult.html
-http://developer.android.com/reference/android/webkit/WebChromeClient.html
-http://developer.android.com/reference/java/security/Key.html
-http://developer.android.com/reference/javax/crypto/KeyAgreement.html
-http://developer.android.com/reference/javax/crypto/KeyAgreementSpi.html
-http://developer.android.com/reference/android/inputmethodservice/Keyboard.html
-http://developer.android.com/reference/android/inputmethodservice/Keyboard.Key.html
-http://developer.android.com/reference/android/inputmethodservice/Keyboard.Row.html
-http://developer.android.com/reference/android/inputmethodservice/KeyboardView.html
-http://developer.android.com/reference/android/inputmethodservice/KeyboardView.OnKeyboardActionListener.html
-http://developer.android.com/reference/android/security/KeyChain.html
-http://developer.android.com/reference/android/security/KeyChainAliasCallback.html
-http://developer.android.com/reference/android/security/KeyChainException.html
-http://developer.android.com/reference/android/support/v4/view/KeyEventCompat.html
-http://developer.android.com/reference/java/security/KeyException.html
-http://developer.android.com/reference/java/security/KeyFactory.html
-http://developer.android.com/reference/java/security/KeyFactorySpi.html
-http://developer.android.com/reference/javax/crypto/KeyGenerator.html
-http://developer.android.com/reference/javax/crypto/KeyGeneratorSpi.html
-http://developer.android.com/reference/android/app/KeyguardManager.html
-http://developer.android.com/reference/android/app/KeyguardManager.KeyguardLock.html
-http://developer.android.com/reference/android/app/KeyguardManager.OnKeyguardExitResult.html
-http://developer.android.com/reference/java/security/KeyManagementException.html
-http://developer.android.com/reference/javax/net/ssl/KeyManager.html
-http://developer.android.com/reference/javax/net/ssl/KeyManagerFactory.html
-http://developer.android.com/reference/javax/net/ssl/KeyManagerFactorySpi.html
-http://developer.android.com/reference/java/security/KeyPair.html
-http://developer.android.com/reference/java/security/KeyPairGenerator.html
-http://developer.android.com/reference/java/security/KeyPairGeneratorSpi.html
-http://developer.android.com/reference/java/security/KeyRep.html
-http://developer.android.com/reference/java/security/KeyRep.Type.html
-http://developer.android.com/reference/java/security/spec/KeySpec.html
-http://developer.android.com/reference/java/security/KeyStore.Builder.html
-http://developer.android.com/reference/java/security/KeyStore.CallbackHandlerProtection.html
-http://developer.android.com/reference/java/security/KeyStore.Entry.html
-http://developer.android.com/reference/java/security/KeyStore.LoadStoreParameter.html
-http://developer.android.com/reference/java/security/KeyStore.PasswordProtection.html
-http://developer.android.com/reference/java/security/KeyStore.PrivateKeyEntry.html
-http://developer.android.com/reference/java/security/KeyStore.ProtectionParameter.html
-http://developer.android.com/reference/java/security/KeyStore.SecretKeyEntry.html
-http://developer.android.com/reference/java/security/KeyStore.TrustedCertificateEntry.html
-http://developer.android.com/reference/javax/net/ssl/KeyStoreBuilderParameters.html
-http://developer.android.com/reference/java/security/KeyStoreException.html
-http://developer.android.com/reference/java/security/KeyStoreSpi.html
-http://developer.android.com/reference/android/content/pm/LabeledIntent.html
-http://developer.android.com/reference/org/apache/http/util/LangUtils.html
-http://developer.android.com/reference/android/test/suitebuilder/annotation/LargeTest.html
-http://developer.android.com/reference/android/app/LauncherActivity.html
-http://developer.android.com/reference/android/app/LauncherActivity.IconResizer.html
-http://developer.android.com/reference/android/app/LauncherActivity.ListItem.html
-http://developer.android.com/reference/org/apache/http/impl/entity/LaxContentLengthStrategy.html
-http://developer.android.com/reference/android/graphics/drawable/LayerDrawable.html
-http://developer.android.com/reference/org/apache/http/conn/scheme/LayeredSocketFactory.html
-http://developer.android.com/reference/android/graphics/LayerRasterizer.html
-http://developer.android.com/reference/android/text/Layout.html
-http://developer.android.com/reference/android/text/Layout.Alignment.html
-http://developer.android.com/reference/android/text/Layout.Directions.html
-http://developer.android.com/reference/java/security/cert/LDAPCertStoreParameters.html
-http://developer.android.com/reference/android/text/style/LeadingMarginSpan.html
-http://developer.android.com/reference/android/text/style/LeadingMarginSpan.LeadingMarginSpan2.html
-http://developer.android.com/reference/android/text/style/LeadingMarginSpan.Standard.html
-http://developer.android.com/reference/java/util/logging/Level.html
-http://developer.android.com/reference/android/graphics/LightingColorFilter.html
-http://developer.android.com/reference/android/graphics/LinearGradient.html
-http://developer.android.com/reference/android/text/style/LineBackgroundSpan.html
-http://developer.android.com/reference/org/apache/http/message/LineFormatter.html
-http://developer.android.com/reference/android/text/style/LineHeightSpan.html
-http://developer.android.com/reference/android/text/style/LineHeightSpan.WithDensity.html
-http://developer.android.com/reference/java/io/LineNumberInputStream.html
-http://developer.android.com/reference/java/io/LineNumberReader.html
-http://developer.android.com/reference/org/apache/http/message/LineParser.html
-http://developer.android.com/reference/java/lang/LinkageError.html
-http://developer.android.com/reference/java/util/concurrent/LinkedBlockingDeque.html
-http://developer.android.com/reference/java/util/concurrent/LinkedBlockingQueue.html
-http://developer.android.com/reference/java/util/LinkedHashSet.html
-http://developer.android.com/reference/java/util/LinkedList.html
-http://developer.android.com/reference/android/text/util/Linkify.html
-http://developer.android.com/reference/android/text/util/Linkify.MatchFilter.html
-http://developer.android.com/reference/android/text/util/Linkify.TransformFilter.html
-http://developer.android.com/reference/android/text/method/LinkMovementMethod.html
-http://developer.android.com/reference/android/support/v4/app/ListFragment.html
-http://developer.android.com/reference/java/util/ListIterator.html
-http://developer.android.com/reference/android/preference/ListPreference.html
-http://developer.android.com/reference/java/util/ListResourceBundle.html
-http://developer.android.com/reference/android/provider/LiveFolders.html
-http://developer.android.com/reference/android/content/Loader.ForceLoadContentObserver.html
-http://developer.android.com/reference/android/content/Loader.OnLoadCanceledListener.html
-http://developer.android.com/reference/android/content/Loader.OnLoadCompleteListener.html
-http://developer.android.com/reference/android/app/LoaderManager.html
-http://developer.android.com/reference/android/support/v4/app/LoaderManager.html
-http://developer.android.com/reference/android/app/LoaderManager.LoaderCallbacks.html
-http://developer.android.com/reference/android/support/v4/app/LoaderManager.LoaderCallbacks.html
-http://developer.android.com/reference/android/test/LoaderTestCase.html
-http://developer.android.com/reference/android/app/LocalActivityManager.html
-http://developer.android.com/reference/java/util/Locale.html
-http://developer.android.com/reference/android/net/LocalServerSocket.html
-http://developer.android.com/reference/android/net/LocalSocket.html
-http://developer.android.com/reference/android/net/LocalSocketAddress.html
-http://developer.android.com/reference/android/net/LocalSocketAddress.Namespace.html
-http://developer.android.com/reference/android/location/Location.html
-http://developer.android.com/reference/android/location/LocationListener.html
-http://developer.android.com/reference/android/location/LocationManager.html
-http://developer.android.com/reference/android/location/LocationProvider.html
-http://developer.android.com/reference/org/xml/sax/Locator.html
-http://developer.android.com/reference/org/xml/sax/ext/Locator2.html
-http://developer.android.com/reference/org/xml/sax/ext/Locator2Impl.html
-http://developer.android.com/reference/org/xml/sax/helpers/LocatorImpl.html
-http://developer.android.com/reference/java/util/concurrent/locks/LockSupport.html
-http://developer.android.com/reference/android/util/Log.html
-http://developer.android.com/reference/java/util/logging/Logger.html
-http://developer.android.com/reference/java/util/logging/LoggingMXBean.html
-http://developer.android.com/reference/java/util/logging/LoggingPermission.html
-http://developer.android.com/reference/org/apache/http/impl/conn/LoggingSessionInputBuffer.html
-http://developer.android.com/reference/org/apache/http/impl/conn/LoggingSessionOutputBuffer.html
-http://developer.android.com/reference/javax/security/auth/login/LoginException.html
-http://developer.android.com/reference/android/text/LoginFilter.html
-http://developer.android.com/reference/android/text/LoginFilter.PasswordFilterGMail.html
-http://developer.android.com/reference/android/text/LoginFilter.UsernameFilterGeneric.html
-http://developer.android.com/reference/android/text/LoginFilter.UsernameFilterGMail.html
-http://developer.android.com/reference/java/util/logging/LogManager.html
-http://developer.android.com/reference/android/util/LogPrinter.html
-http://developer.android.com/reference/android/util/Printer.html
-http://developer.android.com/reference/java/lang/Long.html
-http://developer.android.com/reference/android/renderscript/Long2.html
-http://developer.android.com/reference/android/renderscript/Long3.html
-http://developer.android.com/reference/android/renderscript/Long4.html
-http://developer.android.com/reference/java/nio/LongBuffer.html
-http://developer.android.com/reference/android/util/LongSparseArray.html
-http://developer.android.com/reference/android/os/Looper.html
-http://developer.android.com/reference/org/w3c/dom/ls/LSException.html
-http://developer.android.com/reference/org/w3c/dom/ls/LSInput.html
-http://developer.android.com/reference/org/w3c/dom/ls/LSOutput.html
-http://developer.android.com/reference/org/w3c/dom/ls/LSParser.html
-http://developer.android.com/reference/org/w3c/dom/ls/LSParserFilter.html
-http://developer.android.com/reference/org/w3c/dom/ls/LSResourceResolver.html
-http://developer.android.com/reference/org/w3c/dom/ls/LSSerializer.html
-http://developer.android.com/reference/javax/crypto/Mac.html
-http://developer.android.com/reference/javax/crypto/MacSpi.html
-http://developer.android.com/reference/android/net/MailTo.html
-http://developer.android.com/reference/org/apache/http/MalformedChunkCodingException.html
-http://developer.android.com/reference/org/apache/http/cookie/MalformedCookieException.html
-http://developer.android.com/reference/java/nio/charset/MalformedInputException.html
-http://developer.android.com/reference/android/util/MalformedJsonException.html
-http://developer.android.com/reference/java/lang/reflect/MalformedParameterizedTypeException.html
-http://developer.android.com/reference/java/net/MalformedURLException.html
-http://developer.android.com/reference/javax/net/ssl/ManagerFactoryParameters.html
-http://developer.android.com/reference/android/Manifest.html
-http://developer.android.com/reference/java/util/jar/Manifest.html
-http://developer.android.com/reference/android/Manifest.permission_group.html
-http://developer.android.com/reference/java/util/Map.Entry.html
-http://developer.android.com/reference/java/nio/MappedByteBuffer.html
-http://developer.android.com/reference/android/graphics/MaskFilter.html
-http://developer.android.com/reference/android/text/style/MaskFilterSpan.html
-http://developer.android.com/reference/java/util/regex/Matcher.html
-http://developer.android.com/reference/java/util/regex/MatchResult.html
-http://developer.android.com/reference/java/util/regex/Pattern.html
-http://developer.android.com/reference/java/math/MathContext.html
-http://developer.android.com/reference/android/opengl/Matrix.html
-http://developer.android.com/reference/android/graphics/Matrix.ScaleToFit.html
-http://developer.android.com/reference/android/renderscript/Matrix2f.html
-http://developer.android.com/reference/android/renderscript/Matrix3f.html
-http://developer.android.com/reference/android/renderscript/Matrix4f.html
-http://developer.android.com/reference/android/database/MatrixCursor.RowBuilder.html
-http://developer.android.com/reference/android/media/MediaActionSound.html
-http://developer.android.com/reference/android/media/MediaCodec.html
-http://developer.android.com/reference/android/media/MediaCodec.BufferInfo.html
-http://developer.android.com/reference/android/media/MediaCodec.CryptoException.html
-http://developer.android.com/reference/android/media/MediaCodec.CryptoInfo.html
-http://developer.android.com/reference/android/media/MediaCodecInfo.html
-http://developer.android.com/reference/android/media/MediaCodecInfo.CodecCapabilities.html
-http://developer.android.com/reference/android/media/MediaCodecInfo.CodecProfileLevel.html
-http://developer.android.com/reference/android/media/MediaCodecList.html
-http://developer.android.com/reference/android/media/MediaCrypto.html
-http://developer.android.com/reference/android/media/MediaCryptoException.html
-http://developer.android.com/reference/android/media/MediaExtractor.html
-http://developer.android.com/reference/android/media/MediaFormat.html
-http://developer.android.com/reference/android/media/MediaPlayer.html
-http://developer.android.com/reference/android/media/MediaPlayer.OnBufferingUpdateListener.html
-http://developer.android.com/reference/android/media/MediaPlayer.OnCompletionListener.html
-http://developer.android.com/reference/android/media/MediaPlayer.OnErrorListener.html
-http://developer.android.com/reference/android/media/MediaPlayer.OnInfoListener.html
-http://developer.android.com/reference/android/media/MediaPlayer.OnPreparedListener.html
-http://developer.android.com/reference/android/media/MediaPlayer.OnSeekCompleteListener.html
-http://developer.android.com/reference/android/media/MediaPlayer.OnTimedTextListener.html
-http://developer.android.com/reference/android/media/MediaPlayer.OnVideoSizeChangedListener.html
-http://developer.android.com/reference/android/media/MediaPlayer.TrackInfo.html
-http://developer.android.com/reference/android/media/MediaRecorder.html
-http://developer.android.com/reference/android/media/MediaRecorder.AudioEncoder.html
-http://developer.android.com/reference/android/media/MediaRecorder.AudioSource.html
-http://developer.android.com/reference/android/media/MediaRecorder.OnErrorListener.html
-http://developer.android.com/reference/android/media/MediaRecorder.OnInfoListener.html
-http://developer.android.com/reference/android/media/MediaRecorder.OutputFormat.html
-http://developer.android.com/reference/android/media/MediaRecorder.VideoEncoder.html
-http://developer.android.com/reference/android/media/MediaRecorder.VideoSource.html
-http://developer.android.com/reference/android/app/MediaRouteActionProvider.html
-http://developer.android.com/reference/android/app/MediaRouteButton.html
-http://developer.android.com/reference/android/media/MediaRouter.html
-http://developer.android.com/reference/android/media/MediaRouter.Callback.html
-http://developer.android.com/reference/android/media/MediaRouter.RouteCategory.html
-http://developer.android.com/reference/android/media/MediaRouter.RouteGroup.html
-http://developer.android.com/reference/android/media/MediaRouter.RouteInfo.html
-http://developer.android.com/reference/android/media/MediaRouter.SimpleCallback.html
-http://developer.android.com/reference/android/media/MediaRouter.UserRouteInfo.html
-http://developer.android.com/reference/android/media/MediaRouter.VolumeCallback.html
-http://developer.android.com/reference/android/media/MediaScannerConnection.html
-http://developer.android.com/reference/android/media/MediaScannerConnection.MediaScannerConnectionClient.html
-http://developer.android.com/reference/android/media/MediaScannerConnection.OnScanCompletedListener.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.AlbumColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.Albums.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.ArtistColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.Artists.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.Artists.Albums.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.AudioColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.Genres.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.Genres.Members.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.GenresColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.Playlists.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.Playlists.Members.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.PlaylistsColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Files.html
-http://developer.android.com/reference/android/provider/MediaStore.Files.FileColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Images.html
-http://developer.android.com/reference/android/provider/MediaStore.Images.ImageColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Images.Media.html
-http://developer.android.com/reference/android/provider/MediaStore.Images.Thumbnails.html
-http://developer.android.com/reference/android/provider/MediaStore.MediaColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Video.html
-http://developer.android.com/reference/android/provider/MediaStore.Video.Media.html
-http://developer.android.com/reference/android/provider/MediaStore.Video.Thumbnails.html
-http://developer.android.com/reference/android/provider/MediaStore.Video.VideoColumns.html
-http://developer.android.com/reference/android/media/MediaSyncEvent.html
-http://developer.android.com/reference/android/test/suitebuilder/annotation/MediumTest.html
-http://developer.android.com/reference/java/lang/reflect/Member.html
-http://developer.android.com/reference/android/os/MemoryFile.html
-http://developer.android.com/reference/java/util/logging/MemoryHandler.html
-http://developer.android.com/reference/android/support/v4/view/MenuCompat.html
-http://developer.android.com/reference/android/support/v4/view/MenuItemCompat.html
-http://developer.android.com/reference/android/database/MergeCursor.html
-http://developer.android.com/reference/android/renderscript/Mesh.html
-http://developer.android.com/reference/android/renderscript/Mesh.AllocationBuilder.html
-http://developer.android.com/reference/android/renderscript/Mesh.Builder.html
-http://developer.android.com/reference/android/renderscript/Mesh.Primitive.html
-http://developer.android.com/reference/android/renderscript/Mesh.TriangleMeshBuilder.html
-http://developer.android.com/reference/java/security/MessageDigest.html
-http://developer.android.com/reference/java/security/MessageDigestSpi.html
-http://developer.android.com/reference/java/text/MessageFormat.html
-http://developer.android.com/reference/java/text/MessageFormat.Field.html
-http://developer.android.com/reference/android/os/MessageQueue.IdleHandler.html
-http://developer.android.com/reference/android/text/method/MetaKeyKeyListener.html
-http://developer.android.com/reference/java/lang/reflect/Method.html
-http://developer.android.com/reference/org/apache/http/MethodNotSupportedException.html
-http://developer.android.com/reference/android/text/style/MetricAffectingSpan.html
-http://developer.android.com/reference/java/security/spec/MGF1ParameterSpec.html
-http://developer.android.com/reference/android/nfc/tech/MifareClassic.html
-http://developer.android.com/reference/android/nfc/tech/MifareUltralight.html
-http://developer.android.com/reference/android/webkit/MimeTypeMap.html
 http://developer.android.com/reference/java/util/MissingFormatArgumentException.html
 http://developer.android.com/reference/java/util/MissingFormatWidthException.html
-http://developer.android.com/reference/java/util/MissingResourceException.html
-http://developer.android.com/reference/android/test/mock/MockApplication.html
-http://developer.android.com/reference/android/test/mock/MockContentProvider.html
-http://developer.android.com/reference/android/test/mock/MockContentResolver.html
-http://developer.android.com/reference/android/test/mock/MockContext.html
-http://developer.android.com/reference/android/test/mock/MockCursor.html
-http://developer.android.com/reference/android/test/mock/MockDialogInterface.html
-http://developer.android.com/reference/android/test/mock/MockPackageManager.html
-http://developer.android.com/reference/android/test/mock/MockResources.html
-http://developer.android.com/reference/java/lang/reflect/Modifier.html
-http://developer.android.com/reference/android/util/MonthDisplayHelper.html
-http://developer.android.com/reference/android/test/MoreAsserts.html
-http://developer.android.com/reference/android/support/v4/view/MotionEventCompat.html
-http://developer.android.com/reference/android/text/method/MovementMethod.html
-http://developer.android.com/reference/android/graphics/Movie.html
-http://developer.android.com/reference/android/mtp/MtpConstants.html
-http://developer.android.com/reference/android/mtp/MtpDevice.html
-http://developer.android.com/reference/android/mtp/MtpDeviceInfo.html
-http://developer.android.com/reference/android/mtp/MtpObjectInfo.html
-http://developer.android.com/reference/android/mtp/MtpStorageInfo.html
-http://developer.android.com/reference/java/net/MulticastSocket.html
-http://developer.android.com/reference/android/preference/MultiSelectListPreference.html
-http://developer.android.com/reference/android/text/method/MultiTapKeyListener.html
-http://developer.android.com/reference/android/content/MutableContextWrapper.html
-http://developer.android.com/reference/org/w3c/dom/NamedNodeMap.html
-http://developer.android.com/reference/org/w3c/dom/NameList.html
-http://developer.android.com/reference/javax/xml/namespace/NamespaceContext.html
-http://developer.android.com/reference/org/xml/sax/helpers/NamespaceSupport.html
-http://developer.android.com/reference/org/apache/http/NameValuePair.html
-http://developer.android.com/reference/android/app/NativeActivity.html
-http://developer.android.com/reference/java/util/SortedMap.html
-http://developer.android.com/reference/java/util/SortedSet.html
-http://developer.android.com/reference/android/support/v4/app/NavUtils.html
-http://developer.android.com/reference/java/sql/NClob.html
-http://developer.android.com/reference/android/nfc/tech/Ndef.html
-http://developer.android.com/reference/android/nfc/tech/NdefFormatable.html
-http://developer.android.com/reference/android/nfc/NdefMessage.html
-http://developer.android.com/reference/android/nfc/NdefRecord.html
-http://developer.android.com/reference/java/lang/NegativeArraySizeException.html
-http://developer.android.com/reference/android/telephony/NeighboringCellInfo.html
-http://developer.android.com/reference/java/net/NetPermission.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDomainHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDraftHeaderParser.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDraftSpec.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDraftSpecFactory.html
-http://developer.android.com/reference/android/accounts/NetworkErrorException.html
-http://developer.android.com/reference/android/net/NetworkInfo.html
-http://developer.android.com/reference/android/net/NetworkInfo.DetailedState.html
-http://developer.android.com/reference/android/net/NetworkInfo.State.html
-http://developer.android.com/reference/java/net/NetworkInterface.html
-http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html
-http://developer.android.com/reference/android/nfc/tech/NfcA.html
-http://developer.android.com/reference/android/nfc/NfcAdapter.html
-http://developer.android.com/reference/android/nfc/NfcAdapter.CreateBeamUrisCallback.html
-http://developer.android.com/reference/android/nfc/NfcAdapter.CreateNdefMessageCallback.html
-http://developer.android.com/reference/android/nfc/NfcAdapter.OnNdefPushCompleteCallback.html
-http://developer.android.com/reference/android/nfc/tech/NfcB.html
-http://developer.android.com/reference/android/nfc/NfcEvent.html
-http://developer.android.com/reference/android/nfc/tech/NfcF.html
-http://developer.android.com/reference/android/nfc/NfcManager.html
-http://developer.android.com/reference/android/nfc/tech/NfcV.html
-http://developer.android.com/reference/android/graphics/NinePatch.html
-http://developer.android.com/reference/android/graphics/drawable/NinePatchDrawable.html
-http://developer.android.com/reference/java/lang/NoClassDefFoundError.html
 http://developer.android.com/reference/java/nio/channels/NoConnectionPendingException.html
-http://developer.android.com/reference/org/apache/http/impl/NoConnectionReuseStrategy.html
-http://developer.android.com/reference/android/text/NoCopySpan.html
-http://developer.android.com/reference/android/text/NoCopySpan.Concrete.html
-http://developer.android.com/reference/org/w3c/dom/Node.html
-http://developer.android.com/reference/java/util/prefs/NodeChangeEvent.html
-http://developer.android.com/reference/java/util/prefs/NodeChangeListener.html
-http://developer.android.com/reference/org/w3c/dom/NodeList.html
-http://developer.android.com/reference/org/apache/http/NoHttpResponseException.html
-http://developer.android.com/reference/android/media/audiofx/NoiseSuppressor.html
 http://developer.android.com/reference/java/nio/channels/NonReadableChannelException.html
-http://developer.android.com/reference/org/apache/http/client/NonRepeatableRequestException.html
 http://developer.android.com/reference/java/nio/channels/NonWritableChannelException.html
-http://developer.android.com/reference/java/text/Normalizer.html
-http://developer.android.com/reference/java/text/Normalizer.Form.html
-http://developer.android.com/reference/java/net/NoRouteToHostException.html
-http://developer.android.com/reference/java/security/NoSuchAlgorithmException.html
-http://developer.android.com/reference/java/util/NoSuchElementException.html
-http://developer.android.com/reference/java/lang/NoSuchFieldError.html
-http://developer.android.com/reference/java/lang/NoSuchFieldException.html
-http://developer.android.com/reference/java/lang/NoSuchMethodError.html
-http://developer.android.com/reference/java/lang/NoSuchMethodException.html
-http://developer.android.com/reference/javax/crypto/NoSuchPaddingException.html
-http://developer.android.com/reference/android/util/NoSuchPropertyException.html
-http://developer.android.com/reference/java/security/NoSuchProviderException.html
-http://developer.android.com/reference/java/io/NotActiveException.html
-http://developer.android.com/reference/org/w3c/dom/Notation.html
-http://developer.android.com/reference/android/app/Notification.BigPictureStyle.html
-http://developer.android.com/reference/android/app/Notification.BigTextStyle.html
-http://developer.android.com/reference/android/app/Notification.Builder.html
-http://developer.android.com/reference/android/app/Notification.InboxStyle.html
-http://developer.android.com/reference/android/app/Notification.Style.html
-http://developer.android.com/reference/android/support/v4/app/NotificationCompat.html
-http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html
-http://developer.android.com/reference/java/io/NotSerializableException.html
 http://developer.android.com/reference/java/nio/channels/NotYetBoundException.html
 http://developer.android.com/reference/java/nio/channels/NotYetConnectedException.html
-http://developer.android.com/reference/android/net/nsd/NsdManager.html
-http://developer.android.com/reference/android/net/nsd/NsdManager.DiscoveryListener.html
-http://developer.android.com/reference/android/net/nsd/NsdManager.RegistrationListener.html
-http://developer.android.com/reference/android/net/nsd/NsdManager.ResolveListener.html
-http://developer.android.com/reference/android/net/nsd/NsdServiceInfo.html
-http://developer.android.com/reference/org/apache/http/impl/auth/NTLMEngine.html
-http://developer.android.com/reference/org/apache/http/impl/auth/NTLMEngineException.html
-http://developer.android.com/reference/org/apache/http/impl/auth/NTLMScheme.html
-http://developer.android.com/reference/javax/crypto/NullCipher.html
-http://developer.android.com/reference/java/lang/Number.html
-http://developer.android.com/reference/java/lang/Short.html
-http://developer.android.com/reference/java/text/NumberFormat.Field.html
-http://developer.android.com/reference/java/lang/NumberFormatException.html
-http://developer.android.com/reference/android/text/method/NumberKeyListener.html
-http://developer.android.com/reference/java/awt/font/NumericShaper.html
-http://developer.android.com/reference/javax/crypto/spec/OAEPParameterSpec.html
-http://developer.android.com/reference/android/content/res/ObbInfo.html
-http://developer.android.com/reference/android/content/res/ObbScanner.html
-http://developer.android.com/reference/java/io/ObjectInput.html
-http://developer.android.com/reference/java/io/ObjectInputStream.html
-http://developer.android.com/reference/java/io/ObjectInputStream.GetField.html
-http://developer.android.com/reference/java/io/ObjectInputValidation.html
-http://developer.android.com/reference/java/io/ObjectOutput.html
-http://developer.android.com/reference/java/io/ObjectOutputStream.html
-http://developer.android.com/reference/java/io/ObjectOutputStream.PutField.html
-http://developer.android.com/reference/java/io/ObjectStreamClass.html
-http://developer.android.com/reference/java/io/ObjectStreamConstants.html
-http://developer.android.com/reference/java/io/ObjectStreamException.html
-http://developer.android.com/reference/java/io/ObjectStreamField.html
-http://developer.android.com/reference/java/util/Observable.html
-http://developer.android.com/reference/java/util/Observer.html
-http://developer.android.com/reference/android/accounts/OnAccountsUpdateListener.html
-http://developer.android.com/reference/android/os/storage/OnObbStateChangeListener.html
-http://developer.android.com/reference/android/os/storage/StorageManager.html
-http://developer.android.com/reference/dalvik/bytecode/OpcodeInfo.html
-http://developer.android.com/reference/dalvik/bytecode/Opcodes.html
-http://developer.android.com/reference/android/provider/OpenableColumns.html
-http://developer.android.com/reference/android/content/OperationApplicationException.html
-http://developer.android.com/reference/android/accounts/OperationCanceledException.html
-http://developer.android.com/reference/android/os/OperationCanceledException.html
-http://developer.android.com/reference/java/io/OptionalDataException.html
-http://developer.android.com/reference/android/gesture/OrientedBoundingBox.html
-http://developer.android.com/reference/java/lang/OutOfMemoryError.html
-http://developer.android.com/reference/javax/xml/transform/OutputKeys.html
-http://developer.android.com/reference/java/io/OutputStreamWriter.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/OvalShape.html
 http://developer.android.com/reference/java/nio/channels/OverlappingFileLockException.html
-http://developer.android.com/reference/java/lang/Override.html
-http://developer.android.com/reference/java/util/jar/Pack200.html
-http://developer.android.com/reference/java/util/jar/Pack200.Packer.html
-http://developer.android.com/reference/java/util/jar/Pack200.Unpacker.html
-http://developer.android.com/reference/java/lang/Package.html
-http://developer.android.com/reference/android/content/pm/PackageInfo.html
-http://developer.android.com/reference/android/content/pm/PackageItemInfo.html
-http://developer.android.com/reference/android/content/pm/PackageItemInfo.DisplayNameComparator.html
-http://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException.html
-http://developer.android.com/reference/android/content/pm/PackageStats.html
-http://developer.android.com/reference/android/support/v4/view/PagerTabStrip.html
-http://developer.android.com/reference/android/support/v4/view/PagerTitleStrip.html
-http://developer.android.com/reference/android/graphics/Paint.Align.html
-http://developer.android.com/reference/android/graphics/Paint.Cap.html
-http://developer.android.com/reference/android/graphics/Paint.FontMetrics.html
-http://developer.android.com/reference/android/graphics/Paint.FontMetricsInt.html
-http://developer.android.com/reference/android/graphics/Paint.Join.html
-http://developer.android.com/reference/android/graphics/Paint.Style.html
-http://developer.android.com/reference/android/graphics/drawable/PaintDrawable.html
-http://developer.android.com/reference/android/graphics/PaintFlagsDrawFilter.html
-http://developer.android.com/reference/android/util/Pair.html
-http://developer.android.com/reference/android/text/style/ParagraphStyle.html
-http://developer.android.com/reference/java/lang/reflect/ParameterizedType.html
-http://developer.android.com/reference/java/sql/ParameterMetaData.html
-http://developer.android.com/reference/android/os/Parcel.html
-http://developer.android.com/reference/android/os/Parcelable.ClassLoaderCreator.html
-http://developer.android.com/reference/android/os/Parcelable.Creator.html
-http://developer.android.com/reference/android/support/v4/os/ParcelableCompat.html
-http://developer.android.com/reference/android/support/v4/os/ParcelableCompatCreatorCallbacks.html
-http://developer.android.com/reference/android/text/ParcelableSpan.html
-http://developer.android.com/reference/android/os/ParcelFileDescriptor.AutoCloseInputStream.html
-http://developer.android.com/reference/android/os/ParcelFileDescriptor.AutoCloseOutputStream.html
-http://developer.android.com/reference/android/os/ParcelFormatException.html
-http://developer.android.com/reference/android/os/ParcelUuid.html
-http://developer.android.com/reference/java/util/UUID.html
-http://developer.android.com/reference/android/net/ParseException.html
-http://developer.android.com/reference/java/text/ParseException.html
-http://developer.android.com/reference/org/apache/http/ParseException.html
-http://developer.android.com/reference/java/text/ParsePosition.html
-http://developer.android.com/reference/org/xml/sax/Parser.html
-http://developer.android.com/reference/org/xml/sax/XMLReader.html
-http://developer.android.com/reference/org/xml/sax/helpers/ParserAdapter.html
-http://developer.android.com/reference/javax/xml/parsers/ParserConfigurationException.html
-http://developer.android.com/reference/org/apache/http/message/ParserCursor.html
-http://developer.android.com/reference/org/xml/sax/helpers/ParserFactory.html
-http://developer.android.com/reference/java/net/PasswordAuthentication.html
-http://developer.android.com/reference/javax/security/auth/callback/PasswordCallback.html
-http://developer.android.com/reference/android/text/method/PasswordTransformationMethod.html
-http://developer.android.com/reference/android/graphics/Path.html
-http://developer.android.com/reference/android/graphics/Path.Direction.html
-http://developer.android.com/reference/android/graphics/Path.FillType.html
-http://developer.android.com/reference/dalvik/system/PathClassLoader.html
-http://developer.android.com/reference/android/graphics/PathDashPathEffect.html
-http://developer.android.com/reference/android/graphics/PathDashPathEffect.Style.html
-http://developer.android.com/reference/android/graphics/PathEffect.html
-http://developer.android.com/reference/android/graphics/PathMeasure.html
-http://developer.android.com/reference/android/content/pm/PathPermission.html
-http://developer.android.com/reference/android/content/pm/ProviderInfo.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/PathShape.html
-http://developer.android.com/reference/android/util/Patterns.html
 http://developer.android.com/reference/java/util/regex/PatternSyntaxException.html
-http://developer.android.com/reference/javax/crypto/interfaces/PBEKey.html
-http://developer.android.com/reference/javax/crypto/spec/PBEKeySpec.html
-http://developer.android.com/reference/javax/crypto/spec/PBEParameterSpec.html
-http://developer.android.com/reference/android/app/PendingIntent.CanceledException.html
-http://developer.android.com/reference/android/app/PendingIntent.OnFinished.html
-http://developer.android.com/reference/android/test/PerformanceTestCase.html
-http://developer.android.com/reference/android/test/PerformanceTestCase.Intermediates.html
-http://developer.android.com/reference/android/content/PeriodicSync.html
-http://developer.android.com/reference/java/security/Permission.html
-http://developer.android.com/reference/java/security/PermissionCollection.html
-http://developer.android.com/reference/android/content/pm/PermissionGroupInfo.html
-http://developer.android.com/reference/android/content/pm/PermissionInfo.html
-http://developer.android.com/reference/java/security/Permissions.html
-http://developer.android.com/reference/android/telephony/PhoneNumberFormattingTextWatcher.html
-http://developer.android.com/reference/android/telephony/PhoneNumberUtils.html
-http://developer.android.com/reference/android/telephony/PhoneStateListener.html
-http://developer.android.com/reference/android/graphics/Picture.html
-http://developer.android.com/reference/android/graphics/drawable/PictureDrawable.html
-http://developer.android.com/reference/java/nio/channels/Pipe.html
-http://developer.android.com/reference/java/nio/channels/Pipe.SinkChannel.html
-http://developer.android.com/reference/java/nio/channels/Pipe.SourceChannel.html
-http://developer.android.com/reference/java/io/PipedInputStream.html
-http://developer.android.com/reference/java/io/PipedOutputStream.html
-http://developer.android.com/reference/java/io/PipedReader.html
-http://developer.android.com/reference/java/io/PipedWriter.html
-http://developer.android.com/reference/android/graphics/PixelFormat.html
-http://developer.android.com/reference/android/graphics/PixelXorXfermode.html
-http://developer.android.com/reference/java/security/spec/PKCS8EncodedKeySpec.html
-http://developer.android.com/reference/java/security/cert/PKIXBuilderParameters.html
-http://developer.android.com/reference/java/security/cert/PKIXCertPathBuilderResult.html
-http://developer.android.com/reference/java/security/cert/PKIXCertPathChecker.html
-http://developer.android.com/reference/java/security/cert/PKIXCertPathValidatorResult.html
-http://developer.android.com/reference/java/security/cert/PKIXParameters.html
-http://developer.android.com/reference/org/apache/http/conn/scheme/PlainSocketFactory.html
-http://developer.android.com/reference/android/webkit/PluginStub.html
-http://developer.android.com/reference/android/graphics/PointF.html
-http://developer.android.com/reference/java/security/Policy.html
-http://developer.android.com/reference/java/security/Policy.Parameters.html
-http://developer.android.com/reference/java/security/cert/PolicyNode.html
-http://developer.android.com/reference/java/security/cert/PolicyQualifierInfo.html
-http://developer.android.com/reference/java/security/PolicySpi.html
-http://developer.android.com/reference/android/graphics/PorterDuff.html
-http://developer.android.com/reference/android/graphics/PorterDuff.Mode.html
-http://developer.android.com/reference/android/graphics/PorterDuffColorFilter.html
-http://developer.android.com/reference/android/graphics/PorterDuffXfermode.html
-http://developer.android.com/reference/java/net/PortUnreachableException.html
-http://developer.android.com/reference/android/os/PowerManager.html
-http://developer.android.com/reference/android/os/PowerManager.WakeLock.html
-http://developer.android.com/reference/android/gesture/Prediction.html
-http://developer.android.com/reference/android/preference/Preference.BaseSavedState.html
-http://developer.android.com/reference/android/preference/Preference.OnPreferenceChangeListener.html
-http://developer.android.com/reference/android/preference/Preference.OnPreferenceClickListener.html
-http://developer.android.com/reference/android/preference/PreferenceActivity.Header.html
-http://developer.android.com/reference/android/preference/PreferenceCategory.html
-http://developer.android.com/reference/java/util/prefs/PreferenceChangeEvent.html
-http://developer.android.com/reference/java/util/prefs/PreferenceChangeListener.html
-http://developer.android.com/reference/android/preference/PreferenceFragment.OnPreferenceStartFragmentCallback.html
-http://developer.android.com/reference/android/preference/PreferenceGroup.html
-http://developer.android.com/reference/android/preference/PreferenceManager.html
-http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityDestroyListener.html
-http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityResultListener.html
-http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityStopListener.html
-http://developer.android.com/reference/java/util/prefs/Preferences.html
-http://developer.android.com/reference/android/preference/PreferenceScreen.html
-http://developer.android.com/reference/java/util/prefs/PreferencesFactory.html
-http://developer.android.com/reference/java/sql/PreparedStatement.html
-http://developer.android.com/reference/android/media/audiofx/PresetReverb.html
-http://developer.android.com/reference/android/media/audiofx/PresetReverb.OnParameterChangeListener.html
-http://developer.android.com/reference/android/media/audiofx/PresetReverb.Settings.html
-http://developer.android.com/reference/java/io/PrintStream.html
-http://developer.android.com/reference/android/util/PrintStreamPrinter.html
-http://developer.android.com/reference/java/io/PrintWriter.html
-http://developer.android.com/reference/android/util/PrintWriterPrinter.html
-http://developer.android.com/reference/java/util/concurrent/PriorityBlockingQueue.html
-http://developer.android.com/reference/java/util/PriorityQueue.html
-http://developer.android.com/reference/javax/security/auth/PrivateCredentialPermission.html
-http://developer.android.com/reference/java/security/PrivateKey.html
-http://developer.android.com/reference/java/security/PrivilegedAction.html
-http://developer.android.com/reference/java/security/PrivilegedActionException.html
-http://developer.android.com/reference/java/security/PrivilegedExceptionAction.html
-http://developer.android.com/reference/android/os/Process.html
-http://developer.android.com/reference/java/lang/Process.html
-http://developer.android.com/reference/java/lang/ProcessBuilder.html
-http://developer.android.com/reference/android/drm/ProcessedData.html
-http://developer.android.com/reference/org/w3c/dom/ProcessingInstruction.html
-http://developer.android.com/reference/android/renderscript/Program.html
-http://developer.android.com/reference/android/renderscript/Program.BaseProgramBuilder.html
-http://developer.android.com/reference/android/renderscript/Program.TextureType.html
-http://developer.android.com/reference/android/renderscript/ProgramFragment.html
-http://developer.android.com/reference/android/renderscript/ProgramFragment.Builder.html
-http://developer.android.com/reference/android/renderscript/ProgramFragmentFixedFunction.html
-http://developer.android.com/reference/android/renderscript/ProgramFragmentFixedFunction.Builder.html
-http://developer.android.com/reference/android/renderscript/ProgramFragmentFixedFunction.Builder.EnvMode.html
-http://developer.android.com/reference/android/renderscript/ProgramFragmentFixedFunction.Builder.Format.html
-http://developer.android.com/reference/android/renderscript/ProgramRaster.html
-http://developer.android.com/reference/android/renderscript/ProgramRaster.Builder.html
-http://developer.android.com/reference/android/renderscript/ProgramRaster.CullMode.html
-http://developer.android.com/reference/android/renderscript/ProgramStore.html
-http://developer.android.com/reference/android/renderscript/ProgramStore.BlendDstFunc.html
-http://developer.android.com/reference/android/renderscript/ProgramStore.BlendSrcFunc.html
-http://developer.android.com/reference/android/renderscript/ProgramStore.Builder.html
-http://developer.android.com/reference/android/renderscript/ProgramStore.DepthFunc.html
-http://developer.android.com/reference/android/renderscript/ProgramVertex.html
-http://developer.android.com/reference/android/renderscript/ProgramVertex.Builder.html
-http://developer.android.com/reference/android/renderscript/ProgramVertexFixedFunction.html
-http://developer.android.com/reference/android/renderscript/ProgramVertexFixedFunction.Builder.html
-http://developer.android.com/reference/android/renderscript/ProgramVertexFixedFunction.Constants.html
-http://developer.android.com/reference/android/app/ProgressDialog.html
-http://developer.android.com/reference/java/util/Properties.html
-http://developer.android.com/reference/java/beans/PropertyChangeListener.html
-http://developer.android.com/reference/java/beans/PropertyChangeListenerProxy.html
-http://developer.android.com/reference/java/beans/PropertyChangeSupport.html
-http://developer.android.com/reference/java/util/PropertyPermission.html
-http://developer.android.com/reference/java/util/PropertyResourceBundle.html
-http://developer.android.com/reference/junit/framework/Protectable.html
-http://developer.android.com/reference/java/security/ProtectionDomain.html
-http://developer.android.com/reference/java/net/ProtocolException.html
-http://developer.android.com/reference/org/apache/http/ProtocolException.html
-http://developer.android.com/reference/org/apache/http/ProtocolVersion.html
-http://developer.android.com/reference/java/security/Provider.html
-http://developer.android.com/reference/java/security/Provider.Service.html
-http://developer.android.com/reference/java/security/ProviderException.html
-http://developer.android.com/reference/android/test/ProviderTestCase.html
-http://developer.android.com/reference/android/test/ProviderTestCase2.html
-http://developer.android.com/reference/android/net/Proxy.html
-http://developer.android.com/reference/java/lang/reflect/Proxy.html
-http://developer.android.com/reference/java/net/Proxy.html
-http://developer.android.com/reference/java/net/Proxy.Type.html
-http://developer.android.com/reference/java/net/ProxySelector.html
-http://developer.android.com/reference/org/apache/http/impl/conn/ProxySelectorRoutePlanner.html
-http://developer.android.com/reference/javax/crypto/spec/PSource.html
-http://developer.android.com/reference/javax/crypto/spec/PSource.PSpecified.html
-http://developer.android.com/reference/java/security/spec/PSSParameterSpec.html
-http://developer.android.com/reference/java/security/PublicKey.html
-http://developer.android.com/reference/java/io/PushbackInputStream.html
-http://developer.android.com/reference/java/io/PushbackReader.html
-http://developer.android.com/reference/javax/xml/namespace/QName.html
-http://developer.android.com/reference/android/text/style/QuoteSpan.html
-http://developer.android.com/reference/android/text/method/QwertyKeyListener.html
-http://developer.android.com/reference/android/R.html
-http://developer.android.com/reference/android/R.anim.html
-http://developer.android.com/reference/android/R.animator.html
-http://developer.android.com/reference/android/R.array.html
-http://developer.android.com/reference/android/R.bool.html
-http://developer.android.com/reference/android/R.color.html
-http://developer.android.com/reference/android/R.dimen.html
-http://developer.android.com/reference/android/R.drawable.html
-http://developer.android.com/reference/android/R.fraction.html
-http://developer.android.com/reference/android/R.id.html
-http://developer.android.com/reference/android/R.integer.html
-http://developer.android.com/reference/android/R.interpolator.html
-http://developer.android.com/reference/android/R.layout.html
-http://developer.android.com/reference/android/R.menu.html
-http://developer.android.com/reference/android/R.mipmap.html
-http://developer.android.com/reference/android/R.plurals.html
-http://developer.android.com/reference/android/R.raw.html
-http://developer.android.com/reference/android/R.string.html
-http://developer.android.com/reference/android/R.style.html
-http://developer.android.com/reference/android/R.xml.html
-http://developer.android.com/reference/android/graphics/RadialGradient.html
-http://developer.android.com/reference/java/util/Random.html
-http://developer.android.com/reference/java/util/RandomAccess.html
-http://developer.android.com/reference/java/io/RandomAccessFile.html
-http://developer.android.com/reference/android/graphics/Rasterizer.html
-http://developer.android.com/reference/android/text/style/RasterizerSpan.html
-http://developer.android.com/reference/javax/crypto/spec/RC2ParameterSpec.html
-http://developer.android.com/reference/javax/crypto/spec/RC5ParameterSpec.html
-http://developer.android.com/reference/java/lang/Readable.html
-http://developer.android.com/reference/java/nio/channels/ReadableByteChannel.html
-http://developer.android.com/reference/java/nio/ReadOnlyBufferException.html
-http://developer.android.com/reference/java/util/concurrent/locks/ReadWriteLock.html
-http://developer.android.com/reference/org/apache/http/ReasonPhraseCatalog.html
-http://developer.android.com/reference/android/content/ReceiverCallNotAllowedException.html
-http://developer.android.com/reference/android/speech/RecognitionListener.html
-http://developer.android.com/reference/android/speech/RecognitionService.html
-http://developer.android.com/reference/android/speech/RecognitionService.Callback.html
-http://developer.android.com/reference/android/speech/RecognizerIntent.html
-http://developer.android.com/reference/android/speech/RecognizerResultsIntent.html
-http://developer.android.com/reference/android/os/RecoverySystem.html
-http://developer.android.com/reference/android/os/RecoverySystem.ProgressListener.html
-http://developer.android.com/reference/android/graphics/RectF.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/RectShape.html
-http://developer.android.com/reference/org/apache/http/client/RedirectException.html
-http://developer.android.com/reference/org/apache/http/impl/client/RedirectLocations.html
-http://developer.android.com/reference/java/util/concurrent/locks/ReentrantLock.html
-http://developer.android.com/reference/java/util/concurrent/locks/ReentrantReadWriteLock.html
-http://developer.android.com/reference/java/util/concurrent/locks/ReentrantReadWriteLock.ReadLock.html
-http://developer.android.com/reference/java/util/concurrent/locks/ReentrantReadWriteLock.WriteLock.html
-http://developer.android.com/reference/java/sql/Ref.html
-http://developer.android.com/reference/java/lang/reflect/ReflectPermission.html
-http://developer.android.com/reference/android/graphics/Region.Op.html
-http://developer.android.com/reference/android/graphics/RegionIterator.html
-http://developer.android.com/reference/java/util/concurrent/RejectedExecutionException.html
-http://developer.android.com/reference/java/util/concurrent/RejectedExecutionHandler.html
-http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html
-http://developer.android.com/reference/android/text/style/RelativeSizeSpan.html
-http://developer.android.com/reference/android/os/RemoteCallbackList.html
-http://developer.android.com/reference/android/media/RemoteControlClient.html
-http://developer.android.com/reference/android/media/RemoteControlClient.MetadataEditor.html
-http://developer.android.com/reference/android/os/RemoteException.html
-http://developer.android.com/reference/android/widget/RemoteViews.RemoteView.html
-http://developer.android.com/reference/android/test/RenamingDelegatingContext.html
-http://developer.android.com/reference/android/renderscript/RenderScript.html
-http://developer.android.com/reference/android/renderscript/RenderScript.Priority.html
-http://developer.android.com/reference/android/renderscript/RenderScript.RSErrorHandler.html
-http://developer.android.com/reference/android/renderscript/RenderScript.RSMessageHandler.html
-http://developer.android.com/reference/android/renderscript/RenderScriptGL.html
-http://developer.android.com/reference/android/renderscript/RenderScriptGL.SurfaceConfig.html
-http://developer.android.com/reference/android/text/style/ReplacementSpan.html
-http://developer.android.com/reference/android/text/method/ReplacementTransformationMethod.html
-http://developer.android.com/reference/org/apache/http/client/protocol/RequestAddCookies.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestConnControl.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestContent.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestDate.html
-http://developer.android.com/reference/org/apache/http/client/protocol/RequestDefaultHeaders.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestExpectContinue.html
-http://developer.android.com/reference/org/apache/http/RequestLine.html
-http://developer.android.com/reference/org/apache/http/client/protocol/RequestProxyAuthentication.html
-http://developer.android.com/reference/org/apache/http/client/protocol/RequestTargetAuthentication.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestTargetHost.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestUserAgent.html
-http://developer.android.com/reference/org/apache/http/impl/client/RequestWrapper.html
-http://developer.android.com/reference/android/content/pm/ResolveInfo.html
-http://developer.android.com/reference/android/content/pm/ResolveInfo.DisplayNameComparator.html
-http://developer.android.com/reference/java/util/ResourceBundle.html
-http://developer.android.com/reference/java/util/ResourceBundle.Control.html
-http://developer.android.com/reference/android/support/v4/widget/ResourceCursorAdapter.html
-http://developer.android.com/reference/android/content/res/Resources.NotFoundException.html
-http://developer.android.com/reference/android/content/res/Resources.Theme.html
-http://developer.android.com/reference/java/net/ResponseCache.html
-http://developer.android.com/reference/org/apache/http/protocol/ResponseConnControl.html
-http://developer.android.com/reference/org/apache/http/protocol/ResponseContent.html
-http://developer.android.com/reference/org/apache/http/protocol/ResponseDate.html
-http://developer.android.com/reference/org/apache/http/client/protocol/ResponseProcessCookies.html
-http://developer.android.com/reference/org/apache/http/protocol/ResponseServer.html
-http://developer.android.com/reference/javax/xml/transform/Result.html
-http://developer.android.com/reference/android/os/ResultReceiver.html
-http://developer.android.com/reference/java/sql/ResultSet.html
-http://developer.android.com/reference/java/sql/ResultSetMetaData.html
-http://developer.android.com/reference/java/lang/annotation/Retention.html
-http://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2109DomainHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2109Spec.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2109SpecFactory.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2109VersionHandler.html
-http://developer.android.com/reference/org/apache/http/impl/auth/RFC2617Scheme.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965DomainAttributeHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965PortAttributeHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965Spec.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965SpecFactory.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965VersionAttributeHandler.html
-http://developer.android.com/reference/android/text/util/Rfc822Token.html
-http://developer.android.com/reference/android/text/util/Rfc822Tokenizer.html
-http://developer.android.com/reference/android/media/Ringtone.html
-http://developer.android.com/reference/android/media/RingtoneManager.html
-http://developer.android.com/reference/android/preference/RingtonePreference.html
-http://developer.android.com/reference/android/sax/RootElement.html
-http://developer.android.com/reference/android/graphics/drawable/RotateDrawable.html
-http://developer.android.com/reference/java/math/RoundingMode.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/RoundRectShape.html
-http://developer.android.com/reference/org/apache/http/impl/client/RoutedRequest.html
-http://developer.android.com/reference/org/apache/http/conn/routing/RouteInfo.html
-http://developer.android.com/reference/org/apache/http/conn/routing/RouteInfo.LayerType.html
-http://developer.android.com/reference/org/apache/http/conn/routing/RouteInfo.TunnelType.html
-http://developer.android.com/reference/org/apache/http/conn/routing/RouteTracker.html
-http://developer.android.com/reference/java/sql/RowId.html
-http://developer.android.com/reference/java/sql/RowIdLifetime.html
-http://developer.android.com/reference/javax/sql/RowSet.html
-http://developer.android.com/reference/javax/sql/RowSetEvent.html
-http://developer.android.com/reference/javax/sql/RowSetInternal.html
-http://developer.android.com/reference/javax/sql/RowSetListener.html
-http://developer.android.com/reference/javax/sql/RowSetMetaData.html
-http://developer.android.com/reference/javax/sql/RowSetReader.html
-http://developer.android.com/reference/javax/sql/RowSetWriter.html
-http://developer.android.com/reference/java/security/spec/RSAKeyGenParameterSpec.html
-http://developer.android.com/reference/java/security/spec/RSAMultiPrimePrivateCrtKeySpec.html
-http://developer.android.com/reference/java/security/spec/RSAOtherPrimeInfo.html
-http://developer.android.com/reference/java/security/spec/RSAPrivateCrtKeySpec.html
-http://developer.android.com/reference/java/security/spec/RSAPrivateKeySpec.html
-http://developer.android.com/reference/java/security/spec/RSAPublicKeySpec.html
+http://developer.android.com/reference/java/util/regex/Pattern.html
 http://developer.android.com/reference/android/renderscript/RSDriverException.html
 http://developer.android.com/reference/android/renderscript/RSIllegalArgumentException.html
 http://developer.android.com/reference/android/renderscript/RSInvalidStateException.html
-http://developer.android.com/reference/android/renderscript/RSRuntimeException.html
-http://developer.android.com/reference/android/renderscript/RSSurfaceView.html
-http://developer.android.com/reference/android/renderscript/RSTextureView.html
-http://developer.android.com/reference/java/text/RuleBasedCollator.html
-http://developer.android.com/reference/java/util/concurrent/RunnableFuture.html
-http://developer.android.com/reference/java/util/concurrent/RunnableScheduledFuture.html
-http://developer.android.com/reference/java/util/concurrent/ScheduledFuture.html
-http://developer.android.com/reference/java/lang/Runtime.html
-http://developer.android.com/reference/java/lang/RuntimePermission.html
-http://developer.android.com/reference/android/renderscript/Sampler.html
-http://developer.android.com/reference/android/renderscript/Sampler.Builder.html
-http://developer.android.com/reference/android/renderscript/Sampler.Value.html
-http://developer.android.com/reference/java/sql/Savepoint.html
-http://developer.android.com/reference/org/xml/sax/SAXException.html
-http://developer.android.com/reference/org/xml/sax/SAXNotRecognizedException.html
-http://developer.android.com/reference/org/xml/sax/SAXNotSupportedException.html
-http://developer.android.com/reference/org/xml/sax/SAXParseException.html
-http://developer.android.com/reference/javax/xml/parsers/SAXParser.html
-http://developer.android.com/reference/javax/xml/parsers/SAXParserFactory.html
-http://developer.android.com/reference/javax/xml/transform/sax/SAXResult.html
-http://developer.android.com/reference/javax/xml/transform/sax/SAXSource.html
-http://developer.android.com/reference/javax/xml/transform/sax/SAXTransformerFactory.html
-http://developer.android.com/reference/android/graphics/drawable/ScaleDrawable.html
-http://developer.android.com/reference/android/text/style/ScaleXSpan.html
-http://developer.android.com/reference/java/util/Scanner.html
-http://developer.android.com/reference/android/net/wifi/ScanResult.html
-http://developer.android.com/reference/java/nio/channels/ScatteringByteChannel.html
-http://developer.android.com/reference/java/util/concurrent/ScheduledThreadPoolExecutor.html
-http://developer.android.com/reference/javax/xml/validation/Schema.html
-http://developer.android.com/reference/javax/xml/validation/SchemaFactory.html
-http://developer.android.com/reference/javax/xml/validation/SchemaFactoryLoader.html
-http://developer.android.com/reference/android/renderscript/Script.html
-http://developer.android.com/reference/android/renderscript/Script.Builder.html
-http://developer.android.com/reference/android/text/method/ScrollingMovementMethod.html
-http://developer.android.com/reference/javax/crypto/SealedObject.html
-http://developer.android.com/reference/android/provider/SearchRecentSuggestions.html
-http://developer.android.com/reference/android/content/SearchRecentSuggestionsProvider.html
-http://developer.android.com/reference/android/support/v4/widget/SearchViewCompat.html
-http://developer.android.com/reference/android/support/v4/widget/SearchViewCompat.OnQueryTextListenerCompat.html
-http://developer.android.com/reference/javax/crypto/SecretKey.html
-http://developer.android.com/reference/javax/crypto/SecretKeyFactory.html
-http://developer.android.com/reference/javax/crypto/SecretKeyFactorySpi.html
-http://developer.android.com/reference/javax/crypto/spec/SecretKeySpec.html
-http://developer.android.com/reference/java/net/SecureCacheResponse.html
-http://developer.android.com/reference/java/security/SecureClassLoader.html
-http://developer.android.com/reference/java/security/SecureRandom.html
-http://developer.android.com/reference/java/security/SecureRandomSpi.html
-http://developer.android.com/reference/java/security/Security.html
-http://developer.android.com/reference/java/lang/SecurityException.html
-http://developer.android.com/reference/java/lang/SecurityManager.html
-http://developer.android.com/reference/java/security/SecurityPermission.html
-http://developer.android.com/reference/java/nio/channels/SelectableChannel.html
-http://developer.android.com/reference/android/text/Selection.html
-http://developer.android.com/reference/java/nio/channels/SelectionKey.html
-http://developer.android.com/reference/java/nio/channels/spi/SelectorProvider.html
-http://developer.android.com/reference/java/nio/channels/ServerSocketChannel.html
-http://developer.android.com/reference/java/util/concurrent/Semaphore.html
-http://developer.android.com/reference/android/hardware/Sensor.html
-http://developer.android.com/reference/android/hardware/SensorEvent.html
-http://developer.android.com/reference/android/hardware/SensorEventListener.html
-http://developer.android.com/reference/android/hardware/SensorListener.html
-http://developer.android.com/reference/android/hardware/SensorManager.html
-http://developer.android.com/reference/android/view/textservice/SentenceSuggestionsInfo.html
-http://developer.android.com/reference/java/io/SequenceInputStream.html
-http://developer.android.com/reference/java/io/Serializable.html
-http://developer.android.com/reference/org/apache/http/entity/SerializableEntity.html
-http://developer.android.com/reference/java/io/SerializablePermission.html
-http://developer.android.com/reference/java/net/ServerSocket.html
-http://developer.android.com/reference/javax/net/ServerSocketFactory.html
-http://developer.android.com/reference/android/support/v4/app/ServiceCompat.html
-http://developer.android.com/reference/java/util/ServiceConfigurationError.html
-http://developer.android.com/reference/java/util/ServiceLoader.html
-http://developer.android.com/reference/android/telephony/ServiceState.html
-http://developer.android.com/reference/android/test/ServiceTestCase.html
-http://developer.android.com/reference/org/apache/http/cookie/SetCookie.html
-http://developer.android.com/reference/org/apache/http/cookie/SetCookie2.html
-http://developer.android.com/reference/android/provider/Settings.html
-http://developer.android.com/reference/android/provider/Settings.NameValueTable.html
-http://developer.android.com/reference/android/provider/Settings.SettingNotFoundException.html
-http://developer.android.com/reference/android/provider/Settings.System.html
-http://developer.android.com/reference/android/graphics/Shader.html
-http://developer.android.com/reference/android/graphics/Shader.TileMode.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/Shape.html
-http://developer.android.com/reference/android/graphics/drawable/ShapeDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/ShapeDrawable.ShaderFactory.html
-http://developer.android.com/reference/android/support/v4/app/ShareCompat.html
-http://developer.android.com/reference/android/support/v4/app/ShareCompat.IntentBuilder.html
-http://developer.android.com/reference/android/support/v4/app/ShareCompat.IntentReader.html
-http://developer.android.com/reference/android/content/SharedPreferences.Editor.html
-http://developer.android.com/reference/android/content/SharedPreferences.OnSharedPreferenceChangeListener.html
-http://developer.android.com/reference/android/renderscript/Short2.html
-http://developer.android.com/reference/android/renderscript/Short3.html
-http://developer.android.com/reference/android/renderscript/Short4.html
-http://developer.android.com/reference/java/nio/ShortBuffer.html
-http://developer.android.com/reference/javax/crypto/ShortBufferException.html
-http://developer.android.com/reference/android/telephony/SignalStrength.html
-http://developer.android.com/reference/android/content/pm/Signature.html
-http://developer.android.com/reference/java/security/Signature.html
-http://developer.android.com/reference/java/security/SignatureException.html
-http://developer.android.com/reference/java/security/SignatureSpi.html
-http://developer.android.com/reference/java/security/SignedObject.html
-http://developer.android.com/reference/java/security/Signer.html
-http://developer.android.com/reference/android/support/v4/widget/SimpleCursorAdapter.html
-http://developer.android.com/reference/android/support/v4/widget/SimpleCursorAdapter.CursorToStringConverter.html
-http://developer.android.com/reference/android/support/v4/widget/SimpleCursorAdapter.ViewBinder.html
-http://developer.android.com/reference/java/util/logging/SimpleFormatter.html
-http://developer.android.com/reference/java/util/SimpleTimeZone.html
-http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.html
-http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.ConnAdapter.html
-http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.PoolEntry.html
-http://developer.android.com/reference/android/test/SingleLaunchActivityTestCase.html
-http://developer.android.com/reference/android/text/method/SingleLineTransformationMethod.html
-http://developer.android.com/reference/android/net/sip/SipAudioCall.html
-http://developer.android.com/reference/android/net/sip/SipAudioCall.Listener.html
-http://developer.android.com/reference/android/net/sip/SipErrorCode.html
-http://developer.android.com/reference/android/net/sip/SipException.html
-http://developer.android.com/reference/android/net/sip/SipManager.html
-http://developer.android.com/reference/android/net/sip/SipProfile.html
-http://developer.android.com/reference/android/net/sip/SipProfile.Builder.html
-http://developer.android.com/reference/android/net/sip/SipRegistrationListener.html
-http://developer.android.com/reference/android/net/sip/SipSession.html
-http://developer.android.com/reference/android/net/sip/SipSession.Listener.html
-http://developer.android.com/reference/android/net/sip/SipSession.State.html
-http://developer.android.com/reference/org/apache/http/cookie/SM.html
-http://developer.android.com/reference/android/test/suitebuilder/annotation/SmallTest.html
-http://developer.android.com/reference/android/test/suitebuilder/annotation/Smoke.html
-http://developer.android.com/reference/android/telephony/SmsManager.html
-http://developer.android.com/reference/android/telephony/gsm/SmsManager.html
-http://developer.android.com/reference/android/telephony/SmsMessage.html
-http://developer.android.com/reference/android/telephony/gsm/SmsMessage.html
-http://developer.android.com/reference/android/telephony/SmsMessage.MessageClass.html
-http://developer.android.com/reference/android/telephony/gsm/SmsMessage.MessageClass.html
-http://developer.android.com/reference/android/telephony/SmsMessage.SubmitPdu.html
-http://developer.android.com/reference/android/telephony/gsm/SmsMessage.SubmitPdu.html
-http://developer.android.com/reference/java/net/Socket.html
-http://developer.android.com/reference/java/net/SocketAddress.html
-http://developer.android.com/reference/java/net/SocketException.html
-http://developer.android.com/reference/javax/net/SocketFactory.html
-http://developer.android.com/reference/java/util/logging/SocketHandler.html
-http://developer.android.com/reference/org/apache/http/impl/SocketHttpClientConnection.html
-http://developer.android.com/reference/org/apache/http/impl/SocketHttpServerConnection.html
-http://developer.android.com/reference/java/net/SocketImpl.html
-http://developer.android.com/reference/java/net/SocketImplFactory.html
-http://developer.android.com/reference/org/apache/http/impl/io/SocketInputBuffer.html
-http://developer.android.com/reference/java/net/SocketOptions.html
-http://developer.android.com/reference/org/apache/http/impl/io/SocketOutputBuffer.html
-http://developer.android.com/reference/java/net/SocketPermission.html
-http://developer.android.com/reference/java/net/SocketTimeoutException.html
-http://developer.android.com/reference/android/media/SoundPool.html
-http://developer.android.com/reference/android/media/SoundPool.OnLoadCompleteListener.html
-http://developer.android.com/reference/javax/xml/transform/Source.html
-http://developer.android.com/reference/javax/xml/transform/SourceLocator.html
-http://developer.android.com/reference/android/text/Spannable.html
-http://developer.android.com/reference/android/text/Spannable.Factory.html
-http://developer.android.com/reference/android/text/SpannableString.html
-http://developer.android.com/reference/android/text/SpannableStringBuilder.html
-http://developer.android.com/reference/android/text/Spanned.html
-http://developer.android.com/reference/android/text/SpannedString.html
-http://developer.android.com/reference/android/text/SpanWatcher.html
-http://developer.android.com/reference/android/util/SparseBooleanArray.html
-http://developer.android.com/reference/android/util/SparseIntArray.html
-http://developer.android.com/reference/android/speech/SpeechRecognizer.html
-http://developer.android.com/reference/android/view/textservice/SpellCheckerInfo.html
-http://developer.android.com/reference/android/service/textservice/SpellCheckerService.html
-http://developer.android.com/reference/android/service/textservice/SpellCheckerService.Session.html
-http://developer.android.com/reference/android/view/textservice/SpellCheckerSession.SpellCheckerSessionListener.html
-http://developer.android.com/reference/android/view/textservice/SpellCheckerSubtype.html
-http://developer.android.com/reference/java/sql/SQLClientInfoException.html
-http://developer.android.com/reference/java/sql/SQLData.html
-http://developer.android.com/reference/java/sql/SQLDataException.html
-http://developer.android.com/reference/android/database/SQLException.html
-http://developer.android.com/reference/java/sql/SQLException.html
-http://developer.android.com/reference/java/sql/SQLFeatureNotSupportedException.html
-http://developer.android.com/reference/java/sql/SQLInput.html
-http://developer.android.com/reference/java/sql/SQLIntegrityConstraintViolationException.html
-http://developer.android.com/reference/java/sql/SQLInvalidAuthorizationSpecException.html
+http://developer.android.com/reference/java/nio/ReadOnlyBufferException.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteAbortException.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteAccessPermException.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteBindOrColumnIndexOutOfRangeException.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteBlobTooBigException.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteCantOpenDatabaseException.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteClosable.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteConstraintException.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteCursor.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteCursorDriver.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.CursorFactory.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteDatabaseCorruptException.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteDatabaseLockedException.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteDatatypeMismatchException.html
@@ -3536,17 +2015,844 @@
 http://developer.android.com/reference/android/database/sqlite/SQLiteFullException.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteMisuseException.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteOutOfMemoryException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteReadOnlyDatabaseException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteTableLockedException.html
+http://developer.android.com/reference/java/util/UnknownFormatConversionException.html
+http://developer.android.com/reference/java/util/UnknownFormatFlagsException.html
+http://developer.android.com/reference/java/nio/channels/UnresolvedAddressException.html
+http://developer.android.com/reference/java/nio/channels/UnsupportedAddressTypeException.html
+http://developer.android.com/reference/java/nio/charset/UnsupportedCharsetException.html
+http://developer.android.com/reference/java/util/Properties.html
+http://developer.android.com/reference/java/util/Dictionary.html
+http://developer.android.com/reference/java/util/Hashtable.html
+http://developer.android.com/reference/java/util/Map.Entry.html
+http://developer.android.com/reference/java/util/Map.html
+http://developer.android.com/reference/java/util/Collection.html
+http://developer.android.com/reference/java/io/Reader.html
+http://developer.android.com/reference/java/util/Enumeration.html
+http://developer.android.com/reference/java/io/OutputStream.html
+http://developer.android.com/reference/java/io/Writer.html
+http://developer.android.com/reference/android/view/animation/AccelerateDecelerateInterpolator.html
+http://developer.android.com/reference/android/text/Html.html
+http://developer.android.com/reference/android/text/TextUtils.html
+http://developer.android.com/reference/org/apache/http/impl/DefaultHttpResponseFactory.html
+http://developer.android.com/reference/org/apache/http/util/CharArrayBuffer.html
+http://developer.android.com/reference/java/io/Console.html
+http://developer.android.com/reference/java/nio/channels/Channel.html
+http://developer.android.com/reference/java/nio/channels/spi/SelectorProvider.html
+http://developer.android.com/reference/android/telephony/CellLocation.html
+http://developer.android.com/reference/android/telephony/NeighboringCellInfo.html
+http://developer.android.com/reference/android/telephony/PhoneNumberFormattingTextWatcher.html
+http://developer.android.com/reference/android/telephony/PhoneNumberUtils.html
+http://developer.android.com/reference/android/telephony/PhoneStateListener.html
+http://developer.android.com/reference/android/telephony/ServiceState.html
+http://developer.android.com/reference/android/telephony/SignalStrength.html
+http://developer.android.com/reference/android/telephony/SmsManager.html
+http://developer.android.com/reference/android/telephony/SmsMessage.html
+http://developer.android.com/reference/android/telephony/SmsMessage.SubmitPdu.html
+http://developer.android.com/reference/android/telephony/SmsMessage.MessageClass.html
+http://developer.android.com/shareables/training/ActivityLifecycle.zip
+http://developer.android.com/reference/android/media/RingtoneManager.html
+http://developer.android.com/reference/org/apache/http/impl/AbstractHttpServerConnection.html
+http://developer.android.com/reference/org/apache/http/impl/DefaultHttpRequestFactory.html
+http://developer.android.com/reference/org/apache/http/impl/EnglishReasonPhraseCatalog.html
+http://developer.android.com/reference/org/apache/http/impl/HttpConnectionMetricsImpl.html
+http://developer.android.com/reference/java/net/Socket.html
+http://developer.android.com/reference/org/apache/http/impl/entity/EntityDeserializer.html
+http://developer.android.com/reference/org/apache/http/impl/entity/EntitySerializer.html
+http://developer.android.com/about/versions/android-1.5.html
+http://developer.android.com/about/versions/android-1.6.html
+http://developer.android.com/about/versions/android-2.1.html
+http://developer.android.com/about/versions/android-2.2.html
+http://developer.android.com/about/versions/android-2.3.html
+http://developer.android.com/reference/android/media/MediaPlayer.OnCompletionListener.html
+http://developer.android.com/reference/android/media/MediaPlayer.OnErrorListener.html
+http://developer.android.com/reference/android/media/MediaPlayer.OnPreparedListener.html
+http://developer.android.com/resources/tutorials/views/hello-tabwidget.html
+http://developer.android.com/reference/android/support/v4/view/ViewPager.html
+http://developer.android.com/reference/android/support/v4/view/PagerTitleStrip.html
+http://developer.android.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html
+http://developer.android.com/reference/android/app/admin/DeviceAdminReceiver.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteCursorDriver.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteTransactionListener.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteClosable.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteCursor.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteProgram.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteQuery.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteReadOnlyDatabaseException.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteStatement.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteTableLockedException.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteTransactionListener.html
+http://developer.android.com/reference/java/nio/charset/Charset.html
+http://developer.android.com/reference/java/nio/charset/CharsetDecoder.html
+http://developer.android.com/reference/java/nio/charset/CharsetEncoder.html
+http://developer.android.com/reference/java/nio/charset/CoderResult.html
+http://developer.android.com/reference/java/nio/charset/CodingErrorAction.html
+http://developer.android.com/reference/java/nio/charset/CharacterCodingException.html
+http://developer.android.com/reference/java/nio/charset/MalformedInputException.html
+http://developer.android.com/reference/java/nio/charset/UnmappableCharacterException.html
+http://developer.android.com/reference/java/nio/charset/CoderMalfunctionError.html
+http://developer.android.com/reference/android/database/ContentObserver.html
+http://developer.android.com/reference/android/database/DataSetObserver.html
+http://developer.android.com/reference/android/support/v4/view/AccessibilityDelegateCompat.html
+http://developer.android.com/reference/android/support/v4/view/KeyEventCompat.html
+http://developer.android.com/reference/android/support/v4/view/MenuCompat.html
+http://developer.android.com/reference/android/support/v4/view/MenuItemCompat.html
+http://developer.android.com/reference/android/support/v4/view/MotionEventCompat.html
+http://developer.android.com/reference/android/support/v4/view/PagerTabStrip.html
+http://developer.android.com/reference/android/support/v4/view/VelocityTrackerCompat.html
+http://developer.android.com/reference/android/support/v4/view/ViewCompat.html
+http://developer.android.com/reference/android/support/v4/view/ViewCompatJB.html
+http://developer.android.com/reference/android/support/v4/view/ViewConfigurationCompat.html
+http://developer.android.com/reference/android/support/v4/view/ViewGroupCompat.html
+http://developer.android.com/reference/android/support/v4/view/ViewPager.LayoutParams.html
+http://developer.android.com/reference/android/support/v4/view/ViewPager.SavedState.html
+http://developer.android.com/reference/android/support/v4/view/ViewPager.SimpleOnPageChangeListener.html
+http://developer.android.com/reference/android/content/pm/ApplicationInfo.DisplayNameComparator.html
+http://developer.android.com/reference/android/content/pm/ComponentInfo.html
+http://developer.android.com/reference/android/content/pm/ConfigurationInfo.html
+http://developer.android.com/reference/android/content/pm/FeatureInfo.html
+http://developer.android.com/reference/android/content/pm/InstrumentationInfo.html
+http://developer.android.com/reference/android/content/pm/PackageInfo.html
+http://developer.android.com/reference/android/content/pm/PackageItemInfo.html
+http://developer.android.com/reference/android/content/pm/PackageItemInfo.DisplayNameComparator.html
+http://developer.android.com/reference/android/content/pm/PackageStats.html
+http://developer.android.com/reference/android/content/pm/PermissionGroupInfo.html
+http://developer.android.com/reference/android/content/pm/PermissionInfo.html
+http://developer.android.com/reference/android/content/pm/ResolveInfo.DisplayNameComparator.html
+http://developer.android.com/reference/android/content/pm/Signature.html
+http://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException.html
+http://developer.android.com/reference/android/util/Printer.html
+http://developer.android.com/reference/android/content/res/XmlResourceParser.html
+http://developer.android.com/reference/android/speech/tts/SynthesisCallback.html
+http://developer.android.com/reference/android/speech/tts/TextToSpeech.OnInitListener.html
+http://developer.android.com/reference/android/speech/tts/TextToSpeech.OnUtteranceCompletedListener.html
+http://developer.android.com/reference/android/speech/tts/SynthesisRequest.html
+http://developer.android.com/reference/android/speech/tts/TextToSpeech.html
+http://developer.android.com/reference/android/speech/tts/TextToSpeech.Engine.html
+http://developer.android.com/reference/android/speech/tts/TextToSpeech.EngineInfo.html
+http://developer.android.com/reference/android/speech/tts/UtteranceProgressListener.html
+http://developer.android.com/reference/android/view/animation/AccelerateInterpolator.html
+http://developer.android.com/reference/android/view/animation/AnticipateInterpolator.html
+http://developer.android.com/reference/android/view/animation/AnticipateOvershootInterpolator.html
+http://developer.android.com/reference/android/view/animation/BounceInterpolator.html
+http://developer.android.com/reference/android/view/animation/CycleInterpolator.html
+http://developer.android.com/reference/android/view/animation/DecelerateInterpolator.html
+http://developer.android.com/reference/android/view/animation/LinearInterpolator.html
+http://developer.android.com/reference/android/view/animation/OvershootInterpolator.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL10.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL10Ext.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11Ext.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11ExtensionPack.html
+http://developer.android.com/reference/android/preference/Preference.OnPreferenceChangeListener.html
+http://developer.android.com/reference/android/preference/Preference.OnPreferenceClickListener.html
+http://developer.android.com/reference/android/preference/PreferenceFragment.OnPreferenceStartFragmentCallback.html
+http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityDestroyListener.html
+http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityResultListener.html
+http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityStopListener.html
+http://developer.android.com/reference/android/preference/MultiSelectListPreference.html
+http://developer.android.com/reference/android/preference/PreferenceActivity.Header.html
+http://developer.android.com/reference/android/preference/PreferenceGroup.html
+http://developer.android.com/reference/android/preference/RingtonePreference.html
+http://developer.android.com/reference/android/preference/SwitchPreference.html
+http://developer.android.com/reference/android/preference/TwoStatePreference.html
+http://developer.android.com/guide/practices/ui_guidelines/icon_design_menu.html
+http://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar.html
+http://developer.android.com/guide/practices/ui_guidelines/icon_design_tab.html
+http://developer.android.com/guide/practices/ui_guidelines/icon_design_dialog.html
+http://developer.android.com/guide/practices/ui_guidelines/icon_design_list.html
+http://developer.android.com/shareables/icon_templates-v4.0.zip
+http://developer.android.com/shareables/icon_templates-v2.3.zip
+http://developer.android.com/shareables/icon_templates-v2.0.zip
+http://developer.android.com/guide/practices/ui_guidelines/icon_design_action_bar.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html
+http://developer.android.com/reference/org/xmlpull/v1/sax2/Driver.html
+http://developer.android.com/reference/java/io/DataInput.html
+http://developer.android.com/reference/java/io/DataOutput.html
+http://developer.android.com/reference/java/io/Externalizable.html
+http://developer.android.com/reference/java/io/FileFilter.html
+http://developer.android.com/reference/java/io/FilenameFilter.html
+http://developer.android.com/reference/java/io/Flushable.html
+http://developer.android.com/reference/java/io/ObjectInput.html
+http://developer.android.com/reference/java/io/ObjectInputValidation.html
+http://developer.android.com/reference/java/io/ObjectOutput.html
+http://developer.android.com/reference/java/io/ObjectStreamConstants.html
+http://developer.android.com/reference/java/io/BufferedInputStream.html
+http://developer.android.com/reference/java/io/BufferedOutputStream.html
+http://developer.android.com/reference/java/io/BufferedReader.html
+http://developer.android.com/reference/java/io/BufferedWriter.html
+http://developer.android.com/reference/java/io/ByteArrayInputStream.html
+http://developer.android.com/reference/java/io/ByteArrayOutputStream.html
+http://developer.android.com/reference/java/io/CharArrayReader.html
+http://developer.android.com/reference/java/io/CharArrayWriter.html
+http://developer.android.com/reference/java/io/DataInputStream.html
+http://developer.android.com/reference/java/io/DataOutputStream.html
+http://developer.android.com/reference/java/io/FilePermission.html
+http://developer.android.com/reference/java/io/FileReader.html
+http://developer.android.com/reference/java/io/FileWriter.html
+http://developer.android.com/reference/java/io/FilterInputStream.html
+http://developer.android.com/reference/java/io/FilterOutputStream.html
+http://developer.android.com/reference/java/io/FilterReader.html
+http://developer.android.com/reference/java/io/FilterWriter.html
+http://developer.android.com/reference/java/io/InputStreamReader.html
+http://developer.android.com/reference/java/io/LineNumberInputStream.html
+http://developer.android.com/reference/java/io/LineNumberReader.html
+http://developer.android.com/reference/java/io/ObjectInputStream.html
+http://developer.android.com/reference/java/io/ObjectInputStream.GetField.html
+http://developer.android.com/reference/java/io/ObjectOutputStream.html
+http://developer.android.com/reference/java/io/ObjectOutputStream.PutField.html
+http://developer.android.com/reference/java/io/ObjectStreamClass.html
+http://developer.android.com/reference/java/io/ObjectStreamField.html
+http://developer.android.com/reference/java/io/OutputStreamWriter.html
+http://developer.android.com/reference/java/io/PipedInputStream.html
+http://developer.android.com/reference/java/io/PipedOutputStream.html
+http://developer.android.com/reference/java/io/PipedReader.html
+http://developer.android.com/reference/java/io/PipedWriter.html
+http://developer.android.com/reference/java/io/PushbackInputStream.html
+http://developer.android.com/reference/java/io/PushbackReader.html
+http://developer.android.com/reference/java/io/RandomAccessFile.html
+http://developer.android.com/reference/java/io/SequenceInputStream.html
+http://developer.android.com/reference/java/io/SerializablePermission.html
+http://developer.android.com/reference/java/io/StreamTokenizer.html
+http://developer.android.com/reference/java/io/StringBufferInputStream.html
+http://developer.android.com/reference/java/io/StringReader.html
+http://developer.android.com/reference/java/io/StringWriter.html
+http://developer.android.com/reference/java/io/CharConversionException.html
+http://developer.android.com/reference/java/io/EOFException.html
+http://developer.android.com/reference/java/io/InterruptedIOException.html
+http://developer.android.com/reference/java/io/InvalidClassException.html
+http://developer.android.com/reference/java/io/InvalidObjectException.html
+http://developer.android.com/reference/java/io/NotActiveException.html
+http://developer.android.com/reference/java/io/NotSerializableException.html
+http://developer.android.com/reference/java/io/OptionalDataException.html
+http://developer.android.com/reference/java/io/StreamCorruptedException.html
+http://developer.android.com/reference/java/io/SyncFailedException.html
+http://developer.android.com/reference/java/io/UnsupportedEncodingException.html
+http://developer.android.com/reference/java/io/UTFDataFormatException.html
+http://developer.android.com/reference/java/io/WriteAbortedException.html
+http://developer.android.com/reference/java/io/IOError.html
+http://developer.android.com/reference/android/view/inputmethod/InputMethod.html
+http://developer.android.com/reference/android/view/inputmethod/InputMethod.SessionCallback.html
+http://developer.android.com/reference/android/view/inputmethod/InputMethodSession.html
+http://developer.android.com/reference/android/view/inputmethod/InputMethodSession.EventCallback.html
+http://developer.android.com/reference/android/view/inputmethod/BaseInputConnection.html
+http://developer.android.com/reference/android/view/inputmethod/CompletionInfo.html
+http://developer.android.com/reference/android/view/inputmethod/CorrectionInfo.html
+http://developer.android.com/reference/android/view/inputmethod/ExtractedText.html
+http://developer.android.com/reference/android/view/inputmethod/ExtractedTextRequest.html
+http://developer.android.com/reference/android/view/inputmethod/InputBinding.html
+http://developer.android.com/reference/android/view/inputmethod/InputConnectionWrapper.html
+http://developer.android.com/reference/android/view/inputmethod/InputMethodInfo.html
+http://developer.android.com/reference/android/view/inputmethod/InputMethodSubtype.html
+http://developer.android.com/reference/android/graphics/Color.html
+http://developer.android.com/reference/junit/framework/Assert.html
+http://developer.android.com/reference/junit/framework/TestResult.html
+http://developer.android.com/reference/junit/framework/Test.html
+http://developer.android.com/reference/javax/crypto/spec/DESedeKeySpec.html
+http://developer.android.com/reference/javax/crypto/spec/DESKeySpec.html
+http://developer.android.com/reference/javax/crypto/spec/DHGenParameterSpec.html
+http://developer.android.com/reference/javax/crypto/spec/DHParameterSpec.html
+http://developer.android.com/reference/javax/crypto/spec/DHPrivateKeySpec.html
+http://developer.android.com/reference/javax/crypto/spec/DHPublicKeySpec.html
+http://developer.android.com/reference/javax/crypto/spec/IvParameterSpec.html
+http://developer.android.com/reference/javax/crypto/spec/OAEPParameterSpec.html
+http://developer.android.com/reference/javax/crypto/spec/PBEKeySpec.html
+http://developer.android.com/reference/javax/crypto/spec/PBEParameterSpec.html
+http://developer.android.com/reference/javax/crypto/spec/PSource.html
+http://developer.android.com/reference/javax/crypto/spec/PSource.PSpecified.html
+http://developer.android.com/reference/javax/crypto/spec/RC2ParameterSpec.html
+http://developer.android.com/reference/javax/crypto/spec/RC5ParameterSpec.html
+http://developer.android.com/reference/java/util/Comparator.html
+http://developer.android.com/reference/java/util/Deque.html
+http://developer.android.com/reference/java/util/EventListener.html
+http://developer.android.com/reference/java/util/Formattable.html
+http://developer.android.com/reference/java/util/ListIterator.html
+http://developer.android.com/reference/java/util/NavigableMap.html
+http://developer.android.com/reference/java/util/NavigableSet.html
+http://developer.android.com/reference/java/util/Observer.html
+http://developer.android.com/reference/java/util/Queue.html
+http://developer.android.com/reference/java/util/RandomAccess.html
+http://developer.android.com/reference/java/util/SortedMap.html
+http://developer.android.com/reference/java/util/SortedSet.html
+http://developer.android.com/reference/java/util/AbstractCollection.html
+http://developer.android.com/reference/java/util/AbstractList.html
+http://developer.android.com/reference/java/util/AbstractMap.html
+http://developer.android.com/reference/java/util/AbstractMap.SimpleEntry.html
+http://developer.android.com/reference/java/util/AbstractMap.SimpleImmutableEntry.html
+http://developer.android.com/reference/java/util/AbstractQueue.html
+http://developer.android.com/reference/java/util/AbstractSequentialList.html
+http://developer.android.com/reference/java/util/AbstractSet.html
+http://developer.android.com/reference/java/util/ArrayDeque.html
+http://developer.android.com/reference/java/util/Arrays.html
+http://developer.android.com/reference/java/util/BitSet.html
+http://developer.android.com/reference/java/util/Calendar.html
+http://developer.android.com/reference/java/util/Collections.html
+http://developer.android.com/reference/java/util/Currency.html
+http://developer.android.com/reference/java/util/Date.html
+http://developer.android.com/reference/java/util/EnumMap.html
+http://developer.android.com/reference/java/util/EnumSet.html
+http://developer.android.com/reference/java/util/EventListenerProxy.html
+http://developer.android.com/reference/java/util/EventObject.html
+http://developer.android.com/reference/java/util/FormattableFlags.html
+http://developer.android.com/reference/java/util/GregorianCalendar.html
+http://developer.android.com/reference/java/util/HashMap.html
+http://developer.android.com/reference/java/util/HashSet.html
+http://developer.android.com/reference/java/util/IdentityHashMap.html
+http://developer.android.com/reference/java/util/LinkedHashMap.html
+http://developer.android.com/reference/java/util/LinkedHashSet.html
+http://developer.android.com/reference/java/util/LinkedList.html
+http://developer.android.com/reference/java/util/ListResourceBundle.html
+http://developer.android.com/reference/java/util/Locale.html
+http://developer.android.com/reference/java/util/Observable.html
+http://developer.android.com/reference/java/util/PriorityQueue.html
+http://developer.android.com/reference/java/util/PropertyPermission.html
+http://developer.android.com/reference/java/util/PropertyResourceBundle.html
+http://developer.android.com/reference/java/util/Random.html
+http://developer.android.com/reference/java/util/ResourceBundle.html
+http://developer.android.com/reference/java/util/ResourceBundle.Control.html
+http://developer.android.com/reference/java/util/Scanner.html
+http://developer.android.com/reference/java/util/ServiceLoader.html
+http://developer.android.com/reference/java/util/SimpleTimeZone.html
+http://developer.android.com/reference/java/util/Stack.html
+http://developer.android.com/reference/java/util/StringTokenizer.html
+http://developer.android.com/reference/java/util/Timer.html
+http://developer.android.com/reference/java/util/TimerTask.html
+http://developer.android.com/reference/java/util/TimeZone.html
+http://developer.android.com/reference/java/util/TreeMap.html
+http://developer.android.com/reference/java/util/TreeSet.html
+http://developer.android.com/reference/java/util/UUID.html
+http://developer.android.com/reference/java/util/Vector.html
+http://developer.android.com/reference/java/util/WeakHashMap.html
+http://developer.android.com/reference/java/util/Formatter.BigDecimalLayoutForm.html
+http://developer.android.com/reference/java/util/InvalidPropertiesFormatException.html
+http://developer.android.com/reference/java/util/TooManyListenersException.html
+http://developer.android.com/reference/java/util/ServiceConfigurationError.html
+http://developer.android.com/reference/java/text/SimpleDateFormat.html
+http://developer.android.com/reference/java/text/DateFormat.html
+http://developer.android.com/reference/java/nio/channels/ByteChannel.html
+http://developer.android.com/reference/java/nio/channels/GatheringByteChannel.html
+http://developer.android.com/reference/java/nio/channels/InterruptibleChannel.html
+http://developer.android.com/reference/java/nio/channels/ReadableByteChannel.html
+http://developer.android.com/reference/java/nio/channels/ScatteringByteChannel.html
+http://developer.android.com/reference/java/nio/channels/WritableByteChannel.html
+http://developer.android.com/reference/java/nio/channels/Channels.html
+http://developer.android.com/reference/java/nio/channels/DatagramChannel.html
+http://developer.android.com/reference/java/nio/channels/FileChannel.html
+http://developer.android.com/reference/java/nio/channels/FileChannel.MapMode.html
+http://developer.android.com/reference/java/nio/channels/FileLock.html
+http://developer.android.com/reference/java/nio/channels/Pipe.html
+http://developer.android.com/reference/java/nio/channels/Pipe.SinkChannel.html
+http://developer.android.com/reference/java/nio/channels/Pipe.SourceChannel.html
+http://developer.android.com/reference/java/nio/channels/SelectableChannel.html
+http://developer.android.com/reference/java/nio/channels/SelectionKey.html
+http://developer.android.com/reference/java/nio/channels/ServerSocketChannel.html
+http://developer.android.com/reference/java/nio/channels/AsynchronousCloseException.html
+http://developer.android.com/reference/java/nio/channels/ClosedByInterruptException.html
+http://developer.android.com/reference/java/nio/channels/ClosedChannelException.html
+http://developer.android.com/reference/java/nio/channels/FileLockInterruptionException.html
+http://developer.android.com/reference/java/nio/channels/spi/AbstractSelectableChannel.html
+http://developer.android.com/reference/java/nio/channels/spi/AbstractInterruptibleChannel.html
+http://developer.android.com/reference/java/net/SocketAddress.html
+http://developer.android.com/reference/android/text/method/MovementMethod.html
+http://developer.android.com/reference/android/text/TextUtils.TruncateAt.html
+http://developer.android.com/reference/android/text/InputFilter.html
+http://developer.android.com/reference/android/content/res/ColorStateList.html
+http://developer.android.com/reference/android/text/method/KeyListener.html
+http://developer.android.com/reference/android/text/Layout.html
+http://developer.android.com/reference/android/text/method/LinkMovementMethod.html
+http://developer.android.com/reference/android/text/TextPaint.html
+http://developer.android.com/reference/android/text/Selection.html
+http://developer.android.com/reference/android/text/method/TransformationMethod.html
+http://developer.android.com/reference/android/graphics/Typeface.html
+http://developer.android.com/reference/android/text/style/URLSpan.html
+http://developer.android.com/reference/android/text/util/Linkify.html
+http://developer.android.com/reference/android/text/Editable.Factory.html
+http://developer.android.com/reference/android/text/Spannable.Factory.html
+http://developer.android.com/reference/android/graphics/drawable/Animatable.html
+http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/BitmapDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/ClipDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/ColorDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/Drawable.ConstantState.html
+http://developer.android.com/reference/android/graphics/drawable/DrawableContainer.html
+http://developer.android.com/reference/android/graphics/drawable/DrawableContainer.DrawableContainerState.html
+http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/InsetDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/LayerDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/NinePatchDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/PaintDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/PictureDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/RotateDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/ScaleDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/ShapeDrawable.ShaderFactory.html
+http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/TransitionDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.Orientation.html
+http://developer.android.com/reference/android/appwidget/AppWidgetHostView.html
+http://developer.android.com/reference/android/inputmethodservice/ExtractEditText.html
+http://developer.android.com/reference/android/gesture/GestureOverlayView.html
+http://developer.android.com/reference/android/inputmethodservice/KeyboardView.html
+http://developer.android.com/reference/android/inputmethodservice/Keyboard.html
+http://developer.android.com/reference/android/renderscript/RSSurfaceView.html
+http://developer.android.com/reference/android/renderscript/RSTextureView.html
+http://developer.android.com/reference/android/accounts/AccountAuthenticatorActivity.html
+http://developer.android.com/reference/android/support/v13/dreams/BasicDream.html
+http://developer.android.com/reference/android/app/admin/DeviceAdminInfo.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.html
+http://developer.android.com/resources/samples/get.html
+http://developer.android.com/guide/appendix/g-app-intents.html
+http://developer.android.com/resources/samples/index.html
+http://developer.android.com/resources/samples/NotePad/index.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnConnectionPNames.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnManagerPNames.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnPerRoute.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnRoutePNames.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnConnectionParamBean.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnManagerParamBean.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnManagerParams.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnPerRouteBean.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnRouteParamBean.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnRouteParams.html
+http://developer.android.com/reference/org/apache/http/conn/ClientConnectionManager.html
+http://developer.android.com/reference/android/test/mock/MockContentResolver.html
+http://developer.android.com/shareables/training/LocationAware.zip
+http://developer.android.com/reference/android/location/LocationProvider.html
+http://developer.android.com/reference/android/R.style.html
+http://developer.android.com/reference/android/content/res/AssetFileDescriptor.AutoCloseInputStream.html
+http://developer.android.com/reference/android/content/res/AssetFileDescriptor.AutoCloseOutputStream.html
+http://developer.android.com/reference/android/content/res/AssetManager.AssetInputStream.html
+http://developer.android.com/reference/android/content/res/ObbInfo.html
+http://developer.android.com/reference/android/content/res/ObbScanner.html
+http://developer.android.com/reference/java/security/spec/KeySpec.html
+http://developer.android.com/reference/javax/crypto/SecretKey.html
+http://developer.android.com/reference/junit/framework/Protectable.html
+http://developer.android.com/reference/junit/framework/TestListener.html
+http://developer.android.com/reference/junit/framework/TestFailure.html
+http://developer.android.com/reference/junit/framework/AssertionFailedError.html
+http://developer.android.com/reference/junit/framework/ComparisonFailure.html
+http://developer.android.com/reference/android/test/suitebuilder/TestSuiteBuilder.FailedToCreateTests.html
+http://developer.android.com/reference/javax/xml/transform/dom/DOMLocator.html
+http://developer.android.com/reference/javax/xml/transform/dom/DOMResult.html
+http://developer.android.com/reference/javax/xml/transform/dom/DOMSource.html
+http://developer.android.com/reference/javax/xml/transform/TransformerException.html
+http://developer.android.com/reference/javax/xml/transform/SourceLocator.html
+http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html
+http://developer.android.com/reference/java/math/BigInteger.html
+http://developer.android.com/shareables/app_widget_templates-v4.0.zip
+http://developer.android.com/resources/tutorials/views/hello-formstuff.html
+http://developer.android.com/reference/android/opengl/GLSurfaceView.EGLConfigChooser.html
+http://developer.android.com/reference/android/opengl/GLSurfaceView.EGLContextFactory.html
+http://developer.android.com/reference/android/opengl/GLSurfaceView.EGLWindowSurfaceFactory.html
+http://developer.android.com/reference/android/opengl/GLSurfaceView.GLWrapper.html
+http://developer.android.com/reference/android/opengl/GLSurfaceView.Renderer.html
+http://developer.android.com/reference/android/opengl/ETC1.html
+http://developer.android.com/reference/android/opengl/ETC1Util.html
+http://developer.android.com/reference/android/opengl/ETC1Util.ETC1Texture.html
+http://developer.android.com/reference/android/opengl/GLDebugHelper.html
+http://developer.android.com/reference/android/opengl/GLES10.html
+http://developer.android.com/reference/android/opengl/GLES10Ext.html
+http://developer.android.com/reference/android/opengl/GLES11.html
+http://developer.android.com/reference/android/opengl/GLES11Ext.html
+http://developer.android.com/reference/android/opengl/GLU.html
+http://developer.android.com/reference/android/opengl/GLUtils.html
+http://developer.android.com/reference/android/opengl/Matrix.html
+http://developer.android.com/reference/android/opengl/Visibility.html
+http://developer.android.com/reference/java/util/concurrent/atomic/AtomicBoolean.html
+http://developer.android.com/reference/java/util/concurrent/atomic/AtomicInteger.html
+http://developer.android.com/reference/java/util/concurrent/atomic/AtomicIntegerArray.html
+http://developer.android.com/reference/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.html
+http://developer.android.com/reference/java/util/concurrent/atomic/AtomicLong.html
+http://developer.android.com/reference/java/util/concurrent/atomic/AtomicLongArray.html
+http://developer.android.com/reference/java/util/concurrent/atomic/AtomicLongFieldUpdater.html
+http://developer.android.com/reference/java/util/concurrent/atomic/AtomicMarkableReference.html
+http://developer.android.com/reference/java/util/concurrent/atomic/AtomicReference.html
+http://developer.android.com/reference/java/util/concurrent/atomic/AtomicReferenceArray.html
+http://developer.android.com/reference/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.html
+http://developer.android.com/reference/java/util/concurrent/atomic/AtomicStampedReference.html
+http://developer.android.com/reference/android/test/mock/MockContext.html
+http://developer.android.com/shareables/training/FragmentBasics.zip
+http://developer.android.com/reference/org/apache/http/entity/StringEntity.html
+http://developer.android.com/reference/org/apache/http/entity/AbstractHttpEntity.html
+http://developer.android.com/reference/org/apache/http/protocol/HTTP.html
+http://developer.android.com/reference/android/view/animation/AlphaAnimation.html
+http://developer.android.com/reference/android/view/animation/Animation.Description.html
+http://developer.android.com/reference/android/view/animation/AnimationSet.html
+http://developer.android.com/reference/android/view/animation/AnimationUtils.html
+http://developer.android.com/reference/android/view/animation/GridLayoutAnimationController.html
+http://developer.android.com/reference/android/view/animation/GridLayoutAnimationController.AnimationParameters.html
+http://developer.android.com/reference/android/view/animation/LayoutAnimationController.AnimationParameters.html
+http://developer.android.com/reference/android/view/animation/RotateAnimation.html
+http://developer.android.com/reference/android/view/animation/ScaleAnimation.html
+http://developer.android.com/reference/android/view/animation/TranslateAnimation.html
+http://developer.android.com/reference/javax/xml/datatype/DatatypeConstants.html
+http://developer.android.com/reference/javax/xml/datatype/DatatypeConstants.Field.html
+http://developer.android.com/reference/javax/xml/datatype/DatatypeFactory.html
+http://developer.android.com/reference/javax/xml/datatype/Duration.html
+http://developer.android.com/reference/javax/xml/datatype/XMLGregorianCalendar.html
+http://developer.android.com/reference/javax/xml/datatype/DatatypeConfigurationException.html
+http://developer.android.com/resources/samples/MultiResolution/index.html
+http://developer.android.com/guide/practices/screens-support-1.5.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/DensityActivity.html
+http://developer.android.com/reference/android/util/DisplayMetrics.html
+http://developer.android.com/reference/android/graphics/BitmapFactory.html
+http://developer.android.com/resources/dashboard/screens.html
+http://developer.android.com/reference/java/sql/Connection.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html
+http://developer.android.com/guide/topics/network/sip.html
+http://developer.android.com/reference/android/graphics/SurfaceTexture.OnFrameAvailableListener.html
+http://developer.android.com/reference/android/graphics/AvoidXfermode.html
+http://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html
+http://developer.android.com/reference/android/graphics/BitmapShader.html
+http://developer.android.com/reference/android/graphics/BlurMaskFilter.html
+http://developer.android.com/reference/android/graphics/Camera.html
+http://developer.android.com/reference/android/graphics/ColorMatrix.html
+http://developer.android.com/reference/android/graphics/ColorMatrixColorFilter.html
+http://developer.android.com/reference/android/graphics/ComposePathEffect.html
+http://developer.android.com/reference/android/graphics/ComposeShader.html
+http://developer.android.com/reference/android/graphics/CornerPathEffect.html
+http://developer.android.com/reference/android/graphics/DashPathEffect.html
+http://developer.android.com/reference/android/graphics/DiscretePathEffect.html
+http://developer.android.com/reference/android/graphics/DrawFilter.html
+http://developer.android.com/reference/android/graphics/EmbossMaskFilter.html
+http://developer.android.com/reference/android/graphics/ImageFormat.html
+http://developer.android.com/reference/android/graphics/Interpolator.html
+http://developer.android.com/reference/android/graphics/LayerRasterizer.html
+http://developer.android.com/reference/android/graphics/LightingColorFilter.html
+http://developer.android.com/reference/android/graphics/LinearGradient.html
+http://developer.android.com/reference/android/graphics/MaskFilter.html
+http://developer.android.com/reference/android/graphics/Movie.html
+http://developer.android.com/reference/android/graphics/NinePatch.html
+http://developer.android.com/reference/android/graphics/Paint.FontMetrics.html
+http://developer.android.com/reference/android/graphics/Paint.FontMetricsInt.html
+http://developer.android.com/reference/android/graphics/PaintFlagsDrawFilter.html
+http://developer.android.com/reference/android/graphics/PathDashPathEffect.html
+http://developer.android.com/reference/android/graphics/PathEffect.html
+http://developer.android.com/reference/android/graphics/PathMeasure.html
+http://developer.android.com/reference/android/graphics/Picture.html
+http://developer.android.com/reference/android/graphics/PixelFormat.html
+http://developer.android.com/reference/android/graphics/PixelXorXfermode.html
+http://developer.android.com/reference/android/graphics/PointF.html
+http://developer.android.com/reference/android/graphics/PorterDuff.html
+http://developer.android.com/reference/android/graphics/PorterDuffColorFilter.html
+http://developer.android.com/reference/android/graphics/PorterDuffXfermode.html
+http://developer.android.com/reference/android/graphics/RadialGradient.html
+http://developer.android.com/reference/android/graphics/Rasterizer.html
+http://developer.android.com/reference/android/graphics/RectF.html
+http://developer.android.com/reference/android/graphics/RegionIterator.html
+http://developer.android.com/reference/android/graphics/Shader.html
+http://developer.android.com/reference/android/graphics/SumPathEffect.html
+http://developer.android.com/reference/android/graphics/SurfaceTexture.html
+http://developer.android.com/reference/android/graphics/SweepGradient.html
+http://developer.android.com/reference/android/graphics/Xfermode.html
+http://developer.android.com/reference/android/graphics/YuvImage.html
+http://developer.android.com/reference/android/graphics/AvoidXfermode.Mode.html
+http://developer.android.com/reference/android/graphics/Bitmap.CompressFormat.html
+http://developer.android.com/reference/android/graphics/Bitmap.Config.html
+http://developer.android.com/reference/android/graphics/BlurMaskFilter.Blur.html
+http://developer.android.com/reference/android/graphics/Canvas.EdgeType.html
+http://developer.android.com/reference/android/graphics/Canvas.VertexMode.html
+http://developer.android.com/reference/android/graphics/Interpolator.Result.html
+http://developer.android.com/reference/android/graphics/Matrix.ScaleToFit.html
+http://developer.android.com/reference/android/graphics/Paint.Align.html
+http://developer.android.com/reference/android/graphics/Paint.Cap.html
+http://developer.android.com/reference/android/graphics/Paint.Join.html
+http://developer.android.com/reference/android/graphics/Paint.Style.html
+http://developer.android.com/reference/android/graphics/Path.Direction.html
+http://developer.android.com/reference/android/graphics/Path.FillType.html
+http://developer.android.com/reference/android/graphics/PathDashPathEffect.Style.html
+http://developer.android.com/reference/android/graphics/Region.Op.html
+http://developer.android.com/reference/android/graphics/Shader.TileMode.html
+http://developer.android.com/reference/android/graphics/SurfaceTexture.OutOfResourcesException.html
+http://developer.android.com/reference/android/media/MediaPlayer.html
+http://developer.android.com/reference/android/media/MediaRecorder.html
+http://developer.android.com/reference/android/media/CamcorderProfile.html
+http://developer.android.com/reference/android/renderscript/Allocation.MipmapControl.html
+http://developer.android.com/reference/java/net/Authenticator.RequestorType.html
+http://developer.android.com/reference/java/sql/ClientInfoStatus.html
+http://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel.html
+http://developer.android.com/reference/android/database/CursorJoiner.Result.html
+http://developer.android.com/reference/android/renderscript/Element.DataKind.html
+http://developer.android.com/reference/android/renderscript/Element.DataType.html
+http://developer.android.com/reference/java/lang/annotation/ElementType.html
+http://developer.android.com/reference/android/renderscript/FileA3D.EntryType.html
+http://developer.android.com/reference/android/renderscript/Font.Style.html
+http://developer.android.com/reference/android/util/JsonToken.html
+http://developer.android.com/reference/android/text/Layout.Alignment.html
+http://developer.android.com/reference/android/net/LocalSocketAddress.Namespace.html
+http://developer.android.com/reference/android/renderscript/Mesh.Primitive.html
+http://developer.android.com/reference/android/net/NetworkInfo.DetailedState.html
+http://developer.android.com/reference/android/net/NetworkInfo.State.html
+http://developer.android.com/reference/java/text/Normalizer.Form.html
+http://developer.android.com/reference/android/renderscript/Program.TextureType.html
+http://developer.android.com/reference/android/renderscript/ProgramFragmentFixedFunction.Builder.EnvMode.html
+http://developer.android.com/reference/android/renderscript/ProgramFragmentFixedFunction.Builder.Format.html
+http://developer.android.com/reference/android/renderscript/ProgramRaster.CullMode.html
+http://developer.android.com/reference/android/renderscript/ProgramStore.BlendDstFunc.html
+http://developer.android.com/reference/android/renderscript/ProgramStore.BlendSrcFunc.html
+http://developer.android.com/reference/android/renderscript/ProgramStore.DepthFunc.html
+http://developer.android.com/reference/java/net/Proxy.Type.html
+http://developer.android.com/reference/android/renderscript/RenderScript.Priority.html
+http://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html
+http://developer.android.com/reference/java/math/RoundingMode.html
+http://developer.android.com/reference/org/apache/http/conn/routing/RouteInfo.LayerType.html
+http://developer.android.com/reference/org/apache/http/conn/routing/RouteInfo.TunnelType.html
+http://developer.android.com/reference/java/sql/RowIdLifetime.html
+http://developer.android.com/reference/javax/net/ssl/SSLEngineResult.HandshakeStatus.html
+http://developer.android.com/reference/javax/net/ssl/SSLEngineResult.Status.html
+http://developer.android.com/reference/android/renderscript/Sampler.Value.html
+http://developer.android.com/reference/android/telephony/gsm/SmsMessage.MessageClass.html
+http://developer.android.com/reference/android/text/method/TextKeyListener.Capitalize.html
+http://developer.android.com/reference/java/util/concurrent/TimeUnit.html
+http://developer.android.com/reference/android/renderscript/Type.CubemapFace.html
+http://developer.android.com/reference/android/webkit/WebSettings.LayoutAlgorithm.html
+http://developer.android.com/reference/android/webkit/WebSettings.PluginState.html
+http://developer.android.com/reference/android/webkit/WebSettings.RenderPriority.html
+http://developer.android.com/reference/android/webkit/WebSettings.TextSize.html
+http://developer.android.com/reference/android/webkit/WebSettings.html
+http://developer.android.com/reference/android/webkit/WebSettings.ZoomDensity.html
+http://developer.android.com/reference/android/util/Xml.Encoding.html
+http://developer.android.com/reference/java/security/cert/CertPath.html
+http://developer.android.com/sdk/api_diff/10/changes.html
+http://developer.android.com/reference/android/nfc/NdefRecord.html
+http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html
+http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html
+http://developer.android.com/reference/android/media/MediaMetadataRetriever.html
+http://developer.android.com/reference/android/media/MediaRecorder.AudioEncoder.html
+http://developer.android.com/reference/android/media/MediaRecorder.OutputFormat.html
+http://developer.android.com/reference/android/speech/RecognizerResultsIntent.html
+http://developer.android.com/reference/android/test/UiThreadTest.html
+http://developer.android.com/shareables/training/TabCompat.zip
+http://developer.android.com/reference/junit/runner/BaseTestRunner.html
+http://developer.android.com/reference/junit/runner/TestSuiteLoader.html
+http://developer.android.com/reference/javax/xml/transform/ErrorListener.html
+http://developer.android.com/reference/javax/xml/transform/Result.html
+http://developer.android.com/reference/javax/xml/transform/Templates.html
+http://developer.android.com/reference/javax/xml/transform/URIResolver.html
+http://developer.android.com/reference/javax/xml/transform/OutputKeys.html
+http://developer.android.com/reference/javax/xml/transform/TransformerFactory.html
+http://developer.android.com/reference/javax/xml/transform/TransformerConfigurationException.html
+http://developer.android.com/reference/javax/xml/transform/TransformerFactoryConfigurationError.html
+http://developer.android.com/reference/javax/xml/transform/sax/SAXSource.html
+http://developer.android.com/reference/javax/xml/transform/stream/StreamSource.html
+http://developer.android.com/resources/samples/ContactManager/index.html
+http://developer.android.com/resources/samples/SampleSyncAdapter/index.html
+http://developer.android.com/reference/android/accounts/AbstractAccountAuthenticator.html
+http://developer.android.com/reference/java/util/jar/Pack200.Packer.html
+http://developer.android.com/reference/java/util/jar/Pack200.Unpacker.html
+http://developer.android.com/reference/java/util/jar/Attributes.html
+http://developer.android.com/reference/java/util/jar/Attributes.Name.html
+http://developer.android.com/reference/java/util/jar/JarEntry.html
+http://developer.android.com/reference/java/util/jar/JarFile.html
+http://developer.android.com/reference/java/util/jar/JarInputStream.html
+http://developer.android.com/reference/java/util/jar/JarOutputStream.html
+http://developer.android.com/reference/java/util/jar/Manifest.html
+http://developer.android.com/reference/java/util/jar/Pack200.html
+http://developer.android.com/reference/java/util/jar/JarException.html
+http://developer.android.com/reference/java/sql/PreparedStatement.html
+http://developer.android.com/reference/android/net/Uri.Builder.html
+http://developer.android.com/reference/java/lang/reflect/GenericSignatureFormatError.html
+http://developer.android.com/reference/android/webkit/HttpAuthHandler.html
+http://developer.android.com/reference/android/webkit/SslErrorHandler.html
+http://developer.android.com/reference/java/nio/channels/spi/AbstractSelectionKey.html
+http://developer.android.com/reference/java/util/concurrent/CopyOnWriteArrayList.html
+http://developer.android.com/reference/android/util/TypedValue.html
+http://developer.android.com/reference/android/hardware/Camera.html
+http://developer.android.com/reference/java/lang/annotation/Annotation.html
+http://developer.android.com/reference/java/lang/annotation/AnnotationFormatError.html
+http://developer.android.com/resources/samples/SoftKeyboard/index.html
+http://developer.android.com/reference/android/text/InputType.html
+http://developer.android.com/reference/android/test/mock/MockCursor.html
+http://developer.android.com/reference/android/test/mock/MockDialogInterface.html
+http://developer.android.com/reference/android/test/mock/MockPackageManager.html
+http://developer.android.com/reference/android/test/mock/MockResources.html
+http://developer.android.com/reference/android/database/CrossProcessCursor.html
+http://developer.android.com/reference/android/database/AbstractCursor.html
+http://developer.android.com/reference/android/database/AbstractCursor.SelfContentObserver.html
+http://developer.android.com/reference/android/database/AbstractWindowedCursor.html
+http://developer.android.com/reference/android/database/CharArrayBuffer.html
+http://developer.android.com/reference/android/database/ContentObservable.html
+http://developer.android.com/reference/android/database/CrossProcessCursorWrapper.html
+http://developer.android.com/reference/android/database/CursorJoiner.html
+http://developer.android.com/reference/android/database/CursorWindow.html
+http://developer.android.com/reference/android/database/CursorWrapper.html
+http://developer.android.com/reference/android/database/DatabaseUtils.InsertHelper.html
+http://developer.android.com/reference/android/database/DataSetObservable.html
+http://developer.android.com/reference/android/database/DefaultDatabaseErrorHandler.html
+http://developer.android.com/reference/android/database/MatrixCursor.html
+http://developer.android.com/reference/android/database/MatrixCursor.RowBuilder.html
+http://developer.android.com/reference/android/database/MergeCursor.html
+http://developer.android.com/reference/android/database/Observable.html
+http://developer.android.com/reference/android/telephony/gsm/GsmCellLocation.html
+http://developer.android.com/reference/android/telephony/gsm/SmsManager.html
+http://developer.android.com/reference/android/telephony/gsm/SmsMessage.html
+http://developer.android.com/reference/android/telephony/gsm/SmsMessage.SubmitPdu.html
+http://developer.android.com/reference/android/text/method/ArrowKeyMovementMethod.html
+http://developer.android.com/reference/android/text/method/BaseKeyListener.html
+http://developer.android.com/reference/android/text/method/BaseMovementMethod.html
+http://developer.android.com/reference/android/text/method/CharacterPickerDialog.html
+http://developer.android.com/reference/android/text/method/DateKeyListener.html
+http://developer.android.com/reference/android/text/method/DateTimeKeyListener.html
+http://developer.android.com/reference/android/text/method/DialerKeyListener.html
+http://developer.android.com/reference/android/text/method/DigitsKeyListener.html
+http://developer.android.com/reference/android/text/method/HideReturnsTransformationMethod.html
+http://developer.android.com/reference/android/text/method/MetaKeyKeyListener.html
+http://developer.android.com/reference/android/text/method/MultiTapKeyListener.html
+http://developer.android.com/reference/android/text/method/NumberKeyListener.html
+http://developer.android.com/reference/android/text/method/PasswordTransformationMethod.html
+http://developer.android.com/reference/android/text/method/QwertyKeyListener.html
+http://developer.android.com/reference/android/text/method/ReplacementTransformationMethod.html
+http://developer.android.com/reference/android/text/method/ScrollingMovementMethod.html
+http://developer.android.com/reference/android/text/method/SingleLineTransformationMethod.html
+http://developer.android.com/reference/android/text/method/TextKeyListener.html
+http://developer.android.com/reference/android/text/method/TimeKeyListener.html
+http://developer.android.com/reference/android/text/method/Touch.html
+http://developer.android.com/reference/android/text/Spannable.html
+http://developer.android.com/reference/junit/runner/Version.html
+http://developer.android.com/reference/android/media/SoundPool.html
+http://developer.android.com/reference/android/media/AudioManager.OnAudioFocusChangeListener.html
+http://developer.android.com/reference/java/nio/CharBuffer.html
+http://developer.android.com/shareables/training/NewsReader.zip
+http://developer.android.com/reference/javax/security/auth/callback/Callback.html
+http://developer.android.com/reference/javax/security/auth/callback/PasswordCallback.html
+http://developer.android.com/reference/javax/security/auth/callback/UnsupportedCallbackException.html
+http://developer.android.com/reference/android/webkit/DownloadListener.html
+http://developer.android.com/reference/android/webkit/GeolocationPermissions.Callback.html
+http://developer.android.com/reference/android/webkit/PluginStub.html
+http://developer.android.com/reference/android/webkit/ValueCallback.html
+http://developer.android.com/reference/android/webkit/WebChromeClient.CustomViewCallback.html
+http://developer.android.com/reference/android/webkit/WebIconDatabase.IconListener.html
+http://developer.android.com/reference/android/webkit/WebStorage.QuotaUpdater.html
+http://developer.android.com/reference/android/webkit/WebView.FindListener.html
+http://developer.android.com/reference/android/webkit/WebView.PictureListener.html
+http://developer.android.com/reference/android/webkit/CacheManager.html
+http://developer.android.com/reference/android/webkit/CacheManager.CacheResult.html
+http://developer.android.com/reference/android/webkit/ConsoleMessage.html
+http://developer.android.com/reference/android/webkit/CookieManager.html
+http://developer.android.com/reference/android/webkit/CookieSyncManager.html
+http://developer.android.com/reference/android/webkit/DateSorter.html
+http://developer.android.com/reference/android/webkit/GeolocationPermissions.html
+http://developer.android.com/reference/android/webkit/JsPromptResult.html
+http://developer.android.com/reference/android/webkit/JsResult.html
+http://developer.android.com/reference/android/webkit/MimeTypeMap.html
+http://developer.android.com/reference/android/webkit/URLUtil.html
+http://developer.android.com/reference/android/webkit/WebBackForwardList.html
+http://developer.android.com/reference/android/webkit/WebChromeClient.html
+http://developer.android.com/reference/android/webkit/WebHistoryItem.html
+http://developer.android.com/reference/android/webkit/WebIconDatabase.html
+http://developer.android.com/reference/android/webkit/WebResourceResponse.html
+http://developer.android.com/reference/android/webkit/WebStorage.html
+http://developer.android.com/reference/android/webkit/WebStorage.Origin.html
+http://developer.android.com/reference/android/webkit/WebView.HitTestResult.html
+http://developer.android.com/reference/android/webkit/WebView.WebViewTransport.html
+http://developer.android.com/reference/android/webkit/WebViewClient.html
+http://developer.android.com/reference/android/webkit/WebViewDatabase.html
+http://developer.android.com/reference/android/webkit/WebViewFragment.html
+http://developer.android.com/guide/developing/debug-tasks.html
+http://developer.android.com/reference/android/net/http/SslCertificate.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/AbstractCookieAttributeHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/AbstractCookieSpec.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BasicClientCookie.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BasicClientCookie2.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BasicCommentHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BasicDomainHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BasicExpiresHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BasicMaxAgeHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BasicPathHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BasicSecureHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BestMatchSpec.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BestMatchSpecFactory.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BrowserCompatSpec.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BrowserCompatSpecFactory.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/CookieSpecBase.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/DateUtils.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDomainHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDraftHeaderParser.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDraftSpec.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDraftSpecFactory.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2109DomainHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2109Spec.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2109SpecFactory.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2109VersionHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965DomainAttributeHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965PortAttributeHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965Spec.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965SpecFactory.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965VersionAttributeHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/DateParseException.html
+http://developer.android.com/reference/org/apache/http/cookie/CookieAttributeHandler.html
+http://developer.android.com/reference/java/security/spec/ECField.html
+http://developer.android.com/reference/java/security/spec/DSAParameterSpec.html
+http://developer.android.com/reference/java/security/spec/DSAPrivateKeySpec.html
+http://developer.android.com/reference/java/security/spec/DSAPublicKeySpec.html
+http://developer.android.com/reference/java/security/spec/ECFieldF2m.html
+http://developer.android.com/reference/java/security/spec/ECFieldFp.html
+http://developer.android.com/reference/java/security/spec/ECGenParameterSpec.html
+http://developer.android.com/reference/java/security/spec/ECParameterSpec.html
+http://developer.android.com/reference/java/security/spec/ECPoint.html
+http://developer.android.com/reference/java/security/spec/ECPrivateKeySpec.html
+http://developer.android.com/reference/java/security/spec/ECPublicKeySpec.html
+http://developer.android.com/reference/java/security/spec/EllipticCurve.html
+http://developer.android.com/reference/java/security/spec/EncodedKeySpec.html
+http://developer.android.com/reference/java/security/spec/MGF1ParameterSpec.html
+http://developer.android.com/reference/java/security/spec/PSSParameterSpec.html
+http://developer.android.com/reference/java/security/spec/RSAKeyGenParameterSpec.html
+http://developer.android.com/reference/java/security/spec/RSAMultiPrimePrivateCrtKeySpec.html
+http://developer.android.com/reference/java/security/spec/RSAOtherPrimeInfo.html
+http://developer.android.com/reference/java/security/spec/RSAPrivateCrtKeySpec.html
+http://developer.android.com/reference/java/security/spec/RSAPrivateKeySpec.html
+http://developer.android.com/reference/java/security/spec/RSAPublicKeySpec.html
+http://developer.android.com/reference/java/security/spec/InvalidKeySpecException.html
+http://developer.android.com/reference/java/security/spec/InvalidParameterSpecException.html
+http://developer.android.com/reference/org/apache/http/client/params/AllClientPNames.html
+http://developer.android.com/reference/org/apache/http/auth/Credentials.html
+http://developer.android.com/reference/org/apache/http/params/CoreProtocolPNames.html
+http://developer.android.com/reference/android/inputmethodservice/KeyboardView.OnKeyboardActionListener.html
+http://developer.android.com/reference/android/inputmethodservice/AbstractInputMethodService.AbstractInputMethodImpl.html
+http://developer.android.com/reference/android/inputmethodservice/AbstractInputMethodService.AbstractInputMethodSessionImpl.html
+http://developer.android.com/reference/android/inputmethodservice/InputMethodService.InputMethodImpl.html
+http://developer.android.com/reference/android/inputmethodservice/InputMethodService.InputMethodSessionImpl.html
+http://developer.android.com/reference/android/inputmethodservice/InputMethodService.Insets.html
+http://developer.android.com/reference/android/inputmethodservice/Keyboard.Key.html
+http://developer.android.com/reference/android/inputmethodservice/Keyboard.Row.html
+http://developer.android.com/reference/android/R.id.html
+http://developer.android.com/reference/java/sql/Array.html
+http://developer.android.com/reference/java/sql/Blob.html
+http://developer.android.com/reference/java/sql/CallableStatement.html
+http://developer.android.com/reference/java/sql/Clob.html
+http://developer.android.com/reference/java/sql/DatabaseMetaData.html
+http://developer.android.com/reference/java/sql/Driver.html
+http://developer.android.com/reference/java/sql/NClob.html
+http://developer.android.com/reference/java/sql/ParameterMetaData.html
+http://developer.android.com/reference/java/sql/Ref.html
+http://developer.android.com/reference/java/sql/ResultSet.html
+http://developer.android.com/reference/java/sql/RowId.html
+http://developer.android.com/reference/java/sql/Savepoint.html
+http://developer.android.com/reference/java/sql/SQLData.html
+http://developer.android.com/reference/java/sql/SQLInput.html
+http://developer.android.com/reference/java/sql/SQLOutput.html
+http://developer.android.com/reference/java/sql/SQLXML.html
+http://developer.android.com/reference/java/sql/Statement.html
+http://developer.android.com/reference/java/sql/Struct.html
+http://developer.android.com/reference/java/sql/Date.html
+http://developer.android.com/reference/java/sql/DriverManager.html
+http://developer.android.com/reference/java/sql/DriverPropertyInfo.html
+http://developer.android.com/reference/java/sql/SQLPermission.html
+http://developer.android.com/reference/java/sql/Time.html
+http://developer.android.com/reference/java/sql/Timestamp.html
+http://developer.android.com/reference/java/sql/Types.html
+http://developer.android.com/reference/java/sql/BatchUpdateException.html
+http://developer.android.com/reference/java/sql/DataTruncation.html
+http://developer.android.com/reference/java/sql/SQLClientInfoException.html
+http://developer.android.com/reference/java/sql/SQLDataException.html
+http://developer.android.com/reference/java/sql/SQLFeatureNotSupportedException.html
+http://developer.android.com/reference/java/sql/SQLIntegrityConstraintViolationException.html
+http://developer.android.com/reference/java/sql/SQLInvalidAuthorizationSpecException.html
 http://developer.android.com/reference/java/sql/SQLNonTransientConnectionException.html
 http://developer.android.com/reference/java/sql/SQLNonTransientException.html
-http://developer.android.com/reference/java/sql/SQLOutput.html
-http://developer.android.com/reference/java/sql/SQLPermission.html
 http://developer.android.com/reference/java/sql/SQLRecoverableException.html
 http://developer.android.com/reference/java/sql/SQLSyntaxErrorException.html
 http://developer.android.com/reference/java/sql/SQLTimeoutException.html
@@ -3554,346 +2860,206 @@
 http://developer.android.com/reference/java/sql/SQLTransientConnectionException.html
 http://developer.android.com/reference/java/sql/SQLTransientException.html
 http://developer.android.com/reference/java/sql/SQLWarning.html
-http://developer.android.com/reference/java/sql/SQLXML.html
-http://developer.android.com/reference/android/net/http/SslCertificate.html
-http://developer.android.com/reference/android/net/http/SslCertificate.DName.html
-http://developer.android.com/reference/android/net/SSLCertificateSocketFactory.html
-http://developer.android.com/reference/android/net/SSLSessionCache.html
-http://developer.android.com/reference/javax/net/ssl/SSLContext.html
-http://developer.android.com/reference/javax/net/ssl/SSLContextSpi.html
-http://developer.android.com/reference/javax/net/ssl/SSLEngine.html
-http://developer.android.com/reference/javax/net/ssl/SSLEngineResult.html
-http://developer.android.com/reference/javax/net/ssl/SSLEngineResult.HandshakeStatus.html
-http://developer.android.com/reference/javax/net/ssl/SSLEngineResult.Status.html
-http://developer.android.com/reference/android/net/http/SslError.html
-http://developer.android.com/reference/android/webkit/SslErrorHandler.html
-http://developer.android.com/reference/javax/net/ssl/SSLException.html
-http://developer.android.com/reference/javax/net/ssl/SSLHandshakeException.html
-http://developer.android.com/reference/javax/net/ssl/SSLKeyException.html
-http://developer.android.com/reference/javax/net/ssl/SSLParameters.html
-http://developer.android.com/reference/javax/net/ssl/SSLPeerUnverifiedException.html
-http://developer.android.com/reference/javax/net/ssl/SSLPermission.html
-http://developer.android.com/reference/javax/net/ssl/SSLProtocolException.html
-http://developer.android.com/reference/javax/net/ssl/SSLServerSocket.html
-http://developer.android.com/reference/javax/net/ssl/SSLServerSocketFactory.html
-http://developer.android.com/reference/javax/net/ssl/SSLSession.html
-http://developer.android.com/reference/javax/net/ssl/SSLSessionBindingEvent.html
-http://developer.android.com/reference/javax/net/ssl/SSLSessionBindingListener.html
-http://developer.android.com/reference/javax/net/ssl/SSLSessionContext.html
-http://developer.android.com/reference/javax/net/ssl/SSLSocket.html
-http://developer.android.com/reference/javax/net/ssl/SSLSocketFactory.html
-http://developer.android.com/reference/org/apache/http/conn/ssl/SSLSocketFactory.html
-http://developer.android.com/reference/java/util/Stack.html
-http://developer.android.com/reference/java/lang/StackOverflowError.html
-http://developer.android.com/reference/java/lang/StackTraceElement.html
-http://developer.android.com/reference/android/database/StaleDataException.html
-http://developer.android.com/reference/android/sax/StartElementListener.html
-http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html
-http://developer.android.com/reference/java/sql/Statement.html
-http://developer.android.com/reference/javax/sql/StatementEvent.html
-http://developer.android.com/reference/javax/sql/StatementEventListener.html
-http://developer.android.com/reference/android/util/StateSet.html
-http://developer.android.com/reference/android/os/StatFs.html
-http://developer.android.com/reference/android/text/StaticLayout.html
-http://developer.android.com/reference/org/apache/http/StatusLine.html
-http://developer.android.com/reference/java/io/StreamCorruptedException.html
-http://developer.android.com/reference/java/util/logging/StreamHandler.html
-http://developer.android.com/reference/javax/xml/transform/stream/StreamResult.html
-http://developer.android.com/reference/javax/xml/transform/stream/StreamSource.html
-http://developer.android.com/reference/java/io/StreamTokenizer.html
-http://developer.android.com/reference/org/apache/http/impl/entity/StrictContentLengthStrategy.html
-http://developer.android.com/reference/org/apache/http/conn/ssl/StrictHostnameVerifier.html
-http://developer.android.com/reference/java/lang/StrictMath.html
-http://developer.android.com/reference/android/os/StrictMode.html
-http://developer.android.com/reference/android/os/StrictMode.ThreadPolicy.html
-http://developer.android.com/reference/android/os/StrictMode.ThreadPolicy.Builder.html
-http://developer.android.com/reference/android/os/StrictMode.VmPolicy.html
-http://developer.android.com/reference/android/os/StrictMode.VmPolicy.Builder.html
-http://developer.android.com/reference/android/text/style/StrikethroughSpan.html
-http://developer.android.com/reference/java/lang/StringBuffer.html
-http://developer.android.com/reference/java/io/StringBufferInputStream.html
-http://developer.android.com/reference/java/io/StringReader.html
-http://developer.android.com/reference/java/lang/StringBuilder.html
-http://developer.android.com/reference/android/util/StringBuilderPrinter.html
-http://developer.android.com/reference/java/text/StringCharacterIterator.html
-http://developer.android.com/reference/org/apache/http/entity/StringEntity.html
-http://developer.android.com/reference/java/lang/StringIndexOutOfBoundsException.html
-http://developer.android.com/reference/java/util/StringTokenizer.html
-http://developer.android.com/reference/java/io/StringWriter.html
-http://developer.android.com/reference/java/sql/Struct.html
-http://developer.android.com/reference/android/text/style/StyleSpan.html
-http://developer.android.com/reference/javax/security/auth/Subject.html
-http://developer.android.com/reference/javax/security/auth/SubjectDomainCombiner.html
-http://developer.android.com/reference/android/text/style/SubscriptSpan.html
-http://developer.android.com/reference/android/graphics/SumPathEffect.html
-http://developer.android.com/reference/android/text/style/SuperscriptSpan.html
-http://developer.android.com/reference/android/net/wifi/SupplicantState.html
-http://developer.android.com/reference/android/test/suitebuilder/annotation/Suppress.html
-http://developer.android.com/reference/android/annotation/SuppressLint.html
-http://developer.android.com/reference/java/lang/SuppressWarnings.html
-http://developer.android.com/reference/android/graphics/SurfaceTexture.OnFrameAvailableListener.html
-http://developer.android.com/reference/android/graphics/SurfaceTexture.OutOfResourcesException.html
-http://developer.android.com/reference/android/graphics/SweepGradient.html
-http://developer.android.com/reference/android/preference/SwitchPreference.html
-http://developer.android.com/reference/android/content/SyncAdapterType.html
-http://developer.android.com/reference/android/test/SyncBaseInstrumentation.html
-http://developer.android.com/reference/org/apache/http/protocol/SyncBasicHttpContext.html
-http://developer.android.com/reference/android/content/SyncContext.html
-http://developer.android.com/reference/java/io/SyncFailedException.html
-http://developer.android.com/reference/java/util/concurrent/SynchronousQueue.html
-http://developer.android.com/reference/android/content/SyncInfo.html
-http://developer.android.com/reference/android/content/SyncResult.html
-http://developer.android.com/reference/android/provider/SyncStateContract.html
-http://developer.android.com/reference/android/provider/SyncStateContract.Columns.html
-http://developer.android.com/reference/android/provider/SyncStateContract.Constants.html
-http://developer.android.com/reference/android/provider/SyncStateContract.Helpers.html
-http://developer.android.com/reference/android/content/SyncStats.html
-http://developer.android.com/reference/android/content/SyncStatusObserver.html
-http://developer.android.com/reference/android/speech/tts/SynthesisCallback.html
-http://developer.android.com/reference/android/speech/tts/SynthesisRequest.html
-http://developer.android.com/reference/java/lang/System.html
-http://developer.android.com/reference/android/os/SystemClock.html
-http://developer.android.com/reference/android/app/TabActivity.html
-http://developer.android.com/reference/android/text/style/TabStopSpan.html
-http://developer.android.com/reference/android/text/style/TabStopSpan.Standard.html
-http://developer.android.com/reference/android/nfc/TagLostException.html
-http://developer.android.com/reference/android/nfc/tech/TagTechnology.html
-http://developer.android.com/reference/java/lang/annotation/Target.html
-http://developer.android.com/reference/android/annotation/TargetApi.html
-http://developer.android.com/reference/android/app/TaskStackBuilder.html
-http://developer.android.com/reference/android/support/v4/app/TaskStackBuilder.html
-http://developer.android.com/reference/android/support/v4/app/TaskStackBuilderHoneycomb.html
-http://developer.android.com/reference/android/telephony/TelephonyManager.html
-http://developer.android.com/reference/javax/xml/transform/Templates.html
-http://developer.android.com/reference/javax/xml/transform/sax/TemplatesHandler.html
-http://developer.android.com/reference/junit/framework/Test.html
-http://developer.android.com/reference/junit/framework/TestFailure.html
-http://developer.android.com/reference/junit/framework/TestListener.html
-http://developer.android.com/reference/android/test/suitebuilder/TestMethod.html
-http://developer.android.com/reference/junit/framework/TestResult.html
-http://developer.android.com/reference/android/test/suitebuilder/TestSuiteBuilder.html
-http://developer.android.com/reference/android/test/suitebuilder/TestSuiteBuilder.FailedToCreateTests.html
-http://developer.android.com/reference/junit/runner/TestSuiteLoader.html
-http://developer.android.com/reference/android/test/TestSuiteProvider.html
-http://developer.android.com/reference/dalvik/annotation/TestTarget.html
-http://developer.android.com/reference/dalvik/annotation/TestTargetClass.html
-http://developer.android.com/reference/org/w3c/dom/Text.html
-http://developer.android.com/reference/android/text/style/TextAppearanceSpan.html
-http://developer.android.com/reference/java/awt/font/TextAttribute.html
-http://developer.android.com/reference/android/sax/TextElementListener.html
-http://developer.android.com/reference/android/view/textservice/TextInfo.html
-http://developer.android.com/reference/android/text/method/TextKeyListener.html
-http://developer.android.com/reference/android/text/method/TextKeyListener.Capitalize.html
-http://developer.android.com/reference/android/text/TextPaint.html
-http://developer.android.com/reference/android/view/textservice/TextServicesManager.html
-http://developer.android.com/reference/android/speech/tts/TextToSpeech.Engine.html
-http://developer.android.com/reference/android/speech/tts/TextToSpeech.EngineInfo.html
-http://developer.android.com/reference/android/speech/tts/TextToSpeech.OnInitListener.html
-http://developer.android.com/reference/android/speech/tts/TextToSpeech.OnUtteranceCompletedListener.html
-http://developer.android.com/reference/android/speech/tts/TextToSpeechService.html
-http://developer.android.com/reference/android/text/TextUtils.html
-http://developer.android.com/reference/android/text/TextUtils.EllipsizeCallback.html
-http://developer.android.com/reference/android/text/TextUtils.SimpleStringSplitter.html
-http://developer.android.com/reference/android/text/TextUtils.StringSplitter.html
-http://developer.android.com/reference/android/text/TextUtils.TruncateAt.html
-http://developer.android.com/reference/android/text/TextWatcher.html
-http://developer.android.com/reference/java/lang/Thread.State.html
-http://developer.android.com/reference/java/lang/Thread.UncaughtExceptionHandler.html
-http://developer.android.com/reference/java/lang/ThreadDeath.html
-http://developer.android.com/reference/java/lang/ThreadGroup.html
-http://developer.android.com/reference/java/lang/ThreadLocal.html
-http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.AbortPolicy.html
-http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.CallerRunsPolicy.html
-http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.DiscardOldestPolicy.html
-http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.DiscardPolicy.html
-http://developer.android.com/reference/java/lang/Throwable.html
-http://developer.android.com/reference/android/media/ThumbnailUtils.html
-http://developer.android.com/reference/android/text/format/Time.html
-http://developer.android.com/reference/java/sql/Time.html
-http://developer.android.com/reference/android/media/TimedText.html
-http://developer.android.com/reference/android/util/TimeFormatException.html
-http://developer.android.com/reference/android/text/method/TimeKeyListener.html
-http://developer.android.com/reference/java/util/concurrent/TimeoutException.html
-http://developer.android.com/reference/android/app/TimePickerDialog.html
-http://developer.android.com/reference/android/app/TimePickerDialog.OnTimeSetListener.html
-http://developer.android.com/reference/java/util/Timer.html
-http://developer.android.com/reference/java/util/TimerTask.html
-http://developer.android.com/reference/java/security/Timestamp.html
-http://developer.android.com/reference/java/sql/Timestamp.html
-http://developer.android.com/reference/java/util/concurrent/TimeUnit.html
-http://developer.android.com/reference/android/util/TimeUtils.html
-http://developer.android.com/reference/android/util/TimingLogger.html
-http://developer.android.com/reference/android/os/TokenWatcher.html
-http://developer.android.com/reference/android/media/ToneGenerator.html
-http://developer.android.com/reference/java/util/TooManyListenersException.html
-http://developer.android.com/reference/android/text/method/Touch.html
-http://developer.android.com/reference/android/test/TouchUtils.html
-http://developer.android.com/reference/android/net/TrafficStats.html
-http://developer.android.com/reference/android/support/v4/net/TrafficStatsCompat.html
-http://developer.android.com/reference/android/support/v4/net/TrafficStatsCompatIcs.html
-http://developer.android.com/reference/android/os/TransactionTooLargeException.html
-http://developer.android.com/reference/android/text/method/TransformationMethod.html
-http://developer.android.com/reference/javax/xml/transform/TransformerConfigurationException.html
-http://developer.android.com/reference/javax/xml/transform/TransformerException.html
-http://developer.android.com/reference/javax/xml/transform/TransformerFactory.html
-http://developer.android.com/reference/javax/xml/transform/TransformerFactoryConfigurationError.html
-http://developer.android.com/reference/javax/xml/transform/sax/TransformerHandler.html
-http://developer.android.com/reference/android/graphics/drawable/TransitionDrawable.html
-http://developer.android.com/reference/java/util/TreeMap.html
-http://developer.android.com/reference/java/util/TreeSet.html
-http://developer.android.com/reference/java/security/cert/TrustAnchor.html
-http://developer.android.com/reference/javax/net/ssl/TrustManagerFactory.html
-http://developer.android.com/reference/javax/net/ssl/TrustManagerFactorySpi.html
-http://developer.android.com/reference/org/apache/http/impl/client/TunnelRefusedException.html
-http://developer.android.com/reference/android/preference/TwoStatePreference.html
-http://developer.android.com/reference/java/lang/reflect/Type.html
-http://developer.android.com/reference/android/renderscript/Type.Builder.html
-http://developer.android.com/reference/android/renderscript/Type.CubemapFace.html
-http://developer.android.com/reference/android/util/TypedValue.html
-http://developer.android.com/reference/android/graphics/Typeface.html
-http://developer.android.com/reference/android/text/style/TypefaceSpan.html
-http://developer.android.com/reference/org/w3c/dom/TypeInfo.html
-http://developer.android.com/reference/javax/xml/validation/TypeInfoProvider.html
-http://developer.android.com/reference/javax/xml/validation/ValidatorHandler.html
-http://developer.android.com/reference/java/lang/TypeNotPresentException.html
-http://developer.android.com/reference/java/sql/Types.html
-http://developer.android.com/reference/java/lang/reflect/TypeVariable.html
-http://developer.android.com/reference/android/test/UiThreadTest.html
-http://developer.android.com/reference/java/lang/reflect/UndeclaredThrowableException.html
-http://developer.android.com/reference/android/text/style/UnderlineSpan.html
-http://developer.android.com/reference/java/lang/UnknownError.html
-http://developer.android.com/reference/java/util/UnknownFormatConversionException.html
-http://developer.android.com/reference/java/util/UnknownFormatFlagsException.html
-http://developer.android.com/reference/java/net/UnknownHostException.html
-http://developer.android.com/reference/java/net/UnknownServiceException.html
-http://developer.android.com/reference/java/nio/charset/UnmappableCharacterException.html
-http://developer.android.com/reference/java/security/UnrecoverableEntryException.html
-http://developer.android.com/reference/java/security/UnrecoverableKeyException.html
-http://developer.android.com/reference/java/nio/channels/UnresolvedAddressException.html
-http://developer.android.com/reference/java/security/UnresolvedPermission.html
-http://developer.android.com/reference/java/lang/UnsatisfiedLinkError.html
-http://developer.android.com/reference/java/nio/channels/UnsupportedAddressTypeException.html
-http://developer.android.com/reference/javax/security/auth/callback/UnsupportedCallbackException.html
-http://developer.android.com/reference/java/nio/charset/UnsupportedCharsetException.html
-http://developer.android.com/reference/java/lang/UnsupportedClassVersionError.html
-http://developer.android.com/reference/org/apache/http/impl/auth/UnsupportedDigestAlgorithmException.html
-http://developer.android.com/reference/java/io/UnsupportedEncodingException.html
-http://developer.android.com/reference/org/apache/http/UnsupportedHttpVersionException.html
-http://developer.android.com/reference/java/lang/UnsupportedOperationException.html
-http://developer.android.com/reference/android/text/style/UpdateAppearance.html
-http://developer.android.com/reference/android/text/style/UpdateLayout.html
+http://developer.android.com/sdk/win-usb.html
+http://developer.android.com/reference/java/net/ContentHandlerFactory.html
+http://developer.android.com/reference/java/net/CookiePolicy.html
+http://developer.android.com/reference/java/net/CookieStore.html
+http://developer.android.com/reference/java/net/DatagramSocketImplFactory.html
+http://developer.android.com/reference/java/net/FileNameMap.html
+http://developer.android.com/reference/java/net/SocketImplFactory.html
+http://developer.android.com/reference/java/net/SocketOptions.html
+http://developer.android.com/reference/java/net/URLStreamHandlerFactory.html
+http://developer.android.com/reference/java/net/Authenticator.html
+http://developer.android.com/reference/java/net/CacheRequest.html
+http://developer.android.com/reference/java/net/CacheResponse.html
+http://developer.android.com/reference/java/net/ContentHandler.html
+http://developer.android.com/reference/java/net/CookieHandler.html
+http://developer.android.com/reference/java/net/CookieManager.html
+http://developer.android.com/reference/java/net/DatagramPacket.html
+http://developer.android.com/reference/java/net/DatagramSocket.html
+http://developer.android.com/reference/java/net/DatagramSocketImpl.html
+http://developer.android.com/reference/java/net/HttpCookie.html
+http://developer.android.com/reference/java/net/HttpURLConnection.html
+http://developer.android.com/reference/java/net/IDN.html
+http://developer.android.com/reference/java/net/Inet4Address.html
+http://developer.android.com/reference/java/net/Inet6Address.html
+http://developer.android.com/reference/java/net/InetSocketAddress.html
+http://developer.android.com/reference/java/net/InterfaceAddress.html
+http://developer.android.com/reference/java/net/JarURLConnection.html
+http://developer.android.com/reference/java/net/MulticastSocket.html
+http://developer.android.com/reference/java/net/NetPermission.html
+http://developer.android.com/reference/java/net/NetworkInterface.html
+http://developer.android.com/reference/java/net/PasswordAuthentication.html
+http://developer.android.com/reference/java/net/Proxy.html
+http://developer.android.com/reference/java/net/ProxySelector.html
+http://developer.android.com/reference/java/net/ResponseCache.html
+http://developer.android.com/reference/java/net/SecureCacheResponse.html
+http://developer.android.com/reference/java/net/ServerSocket.html
+http://developer.android.com/reference/java/net/SocketImpl.html
+http://developer.android.com/reference/java/net/SocketPermission.html
 http://developer.android.com/reference/java/net/URI.html
-http://developer.android.com/reference/org/apache/http/protocol/UriPatternMatcher.html
-http://developer.android.com/reference/javax/xml/transform/URIResolver.html
-http://developer.android.com/reference/java/net/URISyntaxException.html
-http://developer.android.com/reference/org/apache/http/client/utils/URIUtils.html
 http://developer.android.com/reference/java/net/URL.html
 http://developer.android.com/reference/java/net/URLClassLoader.html
 http://developer.android.com/reference/java/net/URLDecoder.html
-http://developer.android.com/reference/org/apache/http/client/entity/UrlEncodedFormEntity.html
-http://developer.android.com/reference/org/apache/http/client/utils/URLEncodedUtils.html
 http://developer.android.com/reference/java/net/URLEncoder.html
-http://developer.android.com/reference/android/net/UrlQuerySanitizer.html
-http://developer.android.com/reference/android/net/UrlQuerySanitizer.IllegalCharacterValueSanitizer.html
-http://developer.android.com/reference/android/net/UrlQuerySanitizer.ParameterValuePair.html
-http://developer.android.com/reference/android/net/UrlQuerySanitizer.ValueSanitizer.html
-http://developer.android.com/reference/android/text/style/URLSpan.html
 http://developer.android.com/reference/java/net/URLStreamHandler.html
-http://developer.android.com/reference/java/net/URLStreamHandlerFactory.html
-http://developer.android.com/reference/android/webkit/URLUtil.html
-http://developer.android.com/reference/android/hardware/usb/UsbAccessory.html
-http://developer.android.com/reference/android/hardware/usb/UsbConstants.html
-http://developer.android.com/reference/android/hardware/usb/UsbDevice.html
-http://developer.android.com/reference/android/hardware/usb/UsbDeviceConnection.html
-http://developer.android.com/reference/android/hardware/usb/UsbEndpoint.html
-http://developer.android.com/reference/android/hardware/usb/UsbInterface.html
-http://developer.android.com/reference/android/hardware/usb/UsbManager.html
-http://developer.android.com/reference/android/hardware/usb/UsbRequest.html
-http://developer.android.com/reference/org/w3c/dom/UserDataHandler.html
-http://developer.android.com/reference/android/provider/UserDictionary.html
-http://developer.android.com/reference/android/provider/UserDictionary.Words.html
-http://developer.android.com/reference/org/apache/http/client/UserTokenHandler.html
-http://developer.android.com/reference/java/io/UTFDataFormatException.html
-http://developer.android.com/reference/javax/xml/validation/Validator.html
-http://developer.android.com/reference/android/webkit/ValueCallback.html
-http://developer.android.com/reference/java/util/Vector.html
-http://developer.android.com/reference/android/support/v4/view/VelocityTrackerCompat.html
-http://developer.android.com/reference/java/lang/VerifyError.html
-http://developer.android.com/reference/junit/runner/Version.html
-http://developer.android.com/reference/org/apache/http/util/VersionInfo.html
-http://developer.android.com/reference/android/os/Vibrator.html
-http://developer.android.com/reference/android/test/ViewAsserts.html
-http://developer.android.com/reference/android/support/v4/view/ViewCompat.html
-http://developer.android.com/reference/android/support/v4/view/ViewCompatJB.html
-http://developer.android.com/reference/android/support/v4/view/ViewConfigurationCompat.html
-http://developer.android.com/reference/android/view/ViewDebug.CapturedViewProperty.html
-http://developer.android.com/reference/android/view/ViewDebug.ExportedProperty.html
-http://developer.android.com/reference/android/view/ViewDebug.FlagToString.html
-http://developer.android.com/reference/android/view/ViewDebug.IntToString.html
-http://developer.android.com/reference/android/support/v4/view/ViewGroupCompat.html
-http://developer.android.com/reference/android/support/v4/view/ViewPager.LayoutParams.html
-http://developer.android.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html
-http://developer.android.com/reference/android/support/v4/view/ViewPager.SavedState.html
-http://developer.android.com/reference/android/support/v4/view/ViewPager.SimpleOnPageChangeListener.html
-http://developer.android.com/reference/android/media/audiofx/Virtualizer.html
-http://developer.android.com/reference/android/media/audiofx/Virtualizer.OnParameterChangeListener.html
-http://developer.android.com/reference/android/media/audiofx/Virtualizer.Settings.html
-http://developer.android.com/reference/java/lang/VirtualMachineError.html
-http://developer.android.com/reference/android/opengl/Visibility.html
-http://developer.android.com/reference/android/media/audiofx/Visualizer.html
-http://developer.android.com/reference/android/media/audiofx/Visualizer.OnDataCaptureListener.html
-http://developer.android.com/reference/android/provider/VoicemailContract.html
-http://developer.android.com/reference/android/provider/VoicemailContract.Status.html
-http://developer.android.com/reference/android/provider/VoicemailContract.Voicemails.html
-http://developer.android.com/reference/java/lang/Void.html
-http://developer.android.com/reference/android/net/VpnService.html
-http://developer.android.com/reference/android/net/VpnService.Builder.html
-http://developer.android.com/reference/android/app/WallpaperInfo.html
-http://developer.android.com/reference/android/app/WallpaperManager.html
-http://developer.android.com/reference/android/service/wallpaper/WallpaperService.html
+http://developer.android.com/reference/java/net/BindException.html
+http://developer.android.com/reference/java/net/ConnectException.html
+http://developer.android.com/reference/java/net/HttpRetryException.html
+http://developer.android.com/reference/java/net/MalformedURLException.html
+http://developer.android.com/reference/java/net/NoRouteToHostException.html
+http://developer.android.com/reference/java/net/PortUnreachableException.html
+http://developer.android.com/reference/java/net/ProtocolException.html
+http://developer.android.com/reference/java/net/SocketException.html
+http://developer.android.com/reference/java/net/SocketTimeoutException.html
+http://developer.android.com/reference/java/net/UnknownHostException.html
+http://developer.android.com/reference/java/net/UnknownServiceException.html
+http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html
+http://developer.android.com/reference/javax/xml/parsers/DocumentBuilderFactory.html
+http://developer.android.com/reference/javax/xml/parsers/SAXParser.html
+http://developer.android.com/reference/javax/xml/parsers/SAXParserFactory.html
+http://developer.android.com/reference/javax/xml/parsers/ParserConfigurationException.html
+http://developer.android.com/reference/javax/xml/parsers/FactoryConfigurationError.html
+http://developer.android.com/reference/org/xml/sax/XMLReader.html
+http://developer.android.com/reference/java/nio/Buffer.html
+http://developer.android.com/reference/java/nio/ByteOrder.html
+http://developer.android.com/reference/java/nio/DoubleBuffer.html
+http://developer.android.com/reference/java/nio/FloatBuffer.html
+http://developer.android.com/reference/java/nio/IntBuffer.html
+http://developer.android.com/reference/java/nio/LongBuffer.html
+http://developer.android.com/reference/java/nio/MappedByteBuffer.html
+http://developer.android.com/reference/java/nio/ShortBuffer.html
+http://developer.android.com/reference/org/apache/http/impl/auth/NTLMEngine.html
+http://developer.android.com/reference/org/apache/http/impl/auth/AuthSchemeBase.html
+http://developer.android.com/reference/org/apache/http/impl/auth/BasicScheme.html
+http://developer.android.com/reference/org/apache/http/impl/auth/BasicSchemeFactory.html
+http://developer.android.com/reference/org/apache/http/impl/auth/DigestScheme.html
+http://developer.android.com/reference/org/apache/http/impl/auth/DigestSchemeFactory.html
+http://developer.android.com/reference/org/apache/http/impl/auth/NTLMScheme.html
+http://developer.android.com/reference/org/apache/http/impl/auth/RFC2617Scheme.html
+http://developer.android.com/reference/org/apache/http/impl/auth/NTLMEngineException.html
+http://developer.android.com/reference/android/util/AndroidException.html
 http://developer.android.com/reference/android/service/wallpaper/WallpaperService.Engine.html
-http://developer.android.com/reference/java/util/WeakHashMap.html
-http://developer.android.com/reference/android/webkit/WebBackForwardList.html
-http://developer.android.com/reference/android/webkit/WebChromeClient.CustomViewCallback.html
-http://developer.android.com/reference/android/webkit/WebHistoryItem.html
-http://developer.android.com/reference/android/webkit/WebIconDatabase.html
-http://developer.android.com/reference/android/webkit/WebIconDatabase.IconListener.html
-http://developer.android.com/reference/android/webkit/WebResourceResponse.html
-http://developer.android.com/reference/android/webkit/WebSettings.LayoutAlgorithm.html
-http://developer.android.com/reference/android/webkit/WebSettings.PluginState.html
-http://developer.android.com/reference/android/webkit/WebSettings.RenderPriority.html
-http://developer.android.com/reference/android/webkit/WebSettings.TextSize.html
-http://developer.android.com/reference/android/webkit/WebSettings.ZoomDensity.html
-http://developer.android.com/reference/android/webkit/WebStorage.html
-http://developer.android.com/reference/android/webkit/WebStorage.Origin.html
-http://developer.android.com/reference/android/webkit/WebStorage.QuotaUpdater.html
-http://developer.android.com/reference/android/webkit/WebView.FindListener.html
-http://developer.android.com/reference/android/webkit/WebView.HitTestResult.html
-http://developer.android.com/reference/android/webkit/WebView.PictureListener.html
-http://developer.android.com/reference/android/webkit/WebView.WebViewTransport.html
-http://developer.android.com/reference/android/webkit/WebViewDatabase.html
-http://developer.android.com/reference/android/webkit/WebViewFragment.html
-http://developer.android.com/reference/android/net/wifi/WifiConfiguration.html
-http://developer.android.com/reference/android/net/wifi/WifiConfiguration.AuthAlgorithm.html
-http://developer.android.com/reference/android/net/wifi/WifiConfiguration.GroupCipher.html
-http://developer.android.com/reference/android/net/wifi/WifiConfiguration.KeyMgmt.html
-http://developer.android.com/reference/android/net/wifi/WifiConfiguration.PairwiseCipher.html
-http://developer.android.com/reference/android/net/wifi/WifiConfiguration.Protocol.html
-http://developer.android.com/reference/android/net/wifi/WifiConfiguration.Status.html
-http://developer.android.com/reference/android/net/wifi/WifiInfo.html
-http://developer.android.com/reference/android/net/wifi/WifiManager.html
-http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html
-http://developer.android.com/reference/android/net/wifi/WifiManager.WifiLock.html
-http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pConfig.html
-http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDevice.html
-http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDeviceList.html
-http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo.html
-http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest.html
-http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html
-http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pGroup.html
-http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pInfo.html
+http://developer.android.com/reference/android/location/GpsStatus.Listener.html
+http://developer.android.com/reference/android/location/GpsStatus.NmeaListener.html
+http://developer.android.com/reference/android/location/LocationListener.html
+http://developer.android.com/reference/android/location/Address.html
+http://developer.android.com/reference/android/location/Criteria.html
+http://developer.android.com/reference/android/location/Geocoder.html
+http://developer.android.com/reference/android/location/GpsSatellite.html
+http://developer.android.com/reference/android/location/GpsStatus.html
+http://developer.android.com/reference/android/location/Location.html
+http://developer.android.com/reference/org/apache/http/auth/BasicUserPrincipal.html
+http://developer.android.com/reference/java/security/acl/Group.html
+http://developer.android.com/reference/org/apache/http/auth/NTUserPrincipal.html
+http://developer.android.com/reference/javax/security/auth/x500/X500Principal.html
+http://developer.android.com/reference/android/hardware/Camera.Parameters.html
+http://developer.android.com/reference/android/hardware/Camera.PictureCallback.html
+http://developer.android.com/reference/android/media/MediaRecorder.AudioSource.html
+http://developer.android.com/reference/android/media/MediaRecorder.VideoSource.html
+http://developer.android.com/reference/android/media/MediaRecorder.VideoEncoder.html
+http://developer.android.com/reference/android/hardware/Camera.Area.html
+http://developer.android.com/reference/android/hardware/Camera.FaceDetectionListener.html
+http://developer.android.com/sdk/api_diff/15/changes.html
+http://developer.android.com/reference/android/view/textservice/SpellCheckerSession.html
+http://developer.android.com/reference/android/view/textservice/SuggestionsInfo.html
+http://developer.android.com/reference/android/text/style/SuggestionSpan.html
+http://developer.android.com/reference/java/lang/annotation/Target.html
+http://developer.android.com/resources/faq/troubleshooting.html
+http://developer.android.com/reference/org/apache/http/client/AuthenticationHandler.html
+http://developer.android.com/reference/org/apache/http/client/CookieStore.html
+http://developer.android.com/reference/org/apache/http/client/CredentialsProvider.html
+http://developer.android.com/reference/org/apache/http/client/HttpRequestRetryHandler.html
+http://developer.android.com/reference/org/apache/http/client/RedirectHandler.html
+http://developer.android.com/reference/org/apache/http/client/RequestDirector.html
+http://developer.android.com/reference/org/apache/http/client/ResponseHandler.html
+http://developer.android.com/reference/org/apache/http/client/UserTokenHandler.html
+http://developer.android.com/reference/org/apache/http/client/CircularRedirectException.html
+http://developer.android.com/reference/org/apache/http/client/ClientProtocolException.html
+http://developer.android.com/reference/org/apache/http/client/HttpResponseException.html
+http://developer.android.com/reference/org/apache/http/client/NonRepeatableRequestException.html
+http://developer.android.com/reference/org/apache/http/client/RedirectException.html
+http://developer.android.com/reference/org/apache/http/impl/client/AbstractHttpClient.html
+http://developer.android.com/reference/android/net/http/AndroidHttpClient.html
+http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpClient.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpUriRequest.html
+http://developer.android.com/reference/android/accessibilityservice/AccessibilityServiceInfo.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/accessibility/ClockBackService.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/accessibility/TaskBackService.html
+http://developer.android.com/reference/dalvik/bytecode/Opcodes.html
+http://developer.android.com/reference/dalvik/bytecode/OpcodeInfo.html
+http://developer.android.com/reference/android/text/Spanned.html
+http://developer.android.com/resources/faq/index.html
+http://developer.android.com/reference/android/renderscript/Allocation.html
+http://developer.android.com/reference/android/renderscript/AllocationAdapter.html
+http://developer.android.com/reference/android/renderscript/BaseObj.html
+http://developer.android.com/reference/android/renderscript/Byte2.html
+http://developer.android.com/reference/android/renderscript/Byte3.html
+http://developer.android.com/reference/android/renderscript/Byte4.html
+http://developer.android.com/reference/android/renderscript/Double2.html
+http://developer.android.com/reference/android/renderscript/Double3.html
+http://developer.android.com/reference/android/renderscript/Double4.html
+http://developer.android.com/reference/android/renderscript/Element.html
+http://developer.android.com/reference/android/renderscript/Element.Builder.html
+http://developer.android.com/reference/android/renderscript/FieldPacker.html
+http://developer.android.com/reference/android/renderscript/FileA3D.html
+http://developer.android.com/reference/android/renderscript/FileA3D.IndexEntry.html
+http://developer.android.com/reference/android/renderscript/Float2.html
+http://developer.android.com/reference/android/renderscript/Float3.html
+http://developer.android.com/reference/android/renderscript/Float4.html
+http://developer.android.com/reference/android/renderscript/Font.html
+http://developer.android.com/reference/android/renderscript/Int2.html
+http://developer.android.com/reference/android/renderscript/Int3.html
+http://developer.android.com/reference/android/renderscript/Int4.html
+http://developer.android.com/reference/android/renderscript/Long2.html
+http://developer.android.com/reference/android/renderscript/Long3.html
+http://developer.android.com/reference/android/renderscript/Long4.html
+http://developer.android.com/reference/android/renderscript/Matrix2f.html
+http://developer.android.com/reference/android/renderscript/Matrix3f.html
+http://developer.android.com/reference/android/renderscript/Matrix4f.html
+http://developer.android.com/reference/android/renderscript/Mesh.html
+http://developer.android.com/reference/android/renderscript/Mesh.AllocationBuilder.html
+http://developer.android.com/reference/android/renderscript/Mesh.Builder.html
+http://developer.android.com/reference/android/renderscript/Mesh.TriangleMeshBuilder.html
+http://developer.android.com/reference/android/renderscript/Program.html
+http://developer.android.com/reference/android/renderscript/Program.BaseProgramBuilder.html
+http://developer.android.com/reference/android/renderscript/ProgramFragment.html
+http://developer.android.com/reference/android/renderscript/ProgramFragment.Builder.html
+http://developer.android.com/reference/android/renderscript/ProgramFragmentFixedFunction.html
+http://developer.android.com/reference/android/renderscript/ProgramFragmentFixedFunction.Builder.html
+http://developer.android.com/reference/android/renderscript/ProgramRaster.html
+http://developer.android.com/reference/android/renderscript/ProgramRaster.Builder.html
+http://developer.android.com/reference/android/renderscript/ProgramStore.html
+http://developer.android.com/reference/android/renderscript/ProgramStore.Builder.html
+http://developer.android.com/reference/android/renderscript/ProgramVertex.html
+http://developer.android.com/reference/android/renderscript/ProgramVertex.Builder.html
+http://developer.android.com/reference/android/renderscript/ProgramVertexFixedFunction.html
+http://developer.android.com/reference/android/renderscript/ProgramVertexFixedFunction.Builder.html
+http://developer.android.com/reference/android/renderscript/ProgramVertexFixedFunction.Constants.html
+http://developer.android.com/reference/android/renderscript/RenderScript.html
+http://developer.android.com/reference/android/renderscript/RenderScript.RSErrorHandler.html
+http://developer.android.com/reference/android/renderscript/RenderScript.RSMessageHandler.html
+http://developer.android.com/reference/android/renderscript/RenderScriptGL.html
+http://developer.android.com/reference/android/renderscript/RenderScriptGL.SurfaceConfig.html
+http://developer.android.com/reference/android/renderscript/Sampler.html
+http://developer.android.com/reference/android/renderscript/Sampler.Builder.html
+http://developer.android.com/reference/android/renderscript/Script.html
+http://developer.android.com/reference/android/renderscript/Script.Builder.html
+http://developer.android.com/reference/android/renderscript/Script.FieldBase.html
+http://developer.android.com/reference/android/renderscript/ScriptC.html
+http://developer.android.com/reference/android/renderscript/Short2.html
+http://developer.android.com/reference/android/renderscript/Short3.html
+http://developer.android.com/reference/android/renderscript/Short4.html
+http://developer.android.com/reference/android/renderscript/Type.html
+http://developer.android.com/reference/android/renderscript/Type.Builder.html
+http://developer.android.com/reference/android/util/Pair.html
+http://developer.android.com/reference/org/apache/http/impl/entity/LaxContentLengthStrategy.html
+http://developer.android.com/reference/org/apache/http/impl/entity/StrictContentLengthStrategy.html
+http://developer.android.com/reference/org/apache/http/entity/ContentLengthStrategy.html
+http://developer.android.com/reference/java/util/zip/ZipError.html
+http://developer.android.com/reference/android/media/MediaScannerConnection.html
+http://developer.android.com/reference/java/util/zip/GZIPOutputStream.html
 http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ActionListener.html
-http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.Channel.html
 http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ChannelListener.html
 http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ConnectionInfoListener.html
 http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.DnsSdServiceResponseListener.html
@@ -3902,156 +3068,771 @@
 http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.PeerListListener.html
 http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ServiceResponseListener.html
 http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.UpnpServiceResponseListener.html
-http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pServiceInfo.html
-http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pServiceRequest.html
-http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pUpnpServiceInfo.html
-http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pUpnpServiceRequest.html
-http://developer.android.com/reference/java/lang/reflect/WildcardType.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pConfig.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDevice.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDeviceList.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pGroup.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pInfo.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.Channel.html
+http://developer.android.com/resources/samples/WiFiDirectDemo/index.html
+http://developer.android.com/reference/android/support/v13/app/FragmentPagerAdapter.html
+http://developer.android.com/reference/android/support/v13/app/FragmentStatePagerAdapter.html
+http://developer.android.com/reference/android/hardware/usb/UsbAccessory.html
+http://developer.android.com/reference/android/hardware/usb/UsbDevice.html
+http://developer.android.com/reference/android/bluetooth/BluetoothProfile.html
+http://developer.android.com/reference/android/bluetooth/BluetoothProfile.ServiceListener.html
+http://developer.android.com/reference/android/bluetooth/BluetoothA2dp.html
+http://developer.android.com/reference/android/bluetooth/BluetoothAssignedNumbers.html
+http://developer.android.com/reference/android/bluetooth/BluetoothClass.html
+http://developer.android.com/reference/android/bluetooth/BluetoothClass.Device.html
+http://developer.android.com/reference/android/bluetooth/BluetoothClass.Device.Major.html
+http://developer.android.com/reference/android/bluetooth/BluetoothClass.Service.html
+http://developer.android.com/reference/android/bluetooth/BluetoothHeadset.html
+http://developer.android.com/reference/android/bluetooth/BluetoothHealth.html
+http://developer.android.com/reference/android/bluetooth/BluetoothHealthAppConfiguration.html
+http://developer.android.com/reference/android/bluetooth/BluetoothHealthCallback.html
+http://developer.android.com/reference/android/bluetooth/BluetoothServerSocket.html
+http://developer.android.com/reference/android/bluetooth/BluetoothSocket.html
+http://developer.android.com/guide/topics/wireless/bluetooth.html
+http://developer.android.com/reference/renderscript/index.html
+http://developer.android.com/sdk/tools-notes.html
+http://developer.android.com/reference/java/util/concurrent/BlockingDeque.html
+http://developer.android.com/reference/java/util/concurrent/LinkedBlockingDeque.html
+http://developer.android.com/reference/android/media/AudioRecord.OnRecordPositionUpdateListener.html
+http://developer.android.com/reference/android/media/AudioTrack.OnPlaybackPositionUpdateListener.html
+http://developer.android.com/reference/android/media/JetPlayer.OnJetEventListener.html
+http://developer.android.com/reference/android/media/MediaPlayer.OnBufferingUpdateListener.html
+http://developer.android.com/reference/android/media/MediaPlayer.OnInfoListener.html
+http://developer.android.com/reference/android/media/MediaPlayer.OnSeekCompleteListener.html
+http://developer.android.com/reference/android/media/MediaPlayer.OnTimedTextListener.html
+http://developer.android.com/reference/android/media/MediaPlayer.OnVideoSizeChangedListener.html
+http://developer.android.com/reference/android/media/MediaRecorder.OnErrorListener.html
+http://developer.android.com/reference/android/media/MediaRecorder.OnInfoListener.html
+http://developer.android.com/reference/android/media/MediaScannerConnection.MediaScannerConnectionClient.html
+http://developer.android.com/reference/android/media/MediaScannerConnection.OnScanCompletedListener.html
+http://developer.android.com/reference/android/media/SoundPool.OnLoadCompleteListener.html
+http://developer.android.com/reference/android/media/AsyncPlayer.html
+http://developer.android.com/reference/android/media/AudioFormat.html
+http://developer.android.com/reference/android/media/AudioRecord.html
+http://developer.android.com/reference/android/media/AudioTrack.html
+http://developer.android.com/reference/android/media/CameraProfile.html
+http://developer.android.com/reference/android/media/ExifInterface.html
+http://developer.android.com/reference/android/media/FaceDetector.html
+http://developer.android.com/reference/android/media/FaceDetector.Face.html
+http://developer.android.com/reference/android/media/JetPlayer.html
+http://developer.android.com/reference/android/media/MediaActionSound.html
+http://developer.android.com/reference/android/media/MediaCodec.html
+http://developer.android.com/reference/android/media/MediaCodec.BufferInfo.html
+http://developer.android.com/reference/android/media/MediaCodec.CryptoInfo.html
+http://developer.android.com/reference/android/media/MediaCodecInfo.html
+http://developer.android.com/reference/android/media/MediaCodecInfo.CodecCapabilities.html
+http://developer.android.com/reference/android/media/MediaCodecInfo.CodecProfileLevel.html
+http://developer.android.com/reference/android/media/MediaCodecList.html
+http://developer.android.com/reference/android/media/MediaCrypto.html
+http://developer.android.com/reference/android/media/MediaExtractor.html
+http://developer.android.com/reference/android/media/MediaFormat.html
+http://developer.android.com/reference/android/media/MediaPlayer.TrackInfo.html
+http://developer.android.com/reference/android/media/MediaRouter.Callback.html
+http://developer.android.com/reference/android/media/MediaRouter.RouteCategory.html
+http://developer.android.com/reference/android/media/MediaRouter.RouteGroup.html
+http://developer.android.com/reference/android/media/MediaRouter.RouteInfo.html
+http://developer.android.com/reference/android/media/MediaRouter.SimpleCallback.html
+http://developer.android.com/reference/android/media/MediaRouter.UserRouteInfo.html
+http://developer.android.com/reference/android/media/MediaRouter.VolumeCallback.html
+http://developer.android.com/reference/android/media/MediaSyncEvent.html
+http://developer.android.com/reference/android/media/RemoteControlClient.html
+http://developer.android.com/reference/android/media/RemoteControlClient.MetadataEditor.html
+http://developer.android.com/reference/android/media/Ringtone.html
+http://developer.android.com/reference/android/media/ThumbnailUtils.html
+http://developer.android.com/reference/android/media/TimedText.html
+http://developer.android.com/reference/android/media/ToneGenerator.html
+http://developer.android.com/reference/android/media/MediaCryptoException.html
+http://developer.android.com/reference/org/xml/sax/AttributeList.html
+http://developer.android.com/reference/org/xml/sax/Attributes.html
+http://developer.android.com/reference/org/xml/sax/ContentHandler.html
+http://developer.android.com/reference/org/xml/sax/DocumentHandler.html
+http://developer.android.com/reference/org/xml/sax/DTDHandler.html
+http://developer.android.com/reference/org/xml/sax/EntityResolver.html
+http://developer.android.com/reference/org/xml/sax/ErrorHandler.html
+http://developer.android.com/reference/org/xml/sax/Locator.html
+http://developer.android.com/reference/org/xml/sax/Parser.html
+http://developer.android.com/reference/org/xml/sax/XMLFilter.html
+http://developer.android.com/reference/org/xml/sax/HandlerBase.html
+http://developer.android.com/reference/org/xml/sax/InputSource.html
+http://developer.android.com/reference/org/xml/sax/SAXException.html
+http://developer.android.com/reference/org/xml/sax/SAXNotRecognizedException.html
+http://developer.android.com/reference/org/xml/sax/SAXNotSupportedException.html
+http://developer.android.com/reference/org/xml/sax/SAXParseException.html
+http://developer.android.com/reference/org/xml/sax/ext/Attributes2.html
+http://developer.android.com/reference/org/xml/sax/ext/Locator2.html
+http://developer.android.com/reference/org/xml/sax/ext/EntityResolver2.html
+http://developer.android.com/reference/org/xml/sax/ext/DeclHandler.html
+http://developer.android.com/reference/org/xml/sax/ext/LexicalHandler.html
+http://developer.android.com/reference/org/xml/sax/helpers/DefaultHandler.html
+http://developer.android.com/reference/android/support/v4/widget/CursorAdapter.html
+http://developer.android.com/reference/android/support/v4/widget/ResourceCursorAdapter.html
+http://developer.android.com/reference/android/support/v4/widget/SimpleCursorAdapter.html
+http://developer.android.com/shareables/training/CustomView.zip
+http://developer.android.com/guide/developing/tools/adt.html
+http://developer.android.com/reference/android/util/Base64.html
+http://developer.android.com/reference/android/util/Base64InputStream.html
+http://developer.android.com/reference/android/util/Base64OutputStream.html
+http://developer.android.com/reference/android/util/Config.html
+http://developer.android.com/reference/android/util/DebugUtils.html
+http://developer.android.com/reference/android/util/EventLog.html
+http://developer.android.com/reference/android/util/EventLog.Event.html
+http://developer.android.com/reference/android/util/EventLogTags.html
+http://developer.android.com/reference/android/util/EventLogTags.Description.html
+http://developer.android.com/reference/android/util/FloatMath.html
+http://developer.android.com/reference/android/util/JsonReader.html
+http://developer.android.com/reference/android/util/JsonWriter.html
+http://developer.android.com/reference/android/util/LogPrinter.html
+http://developer.android.com/reference/android/util/LongSparseArray.html
+http://developer.android.com/reference/android/util/LruCache.html
+http://developer.android.com/reference/android/util/MonthDisplayHelper.html
+http://developer.android.com/reference/android/util/Patterns.html
+http://developer.android.com/reference/android/util/PrintStreamPrinter.html
+http://developer.android.com/reference/android/util/PrintWriterPrinter.html
+http://developer.android.com/reference/android/util/SparseIntArray.html
+http://developer.android.com/reference/android/util/StateSet.html
+http://developer.android.com/reference/android/util/StringBuilderPrinter.html
+http://developer.android.com/reference/android/util/TimeUtils.html
+http://developer.android.com/reference/android/util/TimingLogger.html
+http://developer.android.com/reference/android/util/Xml.html
+http://developer.android.com/reference/android/util/Base64DataException.html
+http://developer.android.com/reference/android/util/MalformedJsonException.html
+http://developer.android.com/reference/org/apache/http/client/params/ClientPNames.html
+http://developer.android.com/reference/org/apache/http/client/params/AuthPolicy.html
+http://developer.android.com/reference/org/apache/http/client/params/ClientParamBean.html
+http://developer.android.com/reference/org/apache/http/client/params/CookiePolicy.html
+http://developer.android.com/reference/org/apache/http/client/params/HttpClientParams.html
+http://developer.android.com/reference/org/apache/http/util/ByteArrayBuffer.html
+http://developer.android.com/reference/org/apache/http/util/EncodingUtils.html
+http://developer.android.com/reference/org/apache/http/util/EntityUtils.html
+http://developer.android.com/reference/org/apache/http/util/ExceptionUtils.html
+http://developer.android.com/reference/org/apache/http/util/LangUtils.html
+http://developer.android.com/reference/org/apache/http/util/VersionInfo.html
+http://developer.android.com/reference/javax/xml/transform/sax/SAXTransformerFactory.html
+http://developer.android.com/reference/org/apache/http/auth/AuthSchemeFactory.html
+http://developer.android.com/reference/org/apache/http/auth/AuthScheme.html
+http://developer.android.com/reference/org/xml/sax/helpers/AttributeListImpl.html
+http://developer.android.com/reference/org/xml/sax/helpers/AttributesImpl.html
+http://developer.android.com/reference/org/xml/sax/helpers/LocatorImpl.html
+http://developer.android.com/reference/org/xml/sax/helpers/NamespaceSupport.html
+http://developer.android.com/reference/org/xml/sax/helpers/ParserAdapter.html
+http://developer.android.com/reference/org/xml/sax/helpers/ParserFactory.html
+http://developer.android.com/reference/org/xml/sax/helpers/XMLFilterImpl.html
+http://developer.android.com/reference/org/xml/sax/helpers/XMLReaderAdapter.html
+http://developer.android.com/reference/org/xml/sax/helpers/XMLReaderFactory.html
+http://developer.android.com/reference/java/util/zip/ZipOutputStream.html
+http://developer.android.com/reference/java/util/zip/DeflaterOutputStream.html
+http://developer.android.com/reference/java/util/zip/Deflater.html
+http://developer.android.com/reference/java/util/zip/ZipEntry.html
+http://developer.android.com/reference/java/text/AttributedCharacterIterator.html
+http://developer.android.com/reference/java/text/CharacterIterator.html
+http://developer.android.com/reference/java/text/Annotation.html
+http://developer.android.com/reference/java/text/AttributedCharacterIterator.Attribute.html
+http://developer.android.com/reference/java/text/AttributedString.html
+http://developer.android.com/reference/java/text/Bidi.html
+http://developer.android.com/reference/java/text/BreakIterator.html
+http://developer.android.com/reference/java/text/ChoiceFormat.html
+http://developer.android.com/reference/java/text/CollationElementIterator.html
+http://developer.android.com/reference/java/text/CollationKey.html
+http://developer.android.com/reference/java/text/Collator.html
+http://developer.android.com/reference/java/text/DateFormat.Field.html
+http://developer.android.com/reference/java/text/DateFormatSymbols.html
+http://developer.android.com/reference/java/text/DecimalFormat.html
+http://developer.android.com/reference/java/text/DecimalFormatSymbols.html
+http://developer.android.com/reference/java/text/FieldPosition.html
+http://developer.android.com/reference/java/text/Format.html
+http://developer.android.com/reference/java/text/Format.Field.html
+http://developer.android.com/reference/java/text/MessageFormat.html
+http://developer.android.com/reference/java/text/MessageFormat.Field.html
+http://developer.android.com/reference/java/text/Normalizer.html
+http://developer.android.com/reference/java/text/NumberFormat.html
+http://developer.android.com/reference/java/text/NumberFormat.Field.html
+http://developer.android.com/reference/java/text/ParsePosition.html
+http://developer.android.com/reference/java/text/RuleBasedCollator.html
+http://developer.android.com/reference/java/text/StringCharacterIterator.html
+http://developer.android.com/reference/java/text/ParseException.html
+http://developer.android.com/reference/org/apache/http/conn/ClientConnectionManagerFactory.html
+http://developer.android.com/reference/org/apache/http/conn/ClientConnectionOperator.html
+http://developer.android.com/reference/org/apache/http/conn/ClientConnectionRequest.html
+http://developer.android.com/reference/org/apache/http/conn/ConnectionKeepAliveStrategy.html
+http://developer.android.com/reference/org/apache/http/conn/ConnectionReleaseTrigger.html
+http://developer.android.com/reference/org/apache/http/conn/EofSensorWatcher.html
+http://developer.android.com/reference/org/apache/http/conn/BasicEofSensorWatcher.html
+http://developer.android.com/reference/org/apache/http/conn/BasicManagedEntity.html
+http://developer.android.com/reference/org/apache/http/conn/EofSensorInputStream.html
+http://developer.android.com/reference/org/apache/http/conn/MultihomePlainSocketFactory.html
+http://developer.android.com/reference/org/apache/http/conn/ConnectionPoolTimeoutException.html
+http://developer.android.com/reference/org/apache/http/conn/ConnectTimeoutException.html
+http://developer.android.com/reference/org/apache/http/conn/HttpHostConnectException.html
+http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.html
+http://developer.android.com/reference/org/apache/http/conn/scheme/SchemeRegistry.html
+http://developer.android.com/reference/org/apache/http/conn/routing/HttpRoute.html
+http://developer.android.com/reference/android/support/v13/app/FragmentCompat.html
+http://developer.android.com/reference/java/security/cert/Certificate.html
+http://developer.android.com/reference/java/security/cert/CertificateException.html
+http://developer.android.com/reference/renderscript/rs__core_8rsh.html
+http://developer.android.com/reference/javax/xml/transform/sax/TemplatesHandler.html
+http://developer.android.com/reference/javax/xml/transform/sax/TransformerHandler.html
+http://developer.android.com/reference/javax/xml/transform/sax/SAXResult.html
+http://developer.android.com/reference/android/sax/ElementListener.html
+http://developer.android.com/reference/android/sax/EndElementListener.html
+http://developer.android.com/reference/android/sax/EndTextElementListener.html
+http://developer.android.com/reference/android/sax/StartElementListener.html
+http://developer.android.com/reference/android/sax/TextElementListener.html
+http://developer.android.com/reference/android/sax/Element.html
+http://developer.android.com/reference/android/sax/RootElement.html
+http://developer.android.com/reference/android/view/textservice/SpellCheckerSession.SpellCheckerSessionListener.html
+http://developer.android.com/reference/android/view/textservice/SentenceSuggestionsInfo.html
+http://developer.android.com/reference/android/view/textservice/SpellCheckerInfo.html
+http://developer.android.com/reference/android/view/textservice/SpellCheckerSubtype.html
+http://developer.android.com/reference/android/view/textservice/TextInfo.html
+http://developer.android.com/reference/android/telephony/cdma/CdmaCellLocation.html
+http://developer.android.com/reference/org/apache/http/conn/routing/HttpRoutePlanner.html
+http://developer.android.com/videos/index.html
+http://developer.android.com/reference/org/apache/http/cookie/Cookie.html
+http://developer.android.com/reference/org/apache/http/cookie/CookieOrigin.html
+http://developer.android.com/reference/org/apache/http/cookie/CookieSpec.html
+http://developer.android.com/reference/org/apache/http/cookie/MalformedCookieException.html
+http://developer.android.com/guide/topics/ui/layout-objects.html
+http://developer.android.com/resources/samples/ApiDemos/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LabelView.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/custom_view_1.html
+http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html
+http://developer.android.com/reference/android/text/GetChars.html
+http://developer.android.com/reference/android/text/Html.ImageGetter.html
+http://developer.android.com/reference/android/text/Html.TagHandler.html
+http://developer.android.com/reference/android/text/NoCopySpan.html
+http://developer.android.com/reference/android/text/ParcelableSpan.html
+http://developer.android.com/reference/android/text/SpanWatcher.html
+http://developer.android.com/reference/android/text/TextUtils.EllipsizeCallback.html
+http://developer.android.com/reference/android/text/TextUtils.StringSplitter.html
+http://developer.android.com/reference/android/text/AlteredCharSequence.html
+http://developer.android.com/reference/android/text/AndroidCharacter.html
+http://developer.android.com/reference/android/text/Annotation.html
+http://developer.android.com/reference/android/text/AutoText.html
+http://developer.android.com/reference/android/text/BoringLayout.html
+http://developer.android.com/reference/android/text/BoringLayout.Metrics.html
+http://developer.android.com/reference/android/text/DynamicLayout.html
+http://developer.android.com/reference/android/text/InputFilter.AllCaps.html
+http://developer.android.com/reference/android/text/InputFilter.LengthFilter.html
+http://developer.android.com/reference/android/text/Layout.Directions.html
+http://developer.android.com/reference/android/text/LoginFilter.html
+http://developer.android.com/reference/android/text/LoginFilter.PasswordFilterGMail.html
+http://developer.android.com/reference/android/text/LoginFilter.UsernameFilterGeneric.html
+http://developer.android.com/reference/android/text/LoginFilter.UsernameFilterGMail.html
+http://developer.android.com/reference/android/text/NoCopySpan.Concrete.html
+http://developer.android.com/reference/android/text/SpannableString.html
+http://developer.android.com/reference/android/text/SpannableStringBuilder.html
+http://developer.android.com/reference/android/text/SpannedString.html
+http://developer.android.com/reference/android/text/StaticLayout.html
+http://developer.android.com/reference/android/text/TextUtils.SimpleStringSplitter.html
+http://developer.android.com/reference/java/math/BigDecimal.html
+http://developer.android.com/reference/java/math/MathContext.html
+http://developer.android.com/reference/java/security/interfaces/DSAKey.html
+http://developer.android.com/reference/java/security/interfaces/DSAKeyPairGenerator.html
+http://developer.android.com/reference/java/security/interfaces/DSAParams.html
+http://developer.android.com/reference/java/security/interfaces/DSAPrivateKey.html
+http://developer.android.com/reference/java/security/interfaces/DSAPublicKey.html
+http://developer.android.com/reference/java/security/interfaces/ECKey.html
+http://developer.android.com/reference/java/security/interfaces/ECPrivateKey.html
+http://developer.android.com/reference/java/security/interfaces/ECPublicKey.html
+http://developer.android.com/reference/java/security/interfaces/RSAKey.html
+http://developer.android.com/reference/java/security/interfaces/RSAMultiPrimePrivateCrtKey.html
+http://developer.android.com/reference/java/security/interfaces/RSAPrivateCrtKey.html
+http://developer.android.com/reference/java/security/interfaces/RSAPrivateKey.html
+http://developer.android.com/reference/java/security/interfaces/RSAPublicKey.html
+http://developer.android.com/reference/android/hardware/Camera.AutoFocusCallback.html
+http://developer.android.com/reference/android/hardware/Camera.AutoFocusMoveCallback.html
+http://developer.android.com/reference/android/hardware/Camera.ErrorCallback.html
+http://developer.android.com/reference/android/hardware/Camera.OnZoomChangeListener.html
+http://developer.android.com/reference/android/hardware/Camera.PreviewCallback.html
+http://developer.android.com/reference/android/hardware/Camera.ShutterCallback.html
+http://developer.android.com/reference/android/hardware/SensorEventListener.html
+http://developer.android.com/reference/android/hardware/SensorListener.html
+http://developer.android.com/reference/android/hardware/Camera.CameraInfo.html
+http://developer.android.com/reference/android/hardware/Camera.Face.html
+http://developer.android.com/reference/android/hardware/Camera.Size.html
+http://developer.android.com/reference/android/hardware/GeomagneticField.html
+http://developer.android.com/reference/android/hardware/Sensor.html
+http://developer.android.com/reference/android/hardware/SensorEvent.html
+http://developer.android.com/reference/org/apache/http/conn/scheme/HostNameResolver.html
+http://developer.android.com/reference/org/apache/http/conn/scheme/LayeredSocketFactory.html
+http://developer.android.com/reference/org/apache/http/conn/scheme/SocketFactory.html
+http://developer.android.com/reference/org/apache/http/conn/scheme/PlainSocketFactory.html
+http://developer.android.com/reference/org/apache/http/conn/scheme/Scheme.html
+http://developer.android.com/reference/org/apache/http/entity/BasicHttpEntity.html
+http://developer.android.com/reference/org/apache/http/entity/BufferedHttpEntity.html
+http://developer.android.com/reference/org/apache/http/entity/ByteArrayEntity.html
+http://developer.android.com/reference/org/apache/http/entity/EntityTemplate.html
+http://developer.android.com/reference/org/apache/http/entity/FileEntity.html
+http://developer.android.com/reference/org/apache/http/entity/HttpEntityWrapper.html
+http://developer.android.com/reference/org/apache/http/entity/InputStreamEntity.html
+http://developer.android.com/reference/org/apache/http/entity/SerializableEntity.html
+http://developer.android.com/reference/dalvik/system/BaseDexClassLoader.html
+http://developer.android.com/reference/dalvik/system/DexClassLoader.html
+http://developer.android.com/reference/dalvik/system/DexFile.html
+http://developer.android.com/reference/dalvik/system/PathClassLoader.html
+http://developer.android.com/reference/java/util/regex/MatchResult.html
+http://developer.android.com/reference/java/util/regex/Matcher.html
+http://developer.android.com/reference/android/Manifest.html
+http://developer.android.com/reference/android/Manifest.permission_group.html
+http://developer.android.com/reference/android/R.html
+http://developer.android.com/reference/android/R.anim.html
+http://developer.android.com/reference/android/R.animator.html
+http://developer.android.com/reference/android/R.array.html
+http://developer.android.com/reference/android/R.bool.html
+http://developer.android.com/reference/android/R.color.html
+http://developer.android.com/reference/android/R.dimen.html
+http://developer.android.com/reference/android/R.drawable.html
+http://developer.android.com/reference/android/R.fraction.html
+http://developer.android.com/reference/android/R.integer.html
+http://developer.android.com/reference/android/R.interpolator.html
+http://developer.android.com/reference/android/R.layout.html
+http://developer.android.com/reference/android/R.menu.html
+http://developer.android.com/reference/android/R.mipmap.html
+http://developer.android.com/reference/android/R.plurals.html
+http://developer.android.com/reference/android/R.raw.html
+http://developer.android.com/reference/android/R.string.html
+http://developer.android.com/reference/android/R.xml.html
+http://developer.android.com/reference/org/xml/sax/ext/DefaultHandler2.html
+http://developer.android.com/sdk/api_diff/3/changes.html
+http://developer.android.com/about/versions/android-1.5-highlights.html
+http://developer.android.com/reference/android/speech/RecognizerIntent.html
+http://developer.android.com/reference/android/media/audiofx/EnvironmentalReverb.html
+http://developer.android.com/reference/android/media/audiofx/AudioEffect.html
+http://developer.android.com/reference/org/apache/http/impl/conn/DefaultClientConnectionOperator.html
+http://developer.android.com/reference/org/apache/http/impl/conn/DefaultHttpRoutePlanner.html
+http://developer.android.com/reference/org/apache/http/impl/conn/DefaultResponseParser.html
+http://developer.android.com/reference/org/apache/http/impl/conn/IdleConnectionHandler.html
+http://developer.android.com/reference/org/apache/http/impl/conn/LoggingSessionInputBuffer.html
+http://developer.android.com/reference/org/apache/http/impl/conn/LoggingSessionOutputBuffer.html
+http://developer.android.com/reference/org/apache/http/impl/conn/ProxySelectorRoutePlanner.html
+http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.PoolEntry.html
 http://developer.android.com/reference/org/apache/http/impl/conn/Wire.html
-http://developer.android.com/reference/android/os/WorkSource.html
-http://developer.android.com/reference/android/net/wifi/WpsInfo.html
-http://developer.android.com/reference/java/sql/Wrapper.html
+http://developer.android.com/reference/android/net/http/HttpResponseCache.html
+http://developer.android.com/reference/android/net/http/SslCertificate.DName.html
+http://developer.android.com/reference/android/net/http/SslError.html
+http://developer.android.com/reference/android/support/v4/accessibilityservice/AccessibilityServiceInfoCompat.html
+http://developer.android.com/reference/org/apache/http/cookie/SetCookie.html
+http://developer.android.com/reference/android/net/UrlQuerySanitizer.ValueSanitizer.html
+http://developer.android.com/reference/android/net/Credentials.html
+http://developer.android.com/reference/android/net/DhcpInfo.html
+http://developer.android.com/reference/android/net/LocalServerSocket.html
+http://developer.android.com/reference/android/net/LocalSocket.html
+http://developer.android.com/reference/android/net/LocalSocketAddress.html
+http://developer.android.com/reference/android/net/MailTo.html
+http://developer.android.com/reference/android/net/NetworkInfo.html
+http://developer.android.com/reference/android/net/Proxy.html
+http://developer.android.com/reference/android/net/SSLCertificateSocketFactory.html
+http://developer.android.com/reference/android/net/SSLSessionCache.html
+http://developer.android.com/reference/android/net/UrlQuerySanitizer.html
+http://developer.android.com/reference/android/net/UrlQuerySanitizer.IllegalCharacterValueSanitizer.html
+http://developer.android.com/reference/android/net/UrlQuerySanitizer.ParameterValuePair.html
+http://developer.android.com/reference/android/net/VpnService.Builder.html
+http://developer.android.com/reference/android/net/ParseException.html
+http://developer.android.com/reference/javax/net/ssl/HandshakeCompletedListener.html
+http://developer.android.com/reference/java/util/prefs/NodeChangeListener.html
+http://developer.android.com/reference/java/util/prefs/PreferenceChangeListener.html
+http://developer.android.com/reference/java/beans/PropertyChangeListener.html
+http://developer.android.com/reference/java/beans/PropertyChangeListenerProxy.html
+http://developer.android.com/reference/javax/net/ssl/SSLSessionBindingListener.html
+http://developer.android.com/sdk/compatibility-library.html
+http://developer.android.com/reference/javax/security/auth/AuthPermission.html
+http://developer.android.com/reference/java/util/logging/LoggingPermission.html
+http://developer.android.com/reference/java/lang/reflect/ReflectPermission.html
+http://developer.android.com/reference/javax/net/ssl/SSLPermission.html
+http://developer.android.com/reference/android/nfc/NfcAdapter.CreateBeamUrisCallback.html
+http://developer.android.com/reference/android/nfc/NfcAdapter.CreateNdefMessageCallback.html
+http://developer.android.com/reference/android/nfc/NfcAdapter.OnNdefPushCompleteCallback.html
+http://developer.android.com/reference/android/nfc/NfcEvent.html
+http://developer.android.com/reference/android/nfc/FormatException.html
+http://developer.android.com/reference/android/nfc/TagLostException.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/RefQueueWorker.html
+http://developer.android.com/reference/java/util/concurrent/RunnableFuture.html
+http://developer.android.com/reference/java/util/concurrent/RunnableScheduledFuture.html
+http://developer.android.com/reference/java/util/concurrent/Future.html
+http://developer.android.com/reference/java/util/concurrent/ScheduledFuture.html
+http://developer.android.com/reference/android/text/style/AlignmentSpan.html
+http://developer.android.com/reference/android/text/style/LeadingMarginSpan.html
+http://developer.android.com/reference/android/text/style/LeadingMarginSpan.LeadingMarginSpan2.html
+http://developer.android.com/reference/android/text/style/LineBackgroundSpan.html
+http://developer.android.com/reference/android/text/style/LineHeightSpan.html
+http://developer.android.com/reference/android/text/style/LineHeightSpan.WithDensity.html
+http://developer.android.com/reference/android/text/style/ParagraphStyle.html
+http://developer.android.com/reference/android/text/style/TabStopSpan.html
+http://developer.android.com/reference/android/text/style/UpdateAppearance.html
+http://developer.android.com/reference/android/text/style/UpdateLayout.html
 http://developer.android.com/reference/android/text/style/WrapTogetherSpan.html
-http://developer.android.com/reference/java/nio/channels/WritableByteChannel.html
-http://developer.android.com/reference/java/io/WriteAbortedException.html
-http://developer.android.com/reference/javax/security/auth/x500/X500Principal.html
+http://developer.android.com/reference/android/text/style/AbsoluteSizeSpan.html
+http://developer.android.com/reference/android/text/style/AlignmentSpan.Standard.html
+http://developer.android.com/reference/android/text/style/BackgroundColorSpan.html
+http://developer.android.com/reference/android/text/style/BulletSpan.html
+http://developer.android.com/reference/android/text/style/CharacterStyle.html
+http://developer.android.com/reference/android/text/style/ClickableSpan.html
+http://developer.android.com/reference/android/text/style/DrawableMarginSpan.html
+http://developer.android.com/reference/android/text/style/DynamicDrawableSpan.html
+http://developer.android.com/reference/android/text/style/EasyEditSpan.html
+http://developer.android.com/reference/android/text/style/ForegroundColorSpan.html
+http://developer.android.com/reference/android/text/style/IconMarginSpan.html
+http://developer.android.com/reference/android/text/style/ImageSpan.html
+http://developer.android.com/reference/android/text/style/LeadingMarginSpan.Standard.html
+http://developer.android.com/reference/android/text/style/MaskFilterSpan.html
+http://developer.android.com/reference/android/text/style/MetricAffectingSpan.html
+http://developer.android.com/reference/android/text/style/QuoteSpan.html
+http://developer.android.com/reference/android/text/style/RasterizerSpan.html
+http://developer.android.com/reference/android/text/style/RelativeSizeSpan.html
+http://developer.android.com/reference/android/text/style/ReplacementSpan.html
+http://developer.android.com/reference/android/text/style/ScaleXSpan.html
+http://developer.android.com/reference/android/text/style/StrikethroughSpan.html
+http://developer.android.com/reference/android/text/style/StyleSpan.html
+http://developer.android.com/reference/android/text/style/SubscriptSpan.html
+http://developer.android.com/reference/android/text/style/SuperscriptSpan.html
+http://developer.android.com/reference/android/text/style/TabStopSpan.Standard.html
+http://developer.android.com/reference/android/text/style/TextAppearanceSpan.html
+http://developer.android.com/reference/android/text/style/TypefaceSpan.html
+http://developer.android.com/reference/android/text/style/UnderlineSpan.html
+http://developer.android.com/reference/javax/crypto/interfaces/DHKey.html
+http://developer.android.com/reference/javax/crypto/interfaces/DHPrivateKey.html
+http://developer.android.com/reference/javax/crypto/interfaces/DHPublicKey.html
+http://developer.android.com/reference/javax/crypto/interfaces/PBEKey.html
+http://developer.android.com/reference/java/util/concurrent/ArrayBlockingQueue.html
+http://developer.android.com/reference/java/util/concurrent/ConcurrentLinkedQueue.html
+http://developer.android.com/reference/java/util/concurrent/DelayQueue.html
+http://developer.android.com/reference/java/util/concurrent/Delayed.html
+http://developer.android.com/reference/java/util/concurrent/LinkedBlockingQueue.html
+http://developer.android.com/reference/java/util/concurrent/PriorityBlockingQueue.html
+http://developer.android.com/reference/java/util/concurrent/SynchronousQueue.html
+http://developer.android.com/reference/java/util/concurrent/BlockingQueue.html
+http://developer.android.com/resources/samples/HoneycombGallery/index.html
+http://developer.android.com/resources/samples/ActionBarCompat/index.html
+http://developer.android.com/reference/android/mtp/MtpConstants.html
+http://developer.android.com/reference/android/mtp/MtpDevice.html
+http://developer.android.com/reference/android/mtp/MtpDeviceInfo.html
+http://developer.android.com/reference/android/mtp/MtpObjectInfo.html
+http://developer.android.com/reference/android/mtp/MtpStorageInfo.html
+http://developer.android.com/reference/org/apache/http/entity/ContentProducer.html
+http://developer.android.com/reference/javax/security/auth/PrivateCredentialPermission.html
+http://developer.android.com/reference/javax/net/ssl/HostnameVerifier.html
+http://developer.android.com/reference/javax/net/ssl/KeyManager.html
+http://developer.android.com/reference/javax/net/ssl/ManagerFactoryParameters.html
+http://developer.android.com/reference/javax/net/ssl/SSLSession.html
+http://developer.android.com/reference/javax/net/ssl/SSLSessionContext.html
+http://developer.android.com/reference/javax/net/ssl/TrustManager.html
+http://developer.android.com/reference/javax/net/ssl/X509KeyManager.html
+http://developer.android.com/reference/javax/net/ssl/X509TrustManager.html
+http://developer.android.com/reference/javax/net/ssl/CertPathTrustManagerParameters.html
+http://developer.android.com/reference/javax/net/ssl/HandshakeCompletedEvent.html
+http://developer.android.com/reference/javax/net/ssl/KeyManagerFactory.html
+http://developer.android.com/reference/javax/net/ssl/KeyManagerFactorySpi.html
+http://developer.android.com/reference/javax/net/ssl/KeyStoreBuilderParameters.html
+http://developer.android.com/reference/javax/net/ssl/SSLContext.html
+http://developer.android.com/reference/javax/net/ssl/SSLContextSpi.html
+http://developer.android.com/reference/javax/net/ssl/SSLEngine.html
+http://developer.android.com/reference/javax/net/ssl/SSLEngineResult.html
+http://developer.android.com/reference/javax/net/ssl/SSLParameters.html
+http://developer.android.com/reference/javax/net/ssl/SSLServerSocket.html
+http://developer.android.com/reference/javax/net/ssl/SSLServerSocketFactory.html
+http://developer.android.com/reference/javax/net/ssl/SSLSessionBindingEvent.html
+http://developer.android.com/reference/javax/net/ssl/SSLSocket.html
+http://developer.android.com/reference/javax/net/ssl/SSLSocketFactory.html
+http://developer.android.com/reference/javax/net/ssl/TrustManagerFactory.html
+http://developer.android.com/reference/javax/net/ssl/TrustManagerFactorySpi.html
+http://developer.android.com/reference/javax/net/ssl/X509ExtendedKeyManager.html
+http://developer.android.com/reference/javax/net/ssl/SSLException.html
+http://developer.android.com/reference/javax/net/ssl/SSLHandshakeException.html
+http://developer.android.com/reference/javax/net/ssl/SSLKeyException.html
+http://developer.android.com/reference/javax/net/ssl/SSLPeerUnverifiedException.html
+http://developer.android.com/reference/javax/net/ssl/SSLProtocolException.html
 http://developer.android.com/reference/java/security/cert/X509Certificate.html
-http://developer.android.com/reference/javax/security/cert/X509Certificate.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/index.html
+http://developer.android.com/reference/java/util/prefs/PreferencesFactory.html
+http://developer.android.com/reference/java/util/prefs/AbstractPreferences.html
+http://developer.android.com/reference/java/util/prefs/NodeChangeEvent.html
+http://developer.android.com/reference/java/util/prefs/PreferenceChangeEvent.html
+http://developer.android.com/reference/java/util/prefs/Preferences.html
+http://developer.android.com/reference/java/util/prefs/BackingStoreException.html
+http://developer.android.com/reference/java/util/prefs/InvalidPreferencesFormatException.html
+http://developer.android.com/reference/java/util/zip/ZipException.html
+http://developer.android.com/reference/javax/xml/validation/Schema.html
+http://developer.android.com/tools/debug-tasks.html
+http://developer.android.com/reference/java/util/zip/CheckedInputStream.html
+http://developer.android.com/reference/javax/crypto/CipherInputStream.html
+http://developer.android.com/reference/java/util/zip/DeflaterInputStream.html
+http://developer.android.com/reference/java/util/zip/InflaterInputStream.html
+http://developer.android.com/reference/java/util/zip/GZIPInputStream.html
+http://developer.android.com/reference/java/util/zip/ZipInputStream.html
+http://developer.android.com/reference/android/text/format/Time.html
+http://developer.android.com/reference/org/apache/http/params/HttpAbstractParamBean.html
+http://developer.android.com/reference/org/apache/http/cookie/ClientCookie.html
+http://developer.android.com/reference/org/apache/http/cookie/CookieSpecFactory.html
+http://developer.android.com/reference/org/apache/http/cookie/SetCookie2.html
+http://developer.android.com/reference/org/apache/http/cookie/SM.html
+http://developer.android.com/reference/org/apache/http/cookie/CookieIdentityComparator.html
+http://developer.android.com/reference/org/apache/http/cookie/CookiePathComparator.html
+http://developer.android.com/reference/org/apache/http/cookie/CookieSpecRegistry.html
+http://developer.android.com/reference/java/lang/annotation/Retention.html
+http://developer.android.com/reference/android/hardware/input/InputManager.InputDeviceListener.html
+http://developer.android.com/reference/org/apache/http/auth/AUTH.html
+http://developer.android.com/reference/org/apache/http/auth/AuthSchemeRegistry.html
+http://developer.android.com/reference/org/apache/http/auth/AuthScope.html
+http://developer.android.com/reference/org/apache/http/auth/AuthState.html
+http://developer.android.com/reference/org/apache/http/auth/NTCredentials.html
+http://developer.android.com/reference/org/apache/http/auth/UsernamePasswordCredentials.html
+http://developer.android.com/reference/org/apache/http/auth/AuthenticationException.html
+http://developer.android.com/reference/org/apache/http/auth/InvalidCredentialsException.html
+http://developer.android.com/reference/org/apache/http/auth/MalformedChallengeException.html
+http://developer.android.com/reference/org/apache/http/impl/io/AbstractSessionOutputBuffer.html
+http://developer.android.com/reference/org/apache/http/impl/io/SocketOutputBuffer.html
+http://developer.android.com/sdk/api_diff/14/changes.html
+http://developer.android.com/resources/samples/SampleSyncAdapter/res/xml-v14/contacts.html
+http://developer.android.com/resources/samples/VoicemailProviderDemo/index.html
+http://developer.android.com/resources/samples/RandomMusicPlayer/index.html
+http://developer.android.com/resources/samples/AndroidBeamDemo/src/com/example/android/beam/Beam.html
+http://developer.android.com/reference/android/service/textservice/SpellCheckerService.Session.html
+http://developer.android.com/resources/samples/SpellChecker/SampleSpellCheckerService/index.html
+http://developer.android.com/resources/samples/SpellChecker/HelloSpellChecker/index.html
+http://developer.android.com/resources/samples/TtsEngine/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ActionBarShareActionProviderActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/switches.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Switches.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/OverscanActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Hover.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TouchPaint.html
+http://developer.android.com/reference/java/util/logging/Filter.html
+http://developer.android.com/reference/java/util/logging/LoggingMXBean.html
+http://developer.android.com/reference/java/util/logging/ConsoleHandler.html
+http://developer.android.com/reference/java/util/logging/ErrorManager.html
+http://developer.android.com/reference/java/util/logging/FileHandler.html
+http://developer.android.com/reference/java/util/logging/Formatter.html
+http://developer.android.com/reference/java/util/logging/Handler.html
+http://developer.android.com/reference/java/util/logging/Level.html
+http://developer.android.com/reference/java/util/logging/Logger.html
+http://developer.android.com/reference/java/util/logging/LogManager.html
+http://developer.android.com/reference/java/util/logging/LogRecord.html
+http://developer.android.com/reference/java/util/logging/MemoryHandler.html
+http://developer.android.com/reference/java/util/logging/SimpleFormatter.html
+http://developer.android.com/reference/java/util/logging/SocketHandler.html
+http://developer.android.com/reference/java/util/logging/StreamHandler.html
+http://developer.android.com/reference/java/util/logging/XMLFormatter.html
+http://developer.android.com/reference/org/apache/http/impl/client/EntityEnclosingRequestWrapper.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpDelete.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpEntityEnclosingRequestBase.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpGet.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpHead.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpOptions.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpPost.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpPut.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpRequestBase.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpTrace.html
+http://developer.android.com/reference/org/apache/http/impl/client/RequestWrapper.html
+http://developer.android.com/reference/java/security/cert/CertPathValidator.html
+http://developer.android.com/reference/org/apache/http/protocol/ExecutionContext.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpExpectationVerifier.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpProcessor.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandler.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandlerResolver.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpRequestInterceptorList.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpResponseInterceptorList.html
+http://developer.android.com/reference/org/apache/http/protocol/BasicHttpContext.html
+http://developer.android.com/reference/org/apache/http/protocol/BasicHttpProcessor.html
+http://developer.android.com/reference/org/apache/http/protocol/DefaultedHttpContext.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpDateGenerator.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpRequestExecutor.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandlerRegistry.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpService.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestConnControl.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestContent.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestDate.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestExpectContinue.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestTargetHost.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestUserAgent.html
+http://developer.android.com/reference/org/apache/http/protocol/ResponseConnControl.html
+http://developer.android.com/reference/org/apache/http/protocol/ResponseContent.html
+http://developer.android.com/reference/org/apache/http/protocol/ResponseDate.html
+http://developer.android.com/reference/org/apache/http/protocol/ResponseServer.html
+http://developer.android.com/reference/org/apache/http/protocol/SyncBasicHttpContext.html
+http://developer.android.com/reference/org/apache/http/protocol/UriPatternMatcher.html
+http://developer.android.com/reference/java/lang/reflect/AnnotatedElement.html
+http://developer.android.com/reference/java/lang/reflect/GenericArrayType.html
+http://developer.android.com/reference/java/lang/reflect/GenericDeclaration.html
+http://developer.android.com/reference/java/lang/reflect/InvocationHandler.html
+http://developer.android.com/reference/java/lang/reflect/Member.html
+http://developer.android.com/reference/java/lang/reflect/ParameterizedType.html
+http://developer.android.com/reference/java/lang/reflect/Type.html
+http://developer.android.com/reference/java/lang/reflect/TypeVariable.html
+http://developer.android.com/reference/java/lang/reflect/WildcardType.html
+http://developer.android.com/reference/java/lang/reflect/AccessibleObject.html
+http://developer.android.com/reference/java/lang/reflect/Array.html
+http://developer.android.com/reference/java/lang/reflect/Constructor.html
+http://developer.android.com/reference/java/lang/reflect/Field.html
+http://developer.android.com/reference/java/lang/reflect/Method.html
+http://developer.android.com/reference/java/lang/reflect/Modifier.html
+http://developer.android.com/reference/java/lang/reflect/Proxy.html
+http://developer.android.com/reference/java/lang/reflect/InvocationTargetException.html
+http://developer.android.com/sdk/api_diff/11/changes.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/DragAndDropDemo.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List15.html
+http://developer.android.com/resources/samples/USB/AdbTest/index.html
+http://developer.android.com/resources/samples/USB/MissileLauncher/index.html
+http://developer.android.com/reference/android/hardware/usb/UsbInterface.html
+http://developer.android.com/reference/android/hardware/usb/UsbEndpoint.html
+http://developer.android.com/reference/android/hardware/usb/UsbDeviceConnection.html
+http://developer.android.com/reference/android/hardware/usb/UsbRequest.html
+http://developer.android.com/reference/android/hardware/usb/UsbConstants.html
+http://developer.android.com/reference/org/apache/http/impl/client/BasicCookieStore.html
+http://developer.android.com/reference/android/support/v4/os/ParcelableCompatCreatorCallbacks.html
+http://developer.android.com/reference/android/support/v4/os/ParcelableCompat.html
+http://developer.android.com/reference/java/util/zip/Checksum.html
+http://developer.android.com/reference/java/util/zip/Adler32.html
+http://developer.android.com/reference/java/util/zip/CheckedOutputStream.html
+http://developer.android.com/reference/java/util/zip/CRC32.html
+http://developer.android.com/reference/java/util/zip/Inflater.html
+http://developer.android.com/reference/java/util/zip/InflaterOutputStream.html
+http://developer.android.com/reference/java/util/zip/ZipFile.html
+http://developer.android.com/reference/java/util/zip/DataFormatException.html
+http://developer.android.com/reference/org/apache/http/params/CoreConnectionPNames.html
+http://developer.android.com/reference/org/apache/http/params/AbstractHttpParams.html
+http://developer.android.com/reference/org/apache/http/params/BasicHttpParams.html
+http://developer.android.com/reference/org/apache/http/params/DefaultedHttpParams.html
+http://developer.android.com/reference/org/apache/http/params/HttpConnectionParamBean.html
+http://developer.android.com/reference/org/apache/http/params/HttpConnectionParams.html
+http://developer.android.com/reference/org/apache/http/params/HttpProtocolParamBean.html
+http://developer.android.com/reference/org/apache/http/params/HttpProtocolParams.html
+http://developer.android.com/resources/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentTabsPager.html
+http://developer.android.com/guide/samples/index.html
+http://developer.android.com/shareables/training/MobileAds.zip
+http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NotePadProvider.html
+http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NotePad.html
+http://developer.android.com/shareables/training/nsdchat.zip
+http://developer.android.com/reference/java/util/concurrent/Callable.html
+http://developer.android.com/reference/java/util/concurrent/CompletionService.html
+http://developer.android.com/reference/java/util/concurrent/ConcurrentMap.html
+http://developer.android.com/reference/java/util/concurrent/ConcurrentNavigableMap.html
+http://developer.android.com/reference/java/util/concurrent/ExecutorService.html
+http://developer.android.com/reference/java/util/concurrent/RejectedExecutionHandler.html
+http://developer.android.com/reference/java/util/concurrent/ScheduledExecutorService.html
+http://developer.android.com/reference/java/util/concurrent/ThreadFactory.html
+http://developer.android.com/reference/java/util/concurrent/AbstractExecutorService.html
+http://developer.android.com/reference/java/util/concurrent/ConcurrentHashMap.html
+http://developer.android.com/reference/java/util/concurrent/ConcurrentSkipListMap.html
+http://developer.android.com/reference/java/util/concurrent/ConcurrentSkipListSet.html
+http://developer.android.com/reference/java/util/concurrent/CopyOnWriteArraySet.html
+http://developer.android.com/reference/java/util/concurrent/CountDownLatch.html
+http://developer.android.com/reference/java/util/concurrent/CyclicBarrier.html
+http://developer.android.com/reference/java/util/concurrent/Exchanger.html
+http://developer.android.com/reference/java/util/concurrent/ExecutorCompletionService.html
+http://developer.android.com/reference/java/util/concurrent/Executors.html
+http://developer.android.com/reference/java/util/concurrent/ScheduledThreadPoolExecutor.html
+http://developer.android.com/reference/java/util/concurrent/Semaphore.html
+http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html
+http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.AbortPolicy.html
+http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.CallerRunsPolicy.html
+http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.DiscardOldestPolicy.html
+http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.DiscardPolicy.html
+http://developer.android.com/reference/java/util/concurrent/BrokenBarrierException.html
+http://developer.android.com/reference/java/util/concurrent/ExecutionException.html
+http://developer.android.com/reference/java/util/concurrent/TimeoutException.html
+http://developer.android.com/resources/samples/JetBoy/index.html
+http://developer.android.com/guide/topics/media/jet/jetcreator_manual.html
+http://developer.android.com/reference/java/beans/PropertyChangeEvent.html
+http://developer.android.com/reference/java/beans/IndexedPropertyChangeEvent.html
+http://developer.android.com/reference/java/security/cert/CertPathBuilderResult.html
+http://developer.android.com/reference/java/security/cert/CertPathParameters.html
+http://developer.android.com/reference/java/security/cert/CertPathValidatorResult.html
+http://developer.android.com/reference/java/security/cert/CertSelector.html
+http://developer.android.com/reference/java/security/cert/CertStoreParameters.html
+http://developer.android.com/reference/java/security/cert/CRLSelector.html
+http://developer.android.com/reference/java/security/cert/PolicyNode.html
+http://developer.android.com/reference/java/security/cert/X509Extension.html
+http://developer.android.com/reference/java/security/cert/Certificate.CertificateRep.html
+http://developer.android.com/reference/java/security/cert/CertificateFactory.html
+http://developer.android.com/reference/java/security/cert/CertificateFactorySpi.html
+http://developer.android.com/reference/java/security/cert/CertPath.CertPathRep.html
+http://developer.android.com/reference/java/security/cert/CertPathBuilder.html
+http://developer.android.com/reference/java/security/cert/CertPathBuilderSpi.html
+http://developer.android.com/reference/java/security/cert/CertPathValidatorSpi.html
+http://developer.android.com/reference/java/security/cert/CertStore.html
+http://developer.android.com/reference/java/security/cert/CertStoreSpi.html
+http://developer.android.com/reference/java/security/cert/CollectionCertStoreParameters.html
+http://developer.android.com/reference/java/security/cert/CRL.html
+http://developer.android.com/reference/java/security/cert/LDAPCertStoreParameters.html
+http://developer.android.com/reference/java/security/cert/PKIXBuilderParameters.html
+http://developer.android.com/reference/java/security/cert/PKIXCertPathBuilderResult.html
+http://developer.android.com/reference/java/security/cert/PKIXCertPathChecker.html
+http://developer.android.com/reference/java/security/cert/PKIXCertPathValidatorResult.html
+http://developer.android.com/reference/java/security/cert/PKIXParameters.html
+http://developer.android.com/reference/java/security/cert/PolicyQualifierInfo.html
+http://developer.android.com/reference/java/security/cert/TrustAnchor.html
 http://developer.android.com/reference/java/security/cert/X509CertSelector.html
 http://developer.android.com/reference/java/security/cert/X509CRL.html
 http://developer.android.com/reference/java/security/cert/X509CRLEntry.html
 http://developer.android.com/reference/java/security/cert/X509CRLSelector.html
-http://developer.android.com/reference/java/security/spec/X509EncodedKeySpec.html
-http://developer.android.com/reference/javax/net/ssl/X509ExtendedKeyManager.html
-http://developer.android.com/reference/java/security/cert/X509Extension.html
-http://developer.android.com/reference/javax/net/ssl/X509KeyManager.html
-http://developer.android.com/reference/javax/net/ssl/X509TrustManager.html
-http://developer.android.com/reference/android/util/Xml.html
-http://developer.android.com/reference/android/util/Xml.Encoding.html
-http://developer.android.com/reference/javax/xml/XMLConstants.html
-http://developer.android.com/reference/org/xml/sax/XMLFilter.html
-http://developer.android.com/reference/org/xml/sax/helpers/XMLFilterImpl.html
-http://developer.android.com/reference/java/util/logging/XMLFormatter.html
-http://developer.android.com/reference/javax/xml/datatype/XMLGregorianCalendar.html
-http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html
-http://developer.android.com/reference/org/xmlpull/v1/XmlPullParserException.html
-http://developer.android.com/reference/org/xmlpull/v1/XmlPullParserFactory.html
-http://developer.android.com/reference/org/xml/sax/helpers/XMLReaderAdapter.html
-http://developer.android.com/reference/org/xml/sax/helpers/XMLReaderFactory.html
-http://developer.android.com/reference/android/content/res/XmlResourceParser.html
-http://developer.android.com/reference/org/xmlpull/v1/XmlSerializer.html
-http://developer.android.com/reference/javax/xml/xpath/XPath.html
-http://developer.android.com/reference/javax/xml/xpath/XPathConstants.html
-http://developer.android.com/reference/javax/xml/xpath/XPathException.html
-http://developer.android.com/reference/javax/xml/xpath/XPathExpression.html
-http://developer.android.com/reference/javax/xml/xpath/XPathExpressionException.html
-http://developer.android.com/reference/javax/xml/xpath/XPathFactory.html
-http://developer.android.com/reference/javax/xml/xpath/XPathFactoryConfigurationException.html
-http://developer.android.com/reference/javax/xml/xpath/XPathFunction.html
-http://developer.android.com/reference/javax/xml/xpath/XPathFunctionException.html
-http://developer.android.com/reference/javax/xml/xpath/XPathFunctionResolver.html
-http://developer.android.com/reference/javax/xml/xpath/XPathVariableResolver.html
-http://developer.android.com/reference/android/graphics/YuvImage.html
-http://developer.android.com/reference/java/util/zip/ZipEntry.html
-http://developer.android.com/reference/java/util/zip/ZipError.html
-http://developer.android.com/reference/java/util/zip/ZipException.html
-http://developer.android.com/reference/java/util/zip/ZipFile.html
-http://developer.android.com/reference/java/util/zip/ZipInputStream.html
-http://developer.android.com/reference/java/util/zip/ZipOutputStream.html
-http://developer.android.com/sdk/compatibility-library.html
-http://developer.android.com/resources/samples/MultiResolution/index.html
-http://developer.android.com/guide/practices/ui_guidelines/icon_design.html
-http://developer.android.com/guide/practices/screens-support-1.5.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/DensityActivity.html
-http://developer.android.com/resources/dashboard/screens.html
-http://developer.android.com/shareables/training/CustomView.zip
-http://developer.android.com/resources/faq/troubleshooting.html
-http://developer.android.com/shareables/training/ActivityLifecycle.zip
-http://developer.android.com/resources/tutorials/localization/index.html
-http://developer.android.com/resources/samples/AccelerometerPlay/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/RotationVectorDemo.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/Sensors.html
+http://developer.android.com/reference/java/security/cert/CertificateEncodingException.html
+http://developer.android.com/reference/java/security/cert/CertificateExpiredException.html
+http://developer.android.com/reference/java/security/cert/CertificateNotYetValidException.html
+http://developer.android.com/reference/java/security/cert/CertificateParsingException.html
+http://developer.android.com/reference/java/security/cert/CertPathBuilderException.html
+http://developer.android.com/reference/java/security/cert/CertPathValidatorException.html
+http://developer.android.com/reference/java/security/cert/CertStoreException.html
+http://developer.android.com/reference/java/security/cert/CRLException.html
 http://developer.android.com/resources/samples/BluetoothChat/index.html
 http://developer.android.com/resources/samples/BluetoothHDP/index.html
-http://developer.android.com/resources/samples/ContactManager/index.html
-http://developer.android.com/guide/developing/tools/traceview.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html
-http://developer.android.com/resources/samples/AndroidBeamDemo/index.html
-http://developer.android.com/resources/samples/TicTacToeMain/index.html
-http://developer.android.com/resources/tutorials/views/hello-formstuff.html
-http://developer.android.com/shareables/training/FragmentBasics.zip
-http://developer.android.com/guide/samples/index.html
-http://developer.android.com/resources/samples/JetBoy/index.html
-http://developer.android.com/guide/topics/media/jet/jetcreator_manual.html
-http://developer.android.com/shareables/training/EffectiveNavigation.zip
-http://developer.android.com/resources/tutorials/views/hello-tabwidget.html
-http://developer.android.com/design/patterns/swipe-views
-http://developer.android.com/shareables/training/NetworkUsage.zip
-http://developer.android.com/sdk/api_diff/15/changes/jdiff_topleftframe.html
-http://developer.android.com/sdk/api_diff/15/changes/alldiffs_index_all.html
-http://developer.android.com/sdk/api_diff/15/changes/changes-summary.html
-http://developer.android.com/guide/topics/wireless/bluetooth.html
-http://developer.android.com/reference/renderscript/index.html
-http://developer.android.com/resources/samples/SpellChecker/SampleSpellCheckerService/index.html
-http://developer.android.com/resources/samples/SpellChecker/HelloSpellChecker/index.html
-http://developer.android.com/resources/samples/BackupRestore/src/com/example/android/backuprestore/ExampleAgent.html
-http://developer.android.com/resources/samples/BackupRestore/index.html
+http://developer.android.com/reference/org/apache/http/impl/io/AbstractMessageParser.html
+http://developer.android.com/reference/android/accounts/AccountManagerCallback.html
+http://developer.android.com/reference/android/accounts/AccountManagerFuture.html
+http://developer.android.com/reference/android/accounts/OnAccountsUpdateListener.html
+http://developer.android.com/reference/android/accounts/AccountAuthenticatorResponse.html
+http://developer.android.com/reference/android/accounts/AuthenticatorDescription.html
+http://developer.android.com/reference/android/accounts/AccountsException.html
+http://developer.android.com/reference/android/accounts/AuthenticatorException.html
+http://developer.android.com/reference/android/accounts/NetworkErrorException.html
+http://developer.android.com/reference/android/accounts/OperationCanceledException.html
+http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html
 http://developer.android.com/guide/topics/fundamentals.html
-http://developer.android.com/guide/topics/intents/intents-filters.html
-http://developer.android.com/guide/topics/fundamentals/loaders.html
-http://developer.android.com/resources/tutorials/views/hello-timepicker.html
-http://developer.android.com/shareables/training/TabCompat.zip
-http://developer.android.com/distribute/googleplay/promote/product-pages.html
-http://developer.android.com/resources/samples/TicTacToeLib/AndroidManifest.html
-http://developer.android.com/resources/samples/TicTacToeMain/AndroidManifest.html
-http://developer.android.com/sdk/api_diff/10/changes.html
-http://developer.android.com/resources/samples/NFCDemo/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/nfc/TechFilter.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundNdefPush.html
-http://developer.android.com/sdk/api_diff/13/changes.html
-http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html
-http://developer.android.com/guide/developing/tools/aidl.html
-http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html
-http://developer.android.com/guide/topics/network/sip.html
-http://developer.android.com/resources/tutorials/views/hello-gallery.html
-http://developer.android.com/sdk/api_diff/16/changes.html
-http://developer.android.com/guide/topics/ui/layout-objects.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LabelView.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/custom_view_1.html
-http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html
-http://developer.android.com/shareables/training/LocationAware.zip
-http://developer.android.com/training/tutorials/views/hello-tabwidget.html
+http://developer.android.com/reference/org/apache/http/client/methods/AbortableHttpRequest.html
+http://developer.android.com/reference/org/apache/http/impl/client/AbstractAuthenticationHandler.html
+http://developer.android.com/reference/org/apache/http/impl/client/BasicCredentialsProvider.html
+http://developer.android.com/reference/org/apache/http/impl/client/BasicResponseHandler.html
+http://developer.android.com/reference/org/apache/http/impl/client/ClientParamsStack.html
+http://developer.android.com/reference/org/apache/http/impl/client/DefaultConnectionKeepAliveStrategy.html
+http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.html
+http://developer.android.com/reference/org/apache/http/impl/client/DefaultProxyAuthenticationHandler.html
+http://developer.android.com/reference/org/apache/http/impl/client/DefaultRedirectHandler.html
+http://developer.android.com/reference/org/apache/http/impl/client/DefaultRequestDirector.html
+http://developer.android.com/reference/org/apache/http/impl/client/DefaultTargetAuthenticationHandler.html
+http://developer.android.com/reference/org/apache/http/impl/client/DefaultUserTokenHandler.html
+http://developer.android.com/reference/org/apache/http/impl/client/RedirectLocations.html
+http://developer.android.com/reference/org/apache/http/impl/client/RoutedRequest.html
+http://developer.android.com/reference/org/apache/http/impl/client/TunnelRefusedException.html
+http://developer.android.com/reference/org/apache/http/conn/ssl/X509HostnameVerifier.html
+http://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier.html
+http://developer.android.com/reference/org/apache/http/conn/ssl/AllowAllHostnameVerifier.html
+http://developer.android.com/reference/org/apache/http/conn/ssl/BrowserCompatHostnameVerifier.html
+http://developer.android.com/reference/org/apache/http/conn/ssl/SSLSocketFactory.html
+http://developer.android.com/reference/org/apache/http/conn/ssl/StrictHostnameVerifier.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/BasicPoolEntry.html
+http://developer.android.com/reference/org/apache/http/conn/routing/RouteTracker.html
 http://developer.android.com/guide/google/gcm/client-javadoc/index.html
 http://developer.android.com/guide/google/gcm/server-javadoc/index.html
-http://developer.android.com/guide/topics/clipboard/copy-paste.html
-http://developer.android.com/sdk/api_diff/10/changes/jdiff_topleftframe.html
-http://developer.android.com/sdk/api_diff/10/changes/alldiffs_index_all.html
-http://developer.android.com/sdk/api_diff/10/changes/changes-summary.html
-http://developer.android.com/tools/help/running
-http://developer.android.com/tools/help/generating
-http://developer.android.com/tools/help/analyzing
-http://developer.android.com/resources/tutorials/views/hello-listview.html
-http://developer.android.com/guide/practices/design/responsiveness.html
-http://developer.android.com/resources/samples/SipDemo/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/BouncingBalls.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/LayoutAnimations.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/LayoutAnimationsByDefault.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/layout_animations_by_default.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/MultiPropertyAnimation.html
-http://developer.android.com/resources/samples/ActionBarCompat/index.html
-http://developer.android.com/guide/topics/fundamentals/activities.html
-http://developer.android.com/guide/topics/fundamentals/services.html
+http://developer.android.com/reference/javax/xml/validation/SchemaFactory.html
+http://developer.android.com/reference/javax/xml/validation/SchemaFactoryLoader.html
+http://developer.android.com/reference/javax/xml/validation/TypeInfoProvider.html
+http://developer.android.com/reference/javax/xml/validation/Validator.html
+http://developer.android.com/reference/javax/xml/validation/ValidatorHandler.html
+http://developer.android.com/reference/java/lang/ref/WeakReference.html
+http://developer.android.com/reference/javax/microedition/khronos/egl/EGLConfig.html
+http://developer.android.com/reference/javax/security/auth/Destroyable.html
+http://developer.android.com/reference/javax/security/auth/DestroyFailedException.html
+http://developer.android.com/reference/javax/xml/transform/stream/StreamResult.html
 http://developer.android.com/reference/renderscript/globals.html
 http://developer.android.com/reference/renderscript/annotated.html
-http://developer.android.com/sdk/win-usb.html
-http://developer.android.com/training/tutorials/views/hello-gallery.html
-http://developer.android.com/resources/faq/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/DragAndDropDemo.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/DraggableDot.html
-http://developer.android.com/shareables/training/MobileAds.zip
 http://developer.android.com/reference/renderscript/rs__types_8rsh_source.html
 http://developer.android.com/reference/renderscript/rs__allocation_8rsh_source.html
 http://developer.android.com/reference/renderscript/rs__atomic_8rsh_source.html
@@ -4069,13 +3850,230 @@
 http://developer.android.com/reference/renderscript/structrs__script.html
 http://developer.android.com/reference/renderscript/structrs__allocation.html
 http://developer.android.com/reference/renderscript/rs__core_8rsh_source.html
-http://developer.android.com/sdk/api_diff/11/changes.html
-http://developer.android.com/resources/samples/StackWidget/index.html
-http://developer.android.com/resources/samples/WeatherListWidget/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List15.html
+http://developer.android.com/reference/javax/security/auth/Subject.html
+http://developer.android.com/reference/javax/security/auth/SubjectDomainCombiner.html
+http://developer.android.com/reference/android/drm/DrmManagerClient.OnErrorListener.html
+http://developer.android.com/reference/android/drm/DrmManagerClient.OnEventListener.html
+http://developer.android.com/reference/android/drm/DrmManagerClient.OnInfoListener.html
+http://developer.android.com/reference/android/drm/DrmStore.ConstraintsColumns.html
+http://developer.android.com/reference/android/drm/DrmConvertedStatus.html
+http://developer.android.com/reference/android/drm/DrmErrorEvent.html
+http://developer.android.com/reference/android/drm/DrmEvent.html
+http://developer.android.com/reference/android/drm/DrmInfo.html
+http://developer.android.com/reference/android/drm/DrmInfoEvent.html
+http://developer.android.com/reference/android/drm/DrmInfoRequest.html
+http://developer.android.com/reference/android/drm/DrmInfoStatus.html
+http://developer.android.com/reference/android/drm/DrmManagerClient.html
+http://developer.android.com/reference/android/drm/DrmRights.html
+http://developer.android.com/reference/android/drm/DrmStore.html
+http://developer.android.com/reference/android/drm/DrmStore.Action.html
+http://developer.android.com/reference/android/drm/DrmStore.DrmObjectType.html
+http://developer.android.com/reference/android/drm/DrmStore.Playback.html
+http://developer.android.com/reference/android/drm/DrmStore.RightsStatus.html
+http://developer.android.com/reference/android/drm/DrmSupportInfo.html
+http://developer.android.com/reference/android/drm/DrmUtils.html
+http://developer.android.com/reference/android/drm/DrmUtils.ExtendedMetadataParser.html
+http://developer.android.com/reference/android/drm/ProcessedData.html
+http://developer.android.com/guide/developing/device.html
+http://developer.android.com/sdk/adding-components.html
+http://developer.android.com/reference/java/security/acl/Acl.html
+http://developer.android.com/reference/java/security/acl/AclEntry.html
+http://developer.android.com/reference/java/security/acl/Owner.html
+http://developer.android.com/reference/java/security/acl/Permission.html
+http://developer.android.com/reference/java/security/acl/AclNotFoundException.html
+http://developer.android.com/reference/java/security/acl/LastOwnerException.html
+http://developer.android.com/reference/java/security/acl/NotOwnerException.html
+http://developer.android.com/reference/org/w3c/dom/ls/LSResourceResolver.html
+http://developer.android.com/reference/org/w3c/dom/ls/LSInput.html
+http://developer.android.com/reference/javax/crypto/Cipher.html
+http://developer.android.com/reference/javax/crypto/KeyGenerator.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html
+http://developer.android.com/reference/android/support/v4/util/LongSparseArray.html
+http://developer.android.com/reference/android/support/v4/util/LruCache.html
+http://developer.android.com/reference/android/support/v4/util/SparseArrayCompat.html
+http://developer.android.com/reference/org/xml/sax/ext/Attributes2Impl.html
+http://developer.android.com/reference/org/xml/sax/ext/Locator2Impl.html
+http://developer.android.com/reference/java/util/concurrent/locks/Lock.html
+http://developer.android.com/guide/developing/tools/draw9patch.html
+http://developer.android.com/guide/practices/design/responsiveness.html
+http://developer.android.com/reference/org/apache/http/impl/io/AbstractMessageWriter.html
+http://developer.android.com/reference/org/apache/http/impl/io/AbstractSessionInputBuffer.html
+http://developer.android.com/reference/org/apache/http/impl/io/ChunkedInputStream.html
+http://developer.android.com/reference/org/apache/http/impl/io/ChunkedOutputStream.html
+http://developer.android.com/reference/org/apache/http/impl/io/ContentLengthInputStream.html
+http://developer.android.com/reference/org/apache/http/impl/io/ContentLengthOutputStream.html
+http://developer.android.com/reference/org/apache/http/impl/io/HttpRequestParser.html
+http://developer.android.com/reference/org/apache/http/impl/io/HttpRequestWriter.html
+http://developer.android.com/reference/org/apache/http/impl/io/HttpResponseParser.html
+http://developer.android.com/reference/org/apache/http/impl/io/HttpResponseWriter.html
+http://developer.android.com/reference/org/apache/http/impl/io/HttpTransportMetricsImpl.html
+http://developer.android.com/reference/org/apache/http/impl/io/IdentityInputStream.html
+http://developer.android.com/reference/org/apache/http/impl/io/IdentityOutputStream.html
+http://developer.android.com/reference/org/apache/http/impl/io/SocketInputBuffer.html
+http://developer.android.com/reference/org/w3c/dom/ls/DOMImplementationLS.html
+http://developer.android.com/reference/org/w3c/dom/ls/LSOutput.html
+http://developer.android.com/reference/org/w3c/dom/ls/LSParser.html
+http://developer.android.com/reference/org/w3c/dom/ls/LSParserFilter.html
+http://developer.android.com/reference/org/w3c/dom/ls/LSSerializer.html
+http://developer.android.com/sdk/api_diff/10/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/10/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/10/changes/changes-summary.html
+http://developer.android.com/reference/org/apache/http/cookie/params/CookieSpecParamBean.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/PoolEntryRequest.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/RefQueueHandler.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/AbstractConnPool.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/ConnPoolByRoute.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/RouteSpecificPool.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/WaitingThread.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/WaitingThreadAborter.html
+http://developer.android.com/reference/java/lang/ref/Reference.html
+http://developer.android.com/reference/org/apache/http/client/protocol/RequestAddCookies.html
+http://developer.android.com/reference/org/apache/http/client/protocol/RequestDefaultHeaders.html
+http://developer.android.com/reference/org/apache/http/client/protocol/RequestProxyAuthentication.html
+http://developer.android.com/reference/org/apache/http/client/protocol/RequestTargetAuthentication.html
+http://developer.android.com/resources/samples/SipDemo/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/GLSurfaceViewActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/GLES20Activity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TouchRotateActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CompressedTextureActivity.html
+http://developer.android.com/resources/dashboard/opengl.html
+http://developer.android.com/guide/faq/index.html
+http://developer.android.com/reference/java/beans/PropertyChangeSupport.html
+http://developer.android.com/reference/java/nio/channels/spi/AbstractSelector.html
+http://developer.android.com/resources/tutorials/views/hello-datepicker.html
+http://developer.android.com/resources/tutorials/views/hello-timepicker.html
+http://developer.android.com/shareables/training/BitmapFun.zip
+http://developer.android.com/resources/tutorials/views/index.html
+http://developer.android.com/resources/samples/RenderScript/HelloCompute/index.html
+http://developer.android.com/resources/samples/RenderScript/HelloCompute/src/com/example/android/rs/hellocompute/mono.html
+http://developer.android.com/reference/android/support/v4/widget/SimpleCursorAdapter.CursorToStringConverter.html
+http://developer.android.com/reference/android/support/v4/widget/SimpleCursorAdapter.ViewBinder.html
+http://developer.android.com/reference/android/support/v4/widget/EdgeEffectCompat.html
+http://developer.android.com/reference/android/support/v4/widget/SearchViewCompat.html
+http://developer.android.com/reference/android/support/v4/widget/SearchViewCompat.OnQueryTextListenerCompat.html
+http://developer.android.com/shareables/training/NetworkUsage.zip
+http://developer.android.com/reference/renderscript/rs__element_8rsh.html
 http://developer.android.com/reference/renderscript/structrs__element.html
+http://developer.android.com/guide/topics/location/obtaining-user-location.html
+http://developer.android.com/sdk/api_diff/8/changes.html
+http://developer.android.com/about/versions/android-2.2-highlights.html
+http://developer.android.com/reference/android/speech/RecognitionListener.html
+http://developer.android.com/shareables/training/PhotoIntentActivity.zip
+http://developer.android.com/guide/topics/fundamentals/loaders.html
+http://developer.android.com/reference/javax/crypto/CipherOutputStream.html
+http://developer.android.com/reference/javax/crypto/CipherSpi.html
+http://developer.android.com/reference/javax/crypto/EncryptedPrivateKeyInfo.html
+http://developer.android.com/reference/javax/crypto/ExemptionMechanism.html
+http://developer.android.com/reference/javax/crypto/ExemptionMechanismSpi.html
+http://developer.android.com/reference/javax/crypto/KeyAgreement.html
+http://developer.android.com/reference/javax/crypto/KeyAgreementSpi.html
+http://developer.android.com/reference/javax/crypto/KeyGeneratorSpi.html
+http://developer.android.com/reference/javax/crypto/Mac.html
+http://developer.android.com/reference/javax/crypto/MacSpi.html
+http://developer.android.com/reference/javax/crypto/NullCipher.html
+http://developer.android.com/reference/javax/crypto/SealedObject.html
+http://developer.android.com/reference/javax/crypto/SecretKeyFactory.html
+http://developer.android.com/reference/javax/crypto/SecretKeyFactorySpi.html
+http://developer.android.com/reference/javax/crypto/BadPaddingException.html
+http://developer.android.com/reference/javax/crypto/ExemptionMechanismException.html
+http://developer.android.com/reference/javax/crypto/IllegalBlockSizeException.html
+http://developer.android.com/reference/javax/crypto/NoSuchPaddingException.html
+http://developer.android.com/reference/javax/crypto/ShortBufferException.html
+http://developer.android.com/reference/org/json/JSONArray.html
+http://developer.android.com/reference/org/json/JSONObject.html
+http://developer.android.com/reference/org/json/JSONStringer.html
+http://developer.android.com/reference/org/json/JSONTokener.html
+http://developer.android.com/reference/org/json/JSONException.html
+http://developer.android.com/reference/android/view/ViewDebug.CapturedViewProperty.html
+http://developer.android.com/reference/android/view/ViewDebug.ExportedProperty.html
+http://developer.android.com/reference/android/view/ViewDebug.FlagToString.html
+http://developer.android.com/reference/android/view/ViewDebug.IntToString.html
+http://developer.android.com/tools/sdk/ndk/overview.html
+http://developer.android.com/reference/java/lang/ref/PhantomReference.html
+http://developer.android.com/reference/java/lang/ref/SoftReference.html
+http://developer.android.com/sdk/api_diff/14/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/14/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/14/changes/changes-summary.html
+http://developer.android.com/guide/faq/framework.html
+http://developer.android.com/guide/faq/licensingandoss.html
+http://developer.android.com/guide/faq/security.html
+http://developer.android.com/reference/android/gesture/GestureOverlayView.OnGestureListener.html
+http://developer.android.com/reference/android/gesture/GestureOverlayView.OnGesturePerformedListener.html
+http://developer.android.com/reference/android/gesture/GestureOverlayView.OnGesturingListener.html
+http://developer.android.com/reference/android/gesture/Gesture.html
+http://developer.android.com/reference/android/gesture/GestureLibraries.html
+http://developer.android.com/reference/android/gesture/GestureLibrary.html
+http://developer.android.com/reference/android/gesture/GesturePoint.html
+http://developer.android.com/reference/android/gesture/GestureStore.html
+http://developer.android.com/reference/android/gesture/GestureStroke.html
+http://developer.android.com/reference/android/gesture/GestureUtils.html
+http://developer.android.com/reference/android/gesture/OrientedBoundingBox.html
+http://developer.android.com/reference/android/gesture/Prediction.html
+http://developer.android.com/resources/samples/TicTacToeLib/AndroidManifest.html
+http://developer.android.com/resources/samples/TicTacToeMain/AndroidManifest.html
+http://developer.android.com/sdk/eclipse-adt.html
+http://developer.android.com/resources/tutorials/views/hello-webview.html
+http://developer.android.com/resources/samples/BackupRestore/src/com/example/android/backuprestore/ExampleAgent.html
+http://developer.android.com/resources/samples/BackupRestore/index.html
+http://developer.android.com/guide/practices/ui_guidelines/icon_design_launcher_archive.html
+http://developer.android.com/guide/topics/nfc/index.html
+http://developer.android.com/guide/developing/tools/traceview.html
+http://developer.android.com/resources/samples/AccelerometerPlay/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/RotationVectorDemo.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/Sensors.html
+http://developer.android.com/guide/topics/clipboard/copy-paste.html
+http://developer.android.com/resources/samples/SpinnerTest/index.html
+http://developer.android.com/resources/samples/Spinner/index.html
+http://developer.android.com/reference/org/apache/http/cookie/params/CookieSpecPNames.html
+http://developer.android.com/reference/android/speech/RecognitionService.Callback.html
+http://developer.android.com/reference/android/speech/SpeechRecognizer.html
+http://developer.android.com/reference/javax/security/cert/X509Certificate.html
+http://developer.android.com/guide/topics/testing/index.html
+http://developer.android.com/guide/google/gcm/server-javadoc/allclasses-frame.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-summary.html
+http://developer.android.com/reference/android/support/v4/content/ContextCompat.html
+http://developer.android.com/reference/java/nio/charset/spi/CharsetProvider.html
+http://developer.android.com/resources/community-groups.html
+http://developer.android.com/reference/android/test/suitebuilder/TestMethod.html
+http://developer.android.com/reference/android/test/suitebuilder/TestSuiteBuilder.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/BouncingBalls.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/LayoutAnimations.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/LayoutAnimationsByDefault.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/layout_animations_by_default.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/MultiPropertyAnimation.html
+http://developer.android.com/reference/java/lang/Deprecated.html
+http://developer.android.com/reference/java/lang/annotation/Documented.html
+http://developer.android.com/reference/android/test/FlakyTest.html
+http://developer.android.com/reference/java/lang/annotation/Inherited.html
+http://developer.android.com/reference/android/test/suitebuilder/annotation/LargeTest.html
+http://developer.android.com/reference/android/test/suitebuilder/annotation/MediumTest.html
+http://developer.android.com/reference/java/lang/Override.html
+http://developer.android.com/reference/android/widget/RemoteViews.RemoteView.html
+http://developer.android.com/reference/android/test/suitebuilder/annotation/SmallTest.html
+http://developer.android.com/reference/android/test/suitebuilder/annotation/Smoke.html
+http://developer.android.com/reference/android/test/suitebuilder/annotation/Suppress.html
+http://developer.android.com/reference/android/annotation/SuppressLint.html
+http://developer.android.com/reference/java/lang/SuppressWarnings.html
+http://developer.android.com/reference/android/annotation/TargetApi.html
+http://developer.android.com/reference/dalvik/annotation/TestTarget.html
+http://developer.android.com/reference/dalvik/annotation/TestTargetClass.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html
+http://developer.android.com/reference/android/support/v4/content/Loader.OnLoadCompleteListener.html
+http://developer.android.com/reference/android/support/v4/content/AsyncTaskLoader.html
+http://developer.android.com/reference/android/support/v4/content/IntentCompat.html
+http://developer.android.com/reference/android/support/v4/content/Loader.ForceLoadContentObserver.html
+http://developer.android.com/reference/javax/net/SocketFactory.html
+http://developer.android.com/reference/javax/net/ServerSocketFactory.html
+http://developer.android.com/reference/org/apache/http/conn/routing/HttpRouteDirector.html
+http://developer.android.com/reference/org/apache/http/conn/routing/RouteInfo.html
+http://developer.android.com/reference/org/apache/http/conn/routing/BasicRouteDirector.html
+http://developer.android.com/guide/topics/usb/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ActionBarMechanics.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/content/ClipboardSample.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/SearchViewActionBar.html
+http://developer.android.com/resources/samples/RenderScript/index.html
 http://developer.android.com/reference/renderscript/structrs__type.html
 http://developer.android.com/reference/renderscript/structrs__sampler.html
 http://developer.android.com/reference/renderscript/structrs__mesh.html
@@ -4088,31 +4086,1477 @@
 http://developer.android.com/reference/renderscript/structrs__matrix4x4.html
 http://developer.android.com/reference/renderscript/structrs__matrix3x3.html
 http://developer.android.com/reference/renderscript/structrs__matrix2x2.html
-http://developer.android.com/sdk/api_diff/15/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/15/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/15/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/15/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/15/changes/fields_index_all.html
-http://developer.android.com/guide/topics/nfc/index.html
-http://developer.android.com/guide/practices/ui_guidelines/icon_design_action_bar.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ActionBarShareActionProviderActivity.html
+http://developer.android.com/sdk/ndk/index.html
+http://developer.android.com/sdk/api_diff/9/changes.html
+http://developer.android.com/sdk/api_diff/16/changes.html
+http://developer.android.com/reference/android/media/audiofx/AcousticEchoCanceler.html
+http://developer.android.com/reference/android/media/audiofx/AutomaticGainControl.html
+http://developer.android.com/reference/android/media/audiofx/NoiseSuppressor.html
+http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pServiceInfo.html
+http://developer.android.com/reference/android/text/util/Linkify.MatchFilter.html
+http://developer.android.com/reference/android/text/util/Linkify.TransformFilter.html
+http://developer.android.com/reference/android/text/util/Rfc822Token.html
+http://developer.android.com/reference/renderscript/rs__object_8rsh.html
+http://developer.android.com/reference/org/apache/http/conn/util/InetAddressUtils.html
+http://developer.android.com/reference/org/apache/http/client/protocol/ClientContext.html
+http://developer.android.com/reference/org/apache/http/client/protocol/ClientContextConfigurer.html
+http://developer.android.com/reference/org/apache/http/client/protocol/ResponseProcessCookies.html
+http://developer.android.com/reference/javax/microedition/khronos/egl/EGL.html
+http://developer.android.com/reference/javax/microedition/khronos/egl/EGL10.html
+http://developer.android.com/reference/javax/microedition/khronos/egl/EGL11.html
+http://developer.android.com/reference/javax/microedition/khronos/egl/EGLContext.html
+http://developer.android.com/reference/javax/microedition/khronos/egl/EGLDisplay.html
+http://developer.android.com/reference/javax/microedition/khronos/egl/EGLSurface.html
+http://developer.android.com/reference/renderscript/rs__allocation_8rsh.html
+http://developer.android.com/reference/renderscript/rs__atomic_8rsh.html
+http://developer.android.com/reference/renderscript/rs__cl_8rsh.html
+http://developer.android.com/reference/renderscript/rs__debug_8rsh.html
+http://developer.android.com/reference/renderscript/rs__math_8rsh.html
+http://developer.android.com/reference/renderscript/rs__matrix_8rsh.html
+http://developer.android.com/reference/renderscript/rs__quaternion_8rsh.html
+http://developer.android.com/reference/renderscript/rs__sampler_8rsh.html
+http://developer.android.com/reference/renderscript/rs__time_8rsh.html
+http://developer.android.com/reference/renderscript/globals_func.html
+http://developer.android.com/reference/renderscript/globals_type.html
+http://developer.android.com/reference/renderscript/globals_enum.html
+http://developer.android.com/reference/renderscript/rs__graphics_8rsh.html
+http://developer.android.com/reference/javax/security/auth/login/LoginException.html
+http://developer.android.com/reference/android/media/audiofx/AudioEffect.OnControlStatusChangeListener.html
+http://developer.android.com/reference/android/media/audiofx/AudioEffect.OnEnableStatusChangeListener.html
+http://developer.android.com/reference/android/media/audiofx/BassBoost.OnParameterChangeListener.html
+http://developer.android.com/reference/android/media/audiofx/EnvironmentalReverb.OnParameterChangeListener.html
+http://developer.android.com/reference/android/media/audiofx/Equalizer.OnParameterChangeListener.html
+http://developer.android.com/reference/android/media/audiofx/PresetReverb.OnParameterChangeListener.html
+http://developer.android.com/reference/android/media/audiofx/Virtualizer.OnParameterChangeListener.html
+http://developer.android.com/reference/android/media/audiofx/Visualizer.OnDataCaptureListener.html
+http://developer.android.com/reference/android/media/audiofx/AudioEffect.Descriptor.html
+http://developer.android.com/reference/android/media/audiofx/BassBoost.html
+http://developer.android.com/reference/android/media/audiofx/BassBoost.Settings.html
+http://developer.android.com/reference/android/media/audiofx/EnvironmentalReverb.Settings.html
+http://developer.android.com/reference/android/media/audiofx/Equalizer.html
+http://developer.android.com/reference/android/media/audiofx/Equalizer.Settings.html
+http://developer.android.com/reference/android/media/audiofx/PresetReverb.html
+http://developer.android.com/reference/android/media/audiofx/PresetReverb.Settings.html
+http://developer.android.com/reference/android/media/audiofx/Virtualizer.html
+http://developer.android.com/reference/android/media/audiofx/Virtualizer.Settings.html
+http://developer.android.com/reference/android/media/audiofx/Visualizer.html
+http://developer.android.com/reference/android/text/format/DateFormat.html
+http://developer.android.com/reference/android/text/format/DateUtils.html
+http://developer.android.com/reference/android/text/format/Formatter.html
+http://developer.android.com/resources/samples/AndroidBeamDemo/index.html
+http://developer.android.com/resources/articles/creating-input-method.html
+http://developer.android.com/sdk/api_diff/10/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/10/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/10/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/10/changes/android.media.MediaRecorder.AudioEncoder.html
+http://developer.android.com/sdk/api_diff/10/changes/android.nfc.NfcAdapter.html
+http://developer.android.com/sdk/api_diff/10/changes/android.media.MediaRecorder.OutputFormat.html
+http://developer.android.com/sdk/api_diff/10/changes/pkg_android.bluetooth.html
+http://developer.android.com/sdk/api_diff/10/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/10/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/10/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/10/changes/pkg_android.nfc.html
+http://developer.android.com/sdk/api_diff/10/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/10/changes/pkg_android.speech.html
+http://developer.android.com/sdk/api_diff/10/changes/pkg_android.test.mock.html
+http://developer.android.com/sdk/api_diff/10/changes/android.graphics.BitmapFactory.Options.html
+http://developer.android.com/sdk/api_diff/10/changes/android.bluetooth.BluetoothAdapter.html
+http://developer.android.com/sdk/api_diff/10/changes/android.bluetooth.BluetoothDevice.html
+http://developer.android.com/sdk/api_diff/10/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/10/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/10/changes/android.test.mock.MockPackageManager.html
+http://developer.android.com/sdk/api_diff/10/changes/jdiff_statistics.html
 http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ActionBarSettingsActionProviderActivity.html
 http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentTabs.html
 http://developer.android.com/resources/samples/HoneycombGallery/src/com/example/android/hcgallery/TitlesFragment.html
-http://developer.android.com/guide/topics/testing/index.html
-http://developer.android.com/sdk/tools-notes.html
-http://developer.android.com/sdk/api_diff/13/changes/jdiff_topleftframe.html
-http://developer.android.com/sdk/api_diff/13/changes/alldiffs_index_all.html
-http://developer.android.com/sdk/api_diff/13/changes/changes-summary.html
-http://developer.android.com/guide/faq/index.html
-http://developer.android.com/sdk/eclipse-adt.html
-http://developer.android.com/guide/google/gcm/client-javadoc/allclasses-frame.html
-http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/package-summary.html
+http://developer.android.com/sdk/installing.html
+http://developer.android.com/tools/help/layoutopt.html
+http://developer.android.com/sdk/api_diff/16/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/16/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/16/changes/changes-summary.html
+http://developer.android.com/resources/samples/TicTacToeMain/index.html
+http://developer.android.com/reference/java/util/concurrent/locks/Condition.html
+http://developer.android.com/sdk/api_diff/12/changes.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/GameControllerInput.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/GameView.html
+http://developer.android.com/reference/android/net/rtp/RtpStream.html
+http://developer.android.com/reference/android/net/rtp/AudioStream.html
+http://developer.android.com/reference/android/net/rtp/AudioGroup.html
+http://developer.android.com/reference/android/net/rtp/AudioCodec.html
+http://developer.android.com/sdk/api_diff/4/changes.html
+http://developer.android.com/about/versions/android-1.6-highlights.html
+http://developer.android.com/sdk/api_diff/7/changes.html
+http://developer.android.com/about/versions/android-2.0-highlights.html
+http://developer.android.com/reference/renderscript/rs__mesh_8rsh_source.html
+http://developer.android.com/reference/renderscript/rs__program_8rsh_source.html
+http://developer.android.com/reference/renderscript/rs__graphics_8rsh_source.html
 http://developer.android.com/sdk/api_diff/11/changes/jdiff_topleftframe.html
 http://developer.android.com/sdk/api_diff/11/changes/alldiffs_index_all.html
 http://developer.android.com/sdk/api_diff/11/changes/changes-summary.html
+http://developer.android.com/guide/topics/providers/%7B@docRoot%3C/code
+http://developer.android.com/reference/java/util/concurrent/locks/ReadWriteLock.html
+http://developer.android.com/reference/java/util/concurrent/locks/AbstractOwnableSynchronizer.html
+http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.html
+http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.ConditionObject.html
+http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedSynchronizer.html
+http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedSynchronizer.ConditionObject.html
+http://developer.android.com/reference/java/util/concurrent/locks/LockSupport.html
+http://developer.android.com/reference/java/util/concurrent/locks/ReentrantLock.html
+http://developer.android.com/reference/java/util/concurrent/locks/ReentrantReadWriteLock.html
+http://developer.android.com/reference/java/util/concurrent/locks/ReentrantReadWriteLock.ReadLock.html
+http://developer.android.com/reference/java/util/concurrent/locks/ReentrantReadWriteLock.WriteLock.html
+http://developer.android.com/sdk/api_diff/11/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/11/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/11/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/11/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/11/changes/fields_index_all.html
+http://developer.android.com/sdk/api_diff/9/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/9/changes/changes-summary.html
+http://developer.android.com/guide/google/gcm/client-javadoc/allclasses-frame.html
+http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/package-summary.html
 http://developer.android.com/guide/topics/ui/binding.html
-http://developer.android.com/sdk/api_diff/15/changes/jdiff_statistics.html
+http://developer.android.com/reference/javax/security/cert/CertificateException.html
+http://developer.android.com/reference/javax/security/cert/CertificateEncodingException.html
+http://developer.android.com/reference/javax/security/cert/CertificateExpiredException.html
+http://developer.android.com/reference/javax/security/cert/CertificateNotYetValidException.html
+http://developer.android.com/reference/javax/security/cert/CertificateParsingException.html
+http://developer.android.com/about/versions/android-2.0.html
+http://developer.android.com/sdk/api_diff/5/changes.html
+http://developer.android.com/reference/renderscript/structrs__tm.html
+http://developer.android.com/sdk/api_diff/7/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/7/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/7/changes/changes-summary.html
+http://developer.android.com/resources/tutorials/views/hello-spinner.html
+http://developer.android.com/resources/tutorials/views/hello-listview.html
+http://developer.android.com/resources/tutorials/views/hello-gridview.html
+http://developer.android.com/sdk/api_diff/16/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/16/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/16/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/16/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/16/changes/fields_index_all.html
+http://developer.android.com/sdk/api_diff/9/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.app.admin.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.content.res.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.location.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.net.wifi.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.opengl.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.service.wallpaper.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.telephony.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.telephony.gsm.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.test.mock.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.text.format.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.view.inputmethod.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_dalvik.bytecode.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_dalvik.system.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_java.awt.font.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_java.io.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_java.lang.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_java.lang.reflect.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_java.net.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_java.nio.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_java.security.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_java.sql.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_java.text.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_java.util.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_java.util.concurrent.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_java.util.concurrent.atomic.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_java.util.concurrent.locks.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_java.util.logging.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_java.util.zip.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_javax.net.ssl.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_javax.security.auth.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_javax.security.auth.x500.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_javax.sql.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_javax.xml.datatype.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_javax.xml.parsers.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_javax.xml.transform.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_javax.xml.validation.html
+http://developer.android.com/sdk/api_diff/9/changes/pkg_org.apache.http.protocol.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/DraggableDot.html
+http://developer.android.com/sdk/api_diff/4/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/4/changes/changes-summary.html
+http://developer.android.com/sdk/api_diff/11/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/11/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.AbsListView.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.AbstractCursor.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.AbstractThreadedSyncAdapter.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.AbstractWindowedCursor.html
+http://developer.android.com/sdk/api_diff/11/changes/android.accounts.AccountManager.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.ActivityManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.ActivityManager.RecentTaskInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.AlarmClock.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.AlertDialog.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.AlertDialog.Builder.html
+http://developer.android.com/sdk/api_diff/11/changes/android.util.AndroidException.html
+http://developer.android.com/sdk/api_diff/11/changes/android.util.AndroidRuntimeException.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.animation.Animation.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.pm.ApplicationInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.appwidget.AppWidgetHost.html
+http://developer.android.com/sdk/api_diff/11/changes/android.appwidget.AppWidgetManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.appwidget.AppWidgetProviderInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.ArrayAdapter.html
+http://developer.android.com/sdk/api_diff/11/changes/android.text.method.ArrowKeyMovementMethod.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.AsyncTask.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/11/changes/android.media.AudioManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.accounts.AuthenticatorDescription.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.BaseInputConnection.html
+http://developer.android.com/sdk/api_diff/11/changes/android.text.method.BaseKeyListener.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.text.method.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.BatteryManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.graphics.BitmapFactory.Options.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.bluetooth.html
+http://developer.android.com/sdk/api_diff/11/changes/android.bluetooth.BluetoothAdapter.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.BroadcastReceiver.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.Browser.SearchColumns.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.Bundle.html
+http://developer.android.com/sdk/api_diff/11/changes/android.webkit.CacheManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.webkit.CacheManager.CacheResult.html
+http://developer.android.com/sdk/api_diff/11/changes/android.media.CamcorderProfile.html
+http://developer.android.com/sdk/api_diff/11/changes/android.hardware.Camera.html
+http://developer.android.com/sdk/api_diff/11/changes/android.hardware.Camera.Parameters.html
+http://developer.android.com/sdk/api_diff/11/changes/android.graphics.Canvas.html
+http://developer.android.com/sdk/api_diff/11/changes/java.lang.Character.UnicodeBlock.html
+http://developer.android.com/sdk/api_diff/11/changes/android.text.ClipboardManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.graphics.drawable.ColorDrawable.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.pm.ComponentInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.res.Configuration.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.CommonDataKinds.Email.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.CommonDataKinds.Relation.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.AggregationSuggestions.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.Photo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.ContactsColumns.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.ContactStatusColumns.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.DataColumns.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.DataColumnsWithJoins.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.GroupsColumns.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.Intents.Insert.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.RawContacts.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.RawContactsColumns.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.StatusColumns.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.ContentProvider.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.ContentProviderClient.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.ContentResolver.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.ContentValues.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.ContextWrapper.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.view.inputmethod.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.Cursor.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.CursorAdapter.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.CursorWindow.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.CursorWrapper.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.database.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.DatabaseUtils.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.DatePicker.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.DatePickerDialog.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.Debug.html
+http://developer.android.com/sdk/api_diff/11/changes/java.util.Deque.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.admin.DeviceAdminInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.admin.DeviceAdminReceiver.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.admin.DevicePolicyManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.Dialog.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.DownloadManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.DownloadManager.Request.html
+http://developer.android.com/sdk/api_diff/11/changes/android.graphics.drawable.Drawable.html
+http://developer.android.com/sdk/api_diff/11/changes/android.graphics.drawable.DrawableContainer.html
+http://developer.android.com/sdk/api_diff/11/changes/android.graphics.drawable.DrawableContainer.DrawableContainerState.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.DropBoxManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.EditorInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.Environment.html
+http://developer.android.com/sdk/api_diff/11/changes/android.media.ExifInterface.html
+http://developer.android.com/sdk/api_diff/11/changes/android.opengl.GLSurfaceView.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.GridView.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.ImageView.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.InputConnection.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.InputConnectionWrapper.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.InputMethod.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.InputMethodInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.InputMethodManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.html
+http://developer.android.com/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.InputMethodImpl.html
+http://developer.android.com/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.Insets.html
+http://developer.android.com/sdk/api_diff/11/changes/android.text.InputType.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.animation.Interpolator.html
+http://developer.android.com/sdk/api_diff/11/changes/android.inputmethodservice.Keyboard.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.KeyCharacterMap.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.KeyCharacterMap.KeyData.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/11/changes/android.graphics.drawable.LayerDrawable.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.LayoutInflater.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.LinearLayout.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.ListView.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.test.html
+http://developer.android.com/sdk/api_diff/11/changes/java.util.Locale.html
+http://developer.android.com/sdk/api_diff/11/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/11/changes/android.media.MediaRecorder.html
+http://developer.android.com/sdk/api_diff/11/changes/android.media.MediaRecorder.AudioSource.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.MediaStore.Audio.Genres.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.MenuItem.html
+http://developer.android.com/sdk/api_diff/11/changes/android.test.mock.MockContext.html
+http://developer.android.com/sdk/api_diff/11/changes/android.test.mock.MockCursor.html
+http://developer.android.com/sdk/api_diff/11/changes/android.test.mock.MockPackageManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.MotionEvent.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.preference.html
+http://developer.android.com/sdk/api_diff/11/changes/java.util.NavigableMap.html
+http://developer.android.com/sdk/api_diff/11/changes/java.util.NavigableSet.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.Notification.html
+http://developer.android.com/sdk/api_diff/11/changes/java.lang.Object.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_dalvik.bytecode.html
+http://developer.android.com/sdk/api_diff/11/changes/dalvik.bytecode.Opcodes.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.OverScroller.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.pm.PackageStats.html
+http://developer.android.com/sdk/api_diff/11/changes/android.util.Patterns.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.PendingIntent.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.PopupWindow.html
+http://developer.android.com/sdk/api_diff/11/changes/android.preference.Preference.html
+http://developer.android.com/sdk/api_diff/11/changes/android.preference.PreferenceActivity.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.ProgressDialog.html
+http://developer.android.com/sdk/api_diff/11/changes/android.net.Proxy.html
+http://developer.android.com/sdk/api_diff/11/changes/java.util.Queue.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.QuickContactBadge.html
+http://developer.android.com/sdk/api_diff/11/changes/android.text.method.QwertyKeyListener.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/11/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/11/changes/android.R.dimen.html
+http://developer.android.com/sdk/api_diff/11/changes/android.R.drawable.html
+http://developer.android.com/sdk/api_diff/11/changes/android.R.id.html
+http://developer.android.com/sdk/api_diff/11/changes/android.R.layout.html
+http://developer.android.com/sdk/api_diff/11/changes/android.R.string.html
+http://developer.android.com/sdk/api_diff/11/changes/android.R.style.html
+http://developer.android.com/sdk/api_diff/11/changes/android.speech.RecognizerIntent.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.RemoteViews.html
+http://developer.android.com/sdk/api_diff/11/changes/java.util.ResourceBundle.html
+http://developer.android.com/sdk/api_diff/11/changes/java.util.ResourceBundle.Control.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.ResourceCursorAdapter.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.ScaleGestureDetector.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.Scroller.html
+http://developer.android.com/sdk/api_diff/11/changes/android.text.method.ScrollingMovementMethod.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.SearchManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.hardware.SensorManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.Service.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.Settings.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.Settings.Secure.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.Settings.System.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.SharedPreferences.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.SharedPreferences.Editor.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.SimpleCursorAdapter.html
+http://developer.android.com/sdk/api_diff/11/changes/android.text.SpannableStringBuilder.html
+http://developer.android.com/sdk/api_diff/11/changes/android.util.SparseArray.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.Spinner.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.database.sqlite.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteCursor.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteDatabase.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteOpenHelper.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteProgram.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteQueryBuilder.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteStatement.html
+http://developer.android.com/sdk/api_diff/11/changes/android.util.StateSet.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.StrictMode.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.StrictMode.ThreadPolicy.Builder.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.StrictMode.VmPolicy.Builder.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.Surface.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.SurfaceHolder.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.SyncAdapterType.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.SyncInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.TabWidget.html
+http://developer.android.com/sdk/api_diff/11/changes/android.telephony.TelephonyManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.speech.tts.TextToSpeech.Engine.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.TextView.html
+http://developer.android.com/sdk/api_diff/11/changes/android.text.format.Time.html
+http://developer.android.com/sdk/api_diff/11/changes/android.net.Uri.html
+http://developer.android.com/sdk/api_diff/11/changes/android.net.Uri.Builder.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.Vibrator.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.ViewGroup.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.ViewParent.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.WallpaperManager.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/11/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/11/changes/android.webkit.WebView.html
+http://developer.android.com/sdk/api_diff/11/changes/android.webkit.WebViewClient.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.Window.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.Window.Callback.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.WindowManager.LayoutParams.html
+http://developer.android.com/sdk/api_diff/9/changes/android.util.DisplayMetrics.html
+http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo.html
+http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest.html
+http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pServiceRequest.html
+http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pUpnpServiceInfo.html
+http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pUpnpServiceRequest.html
+http://developer.android.com/sdk/api_diff/11/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/4/changes/java.util.concurrent.locks.AbstractQueuedSynchronizer.html
+http://developer.android.com/sdk/api_diff/4/changes/android.provider.Settings.Secure.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/4/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/4/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/4/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/4/changes/android.location.Address.html
+http://developer.android.com/sdk/api_diff/4/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.content.res.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.graphics.drawable.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.inputmethodservice.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.location.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.net.wifi.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.opengl.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.telephony.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.telephony.gsm.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.test.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.test.mock.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.text.style.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.view.animation.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/4/changes/android.test.AndroidTestCase.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.AnimationDrawable.html
+http://developer.android.com/sdk/api_diff/4/changes/android.R.anim.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ApplicationInfo.html
+http://developer.android.com/sdk/api_diff/4/changes/android.media.AudioManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.widget.AutoCompleteTextView.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.Bitmap.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.BitmapDrawable.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.BitmapFactory.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.BitmapFactory.Options.html
+http://developer.android.com/sdk/api_diff/4/changes/android.os.Build.html
+http://developer.android.com/sdk/api_diff/4/changes/android.os.Build.VERSION.html
+http://developer.android.com/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.Canvas.html
+http://developer.android.com/sdk/api_diff/4/changes/android.widget.CheckedTextView.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.ComponentName.html
+http://developer.android.com/sdk/api_diff/4/changes/android.view.VelocityTracker.html
+http://developer.android.com/sdk/api_diff/4/changes/android.util.Config.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.res.Configuration.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ConfigurationInfo.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.ContentProvider.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.ContextWrapper.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.Typeface.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.Drawable.html
+http://developer.android.com/sdk/api_diff/4/changes/android.net.wifi.WifiManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.telephony.TelephonyManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Genres.Members.html
+http://developer.android.com/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Media.html
+http://developer.android.com/sdk/api_diff/4/changes/android.util.TypedValue.html
+http://developer.android.com/sdk/api_diff/4/changes/android.util.DisplayMetrics.html
+http://developer.android.com/sdk/api_diff/4/changes/android.app.Dialog.html
+http://developer.android.com/sdk/api_diff/4/changes/android.view.Window.Callback.html
+http://developer.android.com/sdk/api_diff/4/changes/android.telephony.gsm.SmsManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.SubmitPdu.html
+http://developer.android.com/sdk/api_diff/4/changes/android.app.SearchManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.test.mock.MockContext.html
+http://developer.android.com/sdk/api_diff/4/changes/android.media.MediaRecorder.html
+http://developer.android.com/sdk/api_diff/4/changes/android.os.RemoteCallbackList.html
+http://developer.android.com/sdk/api_diff/4/changes/android.widget.ListView.html
+http://developer.android.com/sdk/api_diff/4/changes/android.widget.TabWidget.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.NinePatch.html
+http://developer.android.com/sdk/api_diff/4/changes/android.app.PendingIntent.html
+http://developer.android.com/sdk/api_diff/4/changes/android.test.mock.MockPackageManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.view.ViewConfiguration.html
+http://developer.android.com/sdk/api_diff/4/changes/android.widget.PopupWindow.html
+http://developer.android.com/sdk/api_diff/4/changes/android.widget.TabHost.TabSpec.html
+http://developer.android.com/sdk/api_diff/4/changes/android.text.style.ImageSpan.html
+http://developer.android.com/sdk/api_diff/4/changes/android.inputmethodservice.KeyboardView.html
+http://developer.android.com/sdk/api_diff/4/changes/android.app.LauncherActivity.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_java.util.concurrent.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_java.util.concurrent.locks.html
+http://developer.android.com/sdk/api_diff/4/changes/android.app.LauncherActivity.ListItem.html
+http://developer.android.com/sdk/api_diff/4/changes/android.hardware.SensorManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.Manifest.permission_group.html
+http://developer.android.com/sdk/api_diff/4/changes/android.media.MediaRecorder.AudioSource.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.NinePatchDrawable.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ProviderInfo.html
+http://developer.android.com/sdk/api_diff/4/changes/android.R.drawable.html
+http://developer.android.com/sdk/api_diff/4/changes/android.R.style.html
+http://developer.android.com/sdk/api_diff/4/changes/android.provider.Settings.System.html
+http://developer.android.com/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.MessageClass.html
+http://developer.android.com/sdk/api_diff/4/changes/android.view.Surface.html
+http://developer.android.com/sdk/api_diff/4/changes/java.util.concurrent.TimeUnit.html
+http://developer.android.com/sdk/api_diff/4/changes/android.media.ToneGenerator.html
+http://developer.android.com/sdk/api_diff/16/changes/constructors_index_removals.html
+http://developer.android.com/sdk/api_diff/16/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/16/changes/constructors_index_changes.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.ClipData.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.ClipData.Item.html
+http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmStore.html
+http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmStore.Action.html
+http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmStore.DrmObjectType.html
+http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmStore.Playback.html
+http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmStore.RightsStatus.html
+http://developer.android.com/sdk/api_diff/16/changes/android.nfc.FormatException.html
+http://developer.android.com/sdk/api_diff/16/changes/android.webkit.GeolocationPermissions.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Mesh.AllocationBuilder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Mesh.Builder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Mesh.TriangleMeshBuilder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.nfc.NdefMessage.html
+http://developer.android.com/sdk/api_diff/16/changes/android.nfc.NdefRecord.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragment.Builder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.Builder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramVertex.Builder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.Builder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.Constants.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.RemoteViews.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.RenderScriptGL.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.RenderScriptGL.SurfaceConfig.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.RSSurfaceView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.RSTextureView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.SQLException.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteException.html
+http://developer.android.com/sdk/api_diff/16/changes/junit.framework.TestSuite.html
+http://developer.android.com/sdk/api_diff/16/changes/android.webkit.WebStorage.html
+http://developer.android.com/sdk/api_diff/9/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/9/changes/android.app.ActivityManager.RunningAppProcessInfo.html
+http://developer.android.com/sdk/api_diff/9/changes/android.app.Notification.html
+http://developer.android.com/reference/javax/security/cert/Certificate.html
+http://developer.android.com/sdk/api_diff/16/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/4/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/4/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/4/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/4/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/4/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/4/changes/fields_index_all.html
+http://developer.android.com/reference/android/support/v4/content/pm/ActivityInfoCompat.html
+http://developer.android.com/reference/org/apache/http/client/utils/CloneUtils.html
+http://developer.android.com/reference/android/support/v4/net/ConnectivityManagerCompat.html
+http://developer.android.com/reference/android/support/v4/net/TrafficStatsCompat.html
+http://developer.android.com/reference/android/support/v4/net/TrafficStatsCompatIcs.html
+http://developer.android.com/reference/org/apache/http/client/utils/URIUtils.html
+http://developer.android.com/reference/org/apache/http/client/utils/URLEncodedUtils.html
+http://developer.android.com/reference/renderscript/rs__mesh_8rsh.html
+http://developer.android.com/reference/renderscript/rs__program_8rsh.html
+http://developer.android.com/sdk/api_diff/9/changes/org.apache.http.protocol.HTTP.html
+http://developer.android.com/resources/samples/NFCDemo/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/AudioFxDemo.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/SecureView.html
+http://developer.android.com/sdk/api_diff/16/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/16/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.accessibilityservice.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.animation.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.appwidget.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.bluetooth.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.content.res.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.database.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.database.sqlite.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.drm.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.graphics.drawable.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.media.audiofx.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.net.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.net.wifi.p2p.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.nfc.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.nfc.tech.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.renderscript.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.security.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.service.textservice.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.speech.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.test.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.test.mock.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.text.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.view.accessibility.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.view.inputmethod.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.view.textservice.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_junit.framework.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_junit.runner.html
+http://developer.android.com/sdk/api_diff/11/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/11/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.app.admin.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.view.animation.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.appwidget.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.test.mock.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.inputmethodservice.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.net.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.graphics.drawable.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.text.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.speech.tts.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_java.util.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.accounts.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.text.format.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.speech.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.opengl.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.telephony.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.content.res.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_java.lang.html
+http://developer.android.com/sdk/api_diff/11/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/11/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/11/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/16/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/16/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/16/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.ContentResolver.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.Notification.Builder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityNodeInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/16/changes/android.net.wifi.p2p.WifiP2pManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewTreeObserver.html
+http://developer.android.com/sdk/api_diff/16/changes/android.test.InstrumentationTestSuite.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Program.BaseProgramBuilder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.media.MediaPlayer.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.UserDictionary.Words.html
+http://developer.android.com/sdk/api_diff/16/changes/android.graphics.SurfaceTexture.html
+http://developer.android.com/sdk/api_diff/16/changes/android.appwidget.AppWidgetManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.html
+http://developer.android.com/sdk/api_diff/16/changes/android.os.Vibrator.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.AsyncTaskLoader.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.Loader.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.CursorWindow.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteClosable.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteDatabase.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteProgram.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSubtype.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Font.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.FileA3D.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.Cursor.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.KeyCharacterMap.html
+http://developer.android.com/sdk/api_diff/16/changes/android.os.StrictMode.VmPolicy.Builder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.animation.LayoutTransition.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.ContentObservable.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.ContentObserver.html
+http://developer.android.com/sdk/api_diff/16/changes/android.graphics.Canvas.html
+http://developer.android.com/sdk/api_diff/16/changes/android.os.TokenWatcher.html
+http://developer.android.com/sdk/api_diff/16/changes/junit.framework.TestResult.html
+http://developer.android.com/sdk/api_diff/16/changes/android.text.Html.html
+http://developer.android.com/sdk/api_diff/16/changes/junit.framework.Assert.html
+http://developer.android.com/sdk/api_diff/16/changes/android.webkit.WebView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Element.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.Gravity.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.View.AccessibilityDelegate.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityEvent.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.PendingIntent.html
+http://developer.android.com/sdk/api_diff/16/changes/junit.framework.ComparisonFailure.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.ImageView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Sampler.html
+http://developer.android.com/sdk/api_diff/16/changes/android.media.AudioRecord.html
+http://developer.android.com/sdk/api_diff/16/changes/android.media.ToneGenerator.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramStore.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Allocation.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.CheckedTextView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.GridView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.AutoCompleteTextView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Program.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.Display.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.CalendarView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.nfc.NfcAdapter.html
+http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmSupportInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.accessibilityservice.AccessibilityServiceInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.InputDevice.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.LinearLayout.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.res.Resources.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.Spinner.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.FileA3D.IndexEntry.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.InputEvent.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.AdapterViewFlipper.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.FrameLayout.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.SearchManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.RelativeLayout.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.TextView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.SearchView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Mesh.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramVertex.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewStub.html
+http://developer.android.com/sdk/api_diff/16/changes/junit.runner.BaseTestRunner.html
+http://developer.android.com/sdk/api_diff/16/changes/android.graphics.Camera.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.ActivityManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.net.SSLCertificateSocketFactory.html
+http://developer.android.com/sdk/api_diff/16/changes/android.graphics.drawable.GradientDrawable.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewParent.html
+http://developer.android.com/sdk/api_diff/16/changes/android.bluetooth.BluetoothAdapter.html
+http://developer.android.com/sdk/api_diff/16/changes/android.accessibilityservice.AccessibilityService.html
+http://developer.android.com/sdk/api_diff/16/changes/android.media.audiofx.Visualizer.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSession.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.Switch.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.AbsSeekBar.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ActionMode.html
+http://developer.android.com/sdk/api_diff/16/changes/android.media.AudioManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.net.ConnectivityManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.nfc.tech.IsoDep.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.KeyguardManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.graphics.Paint.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ActionProvider.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.ContactsContract.Contacts.html
+http://developer.android.com/sdk/api_diff/16/changes/android.net.Uri.html
+http://developer.android.com/sdk/api_diff/16/changes/android.appwidget.AppWidgetProvider.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteOpenHelper.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener.html
+http://developer.android.com/sdk/api_diff/16/changes/android.service.textservice.SpellCheckerService.Session.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.ContentProvider.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.ContentProviderClient.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteQueryBuilder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmManagerClient.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewGroup.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.DownloadManager.Request.html
+http://developer.android.com/sdk/api_diff/16/changes/android.hardware.Camera.html
+http://developer.android.com/sdk/api_diff/16/changes/android.media.MediaRecorder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityRecord.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.TextureView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Script.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.ContextWrapper.html
+http://developer.android.com/sdk/api_diff/16/changes/android.test.mock.MockContext.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.Fragment.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewDebug.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.inputmethod.InputMethodManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.appwidget.AppWidgetHostView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.webkit.JsResult.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewPropertyAnimator.html
+http://developer.android.com/sdk/api_diff/9/changes/android.content.AbstractThreadedSyncAdapter.html
+http://developer.android.com/sdk/api_diff/9/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/9/changes/android.content.IntentSender.html
+http://developer.android.com/sdk/api_diff/9/changes/android.content.SharedPreferences.Editor.html
+http://developer.android.com/sdk/api_diff/4/changes/fields_index_removals.html
+http://developer.android.com/sdk/api_diff/4/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/4/changes/fields_index_changes.html
+http://developer.android.com/guide/faq/troubleshooting.html
+http://developer.android.com/sdk/api_diff/4/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/4/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.xml.transform.TransformerFactory.html
+http://developer.android.com/sdk/api_diff/9/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/9/changes/android.content.pm.ApplicationInfo.html
+http://developer.android.com/sdk/api_diff/9/changes/android.content.pm.PackageInfo.html
+http://developer.android.com/sdk/api_diff/9/changes/android.content.pm.PackageItemInfo.html
+http://developer.android.com/sdk/api_diff/9/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.xml.validation.SchemaFactory.html
+http://developer.android.com/sdk/api_diff/9/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/9/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/9/changes/android.R.drawable.html
+http://developer.android.com/sdk/api_diff/9/changes/android.R.style.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.ActivityManager.MemoryInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.ActivityManager.RunningAppProcessInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.Notification.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.WallpaperManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.AbstractCursor.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.ClipDescription.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.ComponentCallbacks2.html
+http://developer.android.com/sdk/api_diff/13/changes.html
+http://developer.android.com/about/versions/android-3.1-highlights.html
+http://developer.android.com/about/versions/android-2.0.1.html
+http://developer.android.com/sdk/api_diff/6/changes.html
+http://developer.android.com/about/versions/android-1.1.html
+http://developer.android.com/sdk/api_diff/9/changes/java.awt.font.TextAttribute.html
+http://developer.android.com/sdk/api_diff/4/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/4/changes/constructors_index_changes.html
+http://developer.android.com/sdk/api_diff/14/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/14/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/14/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.AbsListView.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.accessibility.AccessibilityEvent.html
+http://developer.android.com/sdk/api_diff/14/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.accessibility.AccessibilityManager.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.view.accessibility.html
+http://developer.android.com/sdk/api_diff/14/changes/android.accessibilityservice.AccessibilityService.html
+http://developer.android.com/sdk/api_diff/14/changes/android.accessibilityservice.AccessibilityServiceInfo.html
+http://developer.android.com/sdk/api_diff/14/changes/java.lang.reflect.AccessibleObject.html
+http://developer.android.com/sdk/api_diff/14/changes/android.accounts.AccountManager.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.MotionEvent.html
+http://developer.android.com/sdk/api_diff/14/changes/android.hardware.Camera.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.Settings.html
+http://developer.android.com/sdk/api_diff/14/changes/android.media.AudioManager.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.ActionBar.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.ActionBar.Tab.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.ActionMode.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.AdapterViewAnimator.html
+http://developer.android.com/sdk/api_diff/14/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.FieldPacker.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.MediaStore.Audio.AudioColumns.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.AlertDialog.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Allocation.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.AllocationAdapter.html
+http://developer.android.com/sdk/api_diff/14/changes/java.security.AllPermission.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/14/changes/android.webkit.WebView.HitTestResult.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.accessibilityservice.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.accounts.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.animation.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.app.admin.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.app.backup.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.appwidget.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.bluetooth.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.database.sqlite.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.inputmethodservice.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.net.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.net.http.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.net.wifi.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.nfc.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.nfc.tech.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.opengl.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.preference.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.renderscript.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.service.wallpaper.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.speech.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.speech.tts.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.test.mock.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.text.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.text.style.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.view.inputmethod.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/14/changes/android.animation.Animator.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.Application.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.pm.ApplicationInfo.html
+http://developer.android.com/sdk/api_diff/14/changes/android.appwidget.AppWidgetProviderInfo.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.Settings.Secure.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.backup.BackupAgent.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_dalvik.system.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.BaseObj.html
+http://developer.android.com/sdk/api_diff/14/changes/java.security.BasicPermission.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/14/changes/android.bluetooth.BluetoothAdapter.html
+http://developer.android.com/sdk/api_diff/14/changes/android.bluetooth.BluetoothProfile.html
+http://developer.android.com/sdk/api_diff/14/changes/android.bluetooth.BluetoothSocket.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.Build.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Byte2.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Byte3.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Byte4.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.CallLog.Calls.html
+http://developer.android.com/sdk/api_diff/14/changes/android.hardware.Camera.Parameters.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.ViewPropertyAnimator.html
+http://developer.android.com/sdk/api_diff/14/changes/android.graphics.Canvas.html
+http://developer.android.com/sdk/api_diff/14/changes/android.preference.CheckBoxPreference.html
+http://developer.android.com/sdk/api_diff/14/changes/java.lang.Class.html
+http://developer.android.com/sdk/api_diff/14/changes/android.net.TrafficStats.html
+http://developer.android.com/sdk/api_diff/14/changes/android.util.SparseArray.html
+http://developer.android.com/sdk/api_diff/14/changes/android.util.SparseBooleanArray.html
+http://developer.android.com/sdk/api_diff/14/changes/android.util.SparseIntArray.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.MenuItem.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/14/changes/android.speech.SpeechRecognizer.html
+http://developer.android.com/sdk/api_diff/14/changes/android.util.Config.html
+http://developer.android.com/sdk/api_diff/14/changes/android.net.ConnectivityManager.html
+http://developer.android.com/sdk/api_diff/14/changes/java.lang.reflect.Constructor.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.CommonDataKinds.Photo.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.Contacts.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.Contacts.Photo.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.ContactsColumns.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.GroupsColumns.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.Intents.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.RawContactsColumns.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.RawContactsEntity.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.SettingsColumns.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.StatusUpdates.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.ContentProvider.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.NdefRecord.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_dalvik.annotation.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.Debug.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.Debug.MemoryInfo.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.admin.DeviceAdminInfo.html
+http://developer.android.com/sdk/api_diff/14/changes/android.R.style.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.admin.DevicePolicyManager.html
+http://developer.android.com/sdk/api_diff/14/changes/dalvik.system.DexClassLoader.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.NfcAdapter.html
+http://developer.android.com/sdk/api_diff/14/changes/android.service.wallpaper.WallpaperService.Engine.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.ParcelFileDescriptor.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Element.html
+http://developer.android.com/sdk/api_diff/14/changes/java.io.ObjectOutputStream.html
+http://developer.android.com/sdk/api_diff/14/changes/java.io.ObjectInputStream.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.Gravity.html
+http://developer.android.com/sdk/api_diff/14/changes/java.io.FilePermission.html
+http://developer.android.com/sdk/api_diff/14/changes/java.net.SocketPermission.html
+http://developer.android.com/sdk/api_diff/14/changes/java.security.Permission.html
+http://developer.android.com/sdk/api_diff/14/changes/java.security.UnresolvedPermission.html
+http://developer.android.com/sdk/api_diff/14/changes/javax.security.auth.PrivateCredentialPermission.html
+http://developer.android.com/sdk/api_diff/14/changes/android.animation.FloatEvaluator.html
+http://developer.android.com/sdk/api_diff/14/changes/android.animation.IntEvaluator.html
+http://developer.android.com/sdk/api_diff/14/changes/android.animation.TypeEvaluator.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.ExpandableListView.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.pm.PackageStats.html
+http://developer.android.com/sdk/api_diff/14/changes/android.speech.RecognizerIntent.html
+http://developer.android.com/sdk/api_diff/14/changes/android.preference.PreferenceActivity.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.SearchManager.html
+http://developer.android.com/sdk/api_diff/14/changes/android.net.wifi.WifiManager.html
+http://developer.android.com/sdk/api_diff/14/changes/java.lang.reflect.Field.html
+http://developer.android.com/sdk/api_diff/14/changes/dalvik.system.PathClassLoader.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.WindowManager.LayoutParams.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.pm.ServiceInfo.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Script.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.WallpaperManager.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.Fragment.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.FragmentManager.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.FragmentManager.BackStackEntry.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.FrameLayout.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.Surface.html
+http://developer.android.com/sdk/api_diff/14/changes/java.lang.reflect.Method.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.OverScroller.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.Scroller.html
+http://developer.android.com/sdk/api_diff/14/changes/android.database.sqlite.SQLiteOpenHelper.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodSubtype.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.LinearLayout.html
+http://developer.android.com/sdk/api_diff/14/changes/android.opengl.GLUtils.html
+http://developer.android.com/sdk/api_diff/14/changes/android.speech.tts.TextToSpeech.html
+http://developer.android.com/sdk/api_diff/14/changes/android.graphics.Paint.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodManager.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.Looper.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.IsoDep.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.MifareClassic.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.MifareUltralight.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.NfcA.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.NfcB.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.NfcF.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.NfcV.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.Handler.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.TextView.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.SyncAdapterType.html
+http://developer.android.com/sdk/api_diff/14/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/14/changes/android.graphics.SurfaceTexture.html
+http://developer.android.com/sdk/api_diff/14/changes/android.preference.Preference.html
+http://developer.android.com/sdk/api_diff/14/changes/android.net.http.SslError.html
+http://developer.android.com/sdk/api_diff/14/changes/java.util.logging.Handler.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.ViewConfiguration.html
+http://developer.android.com/sdk/api_diff/14/changes/android.R.color.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.PopupMenu.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.InputDevice.html
+http://developer.android.com/sdk/api_diff/14/changes/android.inputmethodservice.InputMethodService.html
+http://developer.android.com/sdk/api_diff/14/changes/android.inputmethodservice.InputMethodService.InputMethodSessionImpl.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodSession.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Int2.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Int3.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Int4.html
+http://developer.android.com/sdk/api_diff/14/changes/android.speech.tts.TextToSpeech.Engine.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.IntentSender.html
+http://developer.android.com/sdk/api_diff/14/changes/android.text.Layout.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_java.io.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_java.lang.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_java.lang.ref.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_java.lang.reflect.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_java.net.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_java.security.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_java.util.logging.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_javax.security.auth.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/14/changes/android.animation.LayoutTransition.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.LiveFolders.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Long2.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Long3.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Long4.html
+http://developer.android.com/sdk/api_diff/14/changes/android.opengl.Matrix.html
+http://developer.android.com/sdk/api_diff/14/changes/android.media.MediaMetadataRetriever.html
+http://developer.android.com/sdk/api_diff/14/changes/android.media.MediaPlayer.html
+http://developer.android.com/sdk/api_diff/14/changes/android.media.MediaRecorder.html
+http://developer.android.com/sdk/api_diff/14/changes/android.test.mock.MockPackageManager.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.Notification.Builder.html
+http://developer.android.com/sdk/api_diff/14/changes/android.animation.ObjectAnimator.html
+http://developer.android.com/sdk/api_diff/14/changes/android.animation.PropertyValuesHolder.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.SearchView.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.ViewGroup.html
+http://developer.android.com/sdk/api_diff/14/changes/android.webkit.WebChromeClient.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.Service.html
+http://developer.android.com/sdk/api_diff/14/changes/android.util.Patterns.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.PendingIntent.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.Process.html
+http://developer.android.com/sdk/api_diff/14/changes/android.R.integer.html
+http://developer.android.com/sdk/api_diff/14/changes/android.R.string.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.Settings.System.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.RecoverySystem.html
+http://developer.android.com/sdk/api_diff/14/changes/android.graphics.RectF.html
+http://developer.android.com/sdk/api_diff/14/changes/java.lang.ref.ReferenceQueue.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.RemoteViews.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.RenderScriptGL.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.ViewParent.html
+http://developer.android.com/sdk/api_diff/14/changes/android.hardware.Sensor.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.Window.html
+http://developer.android.com/sdk/api_diff/14/changes/android.net.SSLCertificateSocketFactory.html
+http://developer.android.com/sdk/api_diff/14/changes/android.database.sqlite.SQLiteQueryBuilder.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Short2.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Short3.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Short4.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.StackView.html
+http://developer.android.com/sdk/api_diff/14/changes/dalvik.annotation.TestTarget.html
+http://developer.android.com/sdk/api_diff/14/changes/dalvik.annotation.TestTargetClass.html
+http://developer.android.com/sdk/api_diff/14/changes/android.webkit.WebSettings.TextSize.html
+http://developer.android.com/sdk/api_diff/4/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/4/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/4/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/9/changes/java.io.File.html
+http://developer.android.com/sdk/api_diff/9/changes/java.io.IOException.html
+http://developer.android.com/sdk/api_diff/9/changes/java.io.ObjectStreamClass.html
+http://developer.android.com/sdk/api_diff/9/changes/java.io.PipedInputStream.html
+http://developer.android.com/sdk/api_diff/9/changes/java.io.PipedReader.html
+http://developer.android.com/sdk/api_diff/9/changes/java.io.PrintStream.html
+http://developer.android.com/sdk/api_diff/9/changes/java.io.PrintWriter.html
+http://developer.android.com/sdk/api_diff/16/changes/android.graphics.AvoidXfermode.html
+http://developer.android.com/sdk/api_diff/16/changes/android.graphics.PixelFormat.html
+http://developer.android.com/sdk/api_diff/16/changes/android.graphics.PixelXorXfermode.html
+http://developer.android.com/sdk/api_diff/9/changes/android.hardware.Camera.html
+http://developer.android.com/sdk/api_diff/9/changes/android.hardware.Camera.Parameters.html
+http://developer.android.com/sdk/api_diff/9/changes/android.hardware.Sensor.html
+http://developer.android.com/sdk/api_diff/9/changes/android.hardware.SensorManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.CalendarContract.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.CalendarContract.AttendeesColumns.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.CalendarContract.EventsColumns.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.CalendarContract.RemindersColumns.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.ContactsContract.CommonDataKinds.Phone.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.ContactsContract.DataUsageFeedback.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.ContactsContract.PhoneLookupColumns.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.MediaStore.MediaColumns.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.Settings.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.Settings.Secure.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.Settings.System.html
+http://developer.android.com/sdk/api_diff/14/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/16/changes/android.speech.RecognizerIntent.html
+http://developer.android.com/sdk/api_diff/16/changes/android.webkit.CookieManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.webkit.WebIconDatabase.html
+http://developer.android.com/sdk/api_diff/16/changes/android.webkit.WebView.HitTestResult.html
+http://developer.android.com/sdk/api_diff/9/changes/android.widget.ListView.html
+http://developer.android.com/sdk/api_diff/9/changes/android.widget.RemoteViews.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.AbstractExecutorService.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.ConcurrentHashMap.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.ExecutorService.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.Executors.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.FutureTask.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.ScheduledThreadPoolExecutor.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.ThreadPoolExecutor.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.TimeUnit.html
+http://developer.android.com/sdk/api_diff/16/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/16/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/16/changes/android.R.style.html
+http://developer.android.com/sdk/api_diff/11/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/11/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/11/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/13/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/13/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/13/changes/changes-summary.html
+http://developer.android.com/sdk/api_diff/9/changes/android.view.inputmethod.BaseInputConnection.html
+http://developer.android.com/sdk/api_diff/9/changes/android.view.inputmethod.InputConnection.html
+http://developer.android.com/sdk/api_diff/9/changes/android.view.inputmethod.InputConnectionWrapper.html
+http://developer.android.com/sdk/api_diff/9/changes/android.app.admin.DevicePolicyManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.res.Configuration.html
+http://developer.android.com/sdk/api_diff/9/changes/java.nio.Buffer.html
+http://developer.android.com/sdk/api_diff/16/changes/fields_index_removals.html
+http://developer.android.com/sdk/api_diff/16/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/16/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/16/changes/android.media.MediaRecorder.OutputFormat.html
+http://developer.android.com/sdk/api_diff/16/changes/android.media.MediaRecorder.AudioEncoder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.security.KeyChain.html
+http://developer.android.com/sdk/api_diff/16/changes/android.util.DisplayMetrics.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.GridLayout.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.pm.ServiceInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.inputmethod.EditorInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/16/changes/android.os.Process.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.pm.PermissionInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.pm.PackageInfo.html
+http://developer.android.com/sdk/api_diff/7/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/7/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/7/changes/android.app.WallpaperManager.html
+http://developer.android.com/sdk/api_diff/7/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/7/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/7/changes/android.widget.RemoteViews.html
+http://developer.android.com/sdk/api_diff/7/changes/android.webkit.GeolocationPermissions.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.telephony.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/7/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/7/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/7/changes/android.webkit.CacheManager.CacheResult.html
+http://developer.android.com/sdk/api_diff/7/changes/android.media.MediaRecorder.AudioSource.html
+http://developer.android.com/sdk/api_diff/7/changes/android.webkit.WebStorage.html
+http://developer.android.com/sdk/api_diff/7/changes/android.graphics.Rect.html
+http://developer.android.com/sdk/api_diff/7/changes/android.webkit.WebView.html
+http://developer.android.com/sdk/api_diff/7/changes/android.webkit.WebChromeClient.html
+http://developer.android.com/sdk/api_diff/7/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/7/changes/android.widget.ViewFlipper.html
+http://developer.android.com/sdk/api_diff/7/changes/android.view.ViewGroup.html
+http://developer.android.com/sdk/api_diff/7/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/7/changes/android.os.PowerManager.html
+http://developer.android.com/sdk/api_diff/7/changes/android.telephony.PhoneStateListener.html
+http://developer.android.com/sdk/api_diff/7/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/7/changes/android.telephony.NeighboringCellInfo.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.net.ssl.HandshakeCompletedEvent.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.net.ssl.KeyStoreBuilderParameters.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.net.ssl.SSLContext.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.net.ssl.SSLContextSpi.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.net.ssl.SSLEngine.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.net.ssl.SSLSessionBindingEvent.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.net.ssl.SSLSessionContext.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.net.ssl.SSLSocket.html
+http://developer.android.com/sdk/api_diff/9/changes/android.provider.ContactsContract.CommonDataKinds.Nickname.html
+http://developer.android.com/sdk/api_diff/9/changes/android.provider.MediaStore.html
+http://developer.android.com/sdk/api_diff/9/changes/android.provider.Settings.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicBoolean.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicInteger.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicIntegerArray.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicIntegerFieldUpdater.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLong.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLongArray.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLongFieldUpdater.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReference.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReferenceArray.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReferenceFieldUpdater.html
+http://developer.android.com/sdk/api_diff/11/changes/constructors_index_removals.html
+http://developer.android.com/sdk/api_diff/11/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/11/changes/constructors_index_changes.html
+http://developer.android.com/sdk/api_diff/7/changes/jdiff_statistics.html
+http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/package-tree.html
+http://developer.android.com/guide/google/gcm/client-javadoc/deprecated-list.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index-all.html
+http://developer.android.com/guide/google/gcm/client-javadoc/help-doc.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/package-summary.html
+http://developer.android.com/guide/google/gcm/client-javadoc/allclasses-noframe.html
+http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBaseIntentService.html
+http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBroadcastReceiver.html
+http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMConstants.html
+http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMRegistrar.html
+http://developer.android.com/sdk/api_diff/9/changes/dalvik.system.PathClassLoader.html
+http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.locks.AbstractOwnableSynchronizer.html
+http://developer.android.com/sdk/api_diff/9/changes/java.security.AccessController.html
+http://developer.android.com/sdk/api_diff/9/changes/android.location.Criteria.html
+http://developer.android.com/sdk/api_diff/9/changes/android.view.MotionEvent.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.sql.PooledConnection.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.Calendar.html
+http://developer.android.com/sdk/api_diff/9/changes/java.lang.reflect.Array.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.Array.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.Arrays.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.Collections.html
+http://developer.android.com/sdk/api_diff/9/changes/android.media.AudioTrack.html
+http://developer.android.com/sdk/api_diff/9/changes/android.media.MediaPlayer.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.DatabaseMetaData.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.BatchUpdateException.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.Blob.html
+http://developer.android.com/sdk/api_diff/9/changes/java.text.BreakIterator.html
+http://developer.android.com/sdk/api_diff/9/changes/android.os.Build.html
+http://developer.android.com/sdk/api_diff/9/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.CallableStatement.html
+http://developer.android.com/sdk/api_diff/9/changes/android.media.CamcorderProfile.html
+http://developer.android.com/sdk/api_diff/9/changes/android.media.CameraProfile.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.TreeSet.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.TreeMap.html
+http://developer.android.com/sdk/api_diff/9/changes/java.lang.Class.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.ResourceBundle.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.Clob.html
+http://developer.android.com/sdk/api_diff/9/changes/java.text.CollationKey.html
+http://developer.android.com/sdk/api_diff/9/changes/android.content.res.Configuration.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.Connection.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.sql.ConnectionPoolDataSource.html
+http://developer.android.com/sdk/api_diff/9/changes/java.lang.System.html
+http://developer.android.com/sdk/api_diff/9/changes/java.lang.Math.html
+http://developer.android.com/sdk/api_diff/9/changes/java.lang.StrictMath.html
+http://developer.android.com/sdk/api_diff/9/changes/android.os.ParcelFileDescriptor.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.sql.DataSource.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.DataTruncation.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.xml.datatype.DatatypeFactory.html
+http://developer.android.com/sdk/api_diff/9/changes/java.text.DateFormatSymbols.html
+http://developer.android.com/sdk/api_diff/9/changes/android.text.format.DateUtils.html
+http://developer.android.com/sdk/api_diff/9/changes/java.text.DecimalFormatSymbols.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.LinkedList.html
+http://developer.android.com/sdk/api_diff/9/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.security.auth.Subject.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.xml.parsers.DocumentBuilderFactory.html
+http://developer.android.com/sdk/api_diff/9/changes/java.lang.Double.html
+http://developer.android.com/sdk/api_diff/9/changes/android.os.DropBoxManager.Entry.html
+http://developer.android.com/sdk/api_diff/9/changes/java.lang.Enum.html
+http://developer.android.com/sdk/api_diff/9/changes/android.os.Environment.html
+http://developer.android.com/sdk/api_diff/9/changes/android.media.ExifInterface.html
+http://developer.android.com/sdk/api_diff/9/changes/java.lang.Float.html
+http://developer.android.com/sdk/api_diff/9/changes/java.text.Format.html
+http://developer.android.com/sdk/api_diff/9/changes/android.location.Geocoder.html
+http://developer.android.com/sdk/api_diff/9/changes/android.test.mock.MockPackageManager.html
+http://developer.android.com/sdk/api_diff/9/changes/java.lang.Package.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.locks.LockSupport.html
+http://developer.android.com/sdk/api_diff/9/changes/java.lang.String.html
+http://developer.android.com/sdk/api_diff/9/changes/java.lang.reflect.Member.html
+http://developer.android.com/sdk/api_diff/9/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/9/changes/java.net.NetworkInterface.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.ResultSet.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.html
+http://developer.android.com/sdk/api_diff/9/changes/java.security.Policy.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.security.auth.x500.X500Principal.html
+http://developer.android.com/sdk/api_diff/9/changes/java.net.SocketImpl.html
+http://developer.android.com/sdk/api_diff/9/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/9/changes/android.telephony.gsm.GsmCellLocation.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.locks.ReentrantReadWriteLock.html
+http://developer.android.com/sdk/api_diff/9/changes/java.text.NumberFormat.html
+http://developer.android.com/sdk/api_diff/9/changes/android.view.ViewConfiguration.html
+http://developer.android.com/sdk/api_diff/9/changes/android.opengl.GLES20.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.logging.Logger.html
+http://developer.android.com/sdk/api_diff/9/changes/android.graphics.ImageFormat.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.Statement.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.SQLException.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.Properties.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.Locale.html
+http://developer.android.com/sdk/api_diff/9/changes/android.location.LocationManager.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.Types.html
+http://developer.android.com/sdk/api_diff/9/changes/android.media.MediaRecorder.html
+http://developer.android.com/sdk/api_diff/9/changes/android.telephony.TelephonyManager.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.xml.parsers.SAXParserFactory.html
+http://developer.android.com/sdk/api_diff/9/changes/android.service.wallpaper.WallpaperService.Engine.html
+http://developer.android.com/sdk/api_diff/9/changes/dalvik.bytecode.Opcodes.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.ParameterMetaData.html
+http://developer.android.com/sdk/api_diff/9/changes/android.os.PowerManager.WakeLock.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.PreparedStatement.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.PropertyResourceBundle.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.SQLInput.html
+http://developer.android.com/sdk/api_diff/9/changes/java.util.Scanner.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.ResultSetMetaData.html
+http://developer.android.com/sdk/api_diff/9/changes/javax.sql.RowSet.html
+http://developer.android.com/sdk/api_diff/9/changes/android.net.wifi.WifiManager.WifiLock.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.SQLOutput.html
+http://developer.android.com/sdk/api_diff/9/changes/java.sql.SQLWarning.html
+http://developer.android.com/sdk/api_diff/9/changes/android.view.Window.html
+http://developer.android.com/sdk/api_diff/9/changes/java.security.UnrecoverableKeyException.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.AdapterViewAnimator.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.Gallery.html
+http://developer.android.com/guide/google/gcm/client-javadoc/overview-tree.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?deprecated-list.html
+http://developer.android.com/sdk/api_diff/13/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/13/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/13/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/13/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/13/changes/fields_index_all.html
+http://developer.android.com/sdk/api_diff/16/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/16/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/16/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/16/changes/android.test.AssertionFailedError.html
+http://developer.android.com/sdk/api_diff/16/changes/junit.framework.AssertionFailedError.html
+http://developer.android.com/sdk/api_diff/16/changes/android.test.ComparisonFailure.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.FileA3D.EntryType.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Font.Style.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Mesh.Primitive.html
+http://developer.android.com/sdk/api_diff/16/changes/android.os.ParcelFileDescriptor.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragment.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.EnvMode.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.Format.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.CullMode.html
+http://developer.android.com/sdk/api_diff/16/changes/android.hardware.SensorManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteQuery.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteStatement.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewDebug.HierarchyTraceType.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewDebug.RecyclerTraceType.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/GCMConstants.html
+http://developer.android.com/guide/google/gcm/client-javadoc/constant-values.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentRetainInstance.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/GCMBroadcastReceiver.html
+http://developer.android.com/sdk/api_diff/13/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/13/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.ActivityGroup.html
+http://developer.android.com/sdk/api_diff/13/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/13/changes/android.content.pm.ApplicationInfo.html
+http://developer.android.com/sdk/api_diff/13/changes/android.os.Binder.html
+http://developer.android.com/sdk/api_diff/13/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/13/changes/android.content.res.Configuration.html
+http://developer.android.com/sdk/api_diff/13/changes/android.net.ConnectivityManager.html
+http://developer.android.com/sdk/api_diff/13/changes/android.view.Display.html
+http://developer.android.com/sdk/api_diff/13/changes/android.util.DisplayMetrics.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.Fragment.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.FragmentManager.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.FragmentTransaction.html
+http://developer.android.com/sdk/api_diff/13/changes/android.os.IBinder.html
+http://developer.android.com/sdk/api_diff/13/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.KeyguardManager.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.KeyguardManager.KeyguardLock.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.LocalActivityManager.html
+http://developer.android.com/sdk/api_diff/13/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/13/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/13/changes/android.os.ParcelFileDescriptor.html
+http://developer.android.com/sdk/api_diff/13/changes/android.graphics.Point.html
+http://developer.android.com/sdk/api_diff/13/changes/android.graphics.PointF.html
+http://developer.android.com/sdk/api_diff/13/changes/android.os.PowerManager.html
+http://developer.android.com/sdk/api_diff/13/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/13/changes/android.R.style.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.TabActivity.html
+http://developer.android.com/sdk/api_diff/13/changes/android.telephony.TelephonyManager.html
+http://developer.android.com/sdk/api_diff/13/changes/android.hardware.usb.UsbDeviceConnection.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?constant-values.html
+http://developer.android.com/sdk/api_diff/13/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/15/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/15/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/15/changes/changes-summary.html
+http://developer.android.com/sdk/api_diff/13/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/13/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.content.res.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.hardware.usb.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.net.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.telephony.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.view.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/package-tree.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceActivities.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerService.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerServiceActivities.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?index-all.html
+http://developer.android.com/sdk/api_diff/4/changes/classes_index_removals.html
+http://developer.android.com/sdk/api_diff/4/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/4/changes/classes_index_changes.html
+http://developer.android.com/guide/appendix/api-levels.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/SearchViewFilterMode.html
+http://developer.android.com/shareables/search_icons.zip
+http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/android/searchabledict/SearchableDictionary.html
+http://developer.android.com/sdk/api_diff/6/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/6/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/6/changes/changes-summary.html
+http://developer.android.com/sdk/api_diff/10/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/10/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/10/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/10/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/10/changes/fields_index_all.html
+http://developer.android.com/sdk/api_diff/14/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/14/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/14/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/14/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/14/changes/fields_index_all.html
+http://developer.android.com/sdk/api_diff/10/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/10/changes/classes_index_changes.html
+http://developer.android.com/tools/help/sqlite3.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-tree.html
+http://developer.android.com/guide/google/gcm/server-javadoc/deprecated-list.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index-all.html
+http://developer.android.com/guide/google/gcm/server-javadoc/help-doc.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/package-summary.html
+http://developer.android.com/guide/google/gcm/server-javadoc/allclasses-noframe.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Constants.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.Builder.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/MulticastResult.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Result.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Sender.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/InvalidRequestException.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/GCMRegistrar.html
+http://developer.android.com/sdk/api_diff/16/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/16/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/9/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/9/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/9/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/9/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/9/changes/fields_index_all.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/InvalidRequestException.html
+http://developer.android.com/guide/google/gcm/server-javadoc/serialized-form.html
+http://developer.android.com/sdk/api_diff/6/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/6/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/6/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/6/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/6/changes/fields_index_all.html
+http://developer.android.com/guide/google/gcm/server-javadoc/overview-tree.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?help-doc.html
+http://developer.android.com/guide/google/gcm/server-javadoc/constant-values.html
+http://developer.android.com/sdk/api_diff/11/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/11/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/9/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/9/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/9/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/6/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/6/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/6/changes/android.accounts.AbstractAccountAuthenticator.html
+http://developer.android.com/sdk/api_diff/6/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/6/changes/pkg_android.accounts.html
+http://developer.android.com/sdk/api_diff/6/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/6/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/6/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/6/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/6/changes/android.view.WindowManager.LayoutParams.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/package-tree.html
+http://developer.android.com/sdk/api_diff/14/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/14/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/14/changes/methods_index_changes.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/MulticastResult.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/GCMBaseIntentService.html
+http://developer.android.com/sdk/api_diff/6/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/9/changes/fields_index_removals.html
+http://developer.android.com/sdk/api_diff/9/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/9/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/15/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/15/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/15/changes/android.provider.Settings.Secure.html
+http://developer.android.com/sdk/api_diff/15/changes/android.view.accessibility.AccessibilityRecord.html
+http://developer.android.com/sdk/api_diff/15/changes/android.bluetooth.BluetoothDevice.html
+http://developer.android.com/sdk/api_diff/15/changes/android.provider.CalendarContract.CalendarColumns.html
 http://developer.android.com/sdk/api_diff/15/changes/pkg_android.html
 http://developer.android.com/sdk/api_diff/15/changes/pkg_android.app.html
 http://developer.android.com/sdk/api_diff/15/changes/pkg_android.appwidget.html
@@ -4134,499 +5578,658 @@
 http://developer.android.com/sdk/api_diff/15/changes/pkg_android.view.textservice.html
 http://developer.android.com/sdk/api_diff/15/changes/pkg_android.webkit.html
 http://developer.android.com/sdk/api_diff/15/changes/pkg_android.widget.html
-http://developer.android.com/sdk/api_diff/14/changes.html
-http://developer.android.com/sdk/api_diff/12/changes.html
-http://developer.android.com/about/versions/android-3.1-highlights.html
-http://developer.android.com/about/versions/android-2.3.html
-http://developer.android.com/sdk/api_diff/9/changes.html
-http://developer.android.com/about/versions/android-2.2.html
-http://developer.android.com/sdk/api_diff/8/changes.html
-http://developer.android.com/about/versions/android-2.2-highlights.html
-http://developer.android.com/about/versions/android-2.1.html
-http://developer.android.com/sdk/api_diff/7/changes.html
-http://developer.android.com/about/versions/android-2.0-highlights.html
-http://developer.android.com/about/versions/android-2.0.1.html
-http://developer.android.com/sdk/api_diff/6/changes.html
-http://developer.android.com/about/versions/android-2.0.html
-http://developer.android.com/sdk/api_diff/5/changes.html
-http://developer.android.com/about/versions/android-1.6.html
-http://developer.android.com/sdk/api_diff/4/changes.html
-http://developer.android.com/about/versions/android-1.6-highlights.html
-http://developer.android.com/about/versions/android-1.5.html
-http://developer.android.com/sdk/api_diff/3/changes.html
-http://developer.android.com/about/versions/android-1.5-highlights.html
-http://developer.android.com/about/versions/android-1.1.html
-http://developer.android.com/sdk/api_diff/10/changes/jdiff_statistics.html
-http://developer.android.com/sdk/api_diff/10/changes/pkg_android.bluetooth.html
-http://developer.android.com/sdk/api_diff/10/changes/pkg_android.content.html
-http://developer.android.com/sdk/api_diff/10/changes/pkg_android.graphics.html
-http://developer.android.com/sdk/api_diff/10/changes/pkg_android.media.html
-http://developer.android.com/sdk/api_diff/10/changes/pkg_android.nfc.html
-http://developer.android.com/sdk/api_diff/10/changes/pkg_android.os.html
-http://developer.android.com/sdk/api_diff/10/changes/pkg_android.speech.html
-http://developer.android.com/sdk/api_diff/10/changes/pkg_android.test.mock.html
-http://developer.android.com/sdk/api_diff/15/changes/android.os.Build.VERSION_CODES.html
-http://developer.android.com/sdk/api_diff/15/changes/android.os.IBinder.html
-http://developer.android.com/sdk/api_diff/15/changes/android.os.RemoteException.html
-http://developer.android.com/sdk/api_diff/15/changes/android.view.KeyEvent.html
-http://developer.android.com/sdk/api_diff/15/changes/android.view.View.html
-http://developer.android.com/resources/samples/WiFiDirectDemo/index.html
-http://developer.android.com/sdk/api_diff/15/changes/classes_index_additions.html
-http://developer.android.com/sdk/api_diff/15/changes/classes_index_changes.html
-http://developer.android.com/sdk/api_diff/15/changes/android.view.accessibility.AccessibilityRecord.html
 http://developer.android.com/sdk/api_diff/15/changes/android.appwidget.AppWidgetHostView.html
-http://developer.android.com/sdk/api_diff/15/changes/android.bluetooth.BluetoothDevice.html
-http://developer.android.com/sdk/api_diff/15/changes/android.provider.CalendarContract.AttendeesColumns.html
-http://developer.android.com/sdk/api_diff/15/changes/android.provider.CalendarContract.CalendarColumns.html
 http://developer.android.com/sdk/api_diff/15/changes/android.provider.CalendarContract.EventsColumns.html
+http://developer.android.com/sdk/api_diff/15/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/15/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/15/changes/android.provider.CalendarContract.AttendeesColumns.html
+http://developer.android.com/sdk/api_diff/15/changes/android.view.View.html
 http://developer.android.com/sdk/api_diff/15/changes/android.media.CamcorderProfile.html
 http://developer.android.com/sdk/api_diff/15/changes/android.hardware.Camera.Parameters.html
-http://developer.android.com/sdk/api_diff/15/changes/android.content.Context.html
-http://developer.android.com/sdk/api_diff/15/changes/android.database.CursorWindow.html
-http://developer.android.com/sdk/api_diff/15/changes/android.app.Fragment.html
-http://developer.android.com/sdk/api_diff/15/changes/android.opengl.GLES11Ext.html
+http://developer.android.com/sdk/api_diff/15/changes/android.view.textservice.SpellCheckerSession.html
 http://developer.android.com/sdk/api_diff/15/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/15/changes/android.database.CursorWindow.html
+http://developer.android.com/sdk/api_diff/15/changes/android.text.style.SuggestionSpan.html
+http://developer.android.com/sdk/api_diff/15/changes/android.app.Fragment.html
+http://developer.android.com/sdk/api_diff/15/changes/android.speech.tts.TextToSpeech.html
+http://developer.android.com/sdk/api_diff/15/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/15/changes/android.opengl.GLES11Ext.html
+http://developer.android.com/sdk/api_diff/15/changes/android.os.IBinder.html
+http://developer.android.com/sdk/api_diff/15/changes/android.provider.MediaStore.html
+http://developer.android.com/sdk/api_diff/15/changes/android.speech.tts.TextToSpeech.Engine.html
+http://developer.android.com/sdk/api_diff/15/changes/android.view.KeyEvent.html
 http://developer.android.com/sdk/api_diff/15/changes/android.Manifest.permission.html
 http://developer.android.com/sdk/api_diff/15/changes/android.media.MediaMetadataRetriever.html
-http://developer.android.com/sdk/api_diff/15/changes/android.provider.MediaStore.html
-http://developer.android.com/sdk/api_diff/15/changes/android.widget.RemoteViews.html
-http://developer.android.com/sdk/api_diff/15/changes/android.provider.Settings.Secure.html
 http://developer.android.com/sdk/api_diff/15/changes/android.service.textservice.SpellCheckerService.Session.html
-http://developer.android.com/sdk/api_diff/15/changes/android.view.textservice.SpellCheckerSession.html
-http://developer.android.com/sdk/api_diff/15/changes/android.view.textservice.SuggestionsInfo.html
-http://developer.android.com/sdk/api_diff/15/changes/android.text.style.SuggestionSpan.html
-http://developer.android.com/sdk/api_diff/15/changes/android.graphics.SurfaceTexture.html
-http://developer.android.com/sdk/api_diff/15/changes/android.speech.tts.TextToSpeech.html
-http://developer.android.com/sdk/api_diff/15/changes/android.speech.tts.TextToSpeech.Engine.html
 http://developer.android.com/sdk/api_diff/15/changes/android.speech.tts.TextToSpeechService.html
+http://developer.android.com/sdk/api_diff/15/changes/android.os.RemoteException.html
+http://developer.android.com/sdk/api_diff/15/changes/android.widget.RemoteViews.html
+http://developer.android.com/sdk/api_diff/15/changes/android.view.textservice.SuggestionsInfo.html
+http://developer.android.com/sdk/api_diff/15/changes/android.graphics.SurfaceTexture.html
 http://developer.android.com/sdk/api_diff/15/changes/android.service.wallpaper.WallpaperService.Engine.html
-http://developer.android.com/sdk/api_diff/15/changes/android.webkit.WebSettings.html
 http://developer.android.com/sdk/api_diff/15/changes/android.webkit.WebSettings.LayoutAlgorithm.html
-http://developer.android.com/resources/tutorials/views/index.html
-http://developer.android.com/guide/topics/ui/layout/grid.html
-http://developer.android.com/resources/community-groups.html
-http://developer.android.com/tools/sdk/ndk/overview.html
-http://developer.android.com/resources/tutorials/views/hello-spinner.html
-http://developer.android.com/sdk/api_diff/11/changes/alldiffs_index_removals.html
-http://developer.android.com/sdk/api_diff/11/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/11/changes/alldiffs_index_changes.html
-http://developer.android.com/sdk/api_diff/11/changes/android.test.mock.MockCursor.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.AbsListView.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.widget.html
-http://developer.android.com/sdk/api_diff/11/changes/android.database.AbstractCursor.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.AbstractThreadedSyncAdapter.html
-http://developer.android.com/sdk/api_diff/11/changes/android.database.AbstractWindowedCursor.html
-http://developer.android.com/sdk/api_diff/11/changes/android.accounts.AccountManager.html
-http://developer.android.com/sdk/api_diff/11/changes/android.bluetooth.BluetoothAdapter.html
-http://developer.android.com/sdk/api_diff/11/changes/android.os.DropBoxManager.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.Settings.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.admin.DeviceAdminReceiver.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.Intent.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.admin.DevicePolicyManager.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.app.html
-http://developer.android.com/sdk/api_diff/11/changes/android.R.attr.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.view.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.Activity.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.pm.ActivityInfo.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.ActivityManager.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.ActivityManager.RecentTaskInfo.html
-http://developer.android.com/sdk/api_diff/11/changes/java.util.Deque.html
-http://developer.android.com/sdk/api_diff/11/changes/java.util.Queue.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.ArrayAdapter.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.View.html
-http://developer.android.com/sdk/api_diff/11/changes/android.preference.PreferenceActivity.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.CommonDataKinds.Email.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.RawContacts.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.AlarmClock.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.AlertDialog.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.AlertDialog.Builder.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.SyncAdapterType.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.DownloadManager.Request.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.accounts.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.app.admin.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.appwidget.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.bluetooth.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.content.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.content.pm.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.content.res.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.database.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.database.sqlite.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.graphics.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.graphics.drawable.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.hardware.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.inputmethodservice.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.media.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.net.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.opengl.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.os.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.preference.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.provider.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.speech.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.speech.tts.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.telephony.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.test.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.test.mock.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.text.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.text.format.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.text.method.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.util.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.view.animation.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.view.inputmethod.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_android.webkit.html
-http://developer.android.com/sdk/api_diff/11/changes/android.util.AndroidException.html
-http://developer.android.com/sdk/api_diff/11/changes/android.util.AndroidRuntimeException.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.animation.Animation.html
-http://developer.android.com/sdk/api_diff/11/changes/android.database.DatabaseUtils.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.pm.ApplicationInfo.html
-http://developer.android.com/sdk/api_diff/11/changes/android.appwidget.AppWidgetHost.html
-http://developer.android.com/sdk/api_diff/11/changes/android.appwidget.AppWidgetManager.html
-http://developer.android.com/sdk/api_diff/11/changes/android.appwidget.AppWidgetProviderInfo.html
-http://developer.android.com/sdk/api_diff/11/changes/android.text.method.ArrowKeyMovementMethod.html
-http://developer.android.com/sdk/api_diff/11/changes/android.os.AsyncTask.html
-http://developer.android.com/sdk/api_diff/11/changes/android.media.AudioManager.html
-http://developer.android.com/sdk/api_diff/11/changes/android.accounts.AuthenticatorDescription.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.GroupsColumns.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.Settings.System.html
-http://developer.android.com/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.BaseInputConnection.html
-http://developer.android.com/sdk/api_diff/11/changes/android.text.method.BaseKeyListener.html
-http://developer.android.com/sdk/api_diff/11/changes/android.os.BatteryManager.html
-http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteDatabase.html
-http://developer.android.com/sdk/api_diff/11/changes/android.Manifest.permission.html
-http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteProgram.html
-http://developer.android.com/sdk/api_diff/11/changes/android.graphics.BitmapFactory.Options.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.BroadcastReceiver.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.Browser.SearchColumns.html
-http://developer.android.com/sdk/api_diff/11/changes/android.os.Build.VERSION_CODES.html
-http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteQueryBuilder.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.KeyCharacterMap.html
-http://developer.android.com/sdk/api_diff/11/changes/android.os.Bundle.html
-http://developer.android.com/sdk/api_diff/11/changes/android.webkit.CacheManager.html
-http://developer.android.com/sdk/api_diff/11/changes/android.webkit.CacheManager.CacheResult.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.ContentProvider.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.ContentResolver.html
-http://developer.android.com/sdk/api_diff/11/changes/android.media.CamcorderProfile.html
-http://developer.android.com/sdk/api_diff/11/changes/android.hardware.Camera.html
-http://developer.android.com/sdk/api_diff/11/changes/android.hardware.Camera.Parameters.html
-http://developer.android.com/sdk/api_diff/11/changes/android.text.method.ScrollingMovementMethod.html
-http://developer.android.com/sdk/api_diff/11/changes/android.graphics.Canvas.html
-http://developer.android.com/sdk/api_diff/11/changes/android.webkit.WebView.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.StatusColumns.html
-http://developer.android.com/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.InputMethodImpl.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.InputMethod.html
-http://developer.android.com/sdk/api_diff/11/changes/java.lang.Character.UnicodeBlock.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.ListView.html
-http://developer.android.com/sdk/api_diff/11/changes/java.util.ResourceBundle.html
-http://developer.android.com/sdk/api_diff/11/changes/android.net.Uri.Builder.html
-http://developer.android.com/sdk/api_diff/11/changes/android.text.ClipboardManager.html
-http://developer.android.com/sdk/api_diff/11/changes/android.graphics.drawable.ColorDrawable.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.DownloadManager.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.WallpaperManager.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.InputConnection.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.InputConnectionWrapper.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.pm.ComponentInfo.html
-http://developer.android.com/sdk/api_diff/11/changes/android.graphics.drawable.DrawableContainer.DrawableContainerState.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.res.Configuration.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.ContactStatusColumns.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.CommonDataKinds.Relation.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.AggregationSuggestions.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.Photo.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.ContactsColumns.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.DataColumns.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.DataColumnsWithJoins.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.Intents.Insert.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.RawContactsColumns.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.ContentProviderClient.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.ContentValues.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.Context.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.ContextWrapper.html
-http://developer.android.com/sdk/api_diff/11/changes/android.database.Cursor.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.CursorAdapter.html
-http://developer.android.com/sdk/api_diff/11/changes/android.database.CursorWindow.html
-http://developer.android.com/sdk/api_diff/11/changes/android.database.CursorWrapper.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_dalvik.bytecode.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.DatePicker.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.DatePickerDialog.html
-http://developer.android.com/sdk/api_diff/11/changes/android.os.Debug.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.SyncInfo.html
-http://developer.android.com/sdk/api_diff/11/changes/android.os.StrictMode.VmPolicy.Builder.html
-http://developer.android.com/sdk/api_diff/11/changes/android.os.StrictMode.ThreadPolicy.Builder.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.admin.DeviceAdminInfo.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.Dialog.html
-http://developer.android.com/sdk/api_diff/11/changes/android.R.drawable.html
-http://developer.android.com/sdk/api_diff/11/changes/android.R.dimen.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.Window.Callback.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.ViewGroup.html
-http://developer.android.com/sdk/api_diff/11/changes/android.graphics.drawable.Drawable.html
-http://developer.android.com/sdk/api_diff/11/changes/android.graphics.drawable.DrawableContainer.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.EditorInfo.html
-http://developer.android.com/sdk/api_diff/11/changes/android.webkit.WebSettings.html
-http://developer.android.com/sdk/api_diff/11/changes/android.os.Environment.html
-http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteStatement.html
-http://developer.android.com/sdk/api_diff/11/changes/android.media.ExifInterface.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.pm.PackageStats.html
-http://developer.android.com/sdk/api_diff/11/changes/android.speech.RecognizerIntent.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.Window.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.pm.PackageManager.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.KeyEvent.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.WindowManager.LayoutParams.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.Notification.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.SearchManager.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.MenuItem.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.PendingIntent.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.ImageView.html
-http://developer.android.com/sdk/api_diff/11/changes/android.net.Uri.html
-http://developer.android.com/sdk/api_diff/11/changes/java.lang.Object.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.MediaStore.Audio.Genres.html
-http://developer.android.com/sdk/api_diff/11/changes/java.util.ResourceBundle.Control.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.InputMethodManager.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.ScaleGestureDetector.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.TextView.html
-http://developer.android.com/sdk/api_diff/11/changes/android.net.Proxy.html
-http://developer.android.com/sdk/api_diff/11/changes/android.preference.Preference.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.LayoutInflater.html
-http://developer.android.com/sdk/api_diff/11/changes/android.text.method.QwertyKeyListener.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.animation.Interpolator.html
-http://developer.android.com/sdk/api_diff/11/changes/java.util.Locale.html
-http://developer.android.com/sdk/api_diff/11/changes/android.text.format.Time.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.GridView.html
-http://developer.android.com/sdk/api_diff/11/changes/android.test.mock.MockContext.html
-http://developer.android.com/sdk/api_diff/11/changes/android.opengl.GLSurfaceView.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.LinearLayout.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.SharedPreferences.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.InputMethodInfo.html
-http://developer.android.com/sdk/api_diff/11/changes/android.text.SpannableStringBuilder.html
-http://developer.android.com/sdk/api_diff/11/changes/android.os.Vibrator.html
-http://developer.android.com/sdk/api_diff/11/changes/java.util.NavigableMap.html
-http://developer.android.com/sdk/api_diff/11/changes/java.util.NavigableSet.html
-http://developer.android.com/sdk/api_diff/11/changes/android.R.style.html
-http://developer.android.com/sdk/api_diff/11/changes/android.R.id.html
-http://developer.android.com/sdk/api_diff/11/changes/android.provider.Settings.Secure.html
-http://developer.android.com/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.Insets.html
-http://developer.android.com/sdk/api_diff/11/changes/android.text.InputType.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.PopupWindow.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_java.lang.html
-http://developer.android.com/sdk/api_diff/11/changes/pkg_java.util.html
-http://developer.android.com/sdk/api_diff/11/changes/android.speech.tts.TextToSpeech.Engine.html
-http://developer.android.com/sdk/api_diff/11/changes/android.inputmethodservice.Keyboard.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.KeyCharacterMap.KeyData.html
-http://developer.android.com/sdk/api_diff/11/changes/android.graphics.drawable.LayerDrawable.html
-http://developer.android.com/sdk/api_diff/11/changes/android.hardware.SensorManager.html
-http://developer.android.com/sdk/api_diff/11/changes/android.R.layout.html
-http://developer.android.com/sdk/api_diff/11/changes/android.media.MediaRecorder.html
-http://developer.android.com/sdk/api_diff/11/changes/android.media.MediaRecorder.AudioSource.html
-http://developer.android.com/sdk/api_diff/11/changes/android.test.mock.MockPackageManager.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.Spinner.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.MotionEvent.html
-http://developer.android.com/sdk/api_diff/11/changes/android.telephony.TelephonyManager.html
-http://developer.android.com/sdk/api_diff/11/changes/android.os.StrictMode.html
-http://developer.android.com/sdk/api_diff/11/changes/android.util.StateSet.html
-http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteOpenHelper.html
-http://developer.android.com/sdk/api_diff/11/changes/dalvik.bytecode.Opcodes.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.OverScroller.html
-http://developer.android.com/sdk/api_diff/11/changes/android.util.Patterns.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.ProgressDialog.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.Surface.html
-http://developer.android.com/sdk/api_diff/11/changes/android.content.SharedPreferences.Editor.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.QuickContactBadge.html
-http://developer.android.com/sdk/api_diff/11/changes/android.R.string.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.RemoteViews.html
-http://developer.android.com/sdk/api_diff/11/changes/android.util.SparseArray.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.ResourceCursorAdapter.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.Scroller.html
-http://developer.android.com/sdk/api_diff/11/changes/android.app.Service.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.TabWidget.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.SurfaceHolder.html
-http://developer.android.com/sdk/api_diff/11/changes/android.webkit.WebViewClient.html
-http://developer.android.com/sdk/api_diff/11/changes/android.widget.SimpleCursorAdapter.html
-http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteCursor.html
-http://developer.android.com/sdk/api_diff/11/changes/android.view.ViewParent.html
-http://developer.android.com/resources/samples/RenderScript/HelloCompute/index.html
-http://developer.android.com/resources/samples/RenderScript/HelloCompute/src/com/example/android/rs/hellocompute/mono.html
-http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NotePadProvider.html
-http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NotePad.html
-http://developer.android.com/sdk/api_diff/11/changes/jdiff_statistics.html
-http://developer.android.com/training/tutorials/views/index.html
-http://developer.android.com/reference/renderscript/structrs__tm.html
-http://developer.android.com/reference/renderscript/rs__sampler_8rsh.html
-http://developer.android.com/reference/renderscript/rs__math_8rsh.html
-http://developer.android.com/reference/renderscript/rs__cl_8rsh.html
-http://developer.android.com/resources/tutorials/views/hello-tablelayout.html
-http://developer.android.com/sdk/api_diff/7/changes/jdiff_topleftframe.html
-http://developer.android.com/sdk/api_diff/7/changes/alldiffs_index_all.html
-http://developer.android.com/sdk/api_diff/7/changes/changes-summary.html
-http://developer.android.com/resources/browser.html?tag=sample
-http://developer.android.com/reference/renderscript/rs__time_8rsh.html
-http://developer.android.com/tools/help/sqlite3.html
-http://developer.android.com/guide/developing/tools/draw9patch.html
-http://developer.android.com/sdk/api_diff/7/changes/jdiff_statistics.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.app.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.content.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.content.pm.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.graphics.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.media.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.os.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.telephony.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.view.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.webkit.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.widget.html
-http://developer.android.com/sdk/api_diff/10/changes/android.nfc.NfcAdapter.html
-http://developer.android.com/sdk/api_diff/10/changes/android.os.Build.VERSION_CODES.html
-http://developer.android.com/resources/tutorials/views/hello-gridview.html
-http://developer.android.com/sdk/api_diff/13/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/13/changes/alldiffs_index_changes.html
-http://developer.android.com/sdk/api_diff/13/changes/android.app.Activity.html
-http://developer.android.com/sdk/api_diff/13/changes/android.app.ActivityGroup.html
-http://developer.android.com/sdk/api_diff/13/changes/android.content.pm.ActivityInfo.html
-http://developer.android.com/sdk/api_diff/13/changes/android.os.ParcelFileDescriptor.html
-http://developer.android.com/sdk/api_diff/13/changes/pkg_android.html
-http://developer.android.com/sdk/api_diff/13/changes/pkg_android.app.html
-http://developer.android.com/sdk/api_diff/13/changes/pkg_android.content.pm.html
-http://developer.android.com/sdk/api_diff/13/changes/pkg_android.content.res.html
-http://developer.android.com/sdk/api_diff/13/changes/pkg_android.graphics.html
-http://developer.android.com/sdk/api_diff/13/changes/pkg_android.hardware.usb.html
-http://developer.android.com/sdk/api_diff/13/changes/pkg_android.net.html
-http://developer.android.com/sdk/api_diff/13/changes/pkg_android.os.html
-http://developer.android.com/sdk/api_diff/13/changes/pkg_android.telephony.html
-http://developer.android.com/sdk/api_diff/13/changes/pkg_android.util.html
-http://developer.android.com/sdk/api_diff/13/changes/pkg_android.view.html
-http://developer.android.com/sdk/api_diff/13/changes/android.content.pm.ApplicationInfo.html
-http://developer.android.com/sdk/api_diff/13/changes/android.app.FragmentTransaction.html
-http://developer.android.com/sdk/api_diff/13/changes/android.os.Binder.html
-http://developer.android.com/sdk/api_diff/13/changes/android.os.Build.VERSION_CODES.html
-http://developer.android.com/sdk/api_diff/13/changes/android.R.attr.html
-http://developer.android.com/sdk/api_diff/13/changes/android.content.res.Configuration.html
-http://developer.android.com/sdk/api_diff/13/changes/android.net.ConnectivityManager.html
-http://developer.android.com/sdk/api_diff/13/changes/android.graphics.Point.html
-http://developer.android.com/sdk/api_diff/13/changes/android.graphics.PointF.html
-http://developer.android.com/sdk/api_diff/13/changes/android.util.DisplayMetrics.html
-http://developer.android.com/sdk/api_diff/13/changes/android.view.Display.html
-http://developer.android.com/sdk/api_diff/13/changes/android.os.IBinder.html
-http://developer.android.com/sdk/api_diff/13/changes/android.app.KeyguardManager.html
-http://developer.android.com/sdk/api_diff/13/changes/android.content.pm.PackageManager.html
-http://developer.android.com/sdk/api_diff/13/changes/android.app.Fragment.html
-http://developer.android.com/sdk/api_diff/13/changes/android.app.FragmentManager.html
-http://developer.android.com/sdk/api_diff/13/changes/android.view.KeyEvent.html
-http://developer.android.com/sdk/api_diff/13/changes/android.hardware.usb.UsbDeviceConnection.html
-http://developer.android.com/sdk/api_diff/13/changes/android.app.KeyguardManager.KeyguardLock.html
-http://developer.android.com/sdk/api_diff/13/changes/android.app.LocalActivityManager.html
-http://developer.android.com/sdk/api_diff/13/changes/android.Manifest.permission.html
-http://developer.android.com/sdk/api_diff/13/changes/android.telephony.TelephonyManager.html
-http://developer.android.com/sdk/api_diff/13/changes/android.os.PowerManager.html
-http://developer.android.com/sdk/api_diff/13/changes/android.R.style.html
-http://developer.android.com/sdk/api_diff/13/changes/android.app.TabActivity.html
-http://developer.android.com/reference/renderscript/rs__element_8rsh.html
-http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBaseIntentService.html
-http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBroadcastReceiver.html
-http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMConstants.html
-http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMRegistrar.html
-http://developer.android.com/sdk/api_diff/13/changes/jdiff_statistics.html
-http://developer.android.com/sdk/api_diff/7/changes/android.content.pm.PackageManager.html
-http://developer.android.com/sdk/api_diff/7/changes/android.Manifest.permission.html
-http://developer.android.com/sdk/api_diff/7/changes/android.R.attr.html
-http://developer.android.com/guide/faq/framework.html
-http://developer.android.com/guide/faq/licensingandoss.html
-http://developer.android.com/guide/faq/security.html
-http://developer.android.com/sdk/api_diff/7/changes/android.content.Intent.html
-http://developer.android.com/reference/renderscript/rs__allocation_8rsh.html
-http://developer.android.com/sdk/api_diff/10/changes/android.bluetooth.BluetoothAdapter.html
-http://developer.android.com/sdk/api_diff/10/changes/android.bluetooth.BluetoothDevice.html
-http://developer.android.com/sdk/api_diff/12/changes/jdiff_topleftframe.html
-http://developer.android.com/sdk/api_diff/12/changes/alldiffs_index_all.html
-http://developer.android.com/sdk/api_diff/12/changes/changes-summary.html
-http://developer.android.com/sdk/api_diff/8/changes/jdiff_topleftframe.html
-http://developer.android.com/sdk/api_diff/8/changes/alldiffs_index_all.html
-http://developer.android.com/sdk/api_diff/8/changes/changes-summary.html
-http://developer.android.com/guide/topics/usb/index.html
-http://developer.android.com/guide/topics/testing/provider_testing.html
-http://developer.android.com/guide/practices/optimizing-for-3.0.html
-http://developer.android.com/shareables/training/DeviceManagement.zip
-http://developer.android.com/resources/samples/USB/AdbTest/index.html
-http://developer.android.com/resources/samples/USB/MissileLauncher/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/GameControllerInput.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/GameView.html
-http://developer.android.com/sdk/api_diff/16/changes/jdiff_topleftframe.html
-http://developer.android.com/sdk/api_diff/16/changes/alldiffs_index_all.html
-http://developer.android.com/sdk/api_diff/16/changes/changes-summary.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/GLSurfaceViewActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/GLES20Activity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TouchRotateActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CompressedTextureActivity.html
-http://developer.android.com/resources/tutorials/opengl/opengl-es10.html
-http://developer.android.com/resources/tutorials/opengl/opengl-es20.html
-http://developer.android.com/resources/dashboard/opengl.html
-http://developer.android.com/reference/renderscript/globals_func.html
-http://developer.android.com/reference/renderscript/globals_type.html
-http://developer.android.com/reference/renderscript/globals_enum.html
-http://developer.android.com/reference/renderscript/rs__object_8rsh.html
-http://developer.android.com/reference/renderscript/rs__debug_8rsh.html
-http://developer.android.com/reference/renderscript/rs__graphics_8rsh.html
-http://developer.android.com/reference/renderscript/rs__matrix_8rsh.html
-http://developer.android.com/reference/renderscript/rs__quaternion_8rsh.html
-http://developer.android.com/sdk/api_diff/10/changes/android.test.mock.MockPackageManager.html
-http://developer.android.com/guide/developing/device.html
-http://developer.android.com/sdk/adding-components.html
-http://developer.android.com/sdk/api_diff/7/changes/android.webkit.CacheManager.CacheResult.html
-http://developer.android.com/sdk/api_diff/7/changes/android.webkit.GeolocationPermissions.html
-http://developer.android.com/sdk/api_diff/7/changes/android.webkit.WebChromeClient.html
-http://developer.android.com/sdk/api_diff/7/changes/android.webkit.WebSettings.html
-http://developer.android.com/sdk/api_diff/7/changes/android.webkit.WebStorage.html
-http://developer.android.com/sdk/api_diff/7/changes/android.webkit.WebView.html
-http://developer.android.com/sdk/ndk/index.html
-http://developer.android.com/sdk/api_diff/10/changes/android.content.Context.html
-http://developer.android.com/guide/google/play/AboutLibraries
-http://developer.android.com/reference/renderscript/rs__atomic_8rsh.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/AudioFxDemo.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/SecureView.html
-http://developer.android.com/sdk/api_diff/8/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/8/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/8/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/8/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/8/changes/fields_index_all.html
-http://developer.android.com/sdk/api_diff/10/changes/android.media.MediaRecorder.AudioEncoder.html
-http://developer.android.com/sdk/api_diff/10/changes/android.media.MediaRecorder.OutputFormat.html
-http://developer.android.com/sdk/api_diff/7/changes/android.graphics.Rect.html
-http://developer.android.com/guide/faq/troubleshooting.html
-http://developer.android.com/sdk/api_diff/7/changes/android.app.WallpaperManager.html
-http://developer.android.com/sdk/api_diff/7/changes/android.media.MediaRecorder.AudioSource.html
-http://developer.android.com/sdk/api_diff/7/changes/android.widget.ViewFlipper.html
-http://developer.android.com/sdk/api_diff/7/changes/android.telephony.PhoneStateListener.html
-http://developer.android.com/sdk/api_diff/7/changes/android.os.Build.VERSION_CODES.html
-http://developer.android.com/sdk/api_diff/7/changes/android.os.PowerManager.html
-http://developer.android.com/sdk/api_diff/7/changes/android.telephony.NeighboringCellInfo.html
-http://developer.android.com/sdk/api_diff/7/changes/android.widget.RemoteViews.html
-http://developer.android.com/sdk/api_diff/7/changes/android.view.ViewGroup.html
-http://developer.android.com/sdk/api_diff/7/changes/android.view.View.html
-http://developer.android.com/resources/samples/Support4Demos/index.html
-http://developer.android.com/resources/samples/Support13Demos/index.html
+http://developer.android.com/sdk/api_diff/14/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/14/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/9/changes/constructors_index_removals.html
+http://developer.android.com/sdk/api_diff/9/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/9/changes/constructors_index_changes.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?index-all.html
+http://developer.android.com/sdk/api_diff/15/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/15/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/15/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/15/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/15/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/15/changes/fields_index_all.html
+http://developer.android.com/sdk/api_diff/10/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/10/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/10/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/9/changes/classes_index_removals.html
+http://developer.android.com/sdk/api_diff/9/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/9/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/14/changes/fields_index_removals.html
+http://developer.android.com/sdk/api_diff/14/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/14/changes/fields_index_changes.html
 http://developer.android.com/sdk/api_diff/5/changes/jdiff_topleftframe.html
 http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_all.html
 http://developer.android.com/sdk/api_diff/5/changes/changes-summary.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?constant-values.html
+http://developer.android.com/sdk/api_diff/15/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/15/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/15/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.SettingsColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.text.style.AbsoluteSizeSpan.html
+http://developer.android.com/sdk/api_diff/5/changes/android.inputmethodservice.AbstractInputMethodService.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_java.util.concurrent.locks.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/5/changes/android.database.AbstractWindowedCursor.html
+http://developer.android.com/sdk/api_diff/5/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/5/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.ContentResolver.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Intents.Insert.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Settings.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.MotionEvent.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.ActivityManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.ActivityManager.RunningAppProcessInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.ActivityManager.RunningServiceInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.location.LocationManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.PluginList.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethods.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Settings.System.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.AllocationLimitError.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.content.res.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.database.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.database.sqlite.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.graphics.drawable.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.inputmethodservice.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.location.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.opengl.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.telephony.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.test.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.test.mock.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.text.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.text.format.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.text.style.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.view.animation.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/5/changes/android.test.AndroidTestRunner.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.animation.Animation.html
+http://developer.android.com/sdk/api_diff/5/changes/android.R.style.html
+http://developer.android.com/sdk/api_diff/5/changes/android.hardware.Camera.Parameters.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.ContentProvider.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Intents.html
+http://developer.android.com/sdk/api_diff/5/changes/android.media.AudioFormat.html
+http://developer.android.com/sdk/api_diff/5/changes/android.media.AudioManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.html
+http://developer.android.com/sdk/api_diff/5/changes/android.widget.AutoCompleteTextView.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethodsColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/5/changes/android.os.BatteryManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.database.sqlite.SQLiteDatabase.html
+http://developer.android.com/sdk/api_diff/5/changes/android.graphics.drawable.BitmapDrawable.html
+http://developer.android.com/sdk/api_diff/5/changes/java.util.concurrent.BlockingQueue.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.BroadcastReceiver.html
+http://developer.android.com/sdk/api_diff/5/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.CallbackProxy.html
+http://developer.android.com/sdk/api_diff/5/changes/android.hardware.Camera.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.NotificationManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.MediaStore.Images.Thumbnails.html
+http://developer.android.com/sdk/api_diff/5/changes/android.widget.MediaController.MediaPlayerControl.html
+http://developer.android.com/sdk/api_diff/5/changes/android.widget.VideoView.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.test.mock.MockPackageManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.OrganizationColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.telephony.PhoneNumberUtils.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.res.Configuration.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Extensions.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.ExtensionsColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.GroupMembership.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Groups.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.GroupsColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Intents.UI.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Organizations.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.ContactMethods.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.Extensions.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.Phones.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PeopleColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Phones.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PhonesColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Photos.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PhotosColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PresenceColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Settings.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.ContextWrapper.html
+http://developer.android.com/sdk/api_diff/5/changes/android.graphics.drawable.Drawable.html
+http://developer.android.com/sdk/api_diff/5/changes/android.os.Debug.MemoryInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.database.CursorWindow.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_dalvik.system.html
+http://developer.android.com/sdk/api_diff/5/changes/android.database.DatabaseUtils.html
+http://developer.android.com/sdk/api_diff/5/changes/android.text.format.DateUtils.html
+http://developer.android.com/sdk/api_diff/5/changes/android.text.TextPaint.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.Dialog.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.Plugin.html
+http://developer.android.com/sdk/api_diff/5/changes/android.graphics.drawable.Drawable.ConstantState.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ServiceInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebViewClient.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.WindowManager.LayoutParams.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.Notification.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.ViewGroup.html
+http://developer.android.com/sdk/api_diff/5/changes/android.text.format.Formatter.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.PluginData.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/5/changes/android.telephony.NeighboringCellInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.UrlInterceptHandler.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.UrlInterceptRegistry.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebView.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.ViewConfiguration.html
+http://developer.android.com/sdk/api_diff/5/changes/android.widget.SimpleCursorTreeAdapter.html
+http://developer.android.com/sdk/api_diff/5/changes/android.opengl.GLSurfaceView.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.Surface.html
+http://developer.android.com/sdk/api_diff/5/changes/android.os.HandlerThread.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.HapticFeedbackConstants.html
+http://developer.android.com/sdk/api_diff/5/changes/android.telephony.TelephonyManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.test.InstrumentationTestCase.html
+http://developer.android.com/sdk/api_diff/5/changes/android.inputmethodservice.InputMethodService.html
+http://developer.android.com/sdk/api_diff/5/changes/android.text.InputType.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.IntentService.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ProviderInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_java.util.concurrent.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.KeyEvent.Callback.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.LauncherActivity.html
+http://developer.android.com/sdk/api_diff/5/changes/android.media.MediaPlayer.html
+http://developer.android.com/sdk/api_diff/5/changes/android.test.mock.MockContext.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.Window.Callback.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebChromeClient.html
+http://developer.android.com/sdk/api_diff/5/changes/android.telephony.PhoneStateListener.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.Service.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.PackageInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.graphics.PixelFormat.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.PotentialDeadlockError.html
+http://developer.android.com/sdk/api_diff/5/changes/android.R.drawable.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ResolveInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.SearchManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.SurfaceView.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.StaleDexCacheError.html
+http://developer.android.com/sdk/api_diff/5/changes/android.media.ToneGenerator.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.SurfaceHolder.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.TemporaryDirectory.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.TouchDex.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.VMDebug.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.VMRuntime.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.VMStack.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.Zygote.html
+http://developer.android.com/sdk/api_diff/5/changes/jdiff_statistics.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/Constants.html
+http://developer.android.com/sdk/api_diff/3/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/3/changes/changes-summary.html
+http://developer.android.com/sdk/api_diff/5/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/5/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/5/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/5/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/5/changes/fields_index_all.html
+http://developer.android.com/sdk/api_diff/13/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/10/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/10/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/6/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/9/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/9/changes/packages_index_changes.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?overview-tree.html
+http://developer.android.com/sdk/api_diff/13/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/13/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/5/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/6/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/6/changes/fields_index_changes.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?help-doc.html
+http://developer.android.com/sdk/api_diff/5/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/15/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/15/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/15/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/15/changes/classes_index_changes.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/Message.html
+http://developer.android.com/sdk/api_diff/13/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/13/changes/fields_index_changes.html
+http://developer.android.com/guide/developing/debugging/index.html
+http://developer.android.com/guide/developing/tools/adb.html
+http://developer.android.com/guide/publishing/app-signing.html
+http://developer.android.com/guide/developing/devices/managing-avds.html
+http://developer.android.com/sdk/api_diff/5/changes/fields_index_removals.html
+http://developer.android.com/sdk/api_diff/5/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/12/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/12/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/12/changes/changes-summary.html
+http://developer.android.com/sdk/api_diff/14/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/14/changes/constructors_index_changes.html
+http://developer.android.com/sdk/api_diff/3/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/3/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/3/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/3/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/3/changes/fields_index_all.html
+http://developer.android.com/sdk/api_diff/6/changes/packages_index_changes.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?overview-tree.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/Message.Builder.html
 http://developer.android.com/sdk/api_diff/12/changes/packages_index_all.html
 http://developer.android.com/sdk/api_diff/12/changes/classes_index_all.html
 http://developer.android.com/sdk/api_diff/12/changes/constructors_index_all.html
 http://developer.android.com/sdk/api_diff/12/changes/methods_index_all.html
 http://developer.android.com/sdk/api_diff/12/changes/fields_index_all.html
-http://developer.android.com/guide/developing/other-ide.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ActionBarMechanics.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/content/ClipboardSample.html
-http://developer.android.com/resources/samples/RenderScript/index.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/res/xml-v14/contacts.html
-http://developer.android.com/resources/samples/VoicemailProviderDemo/index.html
-http://developer.android.com/resources/samples/RandomMusicPlayer/index.html
-http://developer.android.com/resources/samples/AndroidBeamDemo/src/com/example/android/beam/Beam.html
-http://developer.android.com/resources/samples/TtsEngine/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/switches.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Switches.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/OverscanActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Hover.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TouchPaint.html
+http://developer.android.com/sdk/api_diff/14/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/14/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/12/changes/classes_index_removals.html
+http://developer.android.com/sdk/api_diff/12/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/12/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.ActivityManager.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.ActivityManager.RecentTaskInfo.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.animation.Animation.html
+http://developer.android.com/sdk/api_diff/12/changes/android.content.pm.ApplicationInfo.html
+http://developer.android.com/sdk/api_diff/12/changes/android.appwidget.AppWidgetProviderInfo.html
+http://developer.android.com/sdk/api_diff/12/changes/android.text.method.BaseMovementMethod.html
+http://developer.android.com/sdk/api_diff/12/changes/android.graphics.Bitmap.html
+http://developer.android.com/sdk/api_diff/12/changes/android.provider.Browser.html
+http://developer.android.com/sdk/api_diff/12/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/12/changes/android.os.Bundle.html
+http://developer.android.com/sdk/api_diff/12/changes/android.graphics.Camera.html
+http://developer.android.com/sdk/api_diff/12/changes/android.hardware.Camera.html
+http://developer.android.com/sdk/api_diff/12/changes/android.util.Config.html
+http://developer.android.com/sdk/api_diff/12/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/12/changes/android.webkit.CookieManager.html
+http://developer.android.com/sdk/api_diff/12/changes/android.widget.DatePicker.html
+http://developer.android.com/sdk/api_diff/12/changes/android.util.DebugUtils.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.Dialog.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.DialogFragment.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.DownloadManager.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.DownloadManager.Request.html
+http://developer.android.com/sdk/api_diff/12/changes/android.drm.DrmErrorEvent.html
+http://developer.android.com/sdk/api_diff/12/changes/android.drm.DrmEvent.html
+http://developer.android.com/sdk/api_diff/12/changes/android.drm.DrmInfoEvent.html
+http://developer.android.com/sdk/api_diff/12/changes/android.drm.DrmManagerClient.OnEventListener.html
+http://developer.android.com/sdk/api_diff/12/changes/android.util.EventLog.html
+http://developer.android.com/sdk/api_diff/12/changes/android.text.format.Formatter.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.Fragment.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.FragmentBreadCrumbs.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.InputDevice.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.InputDevice.MotionRange.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.InputEvent.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.inputmethod.InputMethodSubtype.html
+http://developer.android.com/sdk/api_diff/12/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/12/changes/android.provider.MediaStore.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.MotionEvent.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.MotionEvent.PointerCoords.html
+http://developer.android.com/sdk/api_diff/12/changes/android.text.method.MovementMethod.html
+http://developer.android.com/sdk/api_diff/12/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/12/changes/android.os.ParcelFileDescriptor.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/12/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/12/changes/android.widget.RemoteViews.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.SearchManager.html
+http://developer.android.com/sdk/api_diff/12/changes/android.net.sip.SipProfile.html
+http://developer.android.com/sdk/api_diff/12/changes/android.net.sip.SipProfile.Builder.html
+http://developer.android.com/sdk/api_diff/12/changes/android.text.SpannableStringBuilder.html
+http://developer.android.com/sdk/api_diff/12/changes/android.net.http.SslCertificate.html
+http://developer.android.com/sdk/api_diff/12/changes/android.util.StateSet.html
+http://developer.android.com/sdk/api_diff/12/changes/android.util.TimeUtils.html
+http://developer.android.com/sdk/api_diff/12/changes/android.net.TrafficStats.html
+http://developer.android.com/sdk/api_diff/12/changes/android.animation.ValueAnimator.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.ViewConfiguration.html
+http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebHistoryItem.html
+http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebSettings.LayoutAlgorithm.html
+http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebView.html
+http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebView.PictureListener.html
+http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebViewClient.html
+http://developer.android.com/sdk/api_diff/12/changes/android.net.wifi.WifiManager.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.Window.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.Window.Callback.html
+http://developer.android.com/sdk/api_diff/12/changes/android.util.Xml.html
+http://developer.android.com/sdk/api_diff/12/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/12/changes/fields_index_changes.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/Sender.html
+http://developer.android.com/sdk/api_diff/12/changes/jdiff_statistics.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/Result.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?serialized-form.html
+http://developer.android.com/sdk/api_diff/3/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.content.res.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.database.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.database.sqlite.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.location.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.net.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.net.wifi.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.opengl.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.preference.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.telephony.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.test.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.test.mock.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.text.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.text.method.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.text.style.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.view.animation.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_dalvik.system.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_java.lang.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_java.util.jar.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_java.util.logging.html
+http://developer.android.com/sdk/api_diff/12/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/12/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/12/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.animation.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.appwidget.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.drm.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.net.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.net.http.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.net.sip.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.net.wifi.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.text.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.text.format.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.text.method.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.view.animation.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.view.inputmethod.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/12/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/12/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.BulletSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ImageSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.StyleSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.URLSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html
+http://developer.android.com/sdk/api_diff/15/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/15/changes/constructors_index_changes.html
+http://developer.android.com/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html
+http://developer.android.com/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html
+http://developer.android.com/sdk/api_diff/3/changes/android.test.ProviderTestCase.html
+http://developer.android.com/sdk/api_diff/3/changes/android.test.TouchUtils.html
+http://developer.android.com/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html
+http://developer.android.com/sdk/api_diff/3/changes/java.lang.Class.html
+http://developer.android.com/sdk/api_diff/3/changes/constructors_index_removals.html
+http://developer.android.com/sdk/api_diff/3/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/3/changes/constructors_index_changes.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.Annotation.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.GestureDetector.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Handler.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/3/changes/android.net.NetworkInfo.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.OrientationListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html
+http://developer.android.com/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewConfiguration.html
+http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.DexFile.html
+http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.VMDebug.html
+http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.Zygote.html
+http://developer.android.com/sdk/api_diff/3/changes/android.location.Location.html
+http://developer.android.com/sdk/api_diff/3/changes/android.location.LocationManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.hardware.Camera.html
+http://developer.android.com/sdk/api_diff/3/changes/android.hardware.SensorListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.hardware.SensorManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.URLUtil.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebView.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.res.Configuration.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.res.Resources.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.res.TypedArray.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.LauncherActivity.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.AlertDialog.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.DialogInterface.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.KeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaRecorder.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.AutoText.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.Touch.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.RemoteViews.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Settings.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.AlarmManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.PopupWindow.html
+http://developer.android.com/sdk/api_diff/3/changes/android.R.id.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Settings.System.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.ActivityManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.util.TimeUtils.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.SpanWatcher.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.TextWatcher.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html
+http://developer.android.com/sdk/api_diff/3/changes/java.util.logging.LogManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.Gravity.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.CursorAdapter.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.TextView.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaPlayer.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.Chronometer.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.AudioManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.Spanned.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.SoundPool.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Environment.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MovementMethod.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.TextUtils.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.RectF.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Looper.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewDebug.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.Scroller.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsListView.html
+http://developer.android.com/sdk/api_diff/3/changes/android.net.ConnectivityManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.ProgressBar.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html
+http://developer.android.com/sdk/api_diff/3/changes/android.R.string.html
+http://developer.android.com/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Build.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.IBinder.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html
+http://developer.android.com/sdk/api_diff/3/changes/android.util.SparseIntArray.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.ContentResolver.html
+http://developer.android.com/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.Menu.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.animation.Animation.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.animation.Transformation.html
+http://developer.android.com/sdk/api_diff/3/changes/java.util.logging.Level.html
+http://developer.android.com/sdk/api_diff/3/changes/android.R.style.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Binder.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewParent.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.GridView.html
+http://developer.android.com/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.ListView.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.PendingIntent.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.ContentProvider.html
+http://developer.android.com/sdk/api_diff/3/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/3/changes/android.preference.DialogPreference.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.Window.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Bitmap.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Debug.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Browser.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Parcel.html
+http://developer.android.com/sdk/api_diff/3/changes/android.database.DatabaseUtils.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.RingtoneManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Rect.html
+http://developer.android.com/sdk/api_diff/3/changes/android.database.Cursor.html
+http://developer.android.com/sdk/api_diff/3/changes/android.database.CursorWrapper.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.MotionEvent.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html
+http://developer.android.com/sdk/api_diff/3/changes/android.R.drawable.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.Instrumentation.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Canvas.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewGroup.html
+http://developer.android.com/sdk/api_diff/3/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/3/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/7/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/7/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/7/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/7/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/7/changes/fields_index_all.html
+http://developer.android.com/sdk/api_diff/7/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/7/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/6/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/3/changes/fields_index_removals.html
+http://developer.android.com/sdk/api_diff/3/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/3/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/12/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/12/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/12/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/5/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/constructors_index_changes.html
+http://developer.android.com/resources/samples/Support4Demos/index.html
+http://developer.android.com/resources/samples/Support13Demos/index.html
+http://developer.android.com/sdk/api_diff/7/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/7/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/7/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/7/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/7/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/7/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/7/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/8/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/8/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/8/changes/changes-summary.html
+http://developer.android.com/sdk/api_diff/5/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/12/changes/constructors_index_removals.html
+http://developer.android.com/sdk/api_diff/12/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/12/changes/constructors_index_changes.html
+http://developer.android.com/sdk/api_diff/3/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/3/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/3/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/8/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/8/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/8/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/8/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/8/changes/fields_index_all.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?deprecated-list.html
 http://developer.android.com/sdk/api_diff/8/changes/alldiffs_index_removals.html
 http://developer.android.com/sdk/api_diff/8/changes/alldiffs_index_additions.html
 http://developer.android.com/sdk/api_diff/8/changes/alldiffs_index_changes.html
@@ -4793,1627 +6396,18 @@
 http://developer.android.com/sdk/api_diff/8/changes/android.hardware.Sensor.html
 http://developer.android.com/sdk/api_diff/8/changes/javax.xml.XMLConstants.html
 http://developer.android.com/sdk/api_diff/8/changes/jdiff_statistics.html
-http://developer.android.com/resources/samples/SoftKeyboard/index.html
-http://developer.android.com/sdk/api_diff/11/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/11/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/11/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/11/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/11/changes/fields_index_all.html
-http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/package-tree.html
-http://developer.android.com/guide/google/gcm/client-javadoc/deprecated-list.html
-http://developer.android.com/guide/google/gcm/client-javadoc/index-all.html
-http://developer.android.com/guide/google/gcm/client-javadoc/help-doc.html
-http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/package-summary.html
-http://developer.android.com/guide/google/gcm/client-javadoc/allclasses-noframe.html
-http://developer.android.com/sdk/api_diff/12/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/12/changes/fields_index_changes.html
-http://developer.android.com/sdk/api_diff/12/changes/android.view.MotionEvent.html
-http://developer.android.com/sdk/api_diff/12/changes/android.content.Intent.html
-http://developer.android.com/sdk/api_diff/12/changes/android.drm.DrmEvent.html
-http://developer.android.com/sdk/api_diff/12/changes/android.provider.Browser.html
-http://developer.android.com/sdk/api_diff/12/changes/android.app.SearchManager.html
-http://developer.android.com/sdk/api_diff/12/changes/android.content.pm.PackageManager.html
-http://developer.android.com/sdk/api_diff/12/changes/android.content.pm.ApplicationInfo.html
-http://developer.android.com/sdk/api_diff/12/changes/android.os.Build.VERSION_CODES.html
-http://developer.android.com/sdk/api_diff/12/changes/android.app.DownloadManager.html
-http://developer.android.com/sdk/api_diff/12/changes/android.view.KeyEvent.html
-http://developer.android.com/sdk/api_diff/12/changes/android.view.InputDevice.html
-http://developer.android.com/sdk/api_diff/12/changes/android.app.ActivityManager.html
-http://developer.android.com/sdk/api_diff/12/changes/android.app.ActivityManager.RecentTaskInfo.html
-http://developer.android.com/sdk/api_diff/12/changes/android.appwidget.AppWidgetProviderInfo.html
-http://developer.android.com/sdk/api_diff/12/changes/android.R.attr.html
-http://developer.android.com/sdk/api_diff/12/changes/android.drm.DrmErrorEvent.html
-http://developer.android.com/sdk/api_diff/12/changes/android.drm.DrmInfoEvent.html
-http://developer.android.com/sdk/api_diff/12/changes/android.content.Context.html
-http://developer.android.com/sdk/api_diff/12/changes/android.app.DownloadManager.Request.html
-http://developer.android.com/sdk/api_diff/12/changes/android.net.wifi.WifiManager.html
-http://developer.android.com/sdk/api_diff/12/changes/jdiff_statistics.html
-http://developer.android.com/sdk/api_diff/8/changes/fields_index_removals.html
-http://developer.android.com/sdk/api_diff/8/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/8/changes/fields_index_changes.html
-http://developer.android.com/resources/samples/SpinnerTest/index.html
-http://developer.android.com/resources/samples/Spinner/index.html
-http://developer.android.com/sdk/api_diff/13/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/13/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/13/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/13/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/13/changes/fields_index_all.html
-http://developer.android.com/guide/appendix/install-location.html
-http://developer.android.com/sdk/api_diff/10/changes/android.graphics.BitmapFactory.Options.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.webkit.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.drm.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.util.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.text.format.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.appwidget.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.view.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.net.http.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.net.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.app.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.view.inputmethod.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.net.sip.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.text.method.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.graphics.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.os.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.hardware.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.content.pm.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.net.wifi.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.animation.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.view.animation.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.text.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.provider.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.widget.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.content.html
-http://developer.android.com/sdk/api_diff/12/changes/pkg_android.html
-http://developer.android.com/sdk/api_diff/12/changes/android.drm.DrmManagerClient.OnEventListener.html
-http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebView.PictureListener.html
-http://developer.android.com/sdk/api_diff/12/changes/android.util.DebugUtils.html
-http://developer.android.com/sdk/api_diff/12/changes/android.net.TrafficStats.html
-http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebSettings.LayoutAlgorithm.html
-http://developer.android.com/sdk/api_diff/12/changes/android.util.TimeUtils.html
-http://developer.android.com/sdk/api_diff/12/changes/android.view.InputEvent.html
-http://developer.android.com/sdk/api_diff/12/changes/android.view.MotionEvent.PointerCoords.html
-http://developer.android.com/sdk/api_diff/12/changes/android.view.InputDevice.MotionRange.html
-http://developer.android.com/sdk/api_diff/12/changes/android.text.format.Formatter.html
-http://developer.android.com/sdk/api_diff/12/changes/android.view.inputmethod.InputMethodSubtype.html
-http://developer.android.com/sdk/api_diff/12/changes/android.webkit.CookieManager.html
-http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebHistoryItem.html
-http://developer.android.com/sdk/api_diff/12/changes/android.graphics.Camera.html
-http://developer.android.com/sdk/api_diff/12/changes/android.net.http.SslCertificate.html
-http://developer.android.com/sdk/api_diff/12/changes/android.util.Config.html
-http://developer.android.com/sdk/api_diff/12/changes/android.util.EventLog.html
-http://developer.android.com/sdk/api_diff/12/changes/android.util.StateSet.html
-http://developer.android.com/sdk/api_diff/12/changes/android.text.method.MovementMethod.html
-http://developer.android.com/sdk/api_diff/12/changes/android.util.Xml.html
-http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebView.html
-http://developer.android.com/sdk/api_diff/12/changes/android.app.FragmentBreadCrumbs.html
-http://developer.android.com/sdk/api_diff/12/changes/android.os.ParcelFileDescriptor.html
-http://developer.android.com/sdk/api_diff/12/changes/android.graphics.Bitmap.html
-http://developer.android.com/sdk/api_diff/12/changes/android.net.sip.SipProfile.Builder.html
-http://developer.android.com/sdk/api_diff/12/changes/android.net.sip.SipProfile.html
-http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebSettings.html
-http://developer.android.com/sdk/api_diff/12/changes/android.view.ViewConfiguration.html
-http://developer.android.com/sdk/api_diff/12/changes/android.widget.DatePicker.html
-http://developer.android.com/sdk/api_diff/12/changes/android.app.DialogFragment.html
-http://developer.android.com/sdk/api_diff/12/changes/android.app.Fragment.html
-http://developer.android.com/sdk/api_diff/12/changes/android.view.Window.Callback.html
-http://developer.android.com/sdk/api_diff/12/changes/android.text.method.BaseMovementMethod.html
-http://developer.android.com/sdk/api_diff/12/changes/android.provider.MediaStore.html
-http://developer.android.com/sdk/api_diff/12/changes/android.text.SpannableStringBuilder.html
-http://developer.android.com/sdk/api_diff/12/changes/android.view.animation.Animation.html
-http://developer.android.com/sdk/api_diff/12/changes/android.hardware.Camera.html
-http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebViewClient.html
-http://developer.android.com/sdk/api_diff/12/changes/android.animation.ValueAnimator.html
-http://developer.android.com/sdk/api_diff/12/changes/android.app.Dialog.html
-http://developer.android.com/sdk/api_diff/12/changes/android.os.Bundle.html
-http://developer.android.com/sdk/api_diff/12/changes/android.widget.RemoteViews.html
-http://developer.android.com/sdk/api_diff/12/changes/android.view.View.html
-http://developer.android.com/sdk/api_diff/12/changes/android.app.Activity.html
-http://developer.android.com/sdk/api_diff/12/changes/android.view.Window.html
-http://developer.android.com/sdk/api_diff/5/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/5/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/5/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/5/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/5/changes/fields_index_all.html
-http://developer.android.com/training/tutorials/views/hello-tablelayout.html
-http://developer.android.com/reference/renderscript/rs__mesh_8rsh_source.html
-http://developer.android.com/reference/renderscript/rs__program_8rsh_source.html
-http://developer.android.com/reference/renderscript/rs__graphics_8rsh_source.html
-http://developer.android.com/reference/renderscript/rs__mesh_8rsh.html
-http://developer.android.com/sdk/api_diff/12/changes/constructors_index_removals.html
-http://developer.android.com/sdk/api_diff/12/changes/constructors_index_additions.html
-http://developer.android.com/sdk/api_diff/12/changes/constructors_index_changes.html
-http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/package-tree.html
-http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_removals.html
-http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_changes.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.SettingsColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/android.text.style.AbsoluteSizeSpan.html
-http://developer.android.com/sdk/api_diff/5/changes/android.inputmethodservice.AbstractInputMethodService.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_java.util.concurrent.locks.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.content.html
-http://developer.android.com/sdk/api_diff/5/changes/android.database.AbstractWindowedCursor.html
-http://developer.android.com/sdk/api_diff/5/changes/android.Manifest.permission.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.Context.html
-http://developer.android.com/sdk/api_diff/5/changes/android.R.attr.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.ContentResolver.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Intents.Insert.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Settings.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.Intent.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.MotionEvent.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.Activity.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ActivityInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.ActivityManager.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.ActivityManager.RunningAppProcessInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.ActivityManager.RunningServiceInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/android.location.LocationManager.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.PluginList.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethods.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Settings.System.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.AllocationLimitError.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.app.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.content.pm.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.content.res.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.database.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.database.sqlite.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.graphics.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.graphics.drawable.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.hardware.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.inputmethodservice.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.location.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.media.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.opengl.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.os.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.provider.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.telephony.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.test.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.test.mock.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.text.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.text.format.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.text.style.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.util.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.view.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.view.animation.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.webkit.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.widget.html
-http://developer.android.com/sdk/api_diff/5/changes/android.test.AndroidTestRunner.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.animation.Animation.html
-http://developer.android.com/sdk/api_diff/5/changes/android.R.style.html
-http://developer.android.com/sdk/api_diff/5/changes/android.hardware.Camera.Parameters.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.ContentProvider.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Intents.html
-http://developer.android.com/sdk/api_diff/5/changes/android.media.AudioFormat.html
-http://developer.android.com/sdk/api_diff/5/changes/android.media.AudioManager.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.html
-http://developer.android.com/sdk/api_diff/5/changes/android.widget.AutoCompleteTextView.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethodsColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.View.html
-http://developer.android.com/sdk/api_diff/5/changes/android.os.BatteryManager.html
-http://developer.android.com/sdk/api_diff/5/changes/android.database.sqlite.SQLiteDatabase.html
-http://developer.android.com/sdk/api_diff/5/changes/android.graphics.drawable.BitmapDrawable.html
-http://developer.android.com/sdk/api_diff/5/changes/java.util.concurrent.BlockingQueue.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.BroadcastReceiver.html
-http://developer.android.com/sdk/api_diff/5/changes/android.os.Build.VERSION_CODES.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.CallbackProxy.html
-http://developer.android.com/sdk/api_diff/5/changes/android.hardware.Camera.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.NotificationManager.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.MediaStore.Images.Thumbnails.html
-http://developer.android.com/sdk/api_diff/5/changes/android.widget.MediaController.MediaPlayerControl.html
-http://developer.android.com/sdk/api_diff/5/changes/android.widget.VideoView.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.KeyEvent.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.PackageManager.html
-http://developer.android.com/sdk/api_diff/5/changes/android.test.mock.MockPackageManager.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.OrganizationColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/android.telephony.PhoneNumberUtils.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.res.Configuration.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Extensions.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.ExtensionsColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.GroupMembership.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Groups.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.GroupsColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Intents.UI.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Organizations.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.ContactMethods.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.Extensions.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.Phones.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PeopleColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Phones.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PhonesColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Photos.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PhotosColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PresenceColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Settings.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.ContextWrapper.html
-http://developer.android.com/sdk/api_diff/5/changes/android.graphics.drawable.Drawable.html
-http://developer.android.com/sdk/api_diff/5/changes/android.os.Debug.MemoryInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/android.database.CursorWindow.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_dalvik.system.html
-http://developer.android.com/sdk/api_diff/5/changes/android.database.DatabaseUtils.html
-http://developer.android.com/sdk/api_diff/5/changes/android.text.format.DateUtils.html
-http://developer.android.com/sdk/api_diff/5/changes/android.text.TextPaint.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.Dialog.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.Plugin.html
-http://developer.android.com/sdk/api_diff/5/changes/android.graphics.drawable.Drawable.ConstantState.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ServiceInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebViewClient.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.WindowManager.LayoutParams.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.Notification.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.ViewGroup.html
-http://developer.android.com/sdk/api_diff/5/changes/android.text.format.Formatter.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.PluginData.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebSettings.html
-http://developer.android.com/sdk/api_diff/5/changes/android.telephony.NeighboringCellInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.UrlInterceptHandler.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.UrlInterceptRegistry.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebView.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.ViewConfiguration.html
-http://developer.android.com/sdk/api_diff/5/changes/android.widget.SimpleCursorTreeAdapter.html
-http://developer.android.com/sdk/api_diff/5/changes/android.opengl.GLSurfaceView.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.Surface.html
-http://developer.android.com/sdk/api_diff/5/changes/android.os.HandlerThread.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.HapticFeedbackConstants.html
-http://developer.android.com/sdk/api_diff/5/changes/android.telephony.TelephonyManager.html
-http://developer.android.com/sdk/api_diff/5/changes/android.test.InstrumentationTestCase.html
-http://developer.android.com/sdk/api_diff/5/changes/android.inputmethodservice.InputMethodService.html
-http://developer.android.com/sdk/api_diff/5/changes/android.text.InputType.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.IntentService.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ProviderInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_java.util.concurrent.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.KeyEvent.Callback.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.LauncherActivity.html
-http://developer.android.com/sdk/api_diff/5/changes/android.media.MediaPlayer.html
-http://developer.android.com/sdk/api_diff/5/changes/android.test.mock.MockContext.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.Window.Callback.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebChromeClient.html
-http://developer.android.com/sdk/api_diff/5/changes/android.telephony.PhoneStateListener.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.Service.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.PackageInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/android.graphics.PixelFormat.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.PotentialDeadlockError.html
-http://developer.android.com/sdk/api_diff/5/changes/android.R.drawable.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ResolveInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.SearchManager.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.SurfaceView.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.StaleDexCacheError.html
-http://developer.android.com/sdk/api_diff/5/changes/android.media.ToneGenerator.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.SurfaceHolder.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.TemporaryDirectory.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.TouchDex.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.VMDebug.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.VMRuntime.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.VMStack.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.Zygote.html
-http://developer.android.com/sdk/api_diff/11/changes/methods_index_removals.html
-http://developer.android.com/sdk/api_diff/11/changes/methods_index_additions.html
-http://developer.android.com/sdk/api_diff/11/changes/methods_index_changes.html
-http://developer.android.com/sdk/api_diff/5/changes/jdiff_statistics.html
-http://developer.android.com/sdk/api_diff/7/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/7/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/7/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/7/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/7/changes/fields_index_all.html
-http://developer.android.com/sdk/api_diff/7/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/7/changes/alldiffs_index_changes.html
-http://developer.android.com/reference/renderscript/rs__program_8rsh.html
 http://developer.android.com/sdk/api_diff/8/changes/classes_index_additions.html
 http://developer.android.com/sdk/api_diff/8/changes/classes_index_changes.html
-http://developer.android.com/sdk/api_diff/15/changes/constructors_index_additions.html
-http://developer.android.com/sdk/api_diff/15/changes/constructors_index_changes.html
-http://developer.android.com/guide/google/gcm/client-javadoc/overview-tree.html
-http://developer.android.com/guide/google/gcm/client-javadoc/index.html?help-doc.html
-http://developer.android.com/guide/google/gcm/client-javadoc/constant-values.html
-http://developer.android.com/shareables/sample_images.zip
-http://developer.android.com/guide/practices/ui_guidelines/icon_design_launcher.html
-http://developer.android.com/guide/practices/ui_guidelines/icon_design_menu.html
-http://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar.html
-http://developer.android.com/guide/practices/ui_guidelines/icon_design_tab.html
-http://developer.android.com/guide/practices/ui_guidelines/icon_design_dialog.html
-http://developer.android.com/guide/practices/ui_guidelines/icon_design_list.html
-http://developer.android.com/shareables/icon_templates-v4.0.zip
-http://developer.android.com/shareables/icon_templates-v2.3.zip
-http://developer.android.com/shareables/icon_templates-v2.0.zip
-http://developer.android.com/sdk/api_diff/12/changes/classes_index_removals.html
-http://developer.android.com/sdk/api_diff/12/changes/classes_index_additions.html
-http://developer.android.com/sdk/api_diff/12/changes/classes_index_changes.html
-http://developer.android.com/sdk/api_diff/16/changes/jdiff_statistics.html
-http://developer.android.com/guide/appendix/api-levels.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.accessibilityservice.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.animation.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.app.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.appwidget.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.bluetooth.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.content.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.content.pm.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.content.res.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.database.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.database.sqlite.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.drm.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.graphics.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.graphics.drawable.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.hardware.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.media.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.media.audiofx.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.net.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.net.wifi.p2p.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.nfc.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.nfc.tech.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.os.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.provider.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.renderscript.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.security.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.service.textservice.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.speech.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.test.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.test.mock.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.text.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.util.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.view.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.view.accessibility.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.view.inputmethod.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.view.textservice.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.webkit.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_android.widget.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_junit.framework.html
-http://developer.android.com/sdk/api_diff/16/changes/pkg_junit.runner.html
-http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/GCMBaseIntentService.html
-http://developer.android.com/sdk/api_diff/13/changes/methods_index_additions.html
-http://developer.android.com/sdk/api_diff/13/changes/methods_index_changes.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.AbsSeekBar.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.AdapterViewAnimator.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.AdapterViewFlipper.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.AutoCompleteTextView.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.CalendarView.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.CheckedTextView.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.FrameLayout.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.Gallery.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.GridLayout.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.GridView.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.ImageView.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.LinearLayout.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.RelativeLayout.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.RemoteViews.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.SearchView.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.Spinner.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.Switch.html
-http://developer.android.com/sdk/api_diff/16/changes/android.widget.TextView.html
-http://developer.android.com/sdk/api_diff/16/changes/android.nfc.tech.IsoDep.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.res.Configuration.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.res.Resources.html
-http://developer.android.com/sdk/api_diff/6/changes/jdiff_topleftframe.html
-http://developer.android.com/sdk/api_diff/6/changes/alldiffs_index_all.html
-http://developer.android.com/sdk/api_diff/6/changes/changes-summary.html
-http://developer.android.com/guide/practices/ui_guidelines/icon_design_launcher_archive.html
-http://developer.android.com/sdk/api_diff/3/changes/jdiff_topleftframe.html
-http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_all.html
-http://developer.android.com/sdk/api_diff/3/changes/changes-summary.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.inputmethod.EditorInfo.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.inputmethod.InputMethodManager.html
-http://developer.android.com/tools/other-ide.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.html
-http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_removals.html
-http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_changes.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsListView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Settings.System.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Settings.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.AudioManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.net.ConnectivityManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.Intent.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.MotionEvent.html
-http://developer.android.com/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.Activity.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.test.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.ActivityManager.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.app.html
-http://developer.android.com/sdk/api_diff/3/changes/android.location.LocationManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html
-http://developer.android.com/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html
-http://developer.android.com/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html
-http://developer.android.com/sdk/api_diff/3/changes/java.util.logging.LogManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.R.id.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.AlarmManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.AlertDialog.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html
-http://developer.android.com/sdk/api_diff/3/changes/android.R.attr.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.widget.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.content.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.content.pm.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.content.res.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.database.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.database.sqlite.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.graphics.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.hardware.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.location.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.media.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.net.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.net.wifi.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.opengl.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.os.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.preference.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.provider.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.telephony.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.test.mock.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.text.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.text.method.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.text.style.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.util.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.view.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.view.animation.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.webkit.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.animation.Animation.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.Annotation.html
-http://developer.android.com/sdk/api_diff/3/changes/android.database.DatabaseUtils.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.Gravity.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.AutoText.html
-http://developer.android.com/sdk/api_diff/3/changes/android.hardware.SensorManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.TextView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.Manifest.permission.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Binder.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Bitmap.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Browser.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Build.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.BulletSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.DialogInterface.html
-http://developer.android.com/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.Instrumentation.html
-http://developer.android.com/sdk/api_diff/3/changes/android.hardware.Camera.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Canvas.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.TextUtils.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.KeyEvent.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Debug.html
-http://developer.android.com/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.View.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.Chronometer.html
-http://developer.android.com/sdk/api_diff/3/changes/java.lang.Class.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.KeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.Menu.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.res.Configuration.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.ContentProvider.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.ContentResolver.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.Context.html
-http://developer.android.com/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.RectF.html
-http://developer.android.com/sdk/api_diff/3/changes/android.database.Cursor.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.CursorAdapter.html
-http://developer.android.com/sdk/api_diff/3/changes/android.database.CursorWrapper.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_dalvik.system.html
-http://developer.android.com/sdk/api_diff/3/changes/android.R.drawable.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.Zygote.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.StyleSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.URLSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html
-http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.DexFile.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.R.string.html
-http://developer.android.com/sdk/api_diff/3/changes/android.preference.DialogPreference.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.TouchUtils.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html
-http://developer.android.com/sdk/api_diff/3/changes/android.location.Location.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.IBinder.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewDebug.html
-http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.VMDebug.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Environment.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.PendingIntent.html
-http://developer.android.com/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.GestureDetector.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewConfiguration.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.PackageManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebSettings.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.res.Resources.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.Touch.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.PopupWindow.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.res.TypedArray.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.Scroller.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html
-http://developer.android.com/sdk/api_diff/3/changes/android.net.NetworkInfo.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.LauncherActivity.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Looper.html
-http://developer.android.com/sdk/api_diff/3/changes/android.util.TimeUtils.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.GridView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Handler.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.Window.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ImageSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.RingtoneManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.URLUtil.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaPlayer.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_java.lang.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_java.util.jar.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_java.util.logging.html
-http://developer.android.com/sdk/api_diff/3/changes/java.util.logging.Level.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.ListView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.SoundPool.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaRecorder.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MovementMethod.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.ProgressBar.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.OrientationListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Parcel.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.ProviderTestCase.html
-http://developer.android.com/sdk/api_diff/3/changes/android.R.style.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Rect.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.RemoteViews.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html
-http://developer.android.com/sdk/api_diff/3/changes/android.util.SparseIntArray.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewParent.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html
-http://developer.android.com/sdk/api_diff/3/changes/android.hardware.SensorListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewGroup.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.Spanned.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.SpanWatcher.html
-http://developer.android.com/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.TextWatcher.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.animation.Transformation.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html
-http://developer.android.com/sdk/api_diff/3/changes/jdiff_statistics.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.AsyncTaskLoader.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.ClipData.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.ClipData.Item.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.ClipDescription.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.ComponentCallbacks2.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.ContentProvider.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.ContentProviderClient.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.ContentResolver.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.Context.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.ContextWrapper.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.Intent.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.Loader.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityEvent.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityNodeInfo.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityRecord.html
-http://developer.android.com/sdk/api_diff/6/changes/jdiff_statistics.html
-http://developer.android.com/sdk/api_diff/6/changes/pkg_android.html
-http://developer.android.com/sdk/api_diff/6/changes/pkg_android.accounts.html
-http://developer.android.com/sdk/api_diff/6/changes/pkg_android.os.html
-http://developer.android.com/sdk/api_diff/6/changes/pkg_android.view.html
-http://developer.android.com/resources/tutorials/views/hello-linearlayout.html
-http://developer.android.com/sdk/api_diff/7/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/7/changes/fields_index_changes.html
-http://developer.android.com/sdk/api_diff/8/changes/packages_index_additions.html
-http://developer.android.com/sdk/api_diff/8/changes/packages_index_changes.html
-http://developer.android.com/guide/google/gcm/server-javadoc/allclasses-frame.html
-http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-summary.html
-http://developer.android.com/sdk/api_diff/6/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/6/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/6/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/6/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/6/changes/fields_index_all.html
-http://developer.android.com/resources/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentTabsPager.html
-http://developer.android.com/sdk/api_diff/16/changes/android.security.KeyChain.html
-http://developer.android.com/sdk/api_diff/16/changes/android.provider.CalendarContract.html
-http://developer.android.com/sdk/api_diff/16/changes/android.provider.CalendarContract.AttendeesColumns.html
-http://developer.android.com/sdk/api_diff/16/changes/android.provider.CalendarContract.EventsColumns.html
-http://developer.android.com/sdk/api_diff/16/changes/android.provider.CalendarContract.RemindersColumns.html
-http://developer.android.com/sdk/api_diff/16/changes/android.provider.ContactsContract.CommonDataKinds.Phone.html
-http://developer.android.com/sdk/api_diff/16/changes/android.provider.ContactsContract.Contacts.html
-http://developer.android.com/sdk/api_diff/16/changes/android.provider.ContactsContract.DataUsageFeedback.html
-http://developer.android.com/sdk/api_diff/16/changes/android.provider.ContactsContract.PhoneLookupColumns.html
-http://developer.android.com/sdk/api_diff/16/changes/android.provider.MediaStore.MediaColumns.html
-http://developer.android.com/sdk/api_diff/16/changes/android.provider.Settings.html
-http://developer.android.com/sdk/api_diff/16/changes/android.provider.Settings.Secure.html
-http://developer.android.com/sdk/api_diff/16/changes/android.provider.Settings.System.html
-http://developer.android.com/sdk/api_diff/16/changes/android.provider.UserDictionary.Words.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.pm.ActivityInfo.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.pm.PackageInfo.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.pm.PackageManager.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.pm.PermissionInfo.html
-http://developer.android.com/sdk/api_diff/16/changes/android.content.pm.ServiceInfo.html
-http://developer.android.com/sdk/api_diff/14/changes/jdiff_topleftframe.html
-http://developer.android.com/sdk/api_diff/14/changes/alldiffs_index_all.html
-http://developer.android.com/sdk/api_diff/14/changes/changes-summary.html
-http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-tree.html
-http://developer.android.com/guide/google/gcm/server-javadoc/deprecated-list.html
-http://developer.android.com/guide/google/gcm/server-javadoc/index-all.html
-http://developer.android.com/guide/google/gcm/server-javadoc/help-doc.html
-http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/package-summary.html
-http://developer.android.com/guide/google/gcm/server-javadoc/allclasses-noframe.html
-http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Constants.html
-http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.html
-http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.Builder.html
-http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/MulticastResult.html
-http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Result.html
-http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Sender.html
-http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/InvalidRequestException.html
-http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteClosable.html
-http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteDatabase.html
-http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteException.html
-http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteOpenHelper.html
-http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteProgram.html
-http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteQuery.html
-http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteQueryBuilder.html
-http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteStatement.html
-http://developer.android.com/sdk/api_diff/16/changes/android.service.textservice.SpellCheckerService.Session.html
 http://developer.android.com/sdk/api_diff/8/changes/constructors_index_removals.html
 http://developer.android.com/sdk/api_diff/8/changes/constructors_index_additions.html
 http://developer.android.com/sdk/api_diff/8/changes/constructors_index_changes.html
-http://developer.android.com/sdk/api_diff/16/changes/alldiffs_index_removals.html
-http://developer.android.com/sdk/api_diff/16/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/16/changes/alldiffs_index_changes.html
-http://developer.android.com/sdk/api_diff/16/changes/android.media.MediaRecorder.OutputFormat.html
-http://developer.android.com/sdk/api_diff/16/changes/android.media.MediaRecorder.AudioEncoder.html
-http://developer.android.com/sdk/api_diff/16/changes/android.database.AbstractCursor.html
-http://developer.android.com/sdk/api_diff/16/changes/android.accessibilityservice.AccessibilityService.html
-http://developer.android.com/sdk/api_diff/16/changes/android.accessibilityservice.AccessibilityServiceInfo.html
-http://developer.android.com/sdk/api_diff/16/changes/android.appwidget.AppWidgetManager.html
-http://developer.android.com/sdk/api_diff/16/changes/android.net.ConnectivityManager.html
-http://developer.android.com/sdk/api_diff/16/changes/android.app.WallpaperManager.html
-http://developer.android.com/sdk/api_diff/16/changes/android.speech.RecognizerIntent.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.ActionMode.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.ActionProvider.html
-http://developer.android.com/sdk/api_diff/16/changes/android.app.Activity.html
-http://developer.android.com/sdk/api_diff/16/changes/android.app.ActivityManager.html
-http://developer.android.com/sdk/api_diff/16/changes/android.app.ActivityManager.MemoryInfo.html
-http://developer.android.com/sdk/api_diff/16/changes/android.app.ActivityManager.RunningAppProcessInfo.html
-http://developer.android.com/sdk/api_diff/16/changes/android.app.Notification.Builder.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.View.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Mesh.AllocationBuilder.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Mesh.Builder.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramVertex.Builder.html
-http://developer.android.com/sdk/api_diff/16/changes/android.net.wifi.p2p.WifiP2pManager.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewTreeObserver.html
-http://developer.android.com/sdk/api_diff/16/changes/android.test.InstrumentationTestSuite.html
-http://developer.android.com/sdk/api_diff/16/changes/junit.framework.TestSuite.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Program.BaseProgramBuilder.html
-http://developer.android.com/sdk/api_diff/16/changes/android.media.MediaPlayer.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Mesh.TriangleMeshBuilder.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Allocation.html
-http://developer.android.com/sdk/api_diff/16/changes/android.R.attr.html
-http://developer.android.com/sdk/api_diff/16/changes/android.appwidget.AppWidgetHostView.html
-http://developer.android.com/sdk/api_diff/16/changes/android.appwidget.AppWidgetProvider.html
-http://developer.android.com/sdk/api_diff/16/changes/junit.framework.Assert.html
-http://developer.android.com/sdk/api_diff/16/changes/android.test.AssertionFailedError.html
-http://developer.android.com/sdk/api_diff/16/changes/junit.framework.AssertionFailedError.html
-http://developer.android.com/sdk/api_diff/16/changes/android.graphics.SurfaceTexture.html
-http://developer.android.com/sdk/api_diff/16/changes/android.media.AudioManager.html
-http://developer.android.com/sdk/api_diff/16/changes/android.media.AudioRecord.html
-http://developer.android.com/sdk/api_diff/16/changes/android.graphics.AvoidXfermode.html
-http://developer.android.com/sdk/api_diff/16/changes/junit.runner.BaseTestRunner.html
-http://developer.android.com/sdk/api_diff/16/changes/android.app.Notification.html
-http://developer.android.com/sdk/api_diff/16/changes/android.Manifest.permission.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.RenderScriptGL.html
-http://developer.android.com/sdk/api_diff/16/changes/android.bluetooth.BluetoothAdapter.html
-http://developer.android.com/sdk/api_diff/16/changes/android.os.Build.VERSION_CODES.html
-http://developer.android.com/sdk/api_diff/16/changes/android.graphics.Camera.html
-http://developer.android.com/sdk/api_diff/16/changes/android.hardware.Camera.html
-http://developer.android.com/sdk/api_diff/16/changes/android.os.Vibrator.html
-http://developer.android.com/sdk/api_diff/16/changes/android.graphics.Canvas.html
-http://developer.android.com/sdk/api_diff/16/changes/android.animation.LayoutTransition.html
-http://developer.android.com/sdk/api_diff/16/changes/android.database.CursorWindow.html
-http://developer.android.com/sdk/api_diff/16/changes/android.test.ComparisonFailure.html
-http://developer.android.com/sdk/api_diff/16/changes/junit.framework.ComparisonFailure.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSubtype.html
-http://developer.android.com/sdk/api_diff/16/changes/android.database.ContentObservable.html
-http://developer.android.com/sdk/api_diff/16/changes/android.database.ContentObserver.html
-http://developer.android.com/sdk/api_diff/16/changes/android.webkit.CookieManager.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Font.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragment.Builder.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.Builder.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.Builder.html
-http://developer.android.com/sdk/api_diff/16/changes/android.nfc.NdefRecord.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.FileA3D.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.RSSurfaceView.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.RSTextureView.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.KeyCharacterMap.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.html
-http://developer.android.com/sdk/api_diff/16/changes/android.database.Cursor.html
-http://developer.android.com/sdk/api_diff/16/changes/android.util.DisplayMetrics.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.Constants.html
-http://developer.android.com/sdk/api_diff/16/changes/android.os.StrictMode.VmPolicy.Builder.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.Display.html
-http://developer.android.com/sdk/api_diff/16/changes/android.app.DownloadManager.Request.html
-http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmManagerClient.html
-http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmStore.html
-http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmStore.Action.html
-http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmStore.DrmObjectType.html
-http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmStore.Playback.html
-http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmStore.RightsStatus.html
-http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmSupportInfo.html
-http://developer.android.com/sdk/api_diff/16/changes/android.os.TokenWatcher.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Element.html
-http://developer.android.com/sdk/api_diff/16/changes/junit.framework.TestResult.html
-http://developer.android.com/sdk/api_diff/16/changes/android.text.Html.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.FileA3D.EntryType.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.FileA3D.IndexEntry.html
-http://developer.android.com/sdk/api_diff/16/changes/android.webkit.WebView.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Font.Style.html
-http://developer.android.com/sdk/api_diff/16/changes/android.nfc.FormatException.html
-http://developer.android.com/sdk/api_diff/16/changes/android.app.Fragment.html
-http://developer.android.com/sdk/api_diff/16/changes/android.webkit.GeolocationPermissions.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.Gravity.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.View.AccessibilityDelegate.html
-http://developer.android.com/sdk/api_diff/16/changes/android.app.PendingIntent.html
-http://developer.android.com/sdk/api_diff/16/changes/android.webkit.WebSettings.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Sampler.html
-http://developer.android.com/sdk/api_diff/16/changes/android.media.ToneGenerator.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramStore.html
-http://developer.android.com/sdk/api_diff/16/changes/android.nfc.NdefMessage.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Program.html
-http://developer.android.com/sdk/api_diff/16/changes/android.nfc.NfcAdapter.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.InputDevice.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.InputEvent.html
-http://developer.android.com/sdk/api_diff/16/changes/android.app.SearchManager.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Mesh.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramVertex.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewStub.html
-http://developer.android.com/sdk/api_diff/16/changes/android.net.SSLCertificateSocketFactory.html
-http://developer.android.com/sdk/api_diff/16/changes/android.graphics.drawable.GradientDrawable.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewParent.html
-http://developer.android.com/sdk/api_diff/16/changes/android.media.audiofx.Visualizer.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSession.html
-http://developer.android.com/sdk/api_diff/16/changes/android.app.KeyguardManager.html
-http://developer.android.com/sdk/api_diff/16/changes/android.graphics.Paint.html
-http://developer.android.com/sdk/api_diff/16/changes/android.webkit.JsResult.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.KeyEvent.html
-http://developer.android.com/sdk/api_diff/16/changes/android.graphics.PixelFormat.html
-http://developer.android.com/sdk/api_diff/16/changes/android.os.Process.html
-http://developer.android.com/sdk/api_diff/16/changes/android.media.MediaRecorder.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Mesh.Primitive.html
-http://developer.android.com/sdk/api_diff/16/changes/android.test.mock.MockContext.html
-http://developer.android.com/sdk/api_diff/16/changes/android.net.Uri.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener.html
-http://developer.android.com/sdk/api_diff/16/changes/android.os.ParcelFileDescriptor.html
-http://developer.android.com/sdk/api_diff/16/changes/android.graphics.PixelXorXfermode.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragment.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.EnvMode.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.Format.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.CullMode.html
-http://developer.android.com/sdk/api_diff/16/changes/android.R.style.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.RenderScriptGL.SurfaceConfig.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewGroup.html
-http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Script.html
-http://developer.android.com/sdk/api_diff/16/changes/android.hardware.SensorManager.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.TextureView.html
-http://developer.android.com/sdk/api_diff/16/changes/android.database.SQLException.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewDebug.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewDebug.HierarchyTraceType.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewDebug.RecyclerTraceType.html
-http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewPropertyAnimator.html
-http://developer.android.com/sdk/api_diff/16/changes/android.webkit.WebIconDatabase.html
-http://developer.android.com/sdk/api_diff/16/changes/android.webkit.WebStorage.html
-http://developer.android.com/sdk/api_diff/16/changes/android.webkit.WebView.HitTestResult.html
+http://developer.android.com/sdk/api_diff/8/changes/fields_index_removals.html
+http://developer.android.com/sdk/api_diff/8/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/8/changes/fields_index_changes.html
 http://developer.android.com/sdk/api_diff/8/changes/methods_index_removals.html
 http://developer.android.com/sdk/api_diff/8/changes/methods_index_additions.html
 http://developer.android.com/sdk/api_diff/8/changes/methods_index_changes.html
-http://developer.android.com/sdk/api_diff/11/changes/classes_index_additions.html
-http://developer.android.com/sdk/api_diff/11/changes/classes_index_changes.html
-http://developer.android.com/sdk/api_diff/6/changes/android.os.Build.VERSION_CODES.html
-http://developer.android.com/sdk/api_diff/11/changes/packages_index_additions.html
-http://developer.android.com/sdk/api_diff/11/changes/packages_index_changes.html
-http://developer.android.com/sdk/api_diff/14/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/14/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/14/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/14/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/14/changes/fields_index_all.html
-http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/GCMConstants.html
-http://developer.android.com/guide/developing/debugging/index.html
-http://developer.android.com/guide/developing/tools/adb.html
-http://developer.android.com/guide/publishing/app-signing.html
-http://developer.android.com/guide/developing/devices/managing-avds.html
-http://developer.android.com/sdk/api_diff/5/changes/constructors_index_additions.html
-http://developer.android.com/sdk/api_diff/5/changes/constructors_index_changes.html
-http://developer.android.com/guide/google/gcm/server-javadoc/overview-tree.html
-http://developer.android.com/guide/google/gcm/server-javadoc/index.html?index-all.html
-http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/MulticastResult.html
-http://developer.android.com/guide/google/gcm/server-javadoc/serialized-form.html
-http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/Constants.html
-http://developer.android.com/guide/google/gcm/server-javadoc/constant-values.html
-http://developer.android.com/sdk/api_diff/13/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/13/changes/fields_index_changes.html
-http://developer.android.com/sdk/api_diff/5/changes/classes_index_additions.html
-http://developer.android.com/sdk/api_diff/5/changes/classes_index_changes.html
-http://developer.android.com/sdk/api_diff/11/changes/constructors_index_removals.html
-http://developer.android.com/sdk/api_diff/11/changes/constructors_index_additions.html
-http://developer.android.com/sdk/api_diff/11/changes/constructors_index_changes.html
-http://developer.android.com/guide/google/gcm/client-javadoc/index.html?index-all.html
-http://developer.android.com/sdk/api_diff/15/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/15/changes/fields_index_changes.html
-http://developer.android.com/sdk/api_diff/6/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/6/changes/alldiffs_index_changes.html
-http://developer.android.com/sdk/api_diff/6/changes/android.accounts.AbstractAccountAuthenticator.html
-http://developer.android.com/sdk/api_diff/6/changes/android.R.attr.html
-http://developer.android.com/sdk/api_diff/6/changes/android.view.WindowManager.LayoutParams.html
-http://developer.android.com/sdk/api_diff/6/changes/classes_index_changes.html
-http://developer.android.com/resources/articles/creating-input-method.html
-http://developer.android.com/sdk/api_diff/10/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/10/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/10/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/10/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/10/changes/fields_index_all.html
-http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/Result.html
-http://developer.android.com/sdk/api_diff/14/changes/classes_index_additions.html
-http://developer.android.com/sdk/api_diff/14/changes/classes_index_changes.html
-http://developer.android.com/sdk/api_diff/14/changes/android.widget.AbsListView.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.accessibility.AccessibilityEvent.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.accessibility.AccessibilityManager.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.view.accessibility.html
-http://developer.android.com/sdk/api_diff/14/changes/android.accessibilityservice.AccessibilityService.html
-http://developer.android.com/sdk/api_diff/14/changes/android.accessibilityservice.AccessibilityServiceInfo.html
-http://developer.android.com/sdk/api_diff/14/changes/java.lang.reflect.AccessibleObject.html
-http://developer.android.com/sdk/api_diff/14/changes/android.accounts.AccountManager.html
-http://developer.android.com/sdk/api_diff/14/changes/android.app.ActionBar.html
-http://developer.android.com/sdk/api_diff/14/changes/android.app.ActionBar.Tab.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.ActionMode.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.view.html
-http://developer.android.com/sdk/api_diff/14/changes/android.app.Activity.html
-http://developer.android.com/sdk/api_diff/14/changes/android.content.pm.ActivityInfo.html
-http://developer.android.com/sdk/api_diff/14/changes/android.widget.AdapterViewAnimator.html
-http://developer.android.com/sdk/api_diff/14/changes/android.app.AlertDialog.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Allocation.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.AllocationAdapter.html
-http://developer.android.com/sdk/api_diff/14/changes/java.security.AllPermission.html
-http://developer.android.com/sdk/api_diff/14/changes/android.animation.Animator.html
-http://developer.android.com/sdk/api_diff/14/changes/android.app.Application.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.app.html
-http://developer.android.com/sdk/api_diff/14/changes/android.content.pm.ApplicationInfo.html
-http://developer.android.com/sdk/api_diff/14/changes/android.appwidget.AppWidgetProviderInfo.html
-http://developer.android.com/sdk/api_diff/14/changes/android.media.AudioManager.html
-http://developer.android.com/sdk/api_diff/14/changes/android.app.backup.BackupAgent.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_dalvik.system.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.BaseObj.html
-http://developer.android.com/sdk/api_diff/14/changes/java.security.BasicPermission.html
-http://developer.android.com/sdk/api_diff/14/changes/android.bluetooth.BluetoothAdapter.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.bluetooth.html
-http://developer.android.com/sdk/api_diff/14/changes/android.bluetooth.BluetoothProfile.html
-http://developer.android.com/sdk/api_diff/14/changes/android.bluetooth.BluetoothSocket.html
-http://developer.android.com/sdk/api_diff/14/changes/android.os.Build.html
-http://developer.android.com/sdk/api_diff/14/changes/android.os.Build.VERSION_CODES.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Byte2.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Byte3.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Byte4.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.provider.html
-http://developer.android.com/sdk/api_diff/14/changes/android.provider.CallLog.Calls.html
-http://developer.android.com/sdk/api_diff/14/changes/android.hardware.Camera.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.hardware.html
-http://developer.android.com/sdk/api_diff/14/changes/android.hardware.Camera.Parameters.html
-http://developer.android.com/sdk/api_diff/14/changes/android.graphics.Canvas.html
-http://developer.android.com/sdk/api_diff/14/changes/android.preference.CheckBoxPreference.html
-http://developer.android.com/sdk/api_diff/14/changes/java.lang.Class.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.content.html
-http://developer.android.com/sdk/api_diff/14/changes/android.util.Config.html
-http://developer.android.com/sdk/api_diff/14/changes/android.net.ConnectivityManager.html
-http://developer.android.com/sdk/api_diff/14/changes/java.lang.reflect.Constructor.html
-http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.html
-http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.CommonDataKinds.Photo.html
-http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.Contacts.html
-http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.Contacts.Photo.html
-http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.ContactsColumns.html
-http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.GroupsColumns.html
-http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.Intents.html
-http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.RawContactsColumns.html
-http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.RawContactsEntity.html
-http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.SettingsColumns.html
-http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.StatusUpdates.html
-http://developer.android.com/sdk/api_diff/14/changes/android.content.ContentProvider.html
-http://developer.android.com/sdk/api_diff/14/changes/android.content.Context.html
-http://developer.android.com/sdk/api_diff/14/changes/android.os.Debug.html
-http://developer.android.com/sdk/api_diff/14/changes/android.os.Debug.MemoryInfo.html
-http://developer.android.com/sdk/api_diff/14/changes/android.app.admin.DeviceAdminInfo.html
-http://developer.android.com/sdk/api_diff/14/changes/android.app.admin.DevicePolicyManager.html
-http://developer.android.com/sdk/api_diff/14/changes/dalvik.system.DexClassLoader.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.renderscript.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.text.style.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.widget.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Element.html
-http://developer.android.com/sdk/api_diff/14/changes/android.widget.ExpandableListView.html
-http://developer.android.com/sdk/api_diff/14/changes/java.lang.reflect.Field.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.FieldPacker.html
-http://developer.android.com/sdk/api_diff/14/changes/java.io.FilePermission.html
-http://developer.android.com/sdk/api_diff/14/changes/android.animation.FloatEvaluator.html
-http://developer.android.com/sdk/api_diff/14/changes/android.app.Fragment.html
-http://developer.android.com/sdk/api_diff/14/changes/android.app.FragmentManager.html
-http://developer.android.com/sdk/api_diff/14/changes/android.app.FragmentManager.BackStackEntry.html
-http://developer.android.com/sdk/api_diff/14/changes/android.widget.FrameLayout.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.app.backup.html
-http://developer.android.com/sdk/api_diff/14/changes/android.opengl.GLUtils.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.Gravity.html
-http://developer.android.com/sdk/api_diff/14/changes/android.os.Handler.html
-http://developer.android.com/sdk/api_diff/14/changes/java.util.logging.Handler.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.InputDevice.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodManager.html
-http://developer.android.com/sdk/api_diff/14/changes/android.inputmethodservice.InputMethodService.html
-http://developer.android.com/sdk/api_diff/14/changes/android.inputmethodservice.InputMethodService.InputMethodSessionImpl.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodSession.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodSubtype.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Int2.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Int3.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Int4.html
-http://developer.android.com/sdk/api_diff/14/changes/android.content.Intent.html
-http://developer.android.com/sdk/api_diff/14/changes/android.content.IntentSender.html
-http://developer.android.com/sdk/api_diff/14/changes/android.animation.IntEvaluator.html
-http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.IsoDep.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.KeyEvent.html
-http://developer.android.com/sdk/api_diff/14/changes/android.text.Layout.html
-http://developer.android.com/sdk/api_diff/14/changes/android.animation.LayoutTransition.html
-http://developer.android.com/sdk/api_diff/14/changes/android.widget.LinearLayout.html
-http://developer.android.com/sdk/api_diff/14/changes/android.provider.LiveFolders.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Long2.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Long3.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Long4.html
-http://developer.android.com/sdk/api_diff/14/changes/android.os.Looper.html
-http://developer.android.com/sdk/api_diff/14/changes/android.Manifest.permission.html
-http://developer.android.com/sdk/api_diff/14/changes/android.opengl.Matrix.html
-http://developer.android.com/sdk/api_diff/14/changes/android.media.MediaMetadataRetriever.html
-http://developer.android.com/sdk/api_diff/14/changes/android.media.MediaPlayer.html
-http://developer.android.com/sdk/api_diff/14/changes/android.media.MediaRecorder.html
-http://developer.android.com/sdk/api_diff/14/changes/android.provider.MediaStore.Audio.AudioColumns.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.MenuItem.html
-http://developer.android.com/sdk/api_diff/14/changes/java.lang.reflect.Method.html
-http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.MifareClassic.html
-http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.MifareUltralight.html
-http://developer.android.com/sdk/api_diff/14/changes/android.test.mock.MockPackageManager.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.MotionEvent.html
-http://developer.android.com/sdk/api_diff/14/changes/android.nfc.NdefRecord.html
-http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.NfcA.html
-http://developer.android.com/sdk/api_diff/14/changes/android.nfc.NfcAdapter.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.nfc.html
-http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.NfcB.html
-http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.NfcF.html
-http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.NfcV.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.util.html
-http://developer.android.com/sdk/api_diff/14/changes/android.app.Notification.Builder.html
-http://developer.android.com/sdk/api_diff/14/changes/android.animation.ObjectAnimator.html
-http://developer.android.com/sdk/api_diff/14/changes/java.io.ObjectInputStream.html
-http://developer.android.com/sdk/api_diff/14/changes/java.io.ObjectOutputStream.html
-http://developer.android.com/sdk/api_diff/14/changes/android.widget.OverScroller.html
-http://developer.android.com/sdk/api_diff/14/changes/android.content.pm.PackageManager.html
-http://developer.android.com/sdk/api_diff/14/changes/android.content.pm.PackageStats.html
-http://developer.android.com/sdk/api_diff/14/changes/android.graphics.Paint.html
-http://developer.android.com/sdk/api_diff/14/changes/android.os.ParcelFileDescriptor.html
-http://developer.android.com/sdk/api_diff/14/changes/dalvik.system.PathClassLoader.html
-http://developer.android.com/sdk/api_diff/14/changes/android.util.Patterns.html
-http://developer.android.com/sdk/api_diff/14/changes/android.app.PendingIntent.html
-http://developer.android.com/sdk/api_diff/14/changes/java.security.Permission.html
-http://developer.android.com/sdk/api_diff/14/changes/android.widget.PopupMenu.html
-http://developer.android.com/sdk/api_diff/14/changes/android.preference.Preference.html
-http://developer.android.com/sdk/api_diff/14/changes/android.preference.PreferenceActivity.html
-http://developer.android.com/sdk/api_diff/14/changes/javax.security.auth.PrivateCredentialPermission.html
-http://developer.android.com/sdk/api_diff/14/changes/android.os.Process.html
-http://developer.android.com/sdk/api_diff/14/changes/android.animation.PropertyValuesHolder.html
-http://developer.android.com/sdk/api_diff/14/changes/android.R.attr.html
-http://developer.android.com/sdk/api_diff/14/changes/android.R.color.html
-http://developer.android.com/sdk/api_diff/14/changes/android.R.integer.html
-http://developer.android.com/sdk/api_diff/14/changes/android.R.string.html
-http://developer.android.com/sdk/api_diff/14/changes/android.R.style.html
-http://developer.android.com/sdk/api_diff/14/changes/android.speech.RecognizerIntent.html
-http://developer.android.com/sdk/api_diff/14/changes/android.os.RecoverySystem.html
-http://developer.android.com/sdk/api_diff/14/changes/android.graphics.RectF.html
-http://developer.android.com/sdk/api_diff/14/changes/java.lang.ref.ReferenceQueue.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.media.html
-http://developer.android.com/sdk/api_diff/14/changes/android.widget.RemoteViews.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.RenderScriptGL.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Script.html
-http://developer.android.com/sdk/api_diff/14/changes/android.widget.Scroller.html
-http://developer.android.com/sdk/api_diff/14/changes/android.app.SearchManager.html
-http://developer.android.com/sdk/api_diff/14/changes/android.widget.SearchView.html
-http://developer.android.com/sdk/api_diff/14/changes/android.hardware.Sensor.html
-http://developer.android.com/sdk/api_diff/14/changes/android.app.Service.html
-http://developer.android.com/sdk/api_diff/14/changes/android.content.pm.ServiceInfo.html
-http://developer.android.com/sdk/api_diff/14/changes/android.provider.Settings.html
-http://developer.android.com/sdk/api_diff/14/changes/android.provider.Settings.Secure.html
-http://developer.android.com/sdk/api_diff/14/changes/android.provider.Settings.System.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Short2.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Short3.html
-http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Short4.html
-http://developer.android.com/sdk/api_diff/14/changes/java.net.SocketPermission.html
-http://developer.android.com/sdk/api_diff/14/changes/android.util.SparseArray.html
-http://developer.android.com/sdk/api_diff/14/changes/android.util.SparseBooleanArray.html
-http://developer.android.com/sdk/api_diff/14/changes/android.util.SparseIntArray.html
-http://developer.android.com/sdk/api_diff/14/changes/android.speech.SpeechRecognizer.html
-http://developer.android.com/sdk/api_diff/14/changes/android.database.sqlite.SQLiteOpenHelper.html
-http://developer.android.com/sdk/api_diff/14/changes/android.database.sqlite.SQLiteQueryBuilder.html
-http://developer.android.com/sdk/api_diff/14/changes/android.net.SSLCertificateSocketFactory.html
-http://developer.android.com/sdk/api_diff/14/changes/android.net.http.SslError.html
-http://developer.android.com/sdk/api_diff/14/changes/android.widget.StackView.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.Surface.html
-http://developer.android.com/sdk/api_diff/14/changes/android.graphics.SurfaceTexture.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.preference.html
-http://developer.android.com/sdk/api_diff/14/changes/android.content.SyncAdapterType.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.speech.tts.html
-http://developer.android.com/sdk/api_diff/14/changes/dalvik.annotation.TestTarget.html
-http://developer.android.com/sdk/api_diff/14/changes/dalvik.annotation.TestTargetClass.html
-http://developer.android.com/sdk/api_diff/14/changes/android.speech.tts.TextToSpeech.html
-http://developer.android.com/sdk/api_diff/14/changes/android.speech.tts.TextToSpeech.Engine.html
-http://developer.android.com/sdk/api_diff/14/changes/android.widget.TextView.html
-http://developer.android.com/sdk/api_diff/14/changes/android.net.TrafficStats.html
-http://developer.android.com/sdk/api_diff/14/changes/android.animation.TypeEvaluator.html
-http://developer.android.com/sdk/api_diff/14/changes/java.security.UnresolvedPermission.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.View.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.ViewConfiguration.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.ViewGroup.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.ViewParent.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.ViewPropertyAnimator.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.net.html
-http://developer.android.com/sdk/api_diff/14/changes/android.app.WallpaperManager.html
-http://developer.android.com/sdk/api_diff/14/changes/android.service.wallpaper.WallpaperService.Engine.html
-http://developer.android.com/sdk/api_diff/14/changes/android.webkit.WebChromeClient.html
-http://developer.android.com/sdk/api_diff/14/changes/android.webkit.WebSettings.html
-http://developer.android.com/sdk/api_diff/14/changes/android.webkit.WebSettings.TextSize.html
-http://developer.android.com/sdk/api_diff/14/changes/android.webkit.WebView.HitTestResult.html
-http://developer.android.com/sdk/api_diff/14/changes/android.net.wifi.WifiManager.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.Window.html
-http://developer.android.com/sdk/api_diff/14/changes/android.view.WindowManager.LayoutParams.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.net.wifi.html
-http://developer.android.com/sdk/api_diff/14/changes/jdiff_statistics.html
-http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/Message.html
-http://developer.android.com/sdk/api_diff/10/changes/methods_index_removals.html
-http://developer.android.com/sdk/api_diff/10/changes/methods_index_additions.html
-http://developer.android.com/guide/google/gcm/client-javadoc/index.html?deprecated-list.html
-http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetProvider.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetConfigure.html
-http://developer.android.com/resources/samples/images/StackWidget.png
-http://developer.android.com/sdk/api_diff/6/changes/methods_index_changes.html
-http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/Sender.html
-http://developer.android.com/sdk/api_diff/6/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/6/changes/fields_index_changes.html
-http://developer.android.com/sdk/api_diff/12/changes/methods_index_removals.html
-http://developer.android.com/sdk/api_diff/12/changes/methods_index_additions.html
-http://developer.android.com/sdk/api_diff/12/changes/methods_index_changes.html
-http://developer.android.com/sdk/api_diff/13/changes/classes_index_additions.html
-http://developer.android.com/sdk/api_diff/13/changes/classes_index_changes.html
-http://developer.android.com/guide/topics/location/obtaining-user-location.html
-http://developer.android.com/resources/tutorials/views/hello-autocomplete.html
-http://developer.android.com/sdk/api_diff/9/changes/jdiff_topleftframe.html
-http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_all.html
-http://developer.android.com/sdk/api_diff/9/changes/changes-summary.html
-http://developer.android.com/shareables/app_widget_templates-v4.0.zip
-http://developer.android.com/sdk/api_diff/7/changes/constructors_index_additions.html
-http://developer.android.com/guide/google/gcm/client-javadoc/index.html?overview-tree.html
-http://developer.android.com/sdk/api_diff/12/changes/packages_index_additions.html
-http://developer.android.com/sdk/api_diff/12/changes/packages_index_changes.html
-http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_removals.html
-http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_changes.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.AbstractExecutorService.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_java.util.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.locks.AbstractOwnableSynchronizer.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_java.util.concurrent.locks.html
-http://developer.android.com/sdk/api_diff/9/changes/android.content.AbstractThreadedSyncAdapter.html
-http://developer.android.com/sdk/api_diff/9/changes/java.security.AccessController.html
-http://developer.android.com/sdk/api_diff/9/changes/android.location.Criteria.html
-http://developer.android.com/sdk/api_diff/9/changes/android.provider.Settings.html
-http://developer.android.com/sdk/api_diff/9/changes/android.app.Activity.html
-http://developer.android.com/sdk/api_diff/9/changes/android.content.pm.ActivityInfo.html
-http://developer.android.com/sdk/api_diff/9/changes/android.app.ActivityManager.RunningAppProcessInfo.html
-http://developer.android.com/sdk/api_diff/9/changes/android.view.MotionEvent.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.sql.PooledConnection.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.provider.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.Calendar.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_dalvik.system.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.ThreadPoolExecutor.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.app.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.app.admin.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.content.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.content.pm.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.content.res.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.graphics.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.hardware.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.location.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.media.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.net.wifi.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.opengl.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.os.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.service.wallpaper.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.telephony.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.telephony.gsm.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.test.mock.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.text.format.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.util.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.view.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.view.inputmethod.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.webkit.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_android.widget.html
-http://developer.android.com/sdk/api_diff/9/changes/android.content.pm.ApplicationInfo.html
-http://developer.android.com/sdk/api_diff/9/changes/android.content.SharedPreferences.Editor.html
-http://developer.android.com/sdk/api_diff/9/changes/java.lang.reflect.Array.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.Array.html
-http://developer.android.com/sdk/api_diff/9/changes/java.nio.Buffer.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.Arrays.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.Collections.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicBoolean.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicInteger.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicIntegerArray.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicIntegerFieldUpdater.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLong.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLongArray.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicLongFieldUpdater.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReference.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReferenceArray.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.atomic.AtomicReferenceFieldUpdater.html
-http://developer.android.com/sdk/api_diff/9/changes/android.media.AudioTrack.html
-http://developer.android.com/sdk/api_diff/9/changes/android.media.MediaPlayer.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.DatabaseMetaData.html
-http://developer.android.com/sdk/api_diff/9/changes/android.view.inputmethod.BaseInputConnection.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.BatchUpdateException.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.Blob.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_java.util.concurrent.html
-http://developer.android.com/sdk/api_diff/9/changes/java.text.BreakIterator.html
-http://developer.android.com/sdk/api_diff/9/changes/android.os.Build.html
-http://developer.android.com/sdk/api_diff/9/changes/android.os.Build.VERSION_CODES.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.Executors.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.CallableStatement.html
-http://developer.android.com/sdk/api_diff/9/changes/android.media.CamcorderProfile.html
-http://developer.android.com/sdk/api_diff/9/changes/android.hardware.Camera.html
-http://developer.android.com/sdk/api_diff/9/changes/android.hardware.Camera.Parameters.html
-http://developer.android.com/sdk/api_diff/9/changes/android.media.CameraProfile.html
-http://developer.android.com/sdk/api_diff/9/changes/java.io.File.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.TreeSet.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.TreeMap.html
-http://developer.android.com/sdk/api_diff/9/changes/java.lang.Class.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.ResourceBundle.html
-http://developer.android.com/sdk/api_diff/9/changes/java.io.PrintStream.html
-http://developer.android.com/sdk/api_diff/9/changes/java.io.PrintWriter.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_java.sql.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.Clob.html
-http://developer.android.com/sdk/api_diff/9/changes/android.app.Notification.html
-http://developer.android.com/sdk/api_diff/9/changes/android.widget.RemoteViews.html
-http://developer.android.com/sdk/api_diff/9/changes/java.text.CollationKey.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_javax.sql.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.ConcurrentHashMap.html
-http://developer.android.com/sdk/api_diff/9/changes/android.content.res.Configuration.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.Connection.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.sql.ConnectionPoolDataSource.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_java.io.html
-http://developer.android.com/sdk/api_diff/9/changes/java.lang.System.html
-http://developer.android.com/sdk/api_diff/9/changes/android.provider.ContactsContract.CommonDataKinds.Nickname.html
-http://developer.android.com/sdk/api_diff/9/changes/android.content.Context.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_java.net.html
-http://developer.android.com/sdk/api_diff/9/changes/java.lang.Math.html
-http://developer.android.com/sdk/api_diff/9/changes/java.lang.StrictMath.html
-http://developer.android.com/sdk/api_diff/9/changes/android.os.ParcelFileDescriptor.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_dalvik.bytecode.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.sql.DataSource.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.DataTruncation.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.xml.datatype.DatatypeFactory.html
-http://developer.android.com/sdk/api_diff/9/changes/java.text.DateFormatSymbols.html
-http://developer.android.com/sdk/api_diff/9/changes/android.text.format.DateUtils.html
-http://developer.android.com/sdk/api_diff/9/changes/java.text.DecimalFormatSymbols.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.ScheduledThreadPoolExecutor.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_java.util.zip.html
-http://developer.android.com/sdk/api_diff/9/changes/android.util.DisplayMetrics.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.LinkedList.html
-http://developer.android.com/sdk/api_diff/9/changes/android.view.KeyEvent.html
-http://developer.android.com/sdk/api_diff/9/changes/android.app.admin.DevicePolicyManager.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.security.auth.Subject.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.xml.parsers.DocumentBuilderFactory.html
-http://developer.android.com/sdk/api_diff/9/changes/java.lang.Double.html
-http://developer.android.com/sdk/api_diff/9/changes/android.os.DropBoxManager.Entry.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.net.ssl.SSLContextSpi.html
-http://developer.android.com/sdk/api_diff/9/changes/java.lang.Enum.html
-http://developer.android.com/sdk/api_diff/9/changes/android.os.Environment.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.ExecutorService.html
-http://developer.android.com/sdk/api_diff/9/changes/android.media.ExifInterface.html
-http://developer.android.com/sdk/api_diff/9/changes/org.apache.http.protocol.HTTP.html
-http://developer.android.com/sdk/api_diff/9/changes/android.content.pm.PackageManager.html
-http://developer.android.com/sdk/api_diff/9/changes/android.R.attr.html
-http://developer.android.com/sdk/api_diff/9/changes/dalvik.system.PathClassLoader.html
-http://developer.android.com/sdk/api_diff/9/changes/android.content.pm.PackageInfo.html
-http://developer.android.com/sdk/api_diff/9/changes/java.lang.Float.html
-http://developer.android.com/sdk/api_diff/9/changes/java.text.Format.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.FutureTask.html
-http://developer.android.com/sdk/api_diff/9/changes/android.location.Geocoder.html
-http://developer.android.com/sdk/api_diff/9/changes/android.test.mock.MockPackageManager.html
-http://developer.android.com/sdk/api_diff/9/changes/android.hardware.SensorManager.html
-http://developer.android.com/sdk/api_diff/9/changes/java.lang.Package.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.locks.LockSupport.html
-http://developer.android.com/sdk/api_diff/9/changes/java.lang.String.html
-http://developer.android.com/sdk/api_diff/9/changes/java.lang.reflect.Member.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.net.ssl.SSLContext.html
-http://developer.android.com/sdk/api_diff/9/changes/android.view.View.html
-http://developer.android.com/sdk/api_diff/9/changes/java.net.NetworkInterface.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.ResultSet.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.net.ssl.SSLSessionContext.html
-http://developer.android.com/sdk/api_diff/9/changes/java.security.Policy.html
-http://developer.android.com/sdk/api_diff/9/changes/android.hardware.Sensor.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.security.auth.x500.X500Principal.html
-http://developer.android.com/sdk/api_diff/9/changes/java.net.SocketImpl.html
-http://developer.android.com/sdk/api_diff/9/changes/android.widget.ListView.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.net.ssl.KeyStoreBuilderParameters.html
-http://developer.android.com/sdk/api_diff/9/changes/android.webkit.WebSettings.html
-http://developer.android.com/sdk/api_diff/9/changes/android.telephony.gsm.GsmCellLocation.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.locks.ReentrantReadWriteLock.html
-http://developer.android.com/sdk/api_diff/9/changes/java.text.NumberFormat.html
-http://developer.android.com/sdk/api_diff/9/changes/android.view.ViewConfiguration.html
-http://developer.android.com/sdk/api_diff/9/changes/android.view.inputmethod.InputConnection.html
-http://developer.android.com/sdk/api_diff/9/changes/android.view.inputmethod.InputConnectionWrapper.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.net.ssl.SSLEngine.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.net.ssl.SSLSocket.html
-http://developer.android.com/sdk/api_diff/9/changes/android.content.IntentSender.html
-http://developer.android.com/sdk/api_diff/9/changes/android.opengl.GLES20.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.logging.Logger.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.net.ssl.HandshakeCompletedEvent.html
-http://developer.android.com/sdk/api_diff/9/changes/android.graphics.ImageFormat.html
-http://developer.android.com/sdk/api_diff/9/changes/android.provider.MediaStore.html
-http://developer.android.com/sdk/api_diff/9/changes/java.io.IOException.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.Statement.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.SQLException.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_java.awt.font.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_java.lang.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_java.lang.reflect.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_java.nio.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_java.security.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_java.text.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_java.util.concurrent.atomic.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_java.util.logging.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_javax.net.ssl.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_javax.security.auth.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_javax.security.auth.x500.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_javax.xml.datatype.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_javax.xml.parsers.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_javax.xml.transform.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_javax.xml.validation.html
-http://developer.android.com/sdk/api_diff/9/changes/java.awt.font.TextAttribute.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.Properties.html
-http://developer.android.com/sdk/api_diff/9/changes/android.content.pm.PackageItemInfo.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.Locale.html
-http://developer.android.com/sdk/api_diff/9/changes/android.location.LocationManager.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.Types.html
-http://developer.android.com/sdk/api_diff/9/changes/java.io.ObjectStreamClass.html
-http://developer.android.com/sdk/api_diff/9/changes/android.Manifest.permission.html
-http://developer.android.com/sdk/api_diff/9/changes/android.media.MediaRecorder.html
-http://developer.android.com/sdk/api_diff/9/changes/android.telephony.TelephonyManager.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.xml.parsers.SAXParserFactory.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.xml.transform.TransformerFactory.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.xml.validation.SchemaFactory.html
-http://developer.android.com/sdk/api_diff/9/changes/android.service.wallpaper.WallpaperService.Engine.html
-http://developer.android.com/sdk/api_diff/9/changes/dalvik.bytecode.Opcodes.html
-http://developer.android.com/sdk/api_diff/9/changes/pkg_org.apache.http.protocol.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.ParameterMetaData.html
-http://developer.android.com/sdk/api_diff/9/changes/java.io.PipedInputStream.html
-http://developer.android.com/sdk/api_diff/9/changes/java.io.PipedReader.html
-http://developer.android.com/sdk/api_diff/9/changes/android.os.PowerManager.WakeLock.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.PreparedStatement.html
-http://developer.android.com/sdk/api_diff/9/changes/android.R.drawable.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.PropertyResourceBundle.html
-http://developer.android.com/sdk/api_diff/9/changes/android.R.style.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.SQLInput.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.Scanner.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.ResultSetMetaData.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.sql.RowSet.html
-http://developer.android.com/sdk/api_diff/9/changes/android.net.wifi.WifiManager.WifiLock.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.SQLOutput.html
-http://developer.android.com/sdk/api_diff/9/changes/java.sql.SQLWarning.html
-http://developer.android.com/sdk/api_diff/9/changes/javax.net.ssl.SSLSessionBindingEvent.html
-http://developer.android.com/sdk/api_diff/9/changes/android.view.Window.html
-http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.TimeUnit.html
-http://developer.android.com/sdk/api_diff/9/changes/java.security.UnrecoverableKeyException.html
-http://developer.android.com/sdk/api_diff/9/changes/jdiff_statistics.html
-http://developer.android.com/guide/google/gcm/server-javadoc/index.html?help-doc.html
-http://developer.android.com/sdk/api_diff/10/changes/alldiffs_index_removals.html
-http://developer.android.com/sdk/api_diff/10/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/10/changes/alldiffs_index_changes.html
-http://developer.android.com/sdk/api_diff/5/changes/packages_index_additions.html
-http://developer.android.com/sdk/api_diff/5/changes/packages_index_changes.html
-http://developer.android.com/sdk/api_diff/14/changes/constructors_index_additions.html
-http://developer.android.com/sdk/api_diff/14/changes/constructors_index_changes.html
-http://developer.android.com/guide/google/gcm/server-javadoc/index.html?constant-values.html
-http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/InvalidRequestException.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.accessibilityservice.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.accounts.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.animation.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.app.admin.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.appwidget.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.content.pm.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.database.sqlite.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.graphics.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.inputmethodservice.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.net.http.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.nfc.tech.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.opengl.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.os.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.service.wallpaper.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.speech.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.test.mock.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.text.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.view.inputmethod.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_android.webkit.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_dalvik.annotation.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_java.io.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_java.lang.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_java.lang.ref.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_java.lang.reflect.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_java.net.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_java.security.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_java.util.logging.html
-http://developer.android.com/sdk/api_diff/14/changes/pkg_javax.security.auth.html
-http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/GCMRegistrar.html
-http://developer.android.com/sdk/api_diff/10/changes/classes_index_additions.html
-http://developer.android.com/sdk/api_diff/10/changes/classes_index_changes.html
-http://developer.android.com/sdk/api_diff/14/changes/alldiffs_index_removals.html
-http://developer.android.com/sdk/api_diff/14/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/14/changes/alldiffs_index_changes.html
-http://developer.android.com/sdk/api_diff/5/changes/methods_index_additions.html
-http://developer.android.com/sdk/api_diff/5/changes/methods_index_changes.html
-http://developer.android.com/guide/developing/debug-tasks.html
-http://developer.android.com/sdk/api_diff/11/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/11/changes/fields_index_changes.html
-http://developer.android.com/sdk/api_diff/14/changes/fields_index_removals.html
-http://developer.android.com/sdk/api_diff/14/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/14/changes/fields_index_changes.html
-http://developer.android.com/sdk/api_diff/14/changes/packages_index_additions.html
-http://developer.android.com/sdk/api_diff/14/changes/packages_index_changes.html
-http://developer.android.com/sdk/api_diff/15/changes/packages_index_changes.html
-http://developer.android.com/guide/google/gcm/server-javadoc/index.html?overview-tree.html
-http://developer.android.com/sdk/api_diff/5/changes/fields_index_removals.html
-http://developer.android.com/sdk/api_diff/5/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/5/changes/fields_index_changes.html
-http://developer.android.com/sdk/api_diff/6/changes/packages_index_changes.html
-http://developer.android.com/guide/google/gcm/server-javadoc/index.html?deprecated-list.html
-http://developer.android.com/tools/debug-tasks.html
-http://developer.android.com/sdk/api_diff/15/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/15/changes/alldiffs_index_changes.html
-http://developer.android.com/sdk/api_diff/15/changes/methods_index_additions.html
-http://developer.android.com/sdk/api_diff/15/changes/methods_index_changes.html
-http://developer.android.com/sdk/api_diff/3/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/3/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/3/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/3/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/3/changes/fields_index_all.html
-http://developer.android.com/sdk/api_diff/7/changes/methods_index_additions.html
-http://developer.android.com/sdk/api_diff/7/changes/methods_index_changes.html
-http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/GCMBroadcastReceiver.html
-http://developer.android.com/sdk/api_diff/12/changes/alldiffs_index_removals.html
-http://developer.android.com/sdk/api_diff/12/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/12/changes/alldiffs_index_changes.html
-http://developer.android.com/guide/google/gcm/server-javadoc/index.html?serialized-form.html
-http://developer.android.com/sdk/api_diff/3/changes/methods_index_removals.html
-http://developer.android.com/sdk/api_diff/3/changes/methods_index_additions.html
-http://developer.android.com/sdk/api_diff/3/changes/methods_index_changes.html
-http://developer.android.com/sdk/api_diff/4/changes/jdiff_topleftframe.html
-http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_all.html
-http://developer.android.com/sdk/api_diff/4/changes/changes-summary.html
-http://developer.android.com/sdk/api_diff/14/changes/methods_index_removals.html
-http://developer.android.com/sdk/api_diff/14/changes/methods_index_additions.html
-http://developer.android.com/sdk/api_diff/14/changes/methods_index_changes.html
-http://developer.android.com/sdk/api_diff/3/changes/fields_index_removals.html
-http://developer.android.com/sdk/api_diff/3/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/3/changes/fields_index_changes.html
-http://developer.android.com/sdk/api_diff/4/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/4/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/4/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/4/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/4/changes/fields_index_all.html
-http://developer.android.com/sdk/api_diff/4/changes/packages_index_additions.html
-http://developer.android.com/sdk/api_diff/4/changes/packages_index_changes.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.app.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.content.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.content.pm.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.content.res.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.graphics.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.graphics.drawable.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.hardware.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.inputmethodservice.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.location.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.media.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.net.wifi.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.opengl.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.os.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.provider.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.telephony.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.telephony.gsm.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.test.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.test.mock.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.text.style.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.util.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.view.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.view.animation.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_android.widget.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_java.util.concurrent.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_java.util.concurrent.locks.html
-http://developer.android.com/sdk/api_diff/4/changes/methods_index_removals.html
-http://developer.android.com/sdk/api_diff/4/changes/methods_index_additions.html
-http://developer.android.com/sdk/api_diff/4/changes/methods_index_changes.html
-http://developer.android.com/sdk/api_diff/4/changes/android.view.View.html
-http://developer.android.com/sdk/api_diff/4/changes/android.test.AndroidTestCase.html
-http://developer.android.com/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.ComponentName.html
-http://developer.android.com/sdk/api_diff/4/changes/android.view.VelocityTracker.html
-http://developer.android.com/sdk/api_diff/4/changes/android.graphics.Typeface.html
-http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.Drawable.html
-http://developer.android.com/sdk/api_diff/4/changes/android.net.wifi.WifiManager.html
-http://developer.android.com/sdk/api_diff/4/changes/android.graphics.BitmapFactory.html
-http://developer.android.com/sdk/api_diff/4/changes/android.app.Activity.html
-http://developer.android.com/sdk/api_diff/4/changes/android.app.Dialog.html
-http://developer.android.com/sdk/api_diff/4/changes/android.view.Window.Callback.html
-http://developer.android.com/sdk/api_diff/4/changes/android.telephony.gsm.SmsManager.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.Context.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.ContextWrapper.html
-http://developer.android.com/sdk/api_diff/4/changes/android.test.mock.MockContext.html
-http://developer.android.com/sdk/api_diff/4/changes/android.media.MediaRecorder.html
-http://developer.android.com/sdk/api_diff/4/changes/android.os.RemoteCallbackList.html
-http://developer.android.com/sdk/api_diff/4/changes/android.widget.ListView.html
-http://developer.android.com/sdk/api_diff/4/changes/android.widget.TabWidget.html
-http://developer.android.com/sdk/api_diff/4/changes/android.graphics.Bitmap.html
-http://developer.android.com/sdk/api_diff/4/changes/android.graphics.Canvas.html
-http://developer.android.com/sdk/api_diff/4/changes/android.graphics.NinePatch.html
-http://developer.android.com/sdk/api_diff/4/changes/android.widget.AutoCompleteTextView.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ConfigurationInfo.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.Intent.html
-http://developer.android.com/sdk/api_diff/4/changes/android.app.PendingIntent.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.PackageManager.html
-http://developer.android.com/sdk/api_diff/4/changes/android.test.mock.MockPackageManager.html
-http://developer.android.com/sdk/api_diff/4/changes/android.view.ViewConfiguration.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.ContentProvider.html
-http://developer.android.com/sdk/api_diff/4/changes/android.location.Address.html
-http://developer.android.com/sdk/api_diff/4/changes/android.media.AudioManager.html
-http://developer.android.com/sdk/api_diff/4/changes/android.widget.PopupWindow.html
-http://developer.android.com/sdk/api_diff/4/changes/android.widget.TabHost.TabSpec.html
-http://developer.android.com/sdk/api_diff/4/changes/android.inputmethodservice.KeyboardView.html
-http://developer.android.com/sdk/api_diff/4/changes/android.app.LauncherActivity.html
-http://developer.android.com/sdk/api_diff/4/changes/android.app.SearchManager.html
-http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.BitmapDrawable.html
-http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.NinePatchDrawable.html
-http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/Message.Builder.html
-http://developer.android.com/sdk/api_diff/3/changes/classes_index_additions.html
-http://developer.android.com/sdk/api_diff/3/changes/classes_index_changes.html
-http://developer.android.com/sdk/api_diff/4/changes/jdiff_statistics.html
-http://developer.android.com/sdk/api_diff/4/changes/android.Manifest.permission.html
-http://developer.android.com/sdk/api_diff/4/changes/android.Manifest.permission_group.html
-http://developer.android.com/sdk/api_diff/4/changes/android.R.anim.html
-http://developer.android.com/sdk/api_diff/4/changes/android.R.attr.html
-http://developer.android.com/sdk/api_diff/4/changes/android.R.drawable.html
-http://developer.android.com/sdk/api_diff/4/changes/android.R.style.html
-http://developer.android.com/sdk/api_diff/16/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/16/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/16/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/16/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/16/changes/fields_index_all.html
-http://developer.android.com/sdk/api_diff/4/changes/android.app.LauncherActivity.ListItem.html
-http://developer.android.com/sdk/api_diff/4/changes/android.widget.CheckedTextView.html
-http://developer.android.com/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.MessageClass.html
-http://developer.android.com/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.SubmitPdu.html
-http://developer.android.com/guide/google/gcm/client-javadoc/index.html?constant-values.html
-http://developer.android.com/sdk/api_diff/16/changes/fields_index_removals.html
-http://developer.android.com/sdk/api_diff/16/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/16/changes/fields_index_changes.html
-http://developer.android.com/sdk/api_diff/4/changes/android.util.Config.html
-http://developer.android.com/sdk/api_diff/4/changes/android.util.DisplayMetrics.html
-http://developer.android.com/sdk/api_diff/4/changes/android.util.TypedValue.html
-http://developer.android.com/sdk/api_diff/16/changes/classes_index_additions.html
-http://developer.android.com/sdk/api_diff/16/changes/classes_index_changes.html
-http://developer.android.com/sdk/api_diff/16/changes/constructors_index_removals.html
-http://developer.android.com/sdk/api_diff/16/changes/constructors_index_additions.html
-http://developer.android.com/sdk/api_diff/16/changes/constructors_index_changes.html
-http://developer.android.com/sdk/api_diff/10/changes/packages_index_additions.html
-http://developer.android.com/sdk/api_diff/10/changes/packages_index_changes.html
-http://developer.android.com/sdk/api_diff/4/changes/android.graphics.BitmapFactory.Options.html
-http://developer.android.com/sdk/api_diff/7/changes/classes_index_additions.html
-http://developer.android.com/sdk/api_diff/7/changes/classes_index_changes.html
-http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_removals.html
-http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_changes.html
-http://developer.android.com/sdk/api_diff/4/changes/java.util.concurrent.locks.AbstractQueuedSynchronizer.html
-http://developer.android.com/sdk/api_diff/4/changes/android.provider.Settings.Secure.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ActivityInfo.html
-http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.AnimationDrawable.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ApplicationInfo.html
-http://developer.android.com/sdk/api_diff/4/changes/android.os.Build.html
-http://developer.android.com/sdk/api_diff/4/changes/android.os.Build.VERSION.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.res.Configuration.html
-http://developer.android.com/sdk/api_diff/4/changes/android.telephony.TelephonyManager.html
-http://developer.android.com/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Genres.Members.html
-http://developer.android.com/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Media.html
-http://developer.android.com/sdk/api_diff/4/changes/android.text.style.ImageSpan.html
-http://developer.android.com/sdk/api_diff/4/changes/android.hardware.SensorManager.html
-http://developer.android.com/sdk/api_diff/4/changes/android.media.MediaRecorder.AudioSource.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ProviderInfo.html
-http://developer.android.com/sdk/api_diff/4/changes/android.provider.Settings.System.html
-http://developer.android.com/sdk/api_diff/4/changes/android.view.Surface.html
-http://developer.android.com/sdk/api_diff/4/changes/java.util.concurrent.TimeUnit.html
-http://developer.android.com/sdk/api_diff/4/changes/android.media.ToneGenerator.html
-http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/package-tree.html
-http://developer.android.com/sdk/api_diff/4/changes/classes_index_removals.html
-http://developer.android.com/sdk/api_diff/4/changes/classes_index_additions.html
-http://developer.android.com/sdk/api_diff/4/changes/classes_index_changes.html
 http://developer.android.com/sdk/api_diff/3/changes/packages_index_additions.html
 http://developer.android.com/sdk/api_diff/3/changes/packages_index_changes.html
-http://developer.android.com/sdk/api_diff/7/changes/packages_index_additions.html
-http://developer.android.com/sdk/api_diff/7/changes/packages_index_changes.html
-http://developer.android.com/sdk/api_diff/16/changes/packages_index_additions.html
-http://developer.android.com/sdk/api_diff/16/changes/packages_index_changes.html
-http://developer.android.com/sdk/api_diff/13/changes/packages_index_changes.html
-http://developer.android.com/sdk/api_diff/4/changes/fields_index_removals.html
-http://developer.android.com/sdk/api_diff/4/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/4/changes/fields_index_changes.html
-http://developer.android.com/sdk/api_diff/16/changes/methods_index_removals.html
-http://developer.android.com/sdk/api_diff/16/changes/methods_index_additions.html
-http://developer.android.com/sdk/api_diff/16/changes/methods_index_changes.html
-http://developer.android.com/sdk/api_diff/3/changes/constructors_index_removals.html
-http://developer.android.com/sdk/api_diff/3/changes/constructors_index_additions.html
-http://developer.android.com/sdk/api_diff/3/changes/constructors_index_changes.html
-http://developer.android.com/sdk/api_diff/10/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/4/changes/constructors_index_additions.html
-http://developer.android.com/sdk/api_diff/4/changes/constructors_index_changes.html
-http://developer.android.com/sdk/api_diff/9/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/9/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/9/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/9/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/9/changes/fields_index_all.html
-http://developer.android.com/sdk/api_diff/9/changes/constructors_index_removals.html
-http://developer.android.com/sdk/api_diff/9/changes/constructors_index_additions.html
-http://developer.android.com/sdk/api_diff/9/changes/constructors_index_changes.html
-http://developer.android.com/sdk/api_diff/9/changes/classes_index_removals.html
-http://developer.android.com/sdk/api_diff/9/changes/classes_index_additions.html
-http://developer.android.com/sdk/api_diff/9/changes/classes_index_changes.html
-http://developer.android.com/sdk/api_diff/9/changes/methods_index_removals.html
-http://developer.android.com/sdk/api_diff/9/changes/methods_index_additions.html
-http://developer.android.com/sdk/api_diff/9/changes/methods_index_changes.html
-http://developer.android.com/sdk/api_diff/9/changes/packages_index_additions.html
-http://developer.android.com/sdk/api_diff/9/changes/packages_index_changes.html
-http://developer.android.com/sdk/api_diff/9/changes/fields_index_removals.html
-http://developer.android.com/sdk/api_diff/9/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/9/changes/fields_index_changes.html
\ No newline at end of file
+http://developer.android.com/sdk/api_diff/8/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/8/changes/packages_index_changes.html
\ No newline at end of file
diff --git a/docs/html/tools/adk/adk.jd b/docs/html/tools/adk/adk.jd
index 2a0c717..049b6e9 100644
--- a/docs/html/tools/adk/adk.jd
+++ b/docs/html/tools/adk/adk.jd
@@ -41,7 +41,7 @@
 
       <h2>Download</h2>
       <ol>
-        <li><a href="https://dl-ssl.google.com/android/adk/adk_release_0512.zip">ADK package</a></li>
+        <li><a href="https://dl-ssl.google.com/android/adk/adk_release_20120606.zip">ADK package</a></li>
       </ol>
 
       <h2>See also</h2>
diff --git a/docs/html/tools/adk/adk2.jd b/docs/html/tools/adk/adk2.jd
index d5be8ab..0b18583 100644
--- a/docs/html/tools/adk/adk2.jd
+++ b/docs/html/tools/adk/adk2.jd
@@ -28,19 +28,22 @@
     <ol>
       <li><a href="https://developers.google.com/events/io/sessions/gooio2012/128/">
         Google I/O Session Video</a></li>
-      <li><a href="aoa.html">Android Open Accessory Protocol</a></li>
-      <li><a href="aoa2.html">Android Open Accessory Protocol 2.0</a></li>
+      <li><a href="http://source.android.com/tech/accessories/aoap/aoa.html">
+        Android Open Accessory Protocol</a></li>
+      <li><a href="http://source.android.com/tech/accessories/aoap/aoa2.html">
+        Android Open Accessory Protocol 2.0</a></li>
       <li><a href="{@docRoot}guide/topics/connectivity/usb/accessory.html">
         USB Accessory Dev Guide</a></li>
     </ol>
   </div>
 </div>
 
-<p>The Android Accessory Development Kit (ADK) for 2012 is the latest reference implementation of
-an <a href="aoa.html">Android Open Accessory</a> device, designed to help Android hardware accessory
-builders and software developers create accessories for Android. The ADK 2012 is based on the <a
-href="http://arduino.cc">Arduino</a> open source electronics prototyping platform, with some
-hardware and software extensions that allow it to communicate with Android devices.</p>
+<p>The Android Accessory Development Kit (ADK) for 2012 is the latest reference implementation of an
+<a href="http://source.android.com/tech/accessories/index.html">Android Open Accessory</a> device,
+designed to help Android hardware accessory builders and software developers create accessories
+for Android. The ADK 2012 is based on the <a href="http://arduino.cc">Arduino</a> open source
+electronics prototyping platform, with some hardware and software extensions that allow it to
+communicate with Android devices.</p>
 
 <p>A limited number of these kits were produced and distributed at the Google I/O 2012 developer
 conference. If you did not receive one of these kits, fear not! The specifications and design files
@@ -537,7 +540,7 @@
     L.accessorySend(outmsg, outmsgLen);
   }
   L.adkEventProcess();
-}  
+}
 </pre>
 
 <p>For more details, review the implementations of these methods in the {@code clock.ino}
@@ -604,8 +607,8 @@
 
 <p>One of the important new features introduced with the ADK 2012 is the ability to play audio over
 a USB connection. This innovation was introduced as an update to Android Open Accessory (AOA)
-<a href="aoa2.html">protocol 2.0</a> and is available on devices running Android 4.1 (API Level 16)
-and higher.</p>
+<a href="http://source.android.com/tech/accessories/aoap/aoa2.html">protocol 2.0</a> and is
+available on devices running Android 4.1 (API Level 16) and higher.</p>
 
 <p>The ADK 2012 provides a reference implementation of this functionality for accessory developers.
 No software application is required to be installed on the connected Android device, accessory
diff --git a/docs/html/tools/adk/aoa.jd b/docs/html/tools/adk/aoa.jd
deleted file mode 100644
index 7884d6e..0000000
--- a/docs/html/tools/adk/aoa.jd
+++ /dev/null
@@ -1,186 +0,0 @@
-page.title=Android Open Accessory Protocol
-@jd:body
-
-<div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-      <ol>
-        <li><a href="#accessory-protocol">Implementing the Android Accessory Protocol</a>
-          <ol>
-            <li><a href="#wait">Wait for and detect connected devices</a></li>
-            <li><a href="#determine">Determine the device's accessory mode support</a></li>
-            <li><a href="#start">Attempt to start the device in accessory mode</a></li>
-            <li><a href="#establish">Establish communication with the device</a></li>
-        </li>
-      </ol>
-      
-      <h2>See also</h2>
-      <ol>
-        <li><a href="aoa2.html">Android Open Accessory Protocol 2.0</a></li>
-        <li><a href="{@docRoot}guide/topics/connectivity/usb/accessory.html">USB Accessory Dev
-Guide</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>With Android 3.1, the platform introduces Android Open Accessory
-  support, which allows external USB hardware (an Android USB accessory) to interact with an
-  Android-powered device in a special accessory mode. When an Android-powered powered device is
-  in accessory mode, the connected accessory acts as the USB host (powers the bus and enumerates
-  devices) and the Android-powered device acts as the USB device. Android USB accessories are
-  specifically designed to attach to Android-powered devices and adhere to a simple protocol
-  (Android accessory protocol) that allows them to detect Android-powered devices that support
-  accessory mode. Accessories must also provide 500mA at 5V for charging power. Many previously
-  released Android-powered devices are only capable of acting as a USB device and cannot initiate
-  connections with external USB devices. Android Open Accessory support overcomes this limitation
-  and allows you to build accessories that can interact with an assortment of Android-powered
-  devices by allowing the accessory to initiate the connection.</p>
-
-  <p class="note"><strong>Note:</strong> Accessory mode is ultimately dependent on the device's
-  hardware and not all devices 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/connectivity/usb/accessory.html#manifest">USB Accessory</a> developer
-guide.</p>
-
-  <h2 id="accessory-protocol">Implementing the Android Accessory Protocol</h2>
-
-  <p>An Android USB accessory must adhere to Android Accessory Protocol, which defines how
-  an accessory detects and sets up communication with an Android-powered device. In general, an
-  accessory should carry out the following steps:</p>
-
-  <ol>
-    <li>Wait for and detect connected devices</li>
-
-    <li>Determine the device's accessory mode support</li>
-
-    <li>Attempt to start the device in accessory mode if needed</li>
-
-    <li>Establish communication with the device if it supports the Android accessory protocol</li>
-  </ol>
-
-  <p>The following sections go into depth about how to implement these steps.</p>
-
-  <h3 id="wait">Wait for and detect connected devices</h3>
-
-  <p>Your accessory should have logic to continuously check
-  for connected Android-powered devices. When a device is connected, your accessory should
-  determine if the device supports accessory mode.</p>
-
-  <h3 id="determine">Determine the device's accessory mode support</h3>
-
-
-  <p>When an Android-powered device is connected, it can be in one of three states:</p>
-
-  <ol type="a">
-    <li>The attached device supports Android accessory mode and is already in accessory mode.</li>
-
-    <li>The attached device supports Android accessory mode, but it is not in accessory mode.</li>
-
-    <li>The attached device does not support Android accessory mode.</li>
-  </ol>
-
-  <p>During the initial connection, the accessory should check the vendor and product IDs of the
-  connected device's USB device descriptor. The vendor ID should match Google's ID (0x18D1) and the
-  product ID should be 0x2D00 or 0x2D01 if the device is already in accessory mode (case A). If so,
-  the accessory can now <a href="#establish">establish communication with the device</a> through
-  bulk transfer endpoints with its own communication protocol. There is no need to start the device
-  in accessory mode.</p>
-
-  <p class="note"><strong>Note:</strong> 0x2D00 is reserved for Android-powered devices that
-  support accessory mode. 0x2D01 is reserved for devices that support accessory mode as well as the
-  ADB (Android Debug Bridge) protocol, which exposes a second interface with two bulk endpoints for
-  ADB. You can use these endpoints for debugging the accessory application if you are simulating
-  the accessory on a computer. In general, do not use this interface unless your accessory is
-  implementing a passthrough to ADB on the device.</p>
-
-  <p>If the vendor and product ID do not match, there is no way to distinguish between states b and
-  c, so the accessory <a href="#start">attempts to start the device in accessory mode</a> to figure
-  out if the device is supported.</p>
-
-  <h3 id="start">Attempt to start the device in accessory mode</h3>
-
-  <p>If the vendor and product IDs do not correspond to an Android-powered device in accessory
-  mode, the accessory cannot discern whether the device supports accessory mode and is not in that
-  state, or if the device does not support accessory mode at all. This is because devices that
-  support accessory mode but aren't in it initially report the device's manufacturer vendor ID and
-  product ID, and not the special Android Open Accessory ones. In either case, the accessory should
-try to start
-  the device into accessory mode to figure out if the device supports it. The following steps
-  explain how to do this:</p>
-
-  <ol>
-    <li>Send a 51 control request ("Get Protocol") to figure out if the device supports the Android
-    accessory protocol. A non-zero number is returned if the protocol is supported, which
-    represents the version of the protocol that the device supports (currently, only version 1
-    exists). This request is a control request on endpoint 0 with the following characteristics:
-      <pre>
-requestType:    USB_DIR_IN | USB_TYPE_VENDOR
-request:        51
-value:          0
-index:          0
-data:           protocol version number (16 bits little endian sent from the device to the
-accessory)
-</pre>
-    </li>
-
-    <li>If the device returns a proper protocol version, send identifying string information to the
-    device. This information allows the device to figure out an appropriate application for this
-    accessory and also present the user with a URL if an appropriate application does not exist.
-    These requests are control requests on endpoint 0 (for each string ID) with the following
-    characteristics:
-      <pre>
-requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
-request:        52
-value:          0
-index:          string ID
-data            zero terminated UTF8 string sent from accessory to device
-</pre>
-
-      <p>The following string IDs are supported, with a maximum size of 256 bytes for each string
-      (must be zero terminated with \0).</p>
-      <pre>
-manufacturer name:  0
-model name:         1
-description:        2
-version:            3
-URI:                4
-serial number:      5
-</pre>
-    </li>
-
-    <li>When the identifying strings are sent, request the device start up in accessory mode. This
-    request is a control request on endpoint 0 with the following characteristics:
-      <pre>
-requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
-request:        53
-value:          0
-index:          0
-data:           none
-</pre>
-    </li>
-  </ol>
-
-  <p>After sending the final control request, the connected USB device should re-introduce itself
-  on the bus in accessory mode and the accessory can re-enumerate the connected devices. The
-  algorithm jumps back to <a href="#determine">determining the device's accessory mode support</a>
-  to check for the vendor and product ID. The vendor ID and product ID of the device will be
-  different if the device successfully switched to accessory mode and will now correspond to
-  Google's vendor and product IDs instead of the device manufacturer's IDs. The accessory can now
-  <a href="#establish">establish communication with the device</a>.</p>
-
-  <p>If at any point these steps fail, the device does not support Android accessory mode and the
-  accessory should wait for the next device to be connected.</p>
-
-  <h3 id="establish">Establish communication with the device</h3>
-
-  <p>If an Android-powered device in accessory mode is detected, the accessory can query the
-  device's interface and endpoint descriptors to obtain the bulk endpoints to communicate with the
-  device. An Android-powered device that has a product ID of 0x2D00 has one interface with two bulk
-  endpoints for input and output communication. A device with product ID of 0x2D01 has two
-  interfaces with two bulk endpoints each for input and output communication. The first interface
-  is for standard communication while the second interface is for ADB communication. To communicate
-  on an interface, all you need to do is find the first bulk input and output endpoints, set the
-  device's configuration to a value of 1 with a SET_CONFIGURATION (0x09) device request, then
-  communicate using the endpoints.</p>
-
diff --git a/docs/html/tools/adk/aoa2.jd b/docs/html/tools/adk/aoa2.jd
deleted file mode 100644
index 2a3b2f0..0000000
--- a/docs/html/tools/adk/aoa2.jd
+++ /dev/null
@@ -1,227 +0,0 @@
-page.title=Android Open Accessory Protocol 2.0
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>In this document</h2>
-    <ol>
-      <li><a href="#detecting">Detecting Android Open Accessory 2.0 Support</a></li>
-      <li><a href="#audio-support">Audio Support</a></li>
-      <li><a href="#hid">HID Support</a></li>
-      <li><a href="#interop-aoa">Interoperability with AOA 1.0 Features</a></li>
-      <li><a href="#no-app-conn">Connecting AOA 2.0 without an Android App</a></li>
-    </ol>
-
-    <h2>See also</h2>
-    <ol>
-      <li><a href="aoa.html">Android Open Accessory Protocol</a></li>
-    </ol>
-  </div>
-</div>
-
-<p>This document describes the changes to the Android Open Accessory (AOA) protocol since its
-initial release, and is a supplement to the documentation of the <a href="oap.html">first
-release of AOA</a>.</p>
-
-<p>The Android Open Accessory Protocol 2.0 adds two new features: audio output (from the Android
-device to the accessory) and support for the accessory acting as one or more human interface devices
-(HID) to the Android device. The Android SDK APIs available to Android application developers
-remain unchanged.</p>
-
-<h2 id="detecting">Detecting Android Open Accessory 2.0 Support</h2>
-
-<p>In order for an accessory to determine if a connected Android device supports accessories and at
-what protocol level, the accessory must send a {@code getProtocol()} command and check the result.
-Android devices supporting the initial version of the Android Open Accessory protocol return a
-{@code 1}, representing the protocol version number. Devices that support the new features described
-in this document must return {@code 2} for the protocol version. Version 2.0 of the protocol is
-upwardly compatible, so accessories designed for the original accessory protocol still work
-with newer Android devices. The following code from the <a href="adk.html">Android Development Kit
-2011</a> {@code AndroidAccessory} library demonstrates this protocol check:</p>
-
-<pre>
-bool AndroidAccessory::switchDevice(byte addr)
-{
-    int protocol = getProtocol(addr);
-    if (protocol >= 1) {
-        Serial.print("device supports protocol 1 or higher\n");
-    } else {
-        Serial.print("could not read device protocol version\n");
-        return false;
-    }
-
-    sendString(addr, ACCESSORY_STRING_MANUFACTURER, manufacturer);
-    sendString(addr, ACCESSORY_STRING_MODEL, model);
-    sendString(addr, ACCESSORY_STRING_DESCRIPTION, description);
-    sendString(addr, ACCESSORY_STRING_VERSION, version);
-    sendString(addr, ACCESSORY_STRING_URI, uri);
-    sendString(addr, ACCESSORY_STRING_SERIAL, serial);
-
-    usb.ctrlReq(addr, 0, USB_SETUP_HOST_TO_DEVICE | USB_SETUP_TYPE_VENDOR |
-USB_SETUP_RECIPIENT_DEVICE,
-                ACCESSORY_START, 0, 0, 0, 0, NULL);
-    return true;
-}
-</pre>
-
-<p>AOA 2.0 includes new USB product IDs, one for each combination of USB interfaces available when
-in accessory mode. The possible USB interfaces are:</p>
-
-<ul>
-  <li><strong>accessory</strong> - An interface providing 2 bulk endpoints for communicating with an
-Android application.</li>
-  <li><strong>audio</strong> -A new standard USB audio class interface for streaming audio
-from an Android device to an accessory.</li>
-  <li><strong>adb</strong> - An interface intended only for debugging purposes while developing an
-accessory. Only enabled if the user has USB Debugging enabled in Settings on the Android device.
-  </li>
-</ul>
-
-<p>In AOA 1.0, there are only two USB product IDs:</p>
-
-<ul>
-  <li>{@code 0x2D00} - accessory</li>
-  <li>{@code 0x2D01} - accessory + adb</li>
-</ul>
-
-<p>AOA 2.0 adds an optional USB audio interface and, therefore, includes product IDs for the new
-combinations of USB interfaces:</p>
-
-<ul>
-  <li>{@code 0x2D02} - audio</li>
-  <li>{@code 0x2D03} - audio + adb</li>
-  <li>{@code 0x2D04} - accessory + audio</li>
-  <li>{@code 0x2D05} - accessory + audio + adb</li>
-</ul>
-
-<h2 id="audio-support">Audio Support</h2>
-
-<p>AOA 2.0 includes optional support for audio output from an Android device to an accessory. This
-version of the protocol supports a standard USB audio class interface that is capable of 2 channel
-16-bit PCM audio with a bit rate of 44100 Khz. AOA 2.0 is currently limited to this output mode, but
-additional audio modes may be added in the future.</p>
-
-<p>To enable the audio support, the accessory must send a new USB control request:</p>
-
-<pre>
-<strong>SET_AUDIO_MODE</strong>
-requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
-request:        58
-value:          0 for no audio (default),
-                1 for 2 channel, 16-bit PCM at 44100 KHz
-index:          0
-data            none
-</pre>
-
-<p>This command must be sent <em>before</em> sending the {@code ACCESSORY_START} command for
-entering accessory mode.</p>
-
-<h2 id="hid">HID Support</h2>
-
-<p>AOA 2.0 allows the accessory to register one or more HID devices with
-an Android device. This approach reverses the direction of communication for typical USB HID
-devices like USB mice and keyboards. Normally, the HID device is a peripheral connected to a USB
-host like a personal computer. But in the case of the AOA protocol, the USB host acts as one or more
-input devices to a USB peripheral.</p>
-
-<p>HID support in AOA 2.0 is simply a proxy for standard HID events. The implementation makes no
-assumptions about the content or type of events and merely passes it through to the input system, 
-so an AOA 2.0 accessory can act as any HID device (mouse, keyboard, game controller, etc.). It
-can be used for something as simple as the play/pause button on a media dock, or something as
-complicated as a docking station with a mouse and full QWERTY keyboard.</p>
-
-<p>The AOA 2.0 protocol adds four new USB control requests to allow the accessory to act as one or
-more HID input devices to the Android device.  Since HID support is done entirely through
-control requests on endpoint zero, no new USB interface is needed to provide this support. The
-control requests are as follows:</p>
-
-<ul>
-  <li><strong>ACCESSORY_REGISTER_HID</strong> registers a new HID device with the Android device.
-The accessory provides an ID number that is used to identify the HID device for the other three
-calls. This ID is valid until USB is disconnected or until the accessory sends
-ACCESSORY_UNREGISTER_HID to unregister the HID device.</li>
-  <li><strong>ACCESSORY_UNREGISTER_HID</strong> unregisters a HID device that was previously
-registered with ACCESSORY_REGISTER_HID.</li>
-  <li><strong>ACCESSORY_SET_HID_REPORT_DESC</strong> sends a report descriptor for a HID device to
-the Android device. This request is used to describe the capabilities of the HID device, and must
-be sent before reporting any HID events to the Android device. If the report descriptor is larger
-than the maximum packet size for endpoint zero, multiple ACCESSORY_SET_HID_REPORT_DESC commands are
-sent in order to transfer the entire descriptor.</li>
-  <li><strong>ACCESSORY_SEND_HID_EVENT</strong> sends input events from the accessory to the Android
-device.</li>
-</ul>
-
-<p>The code definitions for these new control requests are as follows:</p>
-
-<pre>
-/* Control request for registering a HID device.
- * Upon registering, a unique ID is sent by the accessory in the
- * value parameter. This ID will be used for future commands for
- * the device
- *
- *  requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
- *  request:        ACCESSORY_REGISTER_HID_DEVICE
- *  value:          Accessory assigned ID for the HID device
- *  index:          total length of the HID report descriptor
- *  data            none
- */
-#define ACCESSORY_REGISTER_HID         54
-
-/* Control request for unregistering a HID device.
- *
- *  requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
- *  request:        ACCESSORY_REGISTER_HID
- *  value:          Accessory assigned ID for the HID device
- *  index:          0
- *  data            none
- */
-#define ACCESSORY_UNREGISTER_HID         55
-
-/* Control request for sending the HID report descriptor.
- * If the HID descriptor is longer than the endpoint zero max packet size,
- * the descriptor will be sent in multiple ACCESSORY_SET_HID_REPORT_DESC
- * commands. The data for the descriptor must be sent sequentially
- * if multiple packets are needed.
- *
- *  requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
- *  request:        ACCESSORY_SET_HID_REPORT_DESC
- *  value:          Accessory assigned ID for the HID device
- *  index:          offset of data in descriptor
- *                      (needed when HID descriptor is too big for one packet)
- *  data            the HID report descriptor
- */
-#define ACCESSORY_SET_HID_REPORT_DESC         56
-
-/* Control request for sending HID events.
- *
- *  requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
- *  request:        ACCESSORY_SEND_HID_EVENT
- *  value:          Accessory assigned ID for the HID device
- *  index:          0
- *  data            the HID report for the event
- */
-#define ACCESSORY_SEND_HID_EVENT         57
-</pre>
-
-<h2 id="interop-aoa">Interoperability with AOA 1.0 Features</h2>
-
-<p>The original <a href="aoa.html">AOA protocol</a> provided support for an Android application to
-communicate directly with a USB host (accessory) over USB. AOA 2.0 keeps that support, but adds new
-features to allow the accessory to communicate with the Android operating system itself
-(specifically the audio and input systems). The design of the AOA 2.0 makes it is possible to build
-an accessory that also makes use of the new audio and/or HID support in addition to the original
-feature set. Simply use the new features described in this document in addition to the original AOA
-protocol features.</p>
-
-<h2 id="no-app-conn">Connecting AOA 2.0 without an Android App</h2>
-
-<p>It is possible to design an accessory (for example, an audio dock) that uses the new audio and
-HID support, but does not need to communicate with an application on the Android device. In that
-case, the user would not want to see the dialog prompts related to finding and associating the newly
-attached accessory with an Android application that can communicate with it. To prevent these
-dialogs from appearing after the device and accessory are connected, the accessory can simply not
-send the manufacturer and model names to the Android device. If these strings are not provided to
-the Android device, then the accessory is able to make use of the new audio and HID support in AOA
-2.0 without the system attempting to find an application to communicate with the accessory. Also,
-if these strings are not provided, the accessory USB interface is not present in the Android
-device USB configuration after the device enters accessory mode.</p>
\ No newline at end of file
diff --git a/docs/html/tools/adk/index.jd b/docs/html/tools/adk/index.jd
index 4b9b042..d492e96 100644
--- a/docs/html/tools/adk/index.jd
+++ b/docs/html/tools/adk/index.jd
@@ -11,9 +11,11 @@
 Android.</p>
 
 <p>Accessories use the Android Open Accessory (AOA) protocol to communicate with Android
-devices, over USB cable or through a Bluetooth connection. If you are building an accessory for
-Android devices, make sure you review the information below to understand about how to implement the
-AOA protocol.</p>
+devices, over a USB cable or through a Bluetooth connection. If you are building an accessory that
+uses USB, make sure you understand how to implement the AOA protocol to establish  communication
+between your accessory hardware and Android. For more information, see the
+<a href="http://source.android.com/tech/accessories/index.html">Android Open Acessory protocol</a>.
+</p>
 
 <p>The following sections provide more information about the Android Accessory Development Kits, how
 to use them, and how to get started building your own accessories for Android.</p>
@@ -24,11 +26,4 @@
 
   <dt><a href="adk.html">ADK 2011 Guide</a></dt>
   <dd>Guide to getting started with the original ADK, released at Google I/O 2011.</dd>
-
-  <dt><a href="aoa.html">Android Open Accessory Protocol</a></dt>
-  <dd>Guide to implementing the Android Open Accessory Protocol.</dd>
-
-  <dt><a href="aoa2.html">Android Open Accessory Protocol 2.0</a></dt>
-  <dd>A description and guide to implementing the extended Android Open Accessory Protocol which
-  supports audio dock accessories.</dd>
 </dl>
diff --git a/docs/html/tools/debugging/debugging-ui.jd b/docs/html/tools/debugging/debugging-ui.jd
index c1976b8..a5991ec 100644
--- a/docs/html/tools/debugging/debugging-ui.jd
+++ b/docs/html/tools/debugging/debugging-ui.jd
@@ -29,7 +29,7 @@
                 <li><a href="#overlays">Working with Pixel Perfect overlays</a></li>
             </ol>
         </li>
-        <li><a href="#layoutopt">Using layoutopt</a></li>
+        <li><a href="#lint">Using lint to optimize your UI</a></li>
       </ol>
       <h2>Related videos</h2>
           <ol>
@@ -55,15 +55,15 @@
   <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.
+  <code>lint</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
+  <p>Android <code>lint</code> is a static code scanning tool that helps you optimize the layouts and layout
+  hierarchies of your applications, as well as detect other common coding problems. 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>
 
@@ -491,57 +491,7 @@
         alt=""
         height="600"/>
 <p class="img-caption"><strong>Figure 4.</strong> The Pixel Perfect window</p>
-<h2 id="layoutopt">Using 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>
+<h2 id="lint">Using lint to Optimize Your UI</h2>
+<p>The Android {@code lint} tool lets you analyze the XML files that define your application's UI to find inefficiencies in the view hierarchy.</p>
+<p class="note"><strong>Note: </strong>The Android <code>layoutopt</code> tool has been replaced by the {@code lint} tool beginning in ADT and SDK Tools revision 16. The {@code lint} tool reports UI layout performance issues in a similar way as <code>layoutopt</code>, and detects additional problems.</p>
+<p>For more information about using {@code lint}, see <a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a> and the <a  href="{@docRoot}tools/help/lint.html">lint reference documentation</a>.</p>
diff --git a/docs/html/tools/debugging/improving-w-lint.jd b/docs/html/tools/debugging/improving-w-lint.jd
new file mode 100644
index 0000000..7e238fa
--- /dev/null
+++ b/docs/html/tools/debugging/improving-w-lint.jd
@@ -0,0 +1,219 @@
+page.title=Improving Your Code with lint
+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="#overview">Overview</a></li>
+        <li><a href=#eclipse">Running lint from Eclipse</a></li>
+        <li><a href=#commandline">Running lint from the command-line</a></li>
+         <li><a href=#config">Configuring lint</a>
+            <ol>
+		<LI><a href="#eclipse_config">Configuring lint in Eclipse</a></LI>
+                <LI><a href="#pref">Configuring the lint file</a></LI>
+                <LI><a href="#src">Configuring lint checking in Java and XML source files</a></LI>
+            </ol>
+         </li>
+      </ol>
+      <h2>See Also</h2>
+          <ol>
+              <li><a href="{@docRoot}tools/help/lint.html">lint (reference)</a></li>
+          </ol>
+    </div>
+</div>
+
+
+<p>
+In addition to testing that your Android application meets its functional requirements, it's important to ensure that your code has no structural problems. Poorly structured code can impact the reliability and efficiency of your Android apps and make your code harder to maintain. For example, if your XML resource files contain unused namespaces, this takes up space and incurs unnecessary processing. Other structural issues, such as use of deprecated elements or API calls that are not supported by the target API versions, might lead to code failing to run correctly.</p>
+
+<h2 id="overview">Overview</h2>
+<p>The Android SDK provides a code scanning tool called {@code lint} that can help you to easily identify and correct problems with the structural quality of your code, without having to execute the app or write any test cases. Each problem detected by the tool is reported with a description message and a severity level, so that you can quickly prioritize the critical improvements that need to be made.  You can also configure a problem's severity level to ignore issues that are not relevant for your project, or raise the severity level. The tool has a command-line interface, so you can easily integrate it into your automated testing process.</p>
+<p>The {@code lint} tool checks your Android project source files for potential bugs and optimization improvements for correctness, security, performance, usability, accessibility, and internationalization. You can run {@code lint} from the command-line or from the Eclipse environment.</p>
+<p>Figure 1 shows how the {@code lint} tool processes the application source files.</p>
+<img id="Fig1" src="{@docRoot}images/tools/lint.png" alt="">
+<p class="img-caption"><strong>Figure 1.</strong> Code scanning workflow with the {@code lint} tool</p>
+<dl>
+<dt><b>Application source files</b></dt>
+<dd>The source files consist of files that make up your Android project, including Java and XML files, icons, and ProGuard configuration files. </dd>
+<dt><b>The <code>lint.xml</code> file</b></dt>
+<dd>A configuration file that you can use to specify any {@code lint} checks that you want to exclude and to customize problem severity levels.</dd>
+<dt><b>The {@code lint} tool</b></dt>
+<dd>A static code scanning tool that you can run on your Android project from the command-line or from Eclipse.   The {@code lint} tool checks for structural code problems that could affect the quality and performance of your Android application. It is strongly recommended that you correct any errors that {@code lint} detects before publishing your application.</dd>
+<dt><b>Results of {@code lint} checking</b></dt>
+<dd>You can view the results from {@code lint} in the console or in the <strong>Lint Warnings</strong> view in Eclipse.  Each issue is identified by the location in the source files where it occurred and a description of the issue.</dd>
+</dl>
+<p>The {@code lint} tool is automatically installed as part of the Android SDK Tools revision 16 or higher. If you want to use {@code lint} in the Eclipse environment, you must also install the Android Development Tools (ADT) Plugin for Eclipse revision 16 or higher. For more information about installing the SDK or the ADT Plugin for Eclipse, see <a href="http://developer.android.com/sdk/installing.html">Installing the SDK.</a></p>
+
+<h2 id="eclipse">Running lint from Eclipse</h2>
+<p>If the ADT Plugin is installed in your Eclipse environment, the {@code lint} tool runs automatically when you perform one of these actions:</p>
+<ul>
+<LI>Export an APK</LI>
+<LI>Edit and save an XML source file in your Android project (such as a manifest or layout file)</LI>
+<LI>Use the layout editor in Eclipse to make changes</LI>
+</ul>
+<p>Note that when you export an APK, {@code lint} only runs an automatic check for fatal errors and aborts the export if fatal errors are found. You can turn off this automatic checking from the <strong>Lint Error Checking</strong> page in Eclipse Preferences. </p>
+<p>The output is displayed in the <strong>Lint Warnings</strong> view. If the <strong>Lint Warnings</strong> view is not showing in the workbench, you can bring it up from the Eclipse menu by clicking <strong>Window &gt; Show View &gt; Other &gt;  Android &gt; Lint Warnings</strong>.</p>
+<p>Figure 2 shows an example of the output in the Lint Warnings view.</p>
+<img id="Fig2" src="{@docRoot}images/tools/lint_output.png" alt="">
+<p class="img-caption"><strong>Figure 2.</strong> Sample output in the <strong>Lint Warnings</strong> view</p>
+<p>You can also run a {@code lint} scan manually on your Android project in Eclipse by right-clicking on the project folder in the Package Explorer > <strong>Android Tools  &gt; Run Lint: Check for Common Errors</strong>.</p>
+
+
+<h2 id="commandline">Running lint from the Command-Line</h2>
+<p>
+To run {@code lint} against a list of files in a project directory:
+<pre>lint [flags] &lt;project directory&gt;</pre>
+<p>For example, you can issue the following command to scan the files under the {@code myproject} directory and its subdirectories. The issue ID  <code>MissingPrefix</code> tells {@code lint} to only scan for XML attributes that are missing the Android namespace prefix.</p>
+<pre>lint --check MissingPrefix myproject </pre>
+<p>To see the full list of flags and command-line arguments supported by the tool:</p>
+<pre>lint --help</pre>
+</p>
+
+<h3>Example lint output</h3>
+<p>The following example shows the console output when the {@code lint} command is run against a project called Earthquake.  </p>
+<pre>
+$ lint Earthquake
+
+Scanning Earthquake: ...............................................................................................................................
+Scanning Earthquake (Phase 2): .......
+AndroidManifest.xml:23: Warning: &lt;uses-sdk&gt; tag appears after &lt;application&gt; tag [ManifestOrder]
+  &lt;uses-sdk android:minSdkVersion="7" /&gt;
+  ^
+AndroidManifest.xml:23: Warning: &lt;uses-sdk&gt; tag should specify a target API level (the highest verified version; when running on later versions, compatibility behaviors may be enabled) with android:targetSdkVersion="?" [UsesMinSdkAttributes]
+  &lt;uses-sdk android:minSdkVersion="7" /&gt;
+  ^
+res/layout/preferences.xml: Warning: The resource R.layout.preferences appears to be unused [UnusedResources]
+res: Warning: Missing density variation folders in res: drawable-xhdpi [IconMissingDensityFolder]
+0 errors, 4 warnings
+</pre>
+<p>The output above lists four warnings and no errors in this project.  Three warnings ({@code ManifestOrder}, {@code UsesMinSdkAttributes}, and {@code UsesMinSdkAttributes}) were found in the project's <code>AndroidManifest.xml</code> file. The remaining warning ({@code IconMissingDensityFolder}) was found in the <code>Preferences.xml</code> layout file.</p>
+
+<h2 id="config">Configuring lint</h2>
+<p>By default, when you run a {@code lint} scan, the tool checks for all issues that are supported by {@code lint}.  You can also restrict the issues for {@code lint} to check and assign the severity level for those issues. For example, you can disable {@code lint} checking for specific issues that are not relevant to your project and configure {@code lint} to report non-critical issues at a lower severity level.</p>
+<p>You can configure {@code lint} checking at different levels:</p>
+<ul>
+<LI>Globally, for all projects</LI>
+<li>Per project</li>
+<li>Per file</li>
+<li>Per Java class or method (by using the <code>&#64;SuppressLint</code> annotation), or per XML element (by using the <code>tools:ignore</code> attribute.</li>
+</ul>
+
+<h3 id="eclipse_config">Configuring lint in Eclipse</h3>
+<p>You can configure global, project-specific, and file-specific settings for {@code lint} from the Eclipse user interface.</p>
+
+<h4>Global preferences</h4>
+<ol>
+<LI>Open <strong>Window  &gt; Preferences  &gt; Android  &gt; Lint Error Checking</strong>.</LI>
+<li>Specify your preferences and click <b>OK</b>.</li>
+</ol>
+<p>These settings are applied by default when you run {@code lint} on your Android projects in Eclipse.</p>
+
+<h4>Project and file-specific preferences</h4>
+<ol>
+<LI>Run the {@code lint} tool on your project by right-clicking on your project folder in the Package Explorer and selecting  <strong>Android Tools &gt; Run Lint: Check for Common Errors</strong>. This action brings up the <strong>Lint Warnings</strong> view which displays a list of issues that {@code lint} detected in your project.</LI>
+<li>From the <strong>Lint Warnings</strong> view, use the toolbar options to configure {@code lint} preferences for individual projects and files in Eclipse. The options you can select include:
+<ul>
+<LI><b>Suppress this error with an annotation/attribute</b> - If the issue appears in a Java class, the {@code lint} tool adds a <code>&#64;SuppressLint</code> annotation to the method where the issue was detected.  If the issue appears in an {@code .xml} file, {@code lint} inserts a <code>tools:ignore</code> attribute to disable checking for the {@code lint} issue in this file.</LI>
+<LI><b>Ignore in this file</b> - Disables checking for this {@code lint} issue in this file.</LI>
+<li><b>Ignore in this project</b>  - Disables checking for this {@code lint} issue in this project.</li>
+<li><b>Always ignore</b> - Disables checking for this {@code lint} issue globally for all projects.</li>
+</ul>
+</li>
+</ol>
+<p>If you select the second or third option, the {@code lint} tool automatically generates a <code>lint.xml</code> file with these configuration settings in your Android application project folder.  </p>
+
+<h3 id="pref">Configuring the lint file</h3>
+<p>You can specify your {@code lint} checking preferences in the <code>lint.xml</code> file.  If you are creating this file manually, place it in the root directory of your Android project.  If you are configuring {@code lint} preferences in Eclipse, the <code>lint.xml</code> file is automatically created and added to your Android project for you.</p>
+<p>The <code>lint.xml</code> file consists of an enclosing <code>&lt;lint&gt;</code> parent tag that contains one or more children <code>&lt;issue&gt;</code> elements.  Each <code>&lt;issue&gt;</code> is identified by a unique <code>id</code> attribute value, which is defined by {@code lint}.</p>
+<pre>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+    &lt;lint&gt;
+        &lt;!-- list of issues to configure --&gt;
+&lt;/lint&gt;
+</pre>
+<p>By setting the severity attribute value in the <code>&lt;issue&gt;</code> tag, you can disable {@code lint} checking for an issue or change the severity level for an issue.  </p>
+<p class="note"><strong>Tip: </strong>To see the full list of issues supported by the {@code lint} tool and their corresponding issue IDs, run the <code>lint --list</code> command.</p>
+
+<h4>Sample lint.xml file</h4>
+<p>The following example shows the contents of a <code>lint.xml</code> file.</p>
+<pre>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;lint&gt;
+    &lt;!-- Disable the given check in this project --&gt;
+    &lt;issue id="IconMissingDensityFolder" severity="ignore" /&gt;
+
+    &lt;!-- Ignore the ObsoleteLayoutParam issue in the specified files --&gt;
+    &lt;issue id="ObsoleteLayoutParam"&gt;
+        &lt;ignore path="res/layout/activation.xml" /&gt;
+        &lt;ignore path="res/layout-xlarge/activation.xml" /&gt;
+    &lt;/issue>
+
+    &lt;!-- Ignore the UselessLeaf issue in the specified file --&gt;
+    &lt;issue id="UselessLeaf"&gt;
+        &lt;ignore path="res/layout/main.xml" /&gt;
+    &lt;/issue&gt;
+
+    &lt;!-- Change the severity of hardcoded strings to "error" --&gt;
+    &lt;issue id="HardcodedText" severity="error" /&gt;
+&lt;/lint&gt;
+</pre>
+
+<h3 id="src">Configuring lint checking in Java and XML source files</h3>
+<p>You can disable {@code lint} checking from your Java and XML source files.</p>
+
+<p class="note"><strong>Tip: </strong>If you are using Eclipse, you can use the <strong>Quick Fix</strong> feature to automatically add the annotation or attribute to disable {@code lint} checking to your Java or XML source files:
+<ol>
+<LI>Open the Java or XML file that has a {@code lint} warning or error in an Eclipse editor.</LI>
+<LI>Move your cursor to the location in the file where is {@code lint} issue is found, then press <code>Ctrl+1</code> to bring up the <strong>Quick Fix</strong> pop-up.</LI>
+<li>From the <strong>Quick Fix</strong> pop-up, select the action to add an annotation or attribute to ignore the {@code lint} issue.</li>
+</ol>
+</p>
+
+<h4>Configuring lint checking in Java</h4>
+<p>To disable {@code lint} checking specifically for a Java class or method in your Android project, add the <code>&#64;SuppressLint</code> annotation to that Java code. </p>
+<p>The following example shows how you can turn off {@code lint} checking for the {@code NewApi} issue in the <code>onCreate</code> method.  The {@code lint} tool continues to check for the {@code NewApi} issue in other methods of this class.</p>
+<pre>
+&#64;SuppressLint("NewApi")
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.main);
+</pre>
+<p>The following example shows how to turn off {@code lint} checking for the {@code ParserError} issue in the <code>FeedProvider</code> class:</p>
+<pre>
+&#64;SuppressLint("ParserError")
+public class FeedProvider extends ContentProvider {
+</pre>
+<p>To suppress checking for all {@code lint} issues in the Java file, use the {@code all} keyword, like this:</p>
+<pre>
+&#64;SuppressLint("all")
+</pre>
+
+<h4>Configuring lint checking in XML</h4>
+<p>You can use the <code>tools:ignore</code> attribute to disable {@code lint} checking for specific sections of your XML files.  In order for this attribute to be recognized by the {@code lint} tool, the following namespace value must be included in your XML file:</p>
+<pre>
+namespace xmlns:tools="http://schemas.android.com/tools"
+</pre>
+<p>The following example shows how you can turn off {@code lint} checking for the  {@code UnusedResources} issue for the <code>&lt;LinearLayout&gt;</code> element of an XML layout file.  The <code>ignore</code> attribute is inherited by the children elements of the parent element in which the attribute is declared. In this example, the {@code lint} check is also disabled for the child <code>&lt;TextView&gt;</code> element. </p>
+<pre>
+&lt;LinearLayout 
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="UnusedResources" &gt;
+
+    &lt;TextView
+        android:text="&#64;string/auto_update_prompt" /&gt;
+&lt;/LinearLayout&gt;
+</pre>
+<p>To disable more than one issue, list the issues to disable in a comma-separated string.  For example:</p>
+<pre>
+tools:ignore="NewApi,StringFormatInvalid"
+</pre>
+<p>To suppress checking for all {@code lint} issues in the XML element, use the {@code all} keyword, like this:</p>
+<pre>
+tools:ignore="all"
+</pre>
diff --git a/docs/html/tools/debugging/systrace.jd b/docs/html/tools/debugging/systrace.jd
new file mode 100644
index 0000000..287abe6
--- /dev/null
+++ b/docs/html/tools/debugging/systrace.jd
@@ -0,0 +1,239 @@
+page.title=Analyzing Display and Performance with Systrace
+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="#overview">Overview</a>
+      </li>
+      <li><a href="#generate">Generating Traces</a>
+        <ol>
+          <li><a href="#limit-trace">Limiting trace data</a></li>
+          <li><a href="#config-categories">Configuring trace data categories</a></li>
+          <li><a href="#running">Running a trace</a></li>
+        </ol>
+      </li>
+      <li><a href="#analysis">Analyzing Traces</a>
+        <ol>
+          <li><a href="#long-processes">Long running processes</a></li>
+          <li><a href="#display-interupts">Interruptions in display execution</a></li>
+        </ol>
+      </li>
+    </ol>
+    <h2>See also</h2>
+    <ol>
+      <li><a href="{@docRoot}tools/help/systrace.html">Systrace</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>After building features, eliminating bugs and cleaning up your code, you should spend some
+  time looking at the performance of your application. The speed and smoothness with which your
+  application draws pixels and performs operations has an significant impact on your users'
+  experience.</p>
+
+<p>Android applications operate within a shared resource environment, and the performance of
+  your application can be impacted by how efficiently it interacts with those resources in
+  the larger system. Applications also operate in a multithreaded environment, competing with other
+  threaded processes for resources, which can cause performance problems that are hard to diagnose.
+</p>
+
+<p>The {@code systrace} tool allows you to collect and review code execution data for your
+  application and the Android system. You can use this data to diagnose execution problems and
+  improve the performance of your application.</p>
+
+
+<h2 id="overview">Overview</h2>
+
+<p>{@code systrace} helps you analyze how the execution of your application fits into the larger
+  Android environment, letting you see system and applications process execution on a common
+  timeline. The tool allows you to generate highly detailed, interactive reports from devices
+  running Android 4.1 and higher, such as the report in figure 1.</p>
+
+<img src="{@docRoot}images/systrace/report.png" alt="Systrace example report" id="figure1" />
+<p class="img-caption">
+  <strong>Figure 1.</strong> An example {@code systrace} report on 5 seconds of process execution
+  for a running application and related Android system processes.
+</p>
+
+
+<h2 id="generate">Generating Traces</h2>
+
+<p>In order to create a trace of your application, you must perform a few setup steps. First, you
+  must have a device running Android 4.1 or higher. Setup the device for
+  <a href="{@docRoot}tools/device.html#setting-up">debugging</a>, connect it to your development
+  system and install your application. Some types of trace information, specifically disk activity
+  and kernel work queues, require root access to the device, but most {@code systrace} log data
+  only requires that the device be enabled for developer debugging.</p>
+
+
+<h3 id="limit-trace">Limiting trace data</h3>
+
+<p>The {@code systrace} tool can generate a potentially huge amount of data from applications
+  and system sources. To limit the amount of data the tool collects and make the data more relevant
+  to your analysis, use the following options:</p>
+
+<ul>
+  <li>Limit the amount of time covered by the trace with the {@code -t, --time} option. The default
+    length of a trace is 5 seconds.</li>
+  <li>Limit the size of the data collected by the trace with the {@code -b, --buf-size} option.</li>
+  <li>Specify what types of processes are traced using the {@code --set-tags} option and the
+  {@code --disk}, {@code --cpu-freq}, {@code --cpu-idle}, {@code --cpu-load} options.</li>
+</ul>
+
+
+<h3 id="config-categories">Configuring trace data categories</h3>
+
+<p>To use {@code systrace} effectively, you must specify the types of processes you want to trace.
+  The tool can gather the following types of process information:</p>
+
+<ul>
+  <li>General system processes such as graphics, audio and input processes (selected using trace
+    <a href="{@docRoot}tools/help/systrace.html#tags">Tags</a>).</li>
+  <li>Low level system information such as CPU, kernel and disk activity (selected using
+    <a href="{@docRoot}tools/help/systrace.html#options">Options</a>).</li>
+</ul>
+
+<p>To set trace tags for {@code systrace} using the command-line:</p>
+
+<ol>
+  <li>Use the {@code --set-tags} option:
+<pre>
+$> python systrace.py --set-tags=gfx,view,wm
+</pre>
+  </li>
+  <li>Stop and restart the {@code adb} shell to enable tracing of these processes.
+<pre>
+$> adb shell stop
+$> adb shell start
+</pre></li>
+</ol>
+
+<p>To set trace tags for {@code systrace} using the device user interface:</p>
+
+<ol>
+  <li>On the device connected for tracing, navigate to: <strong>Settings &gt;
+      Developer options &gt; Monitoring &gt; Enable traces</strong>.</li>
+  <li>Select the categories of processes to be traced and click <strong>OK</strong>.</li>
+</ol>
+
+<p class="note">
+  <strong>Note:</strong> The {@code adb} shell does not have to be stopped and restarted when
+  selecting trace tags using this method.
+</p>
+
+
+<h3 id="running">Running a trace</h3>
+
+<p>After you have configured the category tags for your trace, you can start collecting
+  information for analysis.</p>
+
+<p>To run a trace using the current trace tag settings:</p>
+
+<ol>
+  <li>Make sure the device is connected through a USB cable and is
+  <a href="{@docRoot}tools/device.html#setting-up">enabled for debugging</a>.</li>
+  <li>Run the trace with the low-level system trace options and limits you want, for example:
+<pre>
+$> python systrace.py --cpu-freq --cpu-load --time=10 -o mytracefile.html
+</pre>
+  </li>
+  <li>On the device, execute any user actions you want be included in the trace.</li>
+</ol>
+
+
+<h2 id="analysis">Analyzing Traces</h2>
+
+<p>After you have generated a trace using {@code systrace}, it lists the location of the output
+  file and you can open the report using a web browser.
+  How you use the trace data depends on the performance issues you are investigating. However,
+  this section provides some general instructions on how to analyze a trace.</p>
+
+<p>The reports generated by {@code systrace} are interactive, allowing you to zoom into and out of
+  the process execution details. Use the <em>W</em> key to zoom in, the <em>S</em>
+  key to zoom out, the <em>A</em> key to pan left and the <em>D</em> key to pan
+  right. Select a task in timeline using your mouse to get more information about the task.
+  For more information about the using the keyboard navigation shortcuts and navigation, see the
+  <a href="{@docRoot}tools/help/systrace.html#viewing-options">Systrace</a> reference
+  documentation.</p>
+
+<h3 id="long-processes">Long running processes</h3>
+
+<p>A well-behaved application executes many small operations quickly and with a regular rhythm,
+  with individual operations completing within few milliseconds, depending on the device
+  and the processes being performed, as shown in figure 2:</p>
+
+<img src="{@docRoot}images/systrace/process-rhythm.png" alt="Systrace exerpt of app processing"
+id="figure2" />
+<p class="img-caption">
+  <strong>Figure 2.</strong> Excerpt from a trace of a smoothly running application with a regular
+  execution rhythm.
+</p>
+
+<p>The trace excerpt in figure 2 shows a well-behaved application with
+  a regular process rhythm (1). The lower section of figure 2 shows a magnified section of
+  the trace indicated by the dotted outline, which reveals some irregularity in the process
+  execution. In particular, one of the wider task bars, indicated by (2), is taking slightly
+  longer (14 milliseconds) than other, similar tasks on this thread, which are averaging between
+  9 and 12 milliseconds to complete. This particular task execution length is likely not noticeable
+  to a user, unless it impacts another process with specific timing, such as a screen update.</p>
+
+<p>Long running processes show up as thicker than usual execution bars in a trace. These thicker
+  bars can indicate a problem in your application performance. When they show up in your
+  trace, zoom in on the process using the
+  <a href="{@docRoot}tools/help/systrace.html#viewing-options">keyboard navigation</a> shortcuts to
+  identify the task causing the problem, and click on the task to get more information. You should
+  also look at other processes running at the same time, looking for a thread in one process that is
+  being blocked by another process.</p>
+
+
+<h3 id="display-interupts">Interruptions in display execution</h3>
+
+<p>The {@code systrace} tool is particularly useful in analyzing application display slowness,
+  or pauses in animations, because it shows you the execution of your application across multiple
+  system processes. With display execution, drawing screen frames with a regular rhythm is essential
+  for good performance. Having a regular rhythm for display ensures that animations and motion are
+  smooth on screen. If an application drops out of this rhythm, the display can become jerky or slow
+  from the users perspective.</p>
+
+<p>If you are analyzing an application for this type of problem, examine the
+  <strong>SurfaceFlinger</strong> process in the {@code systrace} report where your application is
+  also executing to look for places where it drops out of its regular rhythm.</p>
+
+<img src="{@docRoot}images/systrace/display-rhythm.png" alt="Systrace exerpt of display processing"
+id="figure3" />
+<p class="img-caption">
+  <strong>Figure 3.</strong> Excerpt from a trace of an application showing interruptions in
+  display processing.
+</p>
+
+<p>The trace excerpt in figure 3 shows an section of a trace that indicates an interruption in the
+  device display. The section of the <strong>SurfaceFlinger</strong> process in top excerpt,
+  indicated by (1), shows that display frames are being missed. These
+  dropped frames are potentially causing the display to stutter or halt. Zooming into this problem
+  area in the lower trace, shows that a memory operation (image buffer dequeuing and allocation) in
+  the <strong>surfaceflinger</strong> secondary thread is taking a long time (2). This delay
+  causes the application to miss the display update window, indicated by the dotted
+  line. As the developer of this application, you should investigate other threads in your
+  application that may also be trying to allocate memory at the same time or otherwise blocking
+  memory allocation with another request or task.</p>
+
+<p>Regular, rhythmic execution of the <strong>SurfaceFlinger</strong> process is essential to smooth
+  display of screen content, particularly for animations and motion. Interruptions in the regular
+  execution pattern of this thread is not always an indication of a display problem with your
+  application. Further testing is required to determine if this is actually a performance problem
+  from a user perspective. Being able to identify display execution patterns like the example above
+  can help you detect display problems and build a smooth-running, high-performance application.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> When using {@code systrace} to analyze display problems, make sure
+  you activate the tracing tags for <strong>Graphics</strong> and <strong>Views</strong>.
+</p>
+
+<p>For more information on the command line options and keyboard controls for {@code systrace},
+see the <a href="{@docRoot}tools/help/systrace.html">Systrace</a> reference page.</p>
\ No newline at end of file
diff --git a/docs/html/tools/extras/support-library.jd b/docs/html/tools/extras/support-library.jd
index 869a15b..b1e2ea0 100644
--- a/docs/html/tools/extras/support-library.jd
+++ b/docs/html/tools/extras/support-library.jd
@@ -90,6 +90,24 @@
 <div class="toggleable opened">
   <a href="#" onclick="return toggleDiv(this)">
   <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px"
+/>Support Package, revision 10</a> <em>(August 2012)</em>
+  <div class="toggleme">
+    <dl>
+      <dt>Changes for v4 support library:</dt>
+      <dd>
+        <ul>
+          <li>Added support for notification features introduced in Android 4.1 (API Level 16) with
+          additions to {@link android.support.v4.app.NotificationCompat}.</li>
+        </ul>
+      </dd>
+    </dl>
+  </div>
+</div>
+
+
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+  <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px"
 />Support Package, revision 9</a> <em>(June 2012)</em>
   <div class="toggleme">
     <dl>
@@ -589,3 +607,4 @@
 <p>Additionally, the <a href="http://code.google.com/p/iosched/">Google I/O App</a> is a complete
 application that uses the v4 support library to provide a single APK for both handsets and tablets
 and also demonstrates some of Android's best practices in Android UI design.</p>
+
diff --git a/docs/html/tools/help/adb.jd b/docs/html/tools/help/adb.jd
index 4e75f2e..d44d54b 100644
--- a/docs/html/tools/help/adb.jd
+++ b/docs/html/tools/help/adb.jd
@@ -88,13 +88,14 @@
 	<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: 
+	<li>State &mdash; The connection state of the instance may be one of the following:
 		<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>
+                <li><code>no device</code> &mdash; there is no emulator/device connected.
 		</ul>
 	</li>
 </ul>
@@ -111,7 +112,6 @@
 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>
diff --git a/docs/html/tools/help/bmgr.jd b/docs/html/tools/help/bmgr.jd
index 2248fa6..8823f33 100644
--- a/docs/html/tools/help/bmgr.jd
+++ b/docs/html/tools/help/bmgr.jd
@@ -7,9 +7,6 @@
 
 <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>
diff --git a/docs/html/tools/help/gltracer.jd b/docs/html/tools/help/gltracer.jd
index 35c405e..700ee39 100644
--- a/docs/html/tools/help/gltracer.jd
+++ b/docs/html/tools/help/gltracer.jd
@@ -5,9 +5,9 @@
 <div id="qv">
   <h2>In this document</h2>
   <ol>
-    <li><a href="running">Running Tracer</a></li>
-    <li><a href="generating">Generating a Trace</a></li>
-    <li><a href="analyzing">Analyzing a Trace</a></li>
+    <li><a href="#running">Running Tracer</a></li>
+    <li><a href="#generating">Generating a Trace</a></li>
+    <li><a href="#analyzing">Analyzing a Trace</a></li>
   </ol>
   <h2>See also</h2>
   <ol>
diff --git a/docs/html/tools/help/index.jd b/docs/html/tools/help/index.jd
index 447d39c..0f94395 100644
--- a/docs/html/tools/help/index.jd
+++ b/docs/html/tools/help/index.jd
@@ -55,6 +55,9 @@
   <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="systrace.html">Systrace</a></dt>
+    <dd>Lets you analyze the execution of your application in the context of system processes,
+    to help diagnose display and performance issues.</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>
diff --git a/docs/html/tools/help/lint.jd b/docs/html/tools/help/lint.jd
new file mode 100644
index 0000000..ba31f6d
--- /dev/null
+++ b/docs/html/tools/help/lint.jd
@@ -0,0 +1,178 @@
+page.title=lint
+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="#syntax">Syntax</a></li>
+     <li><a href="#options">Options</a></li>
+     <li><a href="#config_keywords">Configuring Java and XML Source Files</a></li>
+  </ol>
+  </div>
+</div>
+
+<p>The Android {@code lint} tool is a static code analysis tool that checks your Android project source files for potential bugs and optimization improvements for correctness, security, performance, usability, accessibility, and internationalization. </p>
+<p>For more information on running {@code lint}, see <a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a>.</p>
+
+<h2 id="syntax">Syntax</h2>
+<p>
+<pre>lint [flags] &lt;project directory&gt;</pre>
+
+For example, you can issue the following command to scan the Java and XML files under the {@code myproject}  directory and its subdirectories. The result is displayed on the console.
+<pre>lint myproject</pre>
+
+You can also use {@code lint} to check for a specific issue. For example, you can run the following command to scan the files under the {@code myproject} directory and its subdirectories to check for XML attributes missing the Android namespace prefix. The issue ID {@code MissingPrefix} tells lint to only scan for this issue.
+<pre>lint --check MissingPrefix myproject</pre>
+
+You can create an HTML report for the issues that {@code lint} detects. For example, you can run the following command to scan the {@code myproject} directory and its subdirectories for accessibility issues, then generate an HTML report in the {@code accessibility_report.html} file.
+<pre>lint --check Accessibility --HTML accessibility_report.html myproject</pre>
+</p>
+
+<h2 id="options">Options</h2>
+<p>Table 1 describes the command-line options for {@code lint}.</p>
+<p class="table-caption" id="table1">
+  <strong>Table 1.</strong> Command-line options for lint</p>
+<table>
+<tr>
+  <th>Category</th>
+  <th>Option</th>
+  <th>Description</th>
+  <th>Comments</th>
+</tr>
+
+<tr>
+<td rowspan="7">Checking</td>
+<td><nobr><code>--disable &lt;list&gt;</code></nobr></td>
+<td>Disable checking for a specific list of issues.</td>
+<td>The <code>&lt;list&gt;</code> must be a comma-separated list of {@code lint} issue IDs or categories.</td>
+</tr>
+
+<tr>
+<td><nobr><code>--enable &lt;list&gt;</code></nobr></td>
+<td>Check for all the default issues supported by {@code lint} as well as the specifically enabled list of issues.</td>
+<td>The <code>&lt;list&gt;</code> must be a comma-separated list of {@code lint} issue IDs or categories.</td>
+</tr>
+
+<tr>
+<td><nobr><code>--check &lt;list&gt;</code></nobr></td>
+<td>Check for a specific list of issues.</td>
+<td>The <code>&lt;list&gt;</code> must be a comma-separated list of {@code lint} issue IDs or categories.</td>
+</tr>
+
+<tr>
+<td><nobr><code>-w</code> or <code>--nowarn</code></nobr></td>
+<td>Only check for errors and ignore warnings</td>
+<td>&nbsp;</td>
+</tr>
+
+<tr>
+<td><nobr><code>-Wall</code></nobr></td>
+<td>Check for all warnings, including those that are disabled by default</td>
+<td>&nbsp;</td>
+</tr>
+
+<tr>
+<td><nobr><code>-Werror</code></nobr></td>
+<td>Report all warnings as errors</td>
+<td>&nbsp;</td>
+</tr>
+
+<tr>
+<td><nobr><code>--config &lt;filename&gt;</code></nobr></td>
+<td>Use the specified configuration file to determine if issues are enabled or disabled for {@code lint} checking</td>
+<td>If the project contains a {@code lint.xml} file, the {@code lint.xml} file will be used as the configuration file by default.</td>
+</tr>
+
+<tr>
+<td rowspan="9">Reporting</td>
+<td><nobr><code>--html &lt;filename&gt;</code></nobr></td>
+<td>Generate an HTML report.</td>
+<td>The report is saved in the output file specified in the argument. The HTML output includes code snippets of the source code where {@code lint} detected an issue, a verbose description of the issue found, and links to the source file.</td>
+</tr>
+
+<tr>
+<td><nobr><code>--url &lt;filepath&gt;=&lt;url&gt;</code></nobr></td>
+<td>In the HTML output, replace a local path prefix <code>&lt;filepath&gt;</code> with a url prefix <code>&lt;url&gt;</code>.</td>
+<td>The {@code --url} option only applies when you are generating an HTML report with the {@code --html} option. You can specify multiple &lt;filepath&gt;=&lt;url&gt; mappings in the argument by separating each mapping with a comma.<p>To turn off linking to files, use {@code --url none}</p></td>
+</tr>
+
+<tr>
+<td><nobr><code>--simplehtml &lt;filename&gt;</code></nobr></td>
+<td>Generate a simple HTML report</td>
+<td>The report is saved in the output file specified in the argument.</td>
+</tr>
+
+<tr>
+<td><nobr><code>--xml &lt;filename&gt;</code></nobr></td>
+<td>Generate an XML report</td>
+<td>The report is saved in the output file specified in the argument.</td>
+</tr>
+
+<tr>
+<td><nobr><code>--fullpath</code></nobr></td>
+<td>Show the full file paths in the {@code lint} checking results.</td>
+<td>&nbsp;</td>
+</tr>
+
+<tr>
+<td><nobr><code>--showall</code></nobr></td>
+<td>Don't truncate long messages or lists of alternate locations.</td>
+<td>&nbsp;</td>
+</tr>
+
+<tr>
+<td><nobr><code>--nolines</code></nobr></td>
+<td>Don't include code snippets from the source files in the output.</td>
+<td>&nbsp;</td>
+</tr>
+
+<tr>
+<td><nobr><code>--exitcode</code></nobr></td>
+<td>Set the exit code to 1 if errors are found.</td>
+<td>&nbsp;</td>
+</tr>
+
+<tr>
+<td><nobr><code>--quiet</code></nobr></td>
+<td>Don't show the progress indicator.</td>
+<td>&nbsp;</td>
+</tr>
+
+<tr>
+<td rowspan="4">Help</td>
+<td><nobr><code>--help</code></nobr></td>
+<td>List the command-line arguments supported by the {@code lint} tool.</td>
+<td>Use {@code --help &lt;topic&gt;} to see help information for a specific topic, such as "suppress".</td>
+</tr>
+
+<tr>
+<td><nobr><code>--list</code></nobr></td>
+<td>List the ID and short description for issues that can be checked by {@code lint}</td>
+<td>&nbsp;</td>
+</tr>
+
+<tr>
+<td><nobr><code>--show</code></nobr></td>
+<td>List the ID and verbose description for issues that can be checked by {@code lint}</td>
+<td>Use {@code --show &lt;ids&gt;} to see descriptions for a specific list of {@code lint} issue IDs.</td>
+</tr>
+
+<tr>
+<td><nobr><code>--version</code></nobr></td>
+<td>Show the {@code lint} version</td>
+<td>&nbsp;</td>
+</tr>
+
+</table>
+
+
+<h2 id="config_keywords">Configuring Java and XML Source Files</h2>
+<p>To configure lint checking, you can apply the following annotation or attribute to the source files in your Android project. </p>
+<ul>
+<LI>To disable lint checking for a specific Java class or method, use the <code>@SuppressLint</code> annotation. </LI>
+<li>To disable lint checking for specific sections of your XML file, use the <code>tools:ignore</code> attribute. </li>
+</ul>
+<p>You can also specify your lint checking preferences for a specific Android project in the lint.xml file.  For more information on configuring lint, see <a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a>.</p>
diff --git a/docs/html/tools/help/monitor.jd b/docs/html/tools/help/monitor.jd
index 8e2ea36..18fb49a 100644
--- a/docs/html/tools/help/monitor.jd
+++ b/docs/html/tools/help/monitor.jd
@@ -1,7 +1,7 @@
-page.title=Debug Monitor
+page.title=Device Monitor
 @jd:body
 
-<p>Android Debug Monitor is a stand-alone tool that provides a graphical user interface for
+<p>Android Device Monitor is a stand-alone tool that provides a graphical user interface for
 several Android application debugging and analysis tools. The Monitor tool does not
 require installation of a integrated development environment, such as Eclipse, and encapsulates the
 following tools:</p>
@@ -16,9 +16,9 @@
 
 <h2 id="usage">Usage</h2>
 
-<p>To start Debug Monitor, enter the following command from the SDK <code>tools/</code>
+<p>To start Device Monitor, enter the following command from the SDK <code>tools/</code>
 directory:</p>
   <pre>monitor</pre>
 
-<p>Start an Android emulator or connect an Android device via USB cable, and connect the Debug
+<p>Start an Android emulator or connect an Android device via USB cable, and connect Device
 Monitor to the device by selecting it in the <strong>Devices</strong> window.</p>
diff --git a/docs/html/tools/help/systrace.jd b/docs/html/tools/help/systrace.jd
new file mode 100644
index 0000000..010cc78
--- /dev/null
+++ b/docs/html/tools/help/systrace.jd
@@ -0,0 +1,234 @@
+page.title=Systrace
+parent.title=Tools
+parent.link=index.html
+@jd:body
+
+
+<p>The {@code systrace} tool helps analyze the performance of your application by capturing and
+  displaying execution times of your applications processes and other Android system processes. The
+  tool combines data from the Android kernel such as the CPU scheduler, disk activity and
+  application threads to generate an HTML report that shows an overall picture of an Android
+  device’s system processes for a given period of time.</p>
+
+<p>The {@code systrace} tool is particularly useful in diagnosing display problems where an
+  application is slow to draw or stutters while displaying motion or animation. For more information
+  on how to use {@code systrace}, see <a href="{@docRoot}tools/debugging/systrace.html">Analyzing
+  Display and Performance with Systrace</a>.</p>
+
+
+<h2 id="usage">Usage</h2>
+
+<p>In order to run {@code systrace}, the {@code adb} tool and
+<a href="http://www.python.org/">Python</a> must be installed and included in your development
+computer's execution path. In order to generate a trace, you must connect a device running Android
+4.1 (API Level 16) or higher to your development system using a USB debugging connection.</p>
+
+<p>The syntax for running {@code systrace} is as follows.</p>
+
+<pre>
+$> python systrace.py [options]
+</pre>
+
+<p>Here is an example execution run that sets trace tags and generates a trace from a connected
+Android device.</p>
+
+<pre>
+$> cd <em>android-sdk</em>/tools/systrace
+$> python systrace.py --set-tags gfx,view,wm
+$> adb shell stop
+$> adb shell start
+$> python systrace.py --disk --time=10 -o mynewtrace.html
+</pre>
+
+
+
+<h2 id="options">Options</h2>
+
+<p>The table below lists the command line options for {@code systrace}.</p>
+
+<table>
+  <tr>
+    <th>Option</th>
+
+    <th>Description</th>
+  </tr>
+
+  <tr>
+    <td><code>-o&nbsp;&lt;<em>FILE</em>&gt;</code></td>
+
+    <td>Write the HTML trace report to the specified file.</td>
+  </tr>
+
+  <tr>
+    <td><code>-t N, --time=N</code></td>
+
+    <td>Trace activity for N seconds. Default value is 5 seconds.</td>
+  </tr>
+
+  <tr>
+    <td><code>-b N, --buf-size=N</code></td>
+
+    <td>Use a trace buffer size of N kilobytes. This option lets you limit the total size of the
+    data collected during a trace.</td>
+  </tr>
+
+  <tr>
+    <td><code>-d, --disk</code></td>
+
+    <td>Trace disk input and output activity. This option requires root access on the device.</td>
+  </tr>
+
+  <tr>
+    <td><code>-f, --cpu-freq</code></td>
+
+    <td>Trace CPU frequency changes. Only changes to the CPU frequency are logged, so the initial
+    frequency of the CPU when tracing starts is not shown.</td>
+  </tr>
+
+  <tr>
+    <td><code>-i, --cpu-idle</code></td>
+
+    <td>Trace CPU idle events.</td>
+  </tr>
+
+  <tr>
+    <td><code>-l, --cpu-load</code></td>
+
+    <td>Trace CPU load. This value is a percentage determined by the interactive CPU frequency
+    governor.</td>
+  </tr>
+
+  <tr>
+    <td><nobr><code>-s,&nbsp;--no-cpu-sched</code></nobr></td>
+
+    <td>Prevent tracing of the CPU scheduler. This option allows for longer trace times by reducing
+    the rate of data flowing into the trace buffer.</td>
+  </tr>
+
+  <tr>
+    <td><code>-w, --workqueue</code></td>
+
+    <td>Trace kernel work queues. This option requires root access on the device.</td>
+  </tr>
+
+  <tr>
+    <td id="tags"><code>--set-tags=&lt;<em>TAGS</em>&gt;</code></td>
+
+    <td>Set the enabled trace tags in a comma separated list. The available tags are:
+      <ul>
+        <li><code>gfx</code> - Graphics</li>
+        <li><code>input</code> - Input</li>
+        <li><code>view</code> - View</li>
+        <li><code>webview</code> - WebView</li>
+        <li><code>wm</code> - Window Manager</li>
+        <li><code>am</code> - Activity Manager</li>
+        <li><code>sync</code> - Sync Manager</li>
+        <li><code>audio</code> - Audio</li>
+        <li><code>video</code> - Video</li>
+        <li><code>camera</code> - Camera</li>
+      </ul>
+      <p class="note"><strong>Note:</strong> When setting trace tags from the command line, you
+      must stop and restart the framework ({@code $&gt; adb shell stop; adb shell start}) for the
+      tag tracing changes to take effect.</p>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>--link-assets</code></td>
+
+    <td>Link to the original CSS or JS resources instead of embedding them in the HTML trace
+    report.</td>
+  </tr>
+
+  <tr>
+    <td><nobr><code>-h, --help</code></nobr></td>
+
+    <td>Show the help message.</td>
+  </tr>
+
+</table>
+
+<p>You can set the trace <a href="#tags">tags</a> for {@code systrace} with your device's user
+interface, by navigating to <strong>Settings &gt; Developer options &gt; Monitoring &gt; Enable
+traces</strong>.</p>
+
+
+<h2 id="viewing-options">Trace Viewing Shortcuts</h2>
+
+<p>The table below lists the keyboard shortcuts that are available while viewing a {@code systrace}
+trace HTML report.</p>
+
+<table>
+  <tr>
+    <th>Key</th>
+
+    <th>Description</th>
+  </tr>
+
+  <tr>
+    <td><strong>w</strong></td>
+
+    <td>Zoom into the trace timeline.</td>
+  </tr>
+
+  <tr>
+    <td><strong>s</strong></td>
+
+    <td>Zoom out of the trace timeline.</td>
+  </tr>
+
+  <tr>
+    <td><strong>a</strong></td>
+
+    <td>Pan left on the trace timeline.</td>
+  </tr>
+
+  <tr>
+    <td><strong>d</strong></td>
+
+    <td>Pan right on the trace timeline.</td>
+  </tr>
+
+  <tr>
+    <td><strong>e</strong></td>
+
+    <td>Center the trace timeline on the current mouse location.</td>
+  </tr>
+
+  <tr>
+    <td><strong>g</strong></td>
+
+    <td>Show grid at the start of the currently selected task.</td>
+  </tr>
+
+  <tr>
+    <td><strong>Shift+g</strong></td>
+
+    <td>Show grid at the end of the currently selected task.</td>
+  </tr>
+
+  <tr>
+    <td><strong>Right Arrow</strong></td>
+
+    <td>Select the next event on the currently selected timeline.</td>
+  </tr>
+
+  <tr>
+    <td><strong>Left Arrow</strong></td>
+
+    <td>Select the previous event on the currently selected timeline.</td>
+  </tr>
+
+  <tr>
+    <td><strong>Double Click</strong></td>
+
+    <td>Zoom into the trace timeline.</td>
+  </tr>
+
+  <tr>
+    <td><strong>Shift+Double Click</strong></td>
+
+    <td>Zoom out of the trace timeline.</td>
+  </tr>
+
+</table>
diff --git a/docs/html/tools/revisions/platforms.jd b/docs/html/tools/revisions/platforms.jd
index 6163fbc..62ec422 100644
--- a/docs/html/tools/revisions/platforms.jd
+++ b/docs/html/tools/revisions/platforms.jd
@@ -870,7 +870,7 @@
 
 <dt>Tools:</dt>
 <dd>
-<p>Adds support for building with Android library projects. See <a href="tools-notes.html">SDK
+<p>Adds support for building with Android library projects. See <a href="{@docRoot}tools/sdk/tools-notes.html">SDK
 Tools, r6</a> for information.</p>
 </dd>
 
diff --git a/docs/html/tools/samples/index.jd b/docs/html/tools/samples/index.jd
index 5c0e8db..ed416e6 100644
--- a/docs/html/tools/samples/index.jd
+++ b/docs/html/tools/samples/index.jd
@@ -3,7 +3,8 @@
 @jd:body
 
 <p>To help you understand some fundamental Android APIs and coding practices, a variety of sample
-code is available from the Android SDK Manager.</p>
+code is available from the Android SDK Manager. Each version of the Android platform available
+from the SDK Manager offers its own set of sample apps.</p>
 
 <p>To download the samples:</p>
 <ol>
@@ -18,14 +19,14 @@
   <li>Select and download <em>Samples for SDK</em>.</li>
 </ol>
 
-<p>When the download is complete, you can find the samples sources at this location:</p>
+<p>When the download is complete, you can find the source code for all samples at this location:</p>
 
 <p style="margin-left:2em">
-<code><em>&lt;sdk&gt;</em>/platforms/&lt;android-version>/samples/</code>
+<code>&lt;sdk&gt;/samples/android-&lt;version>/</code>
 </p>
 
+<p>The {@code &lt;version>} number corresponds to the platform's
+  <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API level</a>.</p>
+
 <p>You can easily create new Android projects with the downloaded samples, modify them
-if you'd like, and then run them on an emulator or device. </p>
-<!--
-<p>Below are summaries for several of the available samples.</p>
--->
\ No newline at end of file
+if you'd like, and then run them on an emulator or device.</p>
\ No newline at end of file
diff --git a/docs/html/tools/sdk/eclipse-adt.jd b/docs/html/tools/sdk/eclipse-adt.jd
index 947e463..10c622b 100644
--- a/docs/html/tools/sdk/eclipse-adt.jd
+++ b/docs/html/tools/sdk/eclipse-adt.jd
@@ -96,8 +96,74 @@
 <div class="toggleable opened">
   <a href="#" onclick="return toggleDiv(this)">
   <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px"
-    width="9px" />
-ADT 20.0.1</a> <em>(June 2012)</em>
+    width="9px"/>
+ADT 20.0.3</a> <em>(August 2012)</em>
+  <div class="toggleme">
+<dl>
+  <dt>Dependencies:</dt>
+
+  <dd>
+    <ul>
+      <li>Java 1.6 or higher is required for ADT 20.0.3.</li>
+      <li>Eclipse Helios (Version 3.6.2) or higher is required for ADT 20.0.3.</li>
+      <li>ADT 20.0.3 is designed for use with <a href="{@docRoot}tools/sdk/tools-notes.html">SDK
+      Tools r20.0.3</a>. If you haven't already installed SDK Tools r20.0.3 into your SDK, use the
+      Android SDK Manager to do so.</li>
+    </ul>
+  </dd>
+
+  <dt>Bug fixes:</dt>
+  <dd>
+    <ul>
+      <li>Fixed issue with keyboard shortcuts for editors in Eclipse Juno (Version 4.x).</li>
+      <li>Fixed problem with cached download lists in SDK Manager.</li>
+    </ul>
+  </dd>
+
+</dl>
+
+</div>
+</div>
+
+
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+  <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px"
+    width="9px"/>
+ADT 20.0.2</a> <em>(July 2012)</em>
+  <div class="toggleme">
+<dl>
+  <dt>Dependencies:</dt>
+
+  <dd>
+    <ul>
+      <li>Java 1.6 or higher is required for ADT 20.0.2.</li>
+      <li>Eclipse Helios (Version 3.6.2) or higher is required for ADT 20.0.2.</li>
+      <li>ADT 20.0.2 is designed for use with <a href="{@docRoot}tools/sdk/tools-notes.html">SDK
+      Tools r20.0.1</a>. If you haven't already installed SDK Tools r20.0.1 into your SDK, use the
+      Android SDK Manager to do so.</li>
+    </ul>
+  </dd>
+
+  <dt>Bug fixes:</dt>
+  <dd>
+    <ul>
+      <li>Fixed keybindings in various XML editors for Eclipse 4.x.</li>
+      <li>Fixed bug when creating layout configurations that already exist.</li>
+    </ul>
+  </dd>
+
+</dl>
+
+</div>
+</div>
+
+
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+  <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px"
+    width="9px"/>
+ADT 20.0.1</a> <em>(July 2012)</em>
   <div class="toggleme">
 <dl>
   <dt>Dependencies:</dt>
diff --git a/docs/html/tools/sdk/installing.jd b/docs/html/tools/sdk/installing.jd
index 126d992..d7f19577 100644
--- a/docs/html/tools/sdk/installing.jd
+++ b/docs/html/tools/sdk/installing.jd
@@ -375,7 +375,7 @@
 <td colspan="3"><code>docs/</code></td>
 <td>A full set of documentation in HTML format, including the Developer's Guide,
 API Reference, and other information. To read the documentation, load the
-file <code>offline.html</code> in a web browser.</td>
+file <code>index.html</code> in a web browser.</td>
 </tr>
 <tr>
 <td colspan="3"><code>platform-tools/</code></td>
diff --git a/docs/html/tools/sdk/ndk/index.jd b/docs/html/tools/sdk/ndk/index.jd
index 216a304..064b2c3 100644
--- a/docs/html/tools/sdk/ndk/index.jd
+++ b/docs/html/tools/sdk/ndk/index.jd
@@ -161,10 +161,10 @@
 co-exist with the original GCC 4.4.3 toolchain ({@code binutils} 2.19 and GDB 6.6).</p>
             <ul>
               <li>GCC 4.6 is now the default toolchain. You may set {@code
-NDK_TOOLCHAIN_VERSION=4.4.3} in {@code Android.mk} to select the original one.</li>
+NDK_TOOLCHAIN_VERSION=4.4.3} in {@code Application.mk} to select the original one.</li>
               <li>Support for the {@code gold} linker is only available for ARM and x86
 architectures on Linux and Mac OS hosts. This support is disabled by default. Add {@code
-LOCAL_C_FLAGS += -fuse-ld=gold} in {@code Android.mk} to enable it.</li>
+LOCAL_LDLIBS += -fuse-ld=gold} in {@code Android.mk} to enable it.</li>
               <li>Programs compiled with {@code -fPIE} require the new {@code GDB} for debugging,
 including binaries in Android 4.1 (API Level 16) system images.</li>
               <li>The {@code binutils} 2.21 {@code ld} tool contains back-ported fixes from
diff --git a/docs/html/tools/sdk/tools-notes.jd b/docs/html/tools/sdk/tools-notes.jd
index 039c4b5..f8b5d25 100644
--- a/docs/html/tools/sdk/tools-notes.jd
+++ b/docs/html/tools/sdk/tools-notes.jd
@@ -28,6 +28,37 @@
 <div class="toggle-content opened">
   <p><a href="#" onclick="return toggleContent(this)">
     <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+      alt=""/>SDK Tools, Revision 20.0.3</a> <em>(August 2012)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+
+    <dl>
+    <dt>Dependencies:</dt>
+    <dd>
+      <ul>
+        <li>Android SDK Platform-tools revision 12 or later.</li>
+        <li>If you are developing in Eclipse with ADT, note that the SDK Tools r20.0.3 is designed
+        for use with ADT 20.0.3 and later. If you haven't already, update your
+        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 20.0.3.</li>
+        <li>If you are developing outside Eclipse, you must have
+          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
+    </ul>
+    </dd>
+    <dt>Bug fixes:</dt>
+    <dd>
+      <ul>
+        <li>Fixed problem with cached download lists in SDK Manager.</li>
+      </ul>
+    </dd>
+    </dl>
+  </div>
+</div>
+
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 20.0.1</a> <em>(July 2012)</em>
   </p>
 
@@ -942,3 +973,4 @@
 </dl>
  </div>
 </div>
+
diff --git a/docs/html/tools/testing/testing_accessibility.jd b/docs/html/tools/testing/testing_accessibility.jd
new file mode 100644
index 0000000..daf9b36
--- /dev/null
+++ b/docs/html/tools/testing/testing_accessibility.jd
@@ -0,0 +1,257 @@
+page.title=Accessibility Testing Checklist
+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="#goals">Testing Goals</a></li>
+    <li><a href="#requirements">Testing Requirements</a></li>
+    <li><a href="#recommendations">Testing Recommendations</a></li>
+    <li><a href="#special-cases">Special Cases and Considerations</a></li>
+    <li><a href="#how-to">Testing Accessibility Features</a>
+      <ol>
+        <li><a href="#test-audibles">Testing audible feedback</a></li>
+        <li><a href="#test-navigation">Testing focus navigation</a></li>
+        <li><a href="#test-gestures">Testing gesture navigation</a></li>
+      </ol>
+    </li>
+  </ol>
+
+  <h2>See Also</h2>
+    <ol>
+      <li>
+        <a href="{@docRoot}guide/topics/ui/accessibility/checklist.html">
+        Accessibility Developer Checklist</a>
+      </li>
+      <li>
+        <a href="{@docRoot}design/patterns/accessibility.html">
+        Android Design: Accessibility</a>
+      </li>
+      <li>
+        <a href="{@docRoot}guide/topics/ui/accessibility/apps.html">
+        Making Applications Accessible</a>
+      </li>
+    </ol>
+  </div>
+</div>
+<p>
+  Testing is an important part of making your application accessible to users with varying
+  abilities. Following <a href="{@docRoot}design/patterns/accessibility.html">design</a> and
+  <a href="{@docRoot}guide/topics/ui/accessibility/checklist.html">development</a> guidelines for
+  accessibility are important steps toward that goal, but testing for accessibility can uncover
+  problems with user interaction that are not obvious during design and development.</p>
+
+<p>This accessibility testing checklist guides you through the important aspects of
+  accessibility testing, including overall goals, required testing steps, recommended testing and
+  special considerations. This document also discusses how to enable accessibility features on
+  Android devices for testing purposes.</p>
+
+
+<h2 id="goals">Testing Goals</h2>
+
+<p>Your accessibility testing should have the following, high level goals:</p>
+
+<ul>
+  <li>Set up and use the application without sighted assistance</li>
+  <li>All task workflows in the application can be easily navigated using directional controls and
+    provide clear and appropriate feedback</li>
+</ul>
+
+
+<h2 id="requirements">Testing Requirements</h2>
+
+<p>The following tests must be completed in order to ensure a minimum level of application
+  accessibility.</p>
+
+<ol>
+  <li><strong>Directional controls:</strong> Verify that the application can be operated
+    without the use of a touch screen. Attempt to use only directional controls to accomplish the
+    primary tasks in the application. Use the keyboard and directional-pad (D-Pad) controls in the
+    Android <a href="{@docRoot}tools/devices/emulator.html">Emulator</a> or use
+    <a href="http://support.google.com/nexus/bin/answer.py?hl=en&answer=2700718">gesture
+    navigation</a> on devices with Android 4.1 (API Level 16) or higher.
+    <p class="note"><strong>Note:</strong> Keyboards and D-pads provide different navigation paths
+    than accessibility gestures. While gestures allow users to focus on nearly any on-screen
+    content, keyboard and D-pad navigation only allow focus on input fields and buttons.</p>
+    </li>
+  <li><strong>TalkBack audio prompts:</strong> Verify that user interface controls that provide
+    information (graphics or text) or allow user action have clear and accurate audio descriptions
+    when <a href="#testing-talkback">TalkBack is enabled</a> and controls are focused. Use
+    directional controls to move focus between application layout elements.</li>
+  <li><strong>Explore by Touch prompts:</strong> Verify that user interface controls that
+    provide information (graphics or text) or allow user action have appropriate audio descriptions
+    when <a href="#testing-ebt">Explore by Touch is enabled</a>. There should be no
+    regions where contents or controls do not provide an audio description.</li>
+  <li><strong>Touchable control sizes:</strong> All controls where a user can select or take an
+    action must be a minimum of 48 dp (approximately 9mm) in length and width, as recommended by
+    <a href="{@docRoot}design/patterns/accessibility.html">Android Design</a>.</li>
+  <li><strong>Gestures work with TalkBack enabled:</strong> Verify that app-specific gestures,
+    such as zooming images, scrolling lists, swiping between pages or navigating carousel controls
+    continue to work when <a href="#testing-talkback">TalkBack is enabled</a>. If these gestures do
+    not function, then an alternative interface for these actions must be provided.</li>
+  <li><strong>No audio-only feedback:</strong> Audio feedback must always have a secondary
+    feedback mechanism to support users who are deaf or hard of hearing, for example: A sound alert
+    for the arrival of a message should also be accompanied by a system
+    {@link android.app.Notification}, haptic feedback (if available) or another visual alert.</li>
+</ol>
+
+
+<h2 id="recommendations">Testing Recommendations</h2>
+
+<p>The following tests are recommended for ensuring the accessibility of your application. If you
+  do not test these items, it may impact the overall accessibility and quality of your
+  application.</p>
+
+<ol>
+  <li><strong>Repetitive audio prompting:</strong> Check that closely related controls (such as
+    items with multiple components in a list) do not simply repeat the same audio prompt. For
+    example, in a contacts list that contains a contact picture, written name and title, the prompts
+    should not simply repeat “Bob Smith” for each item.</li>
+  <li><strong>Audio prompt overloading or underloading:</strong> Check that closely related
+    controls provide an appropriate level of audio information that enables users to understand and
+    act on a screen element. Too little or too much prompting can make it difficult to understand
+    and use a control.</li>
+</ol>
+
+
+<h2 id="special-cases">Special Cases and Considerations</h2>
+
+<p>The following list describes specific situations that should be tested to ensure an
+  accessible app. Some, none or all of the cases described here may apply to your application. Be
+  sure to review this list to find out if these special cases apply and take appropriate action.</p>
+
+<ol>
+  <li><strong>Review developer special cases and considerations:</strong> Review the list of
+    <a href="{@docRoot}guide/topics/ui/accessibility/checklist.html#special-cases">special cases</a>
+     for accessibility development and test your application for the cases that apply.</li>
+  <li><strong>Prompts for controls that change function:</strong> Buttons or other controls
+    that change function due to application context or workflow must provide audio prompts
+    appropriate to their current function. For example, a button that changes function from play
+    video to pause video should provide an audio prompt which is appropriate to its current state.</li>
+  <li><strong>Video playback and captioning:</strong> If the application provides video
+    playback, verify that it supports captioning and subtitles to assist users who are deaf or hard
+    of hearing. The video playback controls must clearly indicate if captioning is available for a
+    video and provide a clear way of enabling captions.</li>
+</ol>
+
+
+<h2 id="how-to">Testing Accessibility Features</h2>
+
+<p>Testing of accessibility features such as TalkBack, Explore by Touch and accessibility Gestures
+requires setup of your testing device. This section describes how to enable these features for
+accessibility testing.</p>
+
+
+<h3 id="test-audibles">Testing audible feedback</h3>
+
+<p>Audible accessibility feedback features on Android devices provide audio prompts that speaks
+  the screen content as you move around an application. By enabling these features on an Android
+  device, you can test the experience of users with blindness or low-vision using your application.
+</p>
+
+<p>Audible feedback for users on Android is typically provided by TalkBack accessibility service and
+the Explore by Touch system feature. The TalkBack accessibility service comes preinstalled on most
+Android devices and can also be downloaded for free from
+<a href="https://play.google.com/store/apps/details?id=com.google.android.marvin.talkback">Google
+Play</a>. The Explore by Touch system feature is available on devices running Android 4.0 and later.
+</p>
+
+<h4 id="testing-talkback">Testing with TalkBack</h4>
+
+<p>The <em>TalkBack</em> accessibility service works by speaking the contents of user interface
+controls as the user moves focus onto controls. This service should be enabled as part of testing
+focus navigation and audible prompts.</p>
+
+<p>To enable the TalkBack accessibility service:</p>
+<ol>
+  <li>Launch the <strong>Settings</strong> application.</li>
+  <li>Navigate to the <strong>Accessibility</strong> category and select it.</li>
+  <li>Select <strong>Accessibility</strong> to enable it.</li>
+  <li>Select <strong>TalkBack</strong> to enable it.</li>
+</ol>
+
+<p class="note">
+  <strong>Note:</strong> While TalkBack is the most available Android accessibility service for
+  users with disabilities, other accessibility services are available and may be installed by users.
+</p>
+
+<p>For more information about using TalkBack, see
+<a href="http://support.google.com/nexus/bin/answer.py?hl=en&answer=2700928">Use TalkBack</a>.</p>
+
+<h4 id="testing-ebt">Testing with Explore by Touch</h4>
+
+<p>The <em>Explore by Touch</em> system feature is available on devices running Android 4.0 and
+  later, and works by enabling a special accessibility mode that allows users to drag a finger
+  around the interface of an application and hear the contents of the screen spoken. This feature
+  does not require screen elements to be focused using an directional controller, but listens for
+  hover events over user interface controls.
+</p>
+
+<p>To enable Explore by Touch on Android 4.0 and later:</p>
+<ol>
+  <li>Launch the <strong>Settings</strong> application.</li>
+  <li>Navigate to the <strong>Accessibility</strong> category and select it.</li>
+  <li>Select the <strong>TalkBack</strong> to enable it.
+      <p class="note"><strong>Note:</strong> On Android 4.1 (API Level 16) and higher, the system
+      provides a popup message to enable Explore by Touch. On older versions, you must follow the
+      step below.</p>
+  </li>
+  <li>Return to the <strong>Accessibility</strong> category and select <strong>Explore by
+Touch</strong> to enable it.
+    <p class="note"><strong>Note:</strong> You must turn on TalkBack <em>first</em>, otherwise this
+option is not available.</p>
+  </li>
+</ol>
+
+<p>For more information about using the Explore by Touch features, see
+<a href="http://support.google.com/nexus/bin/answer.py?hl=en&answer=2700722">Use Explore by
+Touch</a>.</p>
+
+<h3 id="test-navigation">Testing focus navigation</h3>
+
+<p>Focus navigation is the use of directional controls to navigate between the individual user
+  interface elements of an application in order to operate it. Users with limited vision or limited
+  manual dexterity often use this mode of navigation instead of touch navigation. As part of
+  accessibility testing, you should verify that your application can be operated using only
+  directional controls.</p>
+
+<p>You can test navigation of your application using only focus controls, even if your test devices
+  does not have a directional controller. The <a href="{@docRoot}tools/help/emulator.html">Android
+  Emulator</a> provides a simulated directional controller that you can 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"
+  >Eyes-Free Keyboard</a> to simulate use of a D-pad on a test device that does not have a physical
+  D-pad.</p>
+
+
+<h3 id="test-gestures">Testing gesture navigation</h3>
+
+<p>Gesture navigation is an accessibility navigation mode that allows users to navigate Android
+  devices and applications using specific
+  <a href="http://support.google.com/nexus/bin/answer.py?hl=en&answer=2700718">gestures</a>. This
+  navigation mode is available on Android 4.1 (API Level 16) and higher.</p>
+
+<p class="note"><strong>Note:</strong> Accessibility gestures provide a different navigation path
+than keyboards and D-pads. While gestures allow users to focus on nearly any on-screen
+content, keyboard and D-pad navigation only allow focus on input fields and buttons.</p>
+
+<p>To enable gesture navigation on Android 4.1 and later:</p>
+<ul>
+  <li>Enable both TalkBack and the Explore by Touch feature as described in the
+    <a href="#testing-ebt">Testing with Explore by Touch</a>. When <em>both</em> of these
+    features are enabled, accessibility gestures are automatically enabled.</li>
+  <li>You can change gesture settings using <strong>Settings &gt; Accessibility &gt; TalkBack &gt;
+    Settings &gt; Manage shortcut gestures</strong>.
+</ul>
+
+<p>For more information about using Explore by Touch accessibility gestures, see
+<a href="http://support.google.com/android/bin/topic.py?hl=en&topic=2492346">Accessibility
+gestures</a>.</p>
+
+<p class="note">
+  <strong>Note:</strong> Accessibility services other than TalkBack may map accessibility gestures
+  to different user actions. If gestures are not producing the expected actions during testing, try
+  disabling other accessibility services before proceeding.</p>
\ No newline at end of file
diff --git a/docs/html/tools/tools_toc.cs b/docs/html/tools/tools_toc.cs
index c7cdded..cca9433 100644
--- a/docs/html/tools/tools_toc.cs
+++ b/docs/html/tools/tools_toc.cs
@@ -5,7 +5,7 @@
         <a href="<?cs var:toroot ?>tools/index.html"><span class="en">Developer Tools</span></a>
     </div>
   </li>
-  
+
   <li class="nav-section">
     <div class="nav-section-header"><a href="<?cs var:toroot
 ?>sdk/index.html"><span class="en">Download</span></a></div>
@@ -29,7 +29,7 @@
       </li>
     </ul>
   </li>
-  
+
   <li class="nav-section">
     <div class="nav-section-header">
         <a href="/tools/workflow/index.html"><span class="en">Workflow</span></a>
@@ -39,8 +39,8 @@
         <div class="nav-section-header"><a href="/tools/devices/index.html"><span class="en">Setting Up Virtual Devices</span></a></div>
         <ul>
           <li><a href="/tools/devices/managing-avds.html"><span class="en">With AVD Manager</span></a></li>
-          <li><a href="/tools/devices/managing-avds-cmdline.html"><span class="en">From the Command Line</span></a></li>      
-          <li><a href="/tools/devices/emulator.html"><span class="en">Using the Android Emulator</span></a></li>                  
+          <li><a href="/tools/devices/managing-avds-cmdline.html"><span class="en">From the Command Line</span></a></li>
+          <li><a href="/tools/devices/emulator.html"><span class="en">Using the Android Emulator</span></a></li>
         </ul>
       </li>
       <li><a href="/tools/device.html"><span class="en">Using Hardware Devices</span></a></li>
@@ -48,16 +48,16 @@
         <div class="nav-section-header"><a href="/tools/projects/index.html"><span class="en">Setting Up Projects</span></a></div>
         <ul>
           <li><a href="/tools/projects/projects-eclipse.html"><span class="en">From Eclipse with ADT</span></a></li>
-          <li><a href="/tools/projects/projects-cmdline.html"><span class="en">From the Command Line</span></a></li>                      
+          <li><a href="/tools/projects/projects-cmdline.html"><span class="en">From the Command Line</span></a></li>
         </ul>
       </li>
 
-  
+
       <li class="nav-section">
         <div class="nav-section-header"><a href="/tools/building/index.html"><span class="en">Building and Running</span></a></div>
         <ul>
           <li><a href="/tools/building/building-eclipse.html"><span class="en">From Eclipse with ADT</span></a></li>
-          <li><a href="/tools/building/building-cmdline.html"><span class="en">From the Command Line</span></a></li>                    
+          <li><a href="/tools/building/building-cmdline.html"><span class="en">From the Command Line</span></a></li>
         </ul>
       </li>
 
@@ -76,7 +76,7 @@
           </li>
           <li><a href="<?cs var:toroot ?>tools/testing/testing_otheride.html">
             <span class="en">From Other IDEs</span></a>
-          </li>  
+          </li>
           <li>
             <a href="<?cs var:toroot?>tools/testing/activity_testing.html">
             <span class="en">Activity Testing</span></a>
@@ -90,6 +90,10 @@
             <span class="en">Content Provider Testing</span></a>
           </li>
           <li>
+            <a href="<?cs var:toroot?>tools/testing/testing_accessibility.html">
+            <span class="en">Accessibility Testing</span></a>
+          </li>
+          <li>
             <a href="<?cs var:toroot ?>tools/testing/what_to_test.html">
             <span class="en">What To Test</span></a>
           </li>
@@ -107,8 +111,10 @@
       <li><a href="<?cs var:toroot ?>tools/debugging/debugging-projects-cmdline.html"><span class="en">From Other IDEs</span></a></li>
       <li><a href="<?cs var:toroot ?>tools/debugging/ddms.html"><span class="en">Using DDMS</span></a></li>
       <li><a href="<?cs var:toroot ?>tools/debugging/debugging-log.html"><span class="en">Reading and Writing Logs</span></a></li>
+      <li><a href="<?cs var:toroot ?>tools/debugging/improving-w-lint.html"><span class="en">Improving Your Code with lint</span></a></li>
       <li><a href="<?cs var:toroot ?>tools/debugging/debugging-ui.html"><span class="en">Optimizing your UI</span></a></li>
       <li><a href="<?cs var:toroot ?>tools/debugging/debugging-tracing.html"><span class="en">Profiling with Traceview and dmtracedump</span></a></li>
+      <li><a href="<?cs var:toroot ?>tools/debugging/systrace.html"><span class="en">Analysing Display and Performance with Systrace</span></a></li>
       <li><a href="<?cs var:toroot ?>tools/debugging/debugging-devtools.html"><span class="en">Using the Dev Tools App</span></a></li>
     </ul>
   </li>
@@ -137,7 +143,7 @@
       <li><a href="<?cs var:toroot ?>tools/help/etc1tool.html">etc1tool</a></li>
       <li><a href="<?cs var:toroot ?>tools/help/hierarchy-viewer.html">Hierarchy Viewer</a></li>
       <li><a href="<?cs var:toroot ?>tools/help/hprof-conv.html">hprof-conv</a></li>
-      <li><a href="<?cs var:toroot ?>tools/help/layoutopt.html">layoutopt</a></li>
+      <li><a href="<?cs var:toroot ?>tools/help/lint.html">lint</span></a></li>
       <li><a href="<?cs var:toroot ?>tools/help/logcat.html">logcat</a></li>
       <li><a href="<?cs var:toroot ?>tools/help/mksdcard.html">mksdcard</a></li>
       <li><a href="<?cs var:toroot ?>tools/help/monkey.html">monkey</a></li>
@@ -154,12 +160,13 @@
         </ul>
       </li>
        <li><a href="<?cs var:toroot ?>tools/help/proguard.html">ProGuard</a></li>
+       <li><a href="<?cs var:toroot ?>tools/help/systrace.html">Systrace</a></li>
        <li><a href="<?cs var:toroot ?>tools/help/gltracer.html">Tracer for OpenGL ES</a></li>
        <li><a href="<?cs var:toroot ?>tools/help/traceview.html">Traceview</a></li>
        <li><a href="<?cs var:toroot ?>tools/help/zipalign.html">zipalign</a></li>
     </ul>
   </li>
-  
+
   <li class="nav-section">
     <div class="nav-section-header"><a href="<?cs var:toroot
 ?>tools/revisions/index.html"><span class="en">Revisions</span></a></div>
@@ -177,8 +184,8 @@
 class="en">Platforms</span></a></li>
     </ul>
   </li>
-  
-  
+
+
   <li class="nav-section">
     <div class="nav-section-header"><a href="<?cs var:toroot
 ?>tools/extras/index.html"><span class="en">Extras</span></a></div>
@@ -191,13 +198,13 @@
     </ul>
   </li>
 
-  
+
   <li class="nav-section">
     <div class="nav-section-header empty"><a href="<?cs var:toroot
 ?>tools/samples/index.html"><span class="en">Samples</span></a></div>
   </li>
 
-  
+
   <li class="nav-section">
     <div class="nav-section-header">
     <a href="<?cs var:toroot ?>tools/adk/index.html">
@@ -206,17 +213,9 @@
     <ul>
       <li><a href="<?cs var:toroot ?>tools/adk/adk2.html">ADK 2012 Guide</a></li>
       <li><a href="<?cs var:toroot ?>tools/adk/adk.html">ADK 2011 Guide</a></li>
-      <li class="nav-section">
-        <div class="nav-section-header">
-        <a href="<?cs var:toroot ?>tools/adk/aoa.html">Android Open Accessory Protocol</a>
-        </div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>tools/adk/aoa2.html">AOA 2.0</a></li>
-        </ul>
-      </li>
     </ul>
   </li>
-  
+
 </ul><!-- nav -->
 
 <script type="text/javascript">
diff --git a/docs/html/training/accessibility/service.jd b/docs/html/training/accessibility/service.jd
index f62506b..373ddbb 100644
--- a/docs/html/training/accessibility/service.jd
+++ b/docs/html/training/accessibility/service.jd
@@ -175,7 +175,7 @@
 android.view.accessibility.AccessibilityEvent#getEventType} to determine the
 type of event, and {@link
 android.view.accessibility.AccessibilityEvent#getContentDescription} to extract
-any label text associated with the fiew that fired the event.</pre>
+any label text associated with the view that fired the event.</pre>
 
 <pre>
 &#64;Override
@@ -281,6 +281,6 @@
 
 <p>Now you have a complete, functioning accessibility service.  Try configuring
 how it interacts with the user, by adding Android's <a
-  href="http://developer.android.com/resources/articles/tts.html">text-to-speech
+  href="http://android-developers.blogspot.com/2009/09/introduction-to-text-to-speech-in.html">text-to-speech
   engine</a>, or using a {@link android.os.Vibrator} to provide haptic
 feedback!</p>
diff --git a/docs/html/training/basics/activity-lifecycle/recreating.jd b/docs/html/training/basics/activity-lifecycle/recreating.jd
index 3bbf0bb..1b88e19 100644
--- a/docs/html/training/basics/activity-lifecycle/recreating.jd
+++ b/docs/html/training/basics/activity-lifecycle/recreating.jd
@@ -51,23 +51,28 @@
 the foreground activity because the screen configuration has changed and your activity might need to
 load alternative resources (such as the layout).</p>
 
-<p>By default, the system uses the {@link android.os.Bundle} instance state to saves information
+<p>By default, the system uses the {@link android.os.Bundle} instance state to save information
 about each {@link android.view.View} object in your activity layout (such as the text value entered
 into an {@link android.widget.EditText} object). So, if your activity instance is destroyed and
-recreated, the state of the layout is automatically restored to its previous state. However, your
+recreated, the state of the layout is restored to its previous state with no
+code required by you. However, your
 activity might have more state information that you'd like to restore, such as member variables that
 track the user's progress in the activity.</p>
 
-<p>In order for you to add additional data to the saved instance state for your activity, there's an
-additional callback method in the activity lifecycle that's not shown in the illustration from
-previous lessons. The method is {@link android.app.Activity#onSaveInstanceState
-onSaveInstanceState()} and the system calls it when the user is leaving your activity. When the
-system calls this method, it passes the {@link android.os.Bundle} object that will be saved in the
-event that your activity is destroyed unexpectedly so you can add additional information to it. Then
-if the system must recreate the activity instance after it was destroyed, it passes the same {@link
-android.os.Bundle} object to your activity's {@link android.app.Activity#onRestoreInstanceState
-onRestoreInstanceState()} method and also to your {@link android.app.Activity#onCreate onCreate()}
-method.</p>
+<p class="note"><strong>Note:</strong> In order for the Android system to restore the state of
+the views in your activity, <strong>each view must have a unique ID</strong>, supplied by the
+<a href="{@docRoot}reference/android/view/View.html#attr_android:id">{@code
+android:id}</a> attribute.</p>
+
+<p>To save additional data about the activity state, you must override
+the {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()} callback method.
+The system calls this method when the user is leaving your activity
+and passes it the {@link android.os.Bundle} object that will be saved in the
+event that your activity is destroyed unexpectedly. If
+the system must recreate the activity instance later, it passes the same {@link
+android.os.Bundle} object to both the {@link android.app.Activity#onRestoreInstanceState
+onRestoreInstanceState()} and {@link android.app.Activity#onCreate onCreate()}
+methods.</p>
 
 <img src="{@docRoot}images/training/basics/basic-lifecycle-savestate.png" />
 <p class="img-caption"><strong>Figure 2.</strong> As the system begins to stop your activity, it
diff --git a/docs/html/training/basics/activity-lifecycle/starting.jd b/docs/html/training/basics/activity-lifecycle/starting.jd
index 1a4bc2d..dd17304 100644
--- a/docs/html/training/basics/activity-lifecycle/starting.jd
+++ b/docs/html/training/basics/activity-lifecycle/starting.jd
@@ -112,7 +112,7 @@
 </table>
 -->
 
-<p>As you'll learn in the following lessons, there are several situtations in which an activity
+<p>As you'll learn in the following lessons, there are several situations in which an activity
 transitions between different states that are illustrated in figure 1. However, only three of
 these states can be static. That is, the activity can exist in one of only three states for an
 extended period of time:</p>
diff --git a/docs/html/training/basics/data-storage/databases.jd b/docs/html/training/basics/data-storage/databases.jd
new file mode 100644
index 0000000..3a717dd
--- /dev/null
+++ b/docs/html/training/basics/data-storage/databases.jd
@@ -0,0 +1,322 @@
+page.title=Saving Data in SQL Databases
+parent.title=Data Storage
+parent.link=index.html
+
+trainingnavtop=true
+previous.title=Saving Data in Files
+previous.link=files.html
+
+@jd:body
+
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>This lesson teaches you to</h2>
+<ol>
+  <li><a href="#DefineContract">Define a Schema and Contract</a></li>
+  <li><a href="#DbHelper">Create a Database Using a SQL Helper</a></li>
+  <li><a href="#WriteDbRow">Put Information into a Database</a></li>
+  <li><a href="#ReadDbRow">Read Information from a Database</a></li>
+  <li><a href="#DeleteDbRow">Delete Information from a Database</a></li>
+  <li><a href="#UpdateDbRow">Update a Database</a></li>
+</ol>
+
+<h2>You should also read</h2>
+<ul>
+  <li><a href="{@docRoot}guide/topics/data/data-storage.html#db">Using Databases</a></li>
+</ul>
+
+<!--
+<h2>Try it out</h2>
+
+<div class="download-box">
+  <a href="{@docRoot}shareables/training/Sample.zip" class="button">Download the sample</a>
+  <p class="filename">Sample.zip</p>
+</div>
+-->
+
+</div>
+</div>
+
+
+<p>Saving data to a database is ideal for repeating or structured data,
+such as contact information. This class assumes that you are
+familiar with SQL databases in general and helps you get started with
+SQLite databases on Android. The APIs you'll need to use a database
+on Android are available in the  {@link android.database.sqlite} package.</p>
+
+
+<h2 id="DefineContract">Define a Schema and Contract</h2>
+
+<p>One of the main principles of SQL databases is the schema: a formal
+declaration of how the database is organized. The schema is reflected in the SQL
+statements that you use to create your database.  You may find it helpful to
+create a companion class, known as a <em>contract</em> class, which explicitly specifies
+the layout of your schema in a systematic and self-documenting way.</p>
+
+<p>A contract class is a container for constants that define names for URIs,
+tables, and columns. The contract class allows you to use the same constants
+across all the other classes in the same package. This lets you change a column
+name in one place and have it propagate throughout your code.</p>
+
+<p>A good way to organize a contract class is to put definitions that are
+global to your whole database in the root level of the class. Then create an inner
+class for each table that enumerates its columns.</p>
+
+<p class="note"><strong>Note:</strong> By implementing the {@link
+android.provider.BaseColumns} interface, your inner class can inherit a primary
+key field called {@code _ID} that some Android classes such as cursor adaptors
+will expect it to have.  It's not required, but this can help your database
+work harmoniously with the Android framework.</p>
+
+<p>For example, this snippet defines the table name and column names for a
+single table:</p>
+
+
+<pre>
+public static abstract class FeedEntry implements BaseColumns {
+    public static final String TABLE_NAME = &quot;entry&quot;;
+    public static final String COLUMN_NAME_ENTRY_ID = &quot;entryid&quot;;
+    public static final String COLUMN_NAME_TITLE = &quot;title&quot;;
+    public static final String COLUMN_NAME_SUBTITLE = &quot;subtitle&quot;;
+    ...
+}
+</pre>
+
+
+<p>To prevent someone from accidentally instantiating the contract class, give
+it an empty constructor.  </p>
+
+<pre>
+// Prevents the FeedReaderContract class from being instantiated.
+private FeedReaderContract() {}
+</pre>
+
+
+
+<h2 id="DbHelper">Create a Database Using a SQL Helper</h2>
+
+<p>Once you have defined how your database looks, you should implement methods
+that create and maintain the database and tables.  Here are some typical
+statements that create and delete a table:</P>
+
+<pre>
+private static final String TEXT_TYPE = &quot; TEXT&quot;;
+private static final String COMMA_SEP = &quot;,&quot;;
+private static final String SQL_CREATE_ENTRIES =
+    &quot;CREATE TABLE &quot; + FeedReaderContract.FeedEntry.TABLE_NAME + &quot; (&quot; +
+    FeedReaderContract.FeedEntry._ID + &quot; INTEGER PRIMARY KEY,&quot; +
+    FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID + TEXT_TYPE + COMMA_SEP +
+    FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE + TEXT_TYPE + COMMA_SEP +
+    ... // Any other options for the CREATE command
+    &quot; )&quot;;
+
+private static final String SQL_DELETE_ENTRIES =
+    &quot;DROP TABLE IF EXISTS &quot; + TABLE_NAME_ENTRIES;
+</pre>
+
+<p>Just like files that you save on the device's <a
+href="{@docRoot}guide/topics/data/data-storage.html#filesInternal">internal
+storage</a>, Android stores your database in private disk space that's associated
+application. Your data is secure, because by default this area is not
+accessible to other applications.</p>
+
+<p>A useful set of APIs is available in the {@link
+android.database.sqlite.SQLiteOpenHelper} class. 
+When you use this class to obtain references to your database, the system
+performs the potentially 
+long-running operations of creating and updating the database only when
+needed and <em>not during app startup</em>. All you need to do is call 
+{@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase} or
+{@link android.database.sqlite.SQLiteOpenHelper#getReadableDatabase}.</p>
+
+<p class="note"><strong>Note:</strong> Because they can be long-running,
+be sure that you call {@link
+android.database.sqlite.SQLiteOpenHelper#getWritableDatabase} or {@link
+android.database.sqlite.SQLiteOpenHelper#getReadableDatabase} in a background thread,
+such as with {@link android.os.AsyncTask} or {@link android.app.IntentService}.</p>
+
+<p>To use {@link android.database.sqlite.SQLiteOpenHelper}, create a subclass that
+overrides the {@link
+android.database.sqlite.SQLiteOpenHelper#onCreate onCreate()}, {@link
+android.database.sqlite.SQLiteOpenHelper#onUpgrade onUpgrade()} and {@link
+android.database.sqlite.SQLiteOpenHelper#onOpen onOpen()} callback methods. You may also
+want to implement {@link android.database.sqlite.SQLiteOpenHelper#onDowngrade onDowngrade()},
+but it's not required.</p>
+
+<p>For example, here's an implementation of {@link
+android.database.sqlite.SQLiteOpenHelper} that uses some of the commands shown above:</p>
+
+<pre>
+public class FeedReaderDbHelper extends SQLiteOpenHelper {
+    // If you change the database schema, you must increment the database version.
+    public static final int DATABASE_VERSION = 1;
+    public static final String DATABASE_NAME = &quot;FeedReader.db&quot;;
+
+    public FeedReaderDbHelper(Context context) {
+        super(context, DATABASE_NAME, null, DATABASE_VERSION);
+    }
+    public void onCreate(SQLiteDatabase db) {
+        db.execSQL(SQL_CREATE_ENTRIES);
+    }
+    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+        // This database is only a cache for online data, so its upgrade policy is
+        // to simply to discard the data and start over
+        db.execSQL(SQL_DELETE_ENTRIES);
+        onCreate(db);
+    }
+    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+        onUpgrade(db, oldVersion, newVersion);
+    }
+}
+</pre>
+
+<p>To access your database, instantiate your subclass of {@link
+android.database.sqlite.SQLiteOpenHelper}:</p>
+
+<pre>
+FeedReaderDbHelper mDbHelper = new FeedReaderDbHelper(getContext());
+</pre>
+
+
+
+
+<h2 id="WriteDbRow">Put Information into a Database</h2>
+
+<p>Insert data into the database by passing a {@link android.content.ContentValues}
+object to the {@link android.database.sqlite.SQLiteDatabase#insert insert()} method:</p>
+
+<pre>
+// Gets the data repository in write mode
+SQLiteDatabase db = mDbHelper.getWritableDatabase();
+
+// Create a new map of values, where column names are the keys
+ContentValues values = new ContentValues();
+values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID, id);
+values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE, title);
+values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_CONTENT, content);
+
+// Insert the new row, returning the primary key value of the new row
+long newRowId;
+newRowId = db.insert(
+         FeedReaderContract.FeedEntry.TABLE_NAME,
+         FeedReaderContract.FeedEntry.COLUMN_NAME_NULLABLE,
+         values);
+</pre>
+
+<p>The first argument for {@link android.database.sqlite.SQLiteDatabase#insert insert()}
+is simply the table name. The second argument provides
+the name of a column in which the framework can insert NULL in the event that the
+{@link android.content.ContentValues} is empty (if you instead set this to {@code "null"},
+then the framework will not insert a row when there are no values).</p>
+
+
+
+
+<h2 id="ReadDbRow">Read Information from a Database</h2>
+
+<p>To read from a database, use the {@link android.database.sqlite.SQLiteDatabase#query query()}
+method, passing it your selection criteria and desired columns.
+The method combines elements of {@link android.database.sqlite.SQLiteDatabase#insert insert()}
+and {@link android.database.sqlite.SQLiteDatabase#update update()}, except the column list
+defines the data you want to fetch, rather than the data to insert. The results of the query
+are returned to you in a {@link android.database.Cursor} object.</p>
+
+<pre>
+SQLiteDatabase db = mDbHelper.getReadableDatabase();
+
+// Define a <em>projection</em> that specifies which columns from the database
+// you will actually use after this query.
+String[] projection = {
+    FeedReaderContract.FeedEntry._ID,
+    FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE,
+    FeedReaderContract.FeedEntry.COLUMN_NAME_UPDATED,
+    ...
+    };
+
+// How you want the results sorted in the resulting Cursor
+String sortOrder =
+    FeedReaderContract.FeedEntry.COLUMN_NAME_UPDATED + " DESC";
+
+Cursor c = db.query(
+    FeedReaderContract.FeedEntry.TABLE_NAME,  // The table to query
+    projection,                               // The columns to return
+    selection,                                // The columns for the WHERE clause
+    selectionArgs,                            // The values for the WHERE clause
+    null,                                     // don't group the rows
+    null,                                     // don't filter by row groups
+    sortOrder                                 // The sort order
+    );
+</pre>
+
+<p>To look at a row in the cursor, use one of the {@link android.database.Cursor} move
+methods, which you must always call before you begin reading values. Generally, you should start
+by calling {@link android.database.Cursor#moveToFirst}, which places the "read position" on the
+first entry in the results. For each row, you can read a column's value by calling one of the
+{@link android.database.Cursor} get methods, such as {@link android.database.Cursor#getString
+getString()} or {@link android.database.Cursor#getLong getLong()}. For each of the get methods,
+you must pass the index position of the column you desire, which you can get by calling
+{@link android.database.Cursor#getColumnIndex getColumnIndex()} or
+{@link android.database.Cursor#getColumnIndexOrThrow getColumnIndexOrThrow()}.
+For example:</p>
+
+<pre>
+cursor.moveToFirst();
+long itemId = cursor.getLong(
+    cursor.getColumnIndexOrThrow(FeedReaderContract.FeedEntry._ID)
+);
+</pre>
+
+
+
+
+<h2 id="DeleteDbRow">Delete Information from a Database</h2>
+
+<p>To delete rows from a table, you need to provide selection criteria that
+identify the rows. The database API provides a mechanism for creating selection
+criteria that protects against SQL injection. The mechanism divides the
+selection specification into a selection clause and selection arguments. The
+clause defines the columns to look at, and also allows you to combine column
+tests. The arguments are values to test against that are bound into the clause.
+Because the result isn't handled the same as a regular SQL statement, it is
+immune to SQL injection.</p>
+
+<pre>
+// Define 'where' part of query.
+String selection = FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID + &quot; LIKE ?&quot;;
+// Specify arguments in placeholder order.
+String[] selelectionArgs = { String.valueOf(rowId) };
+// Issue SQL statement.
+db.delete(table_name, mySelection, selectionArgs);
+</pre>
+
+
+
+<h2 id="UpdateDbRow">Update a Database</h2>
+
+<p>When you need to modify a subset of your database values, use the {@link
+android.database.sqlite.SQLiteDatabase#update update()} method.</p>
+
+<p>Updating the table combines the content values syntax of {@link
+android.database.sqlite.SQLiteDatabase#insert insert()}  with the {@code where} syntax
+of {@link android.database.sqlite.SQLiteDatabase#delete delete()}.</p>
+
+<pre>
+SQLiteDatabase db = mDbHelper.getReadableDatabase();
+
+// New value for one column
+ContentValues values = new ContentValues();
+values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE, title);
+
+// Which row to update, based on the ID
+String selection = FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID + &quot; LIKE ?&quot;;
+String[] selelectionArgs = { String.valueOf(rowId) };
+
+int count = db.update(
+    FeedReaderDbHelper.FeedEntry.TABLE_NAME,
+    values,
+    selection,
+    selectionArgs);
+</pre>
+
diff --git a/docs/html/training/basics/data-storage/files.jd b/docs/html/training/basics/data-storage/files.jd
new file mode 100644
index 0000000..dd081a6
--- /dev/null
+++ b/docs/html/training/basics/data-storage/files.jd
@@ -0,0 +1,382 @@
+page.title=Saving Files
+parent.title=Data Storage
+parent.link=index.html
+
+trainingnavtop=true
+
+@jd:body
+
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>This lesson teaches you to</h2>
+<ol>
+  <li><a href="#InternalVsExternalStorage">Choose Internal or External Storage</a></li>
+  <li><a href="#GetWritePermission">Obtain Permissions for External Storage</a></li>
+  <li><a href="#WriteInternalStorage">Save a File on Internal Storage</a></li>
+  <li><a href="#WriteExternalStorage">Save a File on External Storage</a></li>
+  <li><a href="#GetFreeSpace">Query Free Space</a></li>
+  <li><a href="#DeleteFile">Delete a File</a></li>
+</ol>
+
+<h2>You should also read</h2>
+<ul>
+  <li><a href="{@docRoot}guide/topics/data/data-storage.html#filesInternal">Using the Internal
+Storage</a></li>
+  <li><a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">Using the External
+Storage</a></li>
+</ul>
+
+</div>
+</div>
+
+<p>Android uses a file system that's
+similar to disk-based file systems on other platforms. This lesson describes
+how to work with the Android file system to read and write files with the {@link java.io.File}
+APIs.</p>
+
+<p>A {@link java.io.File} object is suited to reading or writing large amounts of data in
+start-to-finish order without skipping around. For example, it's good for image files or
+anything exchanged over a network.</p>
+
+<p>This lesson shows how to perform basic file-related tasks in your app.
+The lesson assumes that you are familiar with the basics of the Linux file system and the
+standard file input/output APIs in {@link java.io}.</p>
+
+
+<h2 id="InternalVsExternalStorage">Choose Internal or External Storage</h2>
+
+<p>All Android devices have two file storage areas: "internal" and "external" storage.  These names
+come from the early days of Android, when most devices offered built-in non-volatile memory
+(internal storage), plus a removable storage medium such as a micro SD card (external storage).
+Some devices divide the permanent storage space into "internal" and "external" partitions, so even
+without a removable storage medium, there are always two storage spaces and
+the API behavior is the same whether the external storage is removable or not.
+The following lists summarize the facts about each storage space.</p>
+
+<div class="col-5" style="margin-left:0">
+<p><b>Internal storage:</b></p>
+<ul>
+<li>It's always available.</li>
+<li>Files saved here are accessible by only your app by default.</li>
+<li>When the user uninstalls your app, the system removes all your app's files from
+internal storage.</li>
+</ul>
+<p>Internal storage is best when you want to be sure that neither the user nor other apps can
+access your files.</p>
+</div>
+
+<div class="col-7" style="margin-right:0">
+<p><b>External storage:</b></p>
+<ul>
+<li>It's not always available, because the user can mount the external storage as USB storage
+and in some cases remove it from the device.</li>
+<li>It's world-readable, so
+files saved here may be read outside of your control.</li>
+<li>When the user uninstalls your app, the system removes your app's files from here
+only if you save them in the directory from {@link android.content.Context#getExternalFilesDir
+getExternalFilesDir()}.</li>
+</ul>
+<p>External storage is the best
+place for files that don't require access restrictions and for files that you want to share
+with other apps or allow the user to access with a computer.</p>
+</div>
+
+
+<p class="note" style="clear:both">
+<strong>Tip:</strong> Although apps are installed onto the internal storage by
+default, you can specify the <a
+href="{@docRoot}guide/topics/manifest/manifest-element.html#install">{@code
+android:installLocation}</a> attribute in your manifest so your app may
+be installed on external storage. Users appreciate this option when the APK size is very large and
+they have an external storage space that's larger than the internal storage. For more
+information, see <a
+href="{@docRoot}guide/topics/data/install-location.html">App Install Location</a>.</p>
+
+
+<h2 id="GetWritePermission">Obtain Permissions for External Storage</h2>
+
+<p>To write to the external storage, you must request the
+  {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} permission in your <a
+href="{@docRoot}guide/topics/manifest/manifest-intro.html">manifest file</a>:</p>
+
+<pre>
+&lt;manifest ...>
+    &lt;uses-permission android:name=&quot;android.permission.WRITE_EXTERNAL_STORAGE&quot; /&gt;
+    ...
+&lt;/manifest>
+</pre>
+
+<div class="caution"><p><strong>Caution:</strong>
+Currently, all apps have the ability to read the external storage
+without a special permission. However, this will change in a future release. If your app needs
+to read the external storage (but not write to it), then you will need to declare the {@link
+android.Manifest.permission#READ_EXTERNAL_STORAGE} permission. To ensure that your app continues
+to work as expected, you should declare this permission now, before the change takes effect.</p>
+<pre>
+&lt;manifest ...>
+    &lt;uses-permission android:name=&quot;android.permission.READ_EXTERNAL_STORAGE&quot; /&gt;
+    ...
+&lt;/manifest>
+</pre>
+<p>However, if your app uses the {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE}
+permission, then it implicitly has permission to read the external storage as well.</p>
+</div>
+
+<p>You don’t need any permissions to save files on the internal
+storage. Your application always has permission to read and
+write files in its internal storage directory.</p>
+
+
+
+
+
+<h2 id="WriteInternalStorage">Save a File on Internal Storage</h2>
+
+<p>When saving a file to internal storage, you can acquire the appropriate directory as a
+{@link java.io.File} by calling one of two methods:</p>
+
+<dl>
+  <dt>{@link android.content.Context#getFilesDir}</dt>
+  <dd>Returns a {@link java.io.File} representing an internal directory for your app.</dd>
+  <dt>{@link android.content.Context#getCacheDir}</dt>
+  <dd>Returns a {@link java.io.File} representing an internal directory for your app's temporary
+cache files. Be sure to delete each file once it is no
+longer needed and implement a reasonable size limit for the amount of memory you use at any given
+time, such as 1MB. If the system begins running low on storage, it may delete your cache files
+without warning.</dd>
+</dl>
+
+<p>To create a new file in one of these directories, you can use the {@link
+java.io.File#File(File,String) File()} constructor, passing the {@link java.io.File} provided by one
+of the above methods that specifies your internal storage directory. For example:</p>
+
+<pre>
+File file = new File(context.getFilesDir(), filename);
+</pre>
+
+<p>Alternatively, you can call {@link
+android.content.Context#openFileOutput openFileOutput()} to get a {@link java.io.FileOutputStream}
+that writes to a file in your internal directory. For example, here's
+how to write some text to a file:</p>
+
+<pre>
+String filename = "myfile";
+String string = "Hello world!";
+FileOutputStream outputStream;
+
+try {
+  outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
+  outputStream.write(string.getBytes());
+  outputStream.close();
+} catch (Exception e) {
+  e.printStackTrace();
+}
+</pre>
+
+<p>Or, if you need to cache some files, you should instead use {@link
+java.io.File#createTempFile createTempFile()}. For example, the following method extracts the
+file name from a {@link java.net.URL} and creates a file with that name
+in your app's internal cache directory:</p>
+
+<pre>
+public File getTempFile(Context context, String url) {
+    File file;
+    try {
+        String fileName = Uri.parse(url).getLastPathSegment();
+        file = File.createTempFile(fileName, null, context.getCacheDir());
+    catch (IOException e) {
+        // Error while creating file
+    }
+    return file;
+}
+</pre>
+
+<p class="note"><strong>Note:</strong>
+Your app's internal storage directory is specified
+by your app's package name in a special location of the Android file system.
+Technically, another app can read your internal files if you set
+the file mode to be readable. However, the other app would also need to know your app package
+name and file names. Other apps cannot browse your internal directories and do not have
+read or write access unless you explicitly set the files to be readable or writable. So as long
+as you use {@link android.content.Context#MODE_PRIVATE} for your files on the internal storage,
+they are never accessible to other apps.</p>
+
+
+
+
+
+<h2 id="WriteExternalStorage">Save a File on External Storage</h2>
+
+<p>Because the external storage may be unavailable&mdash;such as when the user has mounted the
+storage to a PC or has removed the SD card that provides the external storage&mdash;you
+should always verify that the volume is available before accessing it. You can query the external
+storage state by calling {@link android.os.Environment#getExternalStorageState}. If the returned
+state is equal to {@link android.os.Environment#MEDIA_MOUNTED}, then you can read and
+write your files. For example, the following methods are useful to determine the storage
+availability:</p>
+
+<pre>
+/* Checks if external storage is available for read and write */
+public boolean isExternalStorageWritable() {
+    String state = Environment.getExternalStorageState();
+    if (Environment.MEDIA_MOUNTED.equals(state)) {
+        return true;
+    }
+    return false;
+}
+
+/* Checks if external storage is available to at least read */
+public boolean isExternalStorageReadable() {
+    String state = Environment.getExternalStorageState();
+    if (Environment.MEDIA_MOUNTED.equals(state) ||
+        Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
+        return true;
+    }
+    return false;
+}
+</pre>
+
+<p>Although the external storage is modifiable by the user and other apps, there are two
+categories of files you might save here:</p>
+
+<dl>
+  <dt>Public files</dt>
+  <dd>Files that
+should be freely available to other apps and to the user. When the user uninstalls your app,
+these files should remain available to the user.
+  <p>For example, photos captured by your app or other downloaded files.</p>
+  </dd>
+  <dt>Private files</dt>
+  <dd>Files that rightfully belong to your app and should be deleted when the user uninstalls
+  your app. Although these files are technically accessible by the user and other apps because they
+  are on the external storage, they are files that realistically don't provide value to the user
+  outside your app. When the user uninstalls your app, the system deletes
+  all files in your app's external private  directory. 
+  <p>For example, additional resources downloaded by your app or temporary media files.</p>
+  </dd>
+</dl>
+
+<p>If you want to save public files on the external storage, use the
+{@link android.os.Environment#getExternalStoragePublicDirectory
+getExternalStoragePublicDirectory()} method to get a {@link java.io.File} representing
+the appropriate directory on the external storage. The method takes an argument specifying
+the type of file you want to save so that they can be logically organized with other public
+files, such as {@link android.os.Environment#DIRECTORY_MUSIC} or {@link
+android.os.Environment#DIRECTORY_PICTURES}. For example:</p>
+
+<pre>
+public File getAlbumStorageDir(String albumName) {
+    // Get the directory for the user's public pictures directory. 
+    File file = new File(Environment.getExternalStoragePublicDirectory(
+            Environment.DIRECTORY_PICTURES), albumName);
+    if (!file.mkdirs()) {
+        Log.e(LOG_TAG, "Directory not created");
+    }
+    return file;
+}
+</pre>
+
+
+<p>If you want to save files that are private to your app, you can acquire the
+appropriate directory by calling {@link
+android.content.Context#getExternalFilesDir getExternalFilesDir()} and passing it a name indicating
+the type of directory you'd like. Each directory created this way is added to a parent
+directory that encapsulates all your app's external storage files, which the system deletes when the
+user uninstalls your app.</p>
+
+<p>For example, here's a method you can use to create a directory for an individual photo album:</p>
+
+<pre>
+public File getAlbumStorageDir(Context context, String albumName) {
+    // Get the directory for the app's private pictures directory. 
+    File file = new File(context.getExternalFilesDir(
+            Environment.DIRECTORY_PICTURES), albumName);
+    if (!file.mkdirs()) {
+        Log.e(LOG_TAG, "Directory not created");
+    }
+    return file;
+}
+</pre>
+
+<p>If none of the pre-defined sub-directory names suit your files, you can instead call {@link
+android.content.Context#getExternalFilesDir getExternalFilesDir()} and pass {@code null}. This
+returns the root directory for your app's private directory on the external storage.</p>
+
+<p>Remember that {@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
+creates a directory inside a directory that is deleted when the user uninstalls your app.
+If the files you're saving should remain available after the user uninstalls your
+app&mdash;such as when your app is a camera and the user will want to keep the photos&mdash;you
+should instead use {@link android.os.Environment#getExternalStoragePublicDirectory
+getExternalStoragePublicDirectory()}.</p>
+
+
+<p>Regardless of whether you use {@link
+android.os.Environment#getExternalStoragePublicDirectory
+getExternalStoragePublicDirectory()} for files that are shared or
+{@link android.content.Context#getExternalFilesDir
+getExternalFilesDir()} for files that are private to your app, it's important that you use
+directory names provided by API constants like
+{@link android.os.Environment#DIRECTORY_PICTURES}. These directory names ensure
+that the files are treated properly by the system. For instance, files saved in {@link
+android.os.Environment#DIRECTORY_RINGTONES} are categorized by the system media scanner as ringtones
+instead of music.</p>
+
+
+
+
+<h2 id="GetFreeSpace">Query Free Space</h2>
+
+<p>If you know ahead of time how much data you're saving, you can find out
+whether sufficient space is available without causing an {@link
+java.io.IOException} by calling {@link java.io.File#getFreeSpace} or {@link
+java.io.File#getTotalSpace}. These methods provide the current available space and the
+total space in the storage volume, respectively. This information is also useful to avoid filling
+the storage volume above a certain threshold.</p>
+
+<p>However, the system does not guarantee that you can write as many bytes as are
+indicated by {@link java.io.File#getFreeSpace}.  If the number returned is a
+few MB more than the size of the data you want to save, or if the file system
+is less than 90% full, then it's probably safe to proceed.
+Otherwise, you probably shouldn't write to storage.</p>
+
+<p class="note"><strong>Note:</strong> You aren't required to check the amount of available space
+before you save your file. You can instead try writing the file right away, then
+catch an {@link java.io.IOException} if one occurs. You may need to do
+this if you don't know exactly how much space you need. For example, if you
+change the file's encoding before you save it by converting a PNG image to
+JPEG, you won't know the file's size beforehand.</p>
+
+
+
+
+<h2 id="DeleteFile">Delete a File</h2>
+
+<p>You should always delete files that you no longer need. The most straightforward way to delete a
+file is to have the opened file reference call {@link java.io.File#delete} on itself.</p>
+
+<pre>
+myFile.delete();
+</pre>
+
+<p>If the file is saved on internal storage, you can also ask the {@link android.content.Context} to locate and
+delete a file by calling {@link android.content.Context#deleteFile deleteFile()}:</p>
+
+<pre>
+myContext.deleteFile(fileName);
+</pre>
+
+<div class="note">
+<p><strong>Note:</strong> When the user uninstalls your app, the Android system deletes
+the following:</p> 
+<ul>
+<li>All files you saved on internal storage</li>
+<li>All files you saved on external storage using {@link
+android.content.Context#getExternalFilesDir getExternalFilesDir()}.</li>
+</ul>
+<p>However, you should manually delete all cached files created with
+{@link android.content.Context#getCacheDir()} on a regular basis and also regularly delete
+other files you no longer need.</p>
+</div>
+
diff --git a/docs/html/training/basics/data-storage/index.jd b/docs/html/training/basics/data-storage/index.jd
new file mode 100644
index 0000000..4334936
--- /dev/null
+++ b/docs/html/training/basics/data-storage/index.jd
@@ -0,0 +1,55 @@
+page.title=Saving Data
+
+trainingnavtop=true
+startpage=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>Dependencies and prerequisites</h2>
+<ul>
+  <li>Android 1.6 (API Level 4) or higher</li>
+  <li>Familiarity with Map key-value collections</li>
+  <li>Familiarity with the Java file I/O API</li>
+  <li>Familiarity with SQL databases</li>
+</ul>
+
+<h2>You should also read</h2>
+<ul>
+  <li><a href="{@docRoot}guide/topics/data/data-storage.html">Storage Options</a></li>
+</ul>
+
+</div>
+</div>
+
+<p>Most Android apps need to save data, even if only to save information about the app state
+during {@link android.app.Activity#onPause onPause()} so the user's progress is not lost. Most
+non-trivial apps also need to save user settings, and some apps must manage large
+amounts of information in files and databases. This class introduces you to the
+principal data storage options in Android, including:</p>
+
+<ul>
+    <li>Saving key-value pairs of simple data types in a shared preferences
+file</li>
+    <li>Saving arbitrary files in Android's file system</li>
+    <li>Using databases managed by SQLite</li>
+</ul>
+
+
+<h2>Lessons</h2>
+
+<dl>
+  <dt><b><a href="shared-preferences.html">Saving Key-Value Sets</a></b></dt>
+    <dd>Learn to use a shared preferences file for storing small amounts of information in
+key-value pairs.</dd>
+
+  <dt><b><a href="files.html">Saving Files</a></b></dt>
+    <dd>Learn to save a basic file, such as to store long sequences of data that
+        are generally read in order.</dd>
+
+ <dt><b><a href="databases.html">Saving Data in SQL Databases</a></b></dt>
+   <dd>Learn to use a SQLite database to read and write structured data.</dd>
+
+</dl>
diff --git a/docs/html/training/basics/data-storage/shared-preferences.jd b/docs/html/training/basics/data-storage/shared-preferences.jd
new file mode 100644
index 0000000..67f45cb
--- /dev/null
+++ b/docs/html/training/basics/data-storage/shared-preferences.jd
@@ -0,0 +1,121 @@
+page.title=Saving Key-Value Sets
+parent.title=Data Storage
+parent.link=index.html
+
+trainingnavtop=true
+
+@jd:body
+
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>This lesson teaches you to</h2>
+<ol>
+  <li><a href="#GetSharedPreferences">Get a Handle to a SharedPreferences</a></li>
+  <li><a href="#WriteSharedPreference">Write to Shared Preferences</a></li>
+  <li><a href="#ReadSharedPreference">Read from Shared Preferences</a></li>
+</ol>
+
+<h2>You should also read</h2>
+<ul>
+  <li><a href="{@docRoot}guide/topics/data/data-storage.html#pref">Using Shared Preferences</a></li>
+</ul>
+
+</div>
+</div>
+
+
+<p>If you have a relatively small collection of key-values that you'd like to save,
+you should use the {@link android.content.SharedPreferences} APIs.
+A {@link android.content.SharedPreferences} object points to a file containing
+key-value pairs and provides simple methods to read and write them. Each
+{@link android.content.SharedPreferences} file is
+managed by the framework and can be private or shared.</p>
+
+<p>This class shows you how to use the {@link android.content.SharedPreferences} APIs to store and
+retrieve simple values.</p>
+
+<p class="note"><strong>Note:</strong> The {@link android.content.SharedPreferences} APIs are
+only for reading and writing key-value pairs and you should not confuse them with the
+{@link android.preference.Preference} APIs, which help you build a user interface
+for your app settings (although they use {@link android.content.SharedPreferences} as their
+implementation to save the app settings). For information about using the {@link
+android.preference.Preference} APIs, see the <a href="{@docRoot}guide/topics/ui/settings.html"
+>Settings</a> guide.</p>
+
+<h2 id="GetSharedPreferences">Get a Handle to a SharedPreferences</h2>
+
+<p>You can create a new shared preference file or access an existing
+one by calling one of two methods:</p>
+<ul>
+  <li>{@link android.content.Context#getSharedPreferences(String,int)
+getSharedPreferences()} &mdash; Use this if you need multiple shared preference files identified
+by name, which you specify with the first parameter. You can call this from any
+{@link android.content.Context} in your app.</li>
+  <li>{@link android.app.Activity#getPreferences(int) getPreferences()} &mdash; Use this from an
+{@link android.app.Activity} if you need
+to use only one shared preference file for the activity. Because this retrieves a default shared
+preference file that belongs to the activity, you don't need to supply a name.</li>
+</ul>
+
+<p>For example, the following code is executed inside a {@link android.app.Fragment}.
+It accesses the shared preferences file that's
+identified by the resource string {@code R.string.preference_file_key} and opens it using
+the private mode so the file is accessible by only your app.</p>
+
+<pre>
+Context context = getActivity();
+SharedPreferences sharedPref = context.getSharedPreferences(
+        getString(R.string.preference_file_key), Context.MODE_PRIVATE);
+</pre>
+
+<p>When naming your shared preference files, you should use a name that's uniquely identifiable
+to your app, such as {@code "com.example.myapp.PREFERENCE_FILE_KEY"}</p>
+
+<p>Alternatively, if you need just one shared preference file for your activity, you can use the
+{@link android.app.Activity#getPreferences(int) getPreferences()} method:</p>
+
+<pre>
+SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
+</pre>
+
+<p class="caution"><strong>Caution:</strong> If you create a shared preferences file
+with {@link android.content.Context#MODE_WORLD_READABLE} or {@link
+android.content.Context#MODE_WORLD_WRITEABLE}, then any other apps that know the file identifier
+can access your data.</p>
+
+
+<h2 id="WriteSharedPreference">Write to Shared Preferences</h2>
+
+<p>To write to a shared preferences file, create a {@link
+android.content.SharedPreferences.Editor} by calling {@link
+android.content.SharedPreferences#edit} on your {@link android.content.SharedPreferences}.</p>
+
+<p>Pass the keys and values you want to write with methods such as {@link
+android.content.SharedPreferences.Editor#putInt putInt()} and {@link
+android.content.SharedPreferences.Editor#putString putString()}. Then call {@link
+android.content.SharedPreferences.Editor#commit} to save the changes. For example:</p>
+
+<pre>
+SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
+SharedPreferences.Editor editor = sharedPref.edit();
+editor.putInt(getString(R.string.saved_high_score), newHighScore);
+editor.commit();
+</pre>
+
+
+<h2 id="ReadSharedPreference">Read from Shared Preferences</h2>
+
+<p>To retrieve values from a shared preferences file, call methods such as {@link
+android.content.SharedPreferences#getInt getInt()} and {@link
+android.content.SharedPreferences#getString getString()}, providing the key for the value
+you want, and optionally a default value to return if the key isn't
+present. For example:</p>
+
+<pre>
+SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
+long default = getResources().getInteger(R.string.saved_high_score_default));
+long highScore = sharedPref.getInt(getString(R.string.saved_high_score), default);
+</pre>
+
diff --git a/docs/html/training/basics/firstapp/building-ui.jd b/docs/html/training/basics/firstapp/building-ui.jd
index f0ec79e..bc6c47c 100644
--- a/docs/html/training/basics/firstapp/building-ui.jd
+++ b/docs/html/training/basics/firstapp/building-ui.jd
@@ -18,7 +18,7 @@
 <h2>This lesson teaches you to</h2>
 
 <ol>
-  <li><a href="#LinearLayout">Use a Linear Layout</a></li>
+  <li><a href="#LinearLayout">Create a Linear Layout</a></li>
   <li><a href="#TextInput">Add a Text Field</a></li>
   <li><a href="#Strings">Add String Resources</a></li>
   <li><a href="#Button">Add a Button</a></li>
@@ -28,10 +28,9 @@
 
 <h2>You should also read</h2>
 <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>
 </ul>
- 
- 
+
 </div> 
 </div> 
 
@@ -39,63 +38,68 @@
 
 <p>The graphical user interface for an Android app is built using a hierarchy of {@link
 android.view.View} and {@link android.view.ViewGroup} objects. {@link android.view.View} objects are
-usually UI widgets such as a button or text field and {@link android.view.ViewGroup} objects are
+usually UI widgets such as <a href="{@docRoot}guide/topics/ui/controls/button.html">buttons</a> or
+<a href="{@docRoot}guide/topics/ui/controls/text.html">text fields</a> and {@link
+android.view.ViewGroup} objects are
 invisible view containers that define how the child views are laid out, such as in a
 grid or a vertical list.</p>
 
 <p>Android provides an XML vocabulary that corresponds to the subclasses of {@link
-android.view.View} and {@link android.view.ViewGroup} so you can define your UI in XML with a
-hierarchy of view elements.</p>
+android.view.View} and {@link android.view.ViewGroup} so you can define your UI in XML using
+a hierarchy of UI elements.</p>
 
 
 <div class="sidebox-wrapper">
 <div class="sidebox">
   <h2>Alternative Layouts</h2>
-  <p>Separating the UI layout into XML files is important for several reasons,
-but it's especially important on Android because it allows you to define alternative layouts for
+  <p>Declaring your UI layout in XML rather than runtime code is useful for several reasons,
+but it's especially important so you can create different layouts for
 different screen sizes. For example, you can create two versions of a layout and tell
 the system to use one on "small" screens and the other on "large" screens. For more information,
 see the class about <a
 href="{@docRoot}training/basics/supporting-devices/index.html">Supporting Different
-Hardware</a>.</p>
+Devices</a>.</p>
 </div>
 </div>
 
-<img src="{@docRoot}images/viewgroup.png" alt="" width="440" />
+<img src="{@docRoot}images/viewgroup.png" alt="" width="400" />
 <p class="img-caption"><strong>Figure 1.</strong> Illustration of how {@link
-android.view.ViewGroup} objects form branches in the layout and contain {@link
+android.view.ViewGroup} objects form branches in the layout and contain other {@link
 android.view.View} objects.</p>
 
-<p>In this lesson, you'll create a layout in XML that includes a text input field and a
+<p>In this lesson, you'll create a layout in XML that includes a text field and a
 button. In the following lesson, you'll respond when the button is pressed by sending the
 content of the text field to another activity.</p>
 
 
 
-<h2 id="LinearLayout">Use a Linear Layout</h2>
+<h2 id="LinearLayout">Create a Linear Layout</h2>
 
-<p>Open the <code>main.xml</code> file from the <code>res/layout/</code>
-directory (every new Android project includes this file by default).</p>
+<p>Open the <code>activity_main.xml</code> file from the <code>res/layout/</code>
+directory.</p>
 
 <p class="note"><strong>Note:</strong> In Eclipse, when you open a layout file, you’re first shown
-the ADT Layout Editor. This is an editor that helps you build layouts using WYSIWYG tools. For this
-lesson, you’re going to work directly with the XML, so click the <em>main.xml</em> tab at
+the Graphical Layout editor. This is an editor that helps you build layouts using WYSIWYG tools. For this
+lesson, you’re going to work directly with the XML, so click the <em>activity_main.xml</em> tab at
 the bottom of the screen to open the XML editor.</p>
 
-<p>By default, the <code>main.xml</code> file includes a layout with a {@link
-android.widget.LinearLayout} root view group and a {@link android.widget.TextView} child view.
-You’re going to re-use the {@link android.widget.LinearLayout} in this lesson, but change its
-contents and layout orientation.</p>
+<p>The BlankActivity template you used to start this project creates the
+<code>activity_main.xml</code> file with a {@link
+android.widget.RelativeLayout} root view and a {@link android.widget.TextView} child view.</p>
 
-<p>First, delete the {@link android.widget.TextView} element and change the value
+<p>First, delete the {@link android.widget.TextView &lt;TextView>} element and change the {@link
+  android.widget.RelativeLayout &lt;RelativeLayout>} element to {@link
+  android.widget.LinearLayout &lt;LinearLayout>}. Then add the
 <a href="{@docRoot}reference/android/widget/LinearLayout.html#attr_android:orientation">{@code
-android:orientation}</a> to be <code>"horizontal"</code>. The result looks like this:</p>
+android:orientation}</a> attribute and set it to <code>"horizontal"</code>.
+The result 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"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
     android:orientation="horizontal" >
 &lt;/LinearLayout>
 </pre>
@@ -116,26 +120,18 @@
 <p>Because the {@link android.widget.LinearLayout} is the root view in the layout, it should fill
 the entire screen area that's
 available to the app by setting the width and height to
-<code>"fill_parent"</code>.</p>
-
-<p class="note"><strong>Note:</strong> Beginning with Android 2.2 (API level 8),
-<code>"fill_parent"</code> has been renamed <code>"match_parent"</code> to better reflect the
-behavior. The reason is that if you set a view to <code>"fill_parent"</code> it does not expand to
-fill the remaining space after sibling views are considered, but instead expands to
-<em>match</em> the size of the parent view no matter what&mdash;it will overlap any sibling
-views.</p>
+<code>"match_parent"</code>. This value declares that the view should expand its width
+or height to <em>match</em> the width or height of the parent view.</p>
 
 <p>For more information about layout properties, see the <a
-href="{@docRoot}guide/topics/ui/declaring-layout.html">XML Layout</a> guide.</p>
+href="{@docRoot}guide/topics/ui/declaring-layout.html">Layout</a> guide.</p>
 
 
 
 <h2 id="TextInput">Add a Text Field</h2>
 
 <p>To create a user-editable text field, add an {@link android.widget.EditText
-&lt;EditText>} element inside the {@link android.widget.LinearLayout &lt;LinearLayout>}. The {@link
-android.widget.EditText} class is a subclass of {@link android.view.View} that displays an editable
-text field.</p>
+&lt;EditText>} element inside the {@link android.widget.LinearLayout &lt;LinearLayout>}.</p>
 
 <p>Like every {@link android.view.View} object, you must define certain XML attributes to specify
 the {@link android.widget.EditText} object's properties. Here’s how you should declare it
@@ -164,6 +160,8 @@
 which allows you to reference that view from other code.</p>
   <p>The SDK tools generate the {@code R.java} each time you compile your app. You should never
 modify this file by hand.</p>
+  <p>For more information, read the guide to <a
+href="{@docRoot}guide/topics/resources/providing-resources.html">Providing Resources</a>.</p>
 </div>
 </div>
 
@@ -175,17 +173,18 @@
 from your app code, such as to read and manipulate the object (you'll see this in the next
 lesson).
 
-<p>The at-symbol (<code>&#64;</code>) is required when you want to refer to a resource object from
-XML, followed by the resource type ({@code id} in this case), then the resource name ({@code
-edit_message}). (Other resources can use the same name as long as they are not the same
-resource type&mdash;for example, the string resource uses the same name.)</p>
+<p>The at sign (<code>&#64;</code>) is required when you're referring to any resource object from
+XML. It is followed by the resource type ({@code id} in this case), a slash, then the resource name
+({@code edit_message}).</p>
 
-<p>The plus-symbol (<code>+</code>) is needed only when you're defining a resource ID for the
-first time. It tells the SDK tools that the resource ID needs to be created. Thus, when the app is
-compiled, the SDK tools use the ID value, <code>edit_message</code>, to create a new identifier in
-your project's {@code gen/R.java} file that is now associated with the {@link
-android.widget.EditText} element. Once the resource ID is created, other references to the ID do not
-need the plus symbol. This is the only attribute that may need the plus-symbol. See the sidebox for
+<p>The plus sign (<code>+</code>) before the resource type is needed only when you're defining a
+resource ID for the first time. When you compile the app,
+the SDK tools use the ID name to create a new resource ID in
+your project's {@code gen/R.java} file that refers to the {@link
+android.widget.EditText} element. Once the resource ID is declared once this way,
+other references to the ID do not
+need the plus sign. Using the plus sign is necessary only when specifying a new resource ID and not
+needed for concrete resources such as strings or layouts. See the sidebox for
 more information about resource objects.</p></dd>
 
 <dt><a
@@ -195,39 +194,42 @@
 android:layout_height}</a></dt>
 <dd>Instead of using specific sizes for the width and height, the <code>"wrap_content"</code> value
 specifies that the view should be only as big as needed to fit the contents of the view. If you
-were to instead use <code>"fill_parent"</code>, then the {@link android.widget.EditText}
-element would fill the screen, because it'd match the size of the parent {@link
+were to instead use <code>"match_parent"</code>, then the {@link android.widget.EditText}
+element would fill the screen, because it would match the size of the parent {@link
 android.widget.LinearLayout}. For more information, see the <a
-href="{@docRoot}guide/topics/ui/declaring-layout.html">XML Layouts</a> guide.</dd>
+href="{@docRoot}guide/topics/ui/declaring-layout.html">Layouts</a> guide.</dd>
 
 <dt><a
 href="{@docRoot}reference/android/widget/TextView.html#attr_android:hint">{@code
 android:hint}</a></dt>
 <dd>This is a default string to display when the text field is empty. Instead of using a hard-coded
-string as the value, the {@code "@string/edit_message"} value refers to a string resource defined
-in a separate file. Because this value refers to an existing resource, it does not need the
-plus-symbol. However, because you haven't defined the string resource yet, you’ll see a compiler
-error when you add the {@code "@string/edit_message"} value. You'll fix this in the next section by
-defining the string resource.</dd>
+string as the value, the {@code "@string/edit_message"} value refers to a string resource defined in
+a separate file. Because this refers to a concrete resource (not just an identifier), it does not
+need the plus sign. However, because you haven't defined the string resource yet, you’ll see a
+compiler error at first. You'll fix this in the next section by defining the string.
+<p class="note"><strong>Note:</strong> This string resource has the same name as the element ID:
+{@code edit_message}. However, references
+to resources are always scoped by the resource type (such as {@code id} or {@code string}), so using
+the same name does not cause collisions.</p>
+</dd>
 </dl>
 
 
 
 <h2 id="Strings">Add String Resources</h2>
 
-<p>When you need to add text in the user interface, you should always specify each string of text in
-a resource file. String resources allow you to maintain a single location for all string
-values, which makes it easier to find and update text. Externalizing the strings also allows you to
+<p>When you need to add text in the user interface, you should always specify each string as
+a resource. String resources allow you to manage all UI text in a single location,
+which makes it easier to find and update text. Externalizing the strings also allows you to
 localize your app to different languages by providing alternative definitions for each
-string.</p>
+string resource.</p>
 
 <p>By default, your Android project includes a string resource file at
-<code>res/values/strings.xml</code>. Open this file, delete the existing <code>"hello"</code>
-string, and add one for the
-<code>"edit_message"</code> string used by the {@link android.widget.EditText &lt;EditText>}
-element.</p>
+<code>res/values/strings.xml</code>. Open this file and delete the {@code &lt;string>} element
+named <code>"hello_world"</code>. Then add a new one named
+<code>"edit_message"</code> and set the value to "Enter a message."</p>
 
-<p>While you’re in this file, also add a string for the button you’ll soon add, called
+<p>While you’re in this file, also add a "Send" string for the button you’ll soon add, called
 <code>"button_send"</code>.</p>
 
 <p>The result for <code>strings.xml</code> looks like this:</p>
@@ -238,12 +240,14 @@
     &lt;string name="app_name">My First App&lt;/string>
     &lt;string name="edit_message">Enter a message&lt;/string>
     &lt;string name="button_send">Send&lt;/string>
+    &lt;string name="menu_settings">Settings&lt;/string>
+    &lt;string name="title_activity_main">MainActivity&lt;/string>
 &lt;/resources>
 </pre>
 
-<p>For more information about using string resources to localize your app for several languages,
+<p>For more information about using string resources to localize your app for other languages,
 see the <a
-href="{@docRoot}training/basics/supporting-devices/index.html">Supporting Various Devices</a>
+href="{@docRoot}training/basics/supporting-devices/index.html">Supporting Different Devices</a>
 class.</p>
 
 
@@ -280,23 +284,26 @@
 <code>"wrap_content"</code>.</p>
 
 <p>This works fine for the button, but not as well for the text field, because the user might type
-something longer and there's extra space left on the screen. So, it'd be nice to fill that width
-using the text field.
-{@link android.widget.LinearLayout} enables such a design with the <em>weight</em> property, which
+something longer. So, it would be nice to fill the unused screen width
+with the text field. You can do this inside a
+{@link android.widget.LinearLayout} with the <em>weight</em> property, which
 you can specify using the <a
 href="{@docRoot}reference/android/widget/LinearLayout.LayoutParams.html#weight">{@code
 android:layout_weight}</a> attribute.</p>
 
-<p>The weight value allows you to specify the amount of remaining space each view should consume,
-relative to the amount consumed by sibling views, just like the ingredients in a drink recipe: "2
+<p>The weight value is a number that specifies the amount of remaining space each view should
+consume,
+relative to the amount consumed by sibling views. This works kind of like the 
+amount of ingredients in a drink recipe: "2
 parts vodka, 1 part coffee liqueur" means two-thirds of the drink is vodka. For example, if you give
-one view a weight of 2 and another one a weight of 1, the sum is 3, so the first view gets 2/3 of
-the remaining space and the second view gets the rest. If you give a third view a weight of 1,
-then the first view now gets 1/2 the remaining space, while the remaining two each get 1/4.</p>
+one view a weight of 2 and another one a weight of 1, the sum is 3, so the first view fills 2/3 of
+the remaining space and the second view fills the rest. If you add a third view and give it a weight
+of 1, then the first view (with weight of 2) now gets 1/2 the remaining space, while the remaining
+two each get 1/4.</p>
 
 <p>The default weight for all views is 0, so if you specify any weight value
-greater than 0 to only one view, then that view fills whatever space remains after each view is
-given the space it requires. So, to fill the remaining space with the {@link
+greater than 0 to only one view, then that view fills whatever space remains after all views are
+given the space they require. So, to fill the remaining space in your layout with the {@link
 android.widget.EditText} element, give it a weight of 1 and leave the button with no weight.</p>
 
 <pre>
@@ -331,8 +338,9 @@
 <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"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
     android:orientation="horizontal">
     &lt;EditText android:id="@+id/edit_message"
         android:layout_weight="1"
@@ -351,7 +359,8 @@
 results:</p>
 
 <ul>
-  <li>In Eclipse, click <strong>Run</strong> from the toolbar.</li>
+  <li>In Eclipse, click Run <img src="{@docRoot}images/tools/eclipse-run.png" 
+                                 style="vertical-align:baseline;margin:0" /> from the toolbar.</li>
   <li>Or from a command line, change directories to the root of your Android project and
 execute:
 <pre>
diff --git a/docs/html/training/basics/firstapp/creating-project.jd b/docs/html/training/basics/firstapp/creating-project.jd
index 4fbfe34..2ea8b2f 100644
--- a/docs/html/training/basics/firstapp/creating-project.jd
+++ b/docs/html/training/basics/firstapp/creating-project.jd
@@ -34,66 +34,77 @@
 
 <p>An Android project contains all the files that comprise the source code for your Android
 app. The Android SDK tools make it easy to start a new Android project with a set of
-default project directories and files.</p> 
+default project directories and files.</p>
 
 <p>This lesson
 shows how to create a new project either using Eclipse (with the ADT plugin) or using the
 SDK tools from a command line.</p>
 
 <p class="note"><strong>Note:</strong> You should already have the Android SDK installed, and if
-you're using Eclipse, you should have installed the <a
-href="{@docRoot}tools/sdk/eclipse-adt.html">ADT plugin</a> as well. If you have not installed
-these, see <a href="{@docRoot}sdk/installing/index.html">Installing the Android SDK</a> and return here
-when you've completed the installation.</p>
+you're using Eclipse, you should also have the <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT
+plugin</a> installed (version 20.0.0 or higher). If you don't have these, follow the guide to <a
+href="{@docRoot}sdk/installing/index.html">Installing the Android SDK</a> before you start this
+lesson.</p>
 
 
 <h2 id="Eclipse">Create a Project with Eclipse</h2>
 
-<div class="figure" style="width:416px">
+<ol>
+  <li>In Eclipse, click New Android
+    App Project <img src="{@docRoot}images/tools/new_adt_project.png" 
+             style="vertical-align:baseline;margin:0" />
+    in the toolbar.  (If you don’t see this button,
+then you have not installed the ADT plugin&mdash;see <a
+href="{@docRoot}sdk/installing/installing-adt.html">Installing the Eclipse Plugin</a>.)
+  </li>
+
+<div class="figure" style="width:420px">
 <img src="{@docRoot}images/training/firstapp/adt-firstapp-setup.png" alt="" />
-<p class="img-caption"><strong>Figure 1.</strong> The new project wizard in Eclipse.</p>
+<p class="img-caption"><strong>Figure 1.</strong> The New Android App Project wizard in Eclipse.</p>
 </div>
 
-<ol>
-  <li>In Eclipse, select <strong>File &gt; New &gt; Project</strong>.
-The resulting dialog should have a folder labeled <em>Android</em>.  (If you don’t see the
-<em>Android</em> folder,
-then you have not installed the ADT plugin&mdash;see <a
-href="{@docRoot}tools/sdk/eclipse-adt.html#installing">Installing the ADT Plugin</a>).</li>
-  <li>Open the <em>Android</em> folder, select <em>Android Project</em> and click
-<strong>Next</strong>.</li>
-  <li>Enter a project name (such as "MyFirstApp") and click <strong>Next</strong>.</li>
-  <li>Select a build target. This is the platform version against which you will compile your app.
-<p>We recommend that you select the latest version possible. You can still build your app to
-support older versions, but setting the build target to the latest version allows you to
-easily optimize your app for a great user experience on the latest Android-powered devices.</p>
-<p>If you don't see any built targets listed, you need to install some using the Android SDK
-Manager tool. See <a href="{@docRoot}sdk/installing/index.html#AddingComponents">step 4 in the
-installing guide</a>.</p>
-<p>Click <strong>Next</strong>.</p></li>
-  <li>Specify other app details, such as the:
+  <li>Fill in the form that appears:
     <ul>
-      <li><em>Application Name</em>: The app name that appears to the user. Enter "My First
-App".</li>
-      <li><em>Package Name</em>: The package namespace for your app (following the same
+      <li><em>Application Name</em> is the app name that appears to users.
+          For this project, use "My First App."</p></li>
+      <li><em>Project Name</em> is the name of your project directory and the name visible in Eclipse.</li>
+      <li><em>Package Name</em> is the package namespace for your app (following the same
 rules as packages in the Java programming language). Your package name
-must be unique across all packages installed on the Android system. For this reason, it's important
-that you use a standard domain-style package name that’s appropriate to your company or
-publisher entity. For
-your first app, you can use something like "com.example.myapp." However, you cannot publish your
-app using the "com.example" namespace.</li>
-      <li><em>Create Activity</em>: This is the class name for the primary user activity in your
-app (an activity represents a single screen in your app). Enter "MyFirstActivity".</li>
-      <li><em>Minimum SDK</em>: Select <em>4 (Android 1.6)</em>.
-        <p>Because this version is lower than the build target selected for the app, a warning
-appears, but that's alright. You simply need to be sure that you don't use any APIs that require an
-<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API level</a> greater than the minimum SDK
-version without first using some code to verify the device's system version (you'll see this in some
-other classes).</p>
-      </li>
+must be unique across all packages installed on the Android system. For this reason, it's generally
+best if you use a name that begins with the reverse domain name of your organization or
+publisher entity. For this project, you can use something like "com.example.myfirstapp."
+However, you cannot publish your app on Google Play using the "com.example" namespace.</li>
+      <li><em>Build SDK</em> is the platform version against which you will compile your app.
+        By default, this is set to the latest version of Android available in your SDK. (It should
+        be Android 4.1 or greater; if you don't have such a version available, you must install one
+        using the <a href="{@docRoot}sdk/installing/adding-packages.html">SDK Manager</a>).
+        You can still build your app to
+support older versions, but setting the build target to the latest version allows you to
+enable new features and optimize your app for a great user experience on the latest
+devices.</li>
+      <li><em>Minimum Required SDK</em> is the lowest version of Android that your app supports.
+        To support as many devices as possible, you should set this to the lowest version available
+        that allows your app to provide its core feature set. If any feature of your app is possible
+        only on newer versions of Android and it's not critical to the app's core feature set, you
+        can enable the feature only when running on the versions that support it.
+        <p>Leave this set to the default value for this project.</p>
     </ul>
-    <p>Click <strong>Finish</strong>.</p>
+    <p>Click <strong>Next</strong>.</p>
   </li>
+  
+  <li>The following screen provides tools to help you create a launcher icon for your app.
+    <p>You can customize an icon in several ways and the tool generates an icon for all
+    screen densities. Before you publish your app, you should be sure your icon meets
+    the specifications defined in the <a
+    href="{@docRoot}design/style/iconography.html">Iconography</a>
+    design guide.</p>
+    <p>Click <strong>Next</strong>.</p>
+  </li>
+  <li>Now you can select an activity template from which to begin building your app.
+    <p>For this project, select <strong>BlankActivity</strong> and click <strong>Next</strong>.</p>
+  </li>
+  <li>Leave all the details for the activity in their default state and click 
+    <strong>Finish</strong>.</li>
 </ol>
 
 <p>Your Android project is now set up with some default files and you’re ready to begin
@@ -104,7 +115,7 @@
 <h2 id="CommandLine">Create a Project with Command Line Tools</h2>
 
 <p>If you're not using the Eclipse IDE with the ADT plugin, you can instead create your project
-using the SDK tools in a command line:</p>
+using the SDK tools from a command line:</p>
 
 <ol>
   <li>Change directories into the Android SDK’s <code>tools/</code> path.</li>
@@ -117,13 +128,13 @@
 your app for the latest devices.</p>
 <p>If you don't see any targets listed, you need to
 install some using the Android SDK
-Manager tool. See <a href="{@docRoot}sdk/installing/index.html#AddingComponents">step 4 in the
-installing guide</a>.</p></li>
+Manager tool. See <a href="{@docRoot}sdk/installing/adding-packages.html">Adding Platforms
+  and Packages</a>.</p></li>
   <li>Execute:
 <pre class="no-pretty-print">
 android create project --target &lt;target-id> --name MyFirstApp \
---path &lt;path-to-workspace>/MyFirstApp --activity MyFirstActivity \
---package com.example.myapp
+--path &lt;path-to-workspace>/MyFirstApp --activity MainActivity \
+--package com.example.myfirstapp
 </pre>
 <p>Replace <code>&lt;target-id></code> with an id from the list of targets (from the previous step)
 and replace
diff --git a/docs/html/training/basics/firstapp/index.jd b/docs/html/training/basics/firstapp/index.jd
index 43b289b..4c1a0dc3 100644
--- a/docs/html/training/basics/firstapp/index.jd
+++ b/docs/html/training/basics/firstapp/index.jd
@@ -14,8 +14,9 @@
 <h2>Dependencies and prerequisites</h2> 
 
 <ul>
-  <li>Android 1.6 or higher</li>
   <li><a href="http://developer.android.com/sdk/index.html">Android SDK</a></li>
+  <li><a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> 20.0.0 or higher
+    (if you're using Eclipse)</li>
 </ul>
  
 </div> 
@@ -27,39 +28,21 @@
 project and run a debuggable version of the app. You'll also learn some fundamentals of Android app
 design, including how to build a simple user interface and handle user input.</p>
 
-<p>Before you start this class, be sure that you have your development environment set up. You need
+<p>Before you start this class, be sure you have your development environment set up. You need
 to:</p>
 <ol>
-  <li>Download the Android SDK Starter Package.</li>
+  <li>Download the Android SDK.</li>
   <li>Install the ADT plugin for Eclipse (if you’ll use the Eclipse IDE).</li>
   <li>Download the latest SDK tools and platforms using the SDK Manager.</li>
 </ol>
 
-<p>If you haven't already done this setup, read <a href="{@docRoot}sdk/installing/index.html">Installing
-the SDK</a>. Once you've finished the setup, you're ready to begin this class.</p>
+<p>If you haven't already done these tasks, start by downloading the
+  <a href="{@docRoot}sdk/index.html">Android SDK</a> and following the install steps.
+  Once you've finished the setup, you're ready to begin this class.</p>
 
-<p>This class uses a tutorial format that incrementally builds a small Android app in order to teach
+<p>This class uses a tutorial format that incrementally builds a small Android app that teaches
 you some fundamental concepts about Android development, so it's important that you follow each
 step.</p>
 
 <p><strong><a href="creating-project.html">Start the first lesson &rsaquo;</a></strong></p>
 
-
-<h2>Lessons</h2> 
-
-<dl> 
-  <dt><b><a href="creating-project.html">Creating an Android Project</a></b></dt> 
-    <dd>Shows how to create a project for an Android app, which includes a set of default
-app files.</dd> 
- 
-  <dt><b><a href="running-app.html">Running Your Application</a></b></dt> 
-    <dd>Shows how to run your app on an Android-powered device or the Android
-emulator.</dd>
- 
-  <dt><b><a href="building-ui.html">Building a Simple User Interface</a></b></dt> 
-    <dd>Shows how to create a new user interface using an XML file.</dd>
- 
-  <dt><b><a href="starting-activity.html">Starting Another Activity</a></b></dt>
-    <dd>Shows how to respond to a button press, start another activity, send it some
-data, then receive the data in the subsequent activity.</dd>
-</dl> 
diff --git a/docs/html/training/basics/firstapp/running-app.jd b/docs/html/training/basics/firstapp/running-app.jd
index 5105a3b..0c428e7 100644
--- a/docs/html/training/basics/firstapp/running-app.jd
+++ b/docs/html/training/basics/firstapp/running-app.jd
@@ -37,7 +37,7 @@
 
 <p>If you followed the <a href="creating-project.html">previous lesson</a> to create an
 Android project, it includes a default set of "Hello World" source files that allow you to
-run the app right away.</p>
+immediately run the app.</p>
 
 <p>How you run your app depends on two things: whether you have a real Android-powered device and
 whether you’re using Eclipse. This lesson shows you how to install and run your app on a
@@ -49,14 +49,16 @@
 
 <dl>
   <dt><code>AndroidManifest.xml</code></dt>
-  <dd>This manifest file describes the fundamental characteristics of the app and defines each of
+  <dd>The <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">manifest file</a> describes
+the fundamental characteristics of the app and defines each of
 its components. You'll learn about various declarations in this file as you read more training
 classes.</dd>
   <dt><code>src/</code></dt>
   <dd>Directory for your app's main source files. By default, it includes an {@link
 android.app.Activity} class that runs when your app is launched using the app icon.</dd>
   <dt><code>res/</code></dt>
-  <dd>Contains several sub-directories for app resources. Here are just a few:
+  <dd>Contains several sub-directories for <a
+href="{@docRoot}guide/topics/resources/overview.html">app resources</a>. Here are just a few:
     <dl style="margin-top:1em">
       <dt><code>drawable-hdpi/</code></dt>
         <dd>Directory for drawable objects (such as bitmaps) that are designed for high-density
@@ -70,30 +72,30 @@
   </dd>
 </dl>
 
-<p>When you build and run the default Android project, the default {@link android.app.Activity}
-class in the <code>src/</code> directory starts and loads a layout file from the
-<code>layout/</code> directory, which includes a "Hello World" message. Not real exciting, but it's
-important that you understand how to build and run your app before adding real functionality to
-the app.</p>
+<p>When you build and run the default Android app, the default {@link android.app.Activity}
+class starts and loads a layout file
+that says "Hello World." The result is nothing exciting, but it's
+important that you understand how to run your app before you start developing.</p>
 
 
 
 <h2 id="RealDevice">Run on a Real Device</h2>
 
-<p>Whether you’re using Eclipse or the command line, you need to:</p>
+<p>If you have a real Android-powered device, here's how you can install and run your app:</p>
 
 <ol>
-  <li>Plug in your Android-powered device to your machine with a USB cable.
+  <li>Plug in your device to your development machine with a USB cable.
 If you’re developing on Windows, you might need to install the appropriate USB driver for your
 device. For help installing drivers, see the <a href="{@docRoot}tools/extras/oem-usb.html">OEM USB
 Drivers</a> document.</li>
   <li>Ensure that <strong>USB debugging</strong> is enabled in the device Settings (open Settings
-and navitage to <strong>Applications > Development</strong> on most devices, or select
+and navitage to <strong>Applications > Development</strong> on most devices, or click
 <strong>Developer options</strong> on Android 4.0 and higher).</li>
 </ol>
 
 <p>To run the app from Eclipse, open one of your project's files and click
-<strong>Run</strong> from the toolbar. Eclipse installs the app on your connected device and starts
+Run <img src="{@docRoot}images/tools/eclipse-run.png" style="vertical-align:baseline;margin:0" />
+from the toolbar. Eclipse installs the app on your connected device and starts
 it.</p>
 
 
@@ -108,18 +110,18 @@
   <li>On your device, locate <em>MyFirstActivity</em> and open it.</li>
 </ol>
 
-<p>To start adding stuff to the app, continue to the <a href="building-ui.html">next
+<p>That's how you build and run your Android app on a device!
+  To start developing, continue to the <a href="building-ui.html">next
 lesson</a>.</p>
 
 
 
 <h2 id="Emulator">Run on the Emulator</h2>
 
-<p>Whether you’re using Eclipse or the command line, you need to first create an <a
-href="{@docRoot}tools/devices/index.html">Android Virtual
-Device</a> (AVD). An AVD is a
-device configuration for the Android emulator that allows you to model
-different device configurations.</p>
+<p>Whether you’re using Eclipse or the command line, to run your app on the emulator you need to
+first create an <a href="{@docRoot}tools/devices/index.html">Android Virtual Device</a> (AVD). An
+AVD is a device configuration for the Android emulator that allows you to model different
+devices.</p>
 
 <div class="figure" style="width:457px">
   <img src="{@docRoot}images/screens_support/avds-config.png" alt="" />
@@ -131,13 +133,15 @@
 <ol>
   <li>Launch the Android Virtual Device Manager:
     <ol type="a">
-      <li>In Eclipse, select <strong>Window > AVD Manager</strong>, or click the <em>AVD
-Manager</em> icon in the Eclipse toolbar.</li>
-      <li>From the command line, change directories to <code>&lt;sdk>/tools/</code> and execute:
-<pre class="no-pretty-print">./android avd</pre></li>
+      <li>In Eclipse, click Android Virtual Device Manager 
+        <img src="{@docRoot}images/tools/avd_manager.png"
+style="vertical-align:baseline;margin:0" /> from the toolbar.</li> 
+      <li>From the command line, change
+directories to <code>&lt;sdk>/tools/</code> and execute:
+<pre class="no-pretty-print">android avd</pre></li>
     </ol>
   </li>
-  <li>In the <em>Android Virtual Device Device Manager</em> panel, click <strong>New</strong>.</li>
+  <li>In the <em>Android Virtual Device Manager</em> panel, click <strong>New</strong>.</li>
   <li>Fill in the details for the AVD.
 Give it a name, a platform target, an SD card size, and a skin (HVGA is default).</li>
   <li>Click <strong>Create AVD</strong>.</li>
@@ -147,7 +151,8 @@
 </ol>
 
 <p>To run the app from Eclipse, open one of your project's files and click
-<strong>Run</strong> from the toolbar. Eclipse installs the app on your AVD and starts it.</p>
+Run <img src="{@docRoot}images/tools/eclipse-run.png" style="vertical-align:baseline;margin:0" />
+from the toolbar. Eclipse installs the app on your AVD and starts it.</p>
 
 
 <p>Or to run your app from the command line:</p>
@@ -163,7 +168,8 @@
 </ol>
 
 
-<p>To start adding stuff to the app, continue to the <a href="building-ui.html">next
+<p>That's how you build and run your Android app on the emulator! 
+  To start developing, continue to the <a href="building-ui.html">next
 lesson</a>.</p>
 
 
diff --git a/docs/html/training/basics/firstapp/starting-activity.jd b/docs/html/training/basics/firstapp/starting-activity.jd
index 37bc871..3dafcfa 100644
--- a/docs/html/training/basics/firstapp/starting-activity.jd
+++ b/docs/html/training/basics/firstapp/starting-activity.jd
@@ -43,8 +43,8 @@
 
 <p>After completing the <a href="building-ui.html">previous lesson</a>, you have an app that
 shows an activity (a single screen) with a text field and a button. In this lesson, you’ll add some
-code to <code>MyFirstActivity</code> that
-starts a new activity when the user selects the Send button.</p>
+code to <code>MainActivity</code> that
+starts a new activity when the user clicks the Send button.</p>
 
 
 <h2 id="RespondToButton">Respond to the Send Button</h2>
@@ -64,13 +64,13 @@
 
 <p>The <a
 href="{@docRoot}reference/android/view/View.html#attr_android:onClick">{@code
-android:onClick}</a> attribute’s value, <code>sendMessage</code>, is the name of a method in your
-activity that you want to call when the user selects the button.</p>
+android:onClick}</a> attribute’s value, <code>"sendMessage"</code>, is the name of a method in your
+activity that the system calls when the user clicks the button.</p>
 
-<p>Add the corresponding method inside the <code>MyFirstActivity</code> class:</p>
+<p>Open the <code>MainActivity</code> class and add the corresponding method:</p>
 
 <pre>
-/** Called when the user selects the Send button */
+/** Called when the user clicks the Send button */
 public void sendMessage(View view) {
     // Do something in response to button
 }
@@ -79,7 +79,7 @@
 <p class="note"><strong>Tip:</strong> In Eclipse, press Ctrl + Shift + O to import missing classes
 (Cmd + Shift + O on Mac).</p>
 
-<p>Note that, in order for the system to match this method to the method name given to <a
+<p>In order for the system to match this method to the method name given to <a
 href="{@docRoot}reference/android/view/View.html#attr_android:onClick">{@code android:onClick}</a>,
 the signature must be exactly as shown. Specifically, the method must:</p>
 
@@ -99,11 +99,11 @@
 
 <p>An {@link android.content.Intent} is an object that provides runtime binding between separate
 components (such as two activities). The {@link android.content.Intent} represents an
-app’s "intent to do something." You can use an {@link android.content.Intent} for a wide
+app’s "intent to do something." You can use intents for a wide
 variety of tasks, but most often they’re used to start another activity.</p>
 
 <p>Inside the {@code sendMessage()} method, create an {@link android.content.Intent} to start
-an activity called {@code DisplayMessageActvity}:</p>
+an activity called {@code DisplayMessageActivity}:</p>
 
 <pre>
 Intent intent = new Intent(this, DisplayMessageActivity.class);
@@ -127,7 +127,7 @@
 can also be <em>implicit</em>, in which case the {@link android.content.Intent} does not specify
 the desired component, but allows any app installed on the device to respond to the intent
 as long as it satisfies the meta-data specifications for the action that's specified in various
-{@link android.content.Intent} parameters. For more informations, see the class about <a
+{@link android.content.Intent} parameters. For more information, see the class about <a
 href="{@docRoot}training/basics/intents/index.html">Interacting with Other Apps</a>.</p>
 </div>
 </div>
@@ -136,9 +136,9 @@
 will raise an error if you’re using an IDE such as Eclipse because the class doesn’t exist yet.
 Ignore the error for now; you’ll create the class soon.</p>
 
-<p>An intent not only allows you to start another activity, but can carry a bundle of data to the
+<p>An intent not only allows you to start another activity, but it can carry a bundle of data to the
 activity as well. So, use {@link android.app.Activity#findViewById findViewById()} to get the
-{@link android.widget.EditText} element and add its message to the intent:</p>
+{@link android.widget.EditText} element and add its text value to the intent:</p>
 
 <pre>
 Intent intent = new Intent(this, DisplayMessageActivity.class);
@@ -148,37 +148,36 @@
 </pre>
 
 <p>An {@link android.content.Intent} can carry a collection of various data types as key-value
-pairs called <em>extras</em>. The {@link android.content.Intent#putExtra putExtra()} method takes a
-string as the key and the value in the second parameter.</p>
+pairs called <em>extras</em>. The {@link android.content.Intent#putExtra putExtra()} method takes the
+key name in the first parameter and the value in the second parameter.</p>
 
-<p>In order for the next activity to query the extra data, you should define your keys using a
+<p>In order for the next activity to query the extra data, you should define your key using a
 public constant. So add the {@code EXTRA_MESSAGE} definition to the top of the {@code
-MyFirstActivity} class:</p>
+MainActivity} class:</p>
 
 <pre>
-public class MyFirstActivity extends Activity {
-    public final static String EXTRA_MESSAGE = "com.example.myapp.MESSAGE";
+public class MainActivity extends Activity {
+    public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
     ...
 }
 </pre>
 
-<p>It's generally a good practice to define keys for extras with your app's package name as a prefix
-to ensure it's unique, in case your app interacts with other apps.</p>
+<p>It's generally a good practice to define keys for intent extras using your app's package name
+as a prefix. This ensures they are unique, in case your app interacts with other apps.</p>
 
 
 <h2 id="StartActivity">Start the Second Activity</h2>
 
 <p>To start an activity, you simply need to call {@link android.app.Activity#startActivity
-startActivity()} and pass it your {@link android.content.Intent}.</p>
-
-<p>The system receives this call and starts an instance of the {@link android.app.Activity}
+startActivity()} and pass it your {@link android.content.Intent}. The system receives this call
+and starts an instance of the {@link android.app.Activity}
 specified by the {@link android.content.Intent}.</p>
 
-<p>With this method included, the complete {@code sendMessage()} method that's invoked by the Send
+<p>With this new code, the complete {@code sendMessage()} method that's invoked by the Send
 button now looks like this:</p>
 
 <pre>
-/** Called when the user selects the Send button */
+/** Called when the user clicks the Send button */
 public void sendMessage(View view) {
     Intent intent = new Intent(this, DisplayMessageActivity.class);
     EditText editText = (EditText) findViewById(R.id.edit_message);
@@ -195,20 +194,48 @@
 
 <h2 id="CreateActivity">Create the Second Activity</h2>
 
-<p>In your project, create a new class file under the <code>src/&lt;package-name&gt;/</code>
-directory called <code>DisplayMessageActivity.java</code>.</p>
+<div class="figure" style="width:400px">
+<img src="{@docRoot}images/training/firstapp/adt-new-activity.png" alt="" />
+<p class="img-caption"><strong>Figure 1.</strong> The new activity wizard in Eclipse.</p>
+</div>
 
-<p class="note"><strong>Tip:</strong> In Eclipse, right-click the package name under the
-<code>src/</code> directory and select <strong>New > Class</strong>.
-Enter "DisplayMessageActivity" for the name and {@code android.app.Activity} for the superclass.</p>
+<p>To create a new activity using Eclipse:</p>
 
-<p>Inside the class, add the {@link android.app.Activity#onCreate onCreate()} callback method:</p>
+<ol>
+  <li>Click New <img src="{@docRoot}images/tools/eclipse-new.png" 
+  style="vertical-align:baseline;margin:0" /> in the toolbar.</li>
+  <li>In the window that appears, open the <strong>Android</strong> folder
+  and select <strong>Android Activity</strong>. Click <strong>Next</strong>.</li>
+  <li>Select <strong>BlankActivity</strong> and click <strong>Next</strong>.</li>
+  <li>Fill in the activity details:
+    <ul>
+      <li><em>Project</em>: MyFirstApp</li>
+      <li><em>Activity Name</em>: DisplayMessageActivity</li>
+      <li><em>Layout Name</em>: activity_display_message</li>
+      <li><em>Navigation Type</em>: None</li>
+      <li><em>Hierarchial Parent</em>: com.example.myfirstapp.MainActivity</li>
+      <li><em>Title</em>: My Message</li>
+    </ul>
+    <p>Click <strong>Finish</strong>.</p>
+  </li>
+</ol>
+
+<p>If you're using a different IDE or the command line tools, create a new file named
+{@code DisplayMessageActivity.java} in the project's <code>src/</code> directory, next to
+the original {@code MainActivity.java} file.</p>
+
+<p>Open the {@code DisplayMessageActivity.java} file. If you used Eclipse to create it, the class
+already includes an implementation of the required {@link android.app.Activity#onCreate onCreate()}
+method. There's also an implementation of the {@link android.app.Activity#onCreateOptionsMenu
+onCreateOptionsMenu()} method, but
+you won't need it for this app so you can remove it. The class should look like this:</p>
 
 <pre>
 public class DisplayMessageActivity extends Activity {
     &#64;Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_display_message);
     }
 }
 </pre>
@@ -216,7 +243,7 @@
 <p>All subclasses of {@link android.app.Activity} must implement the {@link
 android.app.Activity#onCreate onCreate()} method. The system calls this when creating a new
 instance of the activity. It is where you must define the activity layout and where you should
-initialize essential activity components.</p>
+perform initial setup for the activity components.</p>
 
 
 
@@ -226,38 +253,55 @@
 <a
 href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity>}</a> element.</p>
 
-<p>Because {@code DisplayMessageActivity} is invoked using an explicit intent, it does not require
-any intent filters (such as those you can see in the manifest for <code>MyFirstActivity</code>). So
-the declaration for <code>DisplayMessageActivity</code> can be simply one line of code inside the <a
-href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application>}</a>
-element:</p>
+<p>When you use the Eclipse tools to create the activity, it creates a default entry. It should
+look like this:</p>
 
 <pre>
 &lt;application ... >
-    &lt;activity android:name="com.example.myapp.DisplayMessageActivity" />
     ...
+    &lt;activity
+        android:name=".DisplayMessageActivity"
+        android:label="@string/title_activity_display_message" >
+        &lt;meta-data
+            android:name="android.support.PARENT_ACTIVITY"
+            android:value="com.example.myfirstapp.MainActivity" />
+    &lt;/activity>
 &lt;/application>
 </pre>
 
+<p>The <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">{@code
+  &lt;meta-data>}</a> element declares the name of this activity's parent activity
+  within the app's logical hierarchy. The Android <a
+href="{@docRoot}tools/extras/support-library.html">Support Library</a> uses this information
+  to implement default navigation behaviors, such as <a
+        href="{@docRoot}design/patterns/navigation.html">Up navigation</a>.</p>
+
+<p class="note"><strong>Note:</strong> During <a
+href="{@docRoot}sdk/installing/adding-packages.html">installation</a>, you should have downloaded
+the latest Support Library. Eclipse automatically includes this library in your app project (you
+can see the library's JAR file listed under <em>Android Dependencies</em>). If you're not using
+Eclipse, you may need to manually add the library to your project&mdash;follow this guide for <a
+href="{@docRoot}tools/extras/support-library.html#SettingUp">setting up the Support Library</a>.</p>
+
 <p>The app is now runnable because the {@link android.content.Intent} in the
 first activity now resolves to the {@code DisplayMessageActivity} class. If you run the app now,
-pressing the Send button starts the
-second activity, but it doesn't show anything yet.</p>
+clicking the Send button starts the second activity, but it's still using the default
+"Hello world" layout.</p>
 
 
 <h2 id="ReceiveIntent">Receive the Intent</h2>
 
 <p>Every {@link android.app.Activity} is invoked by an {@link android.content.Intent}, regardless of
 how the user navigated there. You can get the {@link android.content.Intent} that started your
-activity by calling {@link android.app.Activity#getIntent()} and the retrieve data contained
+activity by calling {@link android.app.Activity#getIntent()} and retrieve the data contained
 within it.</p>
 
 <p>In the {@code DisplayMessageActivity} class’s {@link android.app.Activity#onCreate onCreate()}
-method, get the intent and extract the message delivered by {@code MyFirstActivity}:</p>
+method, get the intent and extract the message delivered by {@code MainActivity}:</p>
 
 <pre>
 Intent intent = getIntent();
-String message = intent.getStringExtra(MyFirstActivity.EXTRA_MESSAGE);
+String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
 </pre>
 
 
@@ -279,22 +323,23 @@
 
     // Get the message from the intent
     Intent intent = getIntent();
-    String message = intent.getStringExtra(MyFirstActivity.EXTRA_MESSAGE);
+    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
 
     // Create the text view
     TextView textView = new TextView(this);
     textView.setTextSize(40);
     textView.setText(message);
 
+    // Set the text view as the activity layout
     setContentView(textView);
 }
 </pre>
 
-<p>You can now run the app, type a message in the text field, press Send, and view the message on
-the second activity.</p>
+<p>You can now run the app. When it opens, type a message in the text field, click Send,
+  and the message appears on the second activity.</p>
 
 <img src="{@docRoot}images/training/firstapp/firstapp.png" />
-<p class="img-caption"><strong>Figure 1.</strong> Both activities in the final app, running
+<p class="img-caption"><strong>Figure 2.</strong> Both activities in the final app, running
 on Android 4.0.
 
 <p>That's it, you've built your first Android app!</p>
diff --git a/docs/html/training/basics/fragments/communicating.jd b/docs/html/training/basics/fragments/communicating.jd
index 3ac9873..eb9b368 100644
--- a/docs/html/training/basics/fragments/communicating.jd
+++ b/docs/html/training/basics/fragments/communicating.jd
@@ -108,7 +108,7 @@
         implements HeadlinesFragment.OnHeadlineSelectedListener{
     ...
     
-    public void onArticleSelected(Uri articleUri) {
+    public void onArticleSelected(int position) {
         // The user selected the headline of an article from the HeadlinesFragment
         // Do something here to display that article
     }
diff --git a/docs/html/training/basics/intents/sending.jd b/docs/html/training/basics/intents/sending.jd
index 77f0e1a..37a06f1 100644
--- a/docs/html/training/basics/intents/sending.jd
+++ b/docs/html/training/basics/intents/sending.jd
@@ -31,11 +31,11 @@
 <p>One of Android's most important features is an app's ability to send the user to another app
 based on an "action" it would like to perform. For example, if
 your app has the address of a business that you'd like to show on a map, you don't have to build
-an activity in your app that shows a map. Instead, you can send a out a request to view the address
-using an {@link android.content.Intent}. The Android system then starts an app that's able to view
+an activity in your app that shows a map. Instead, you can create a request to view the address
+using an {@link android.content.Intent}. The Android system then starts an app that's able to show
 the address on a map.</p>
 
-<p>As shown in the first class, <a href="{@docRoot}training/basics/firstapp/index.html">Building
+<p>As explained in the first class, <a href="{@docRoot}training/basics/firstapp/index.html">Building
 Your First App</a>, you must use intents to navigate between activities in your own app. You
 generally do so with an <em>explicit intent</em>, which defines the exact class name of the
 component you want to start. However, when you want to have a separate app perform an action, such
diff --git a/docs/html/training/basics/network-ops/connecting.jd b/docs/html/training/basics/network-ops/connecting.jd
index f70cf58..ac8d993 100644
--- a/docs/html/training/basics/network-ops/connecting.jd
+++ b/docs/html/training/basics/network-ops/connecting.jd
@@ -66,7 +66,7 @@
 Remember, the device may be out of range of a
 network, or the user may have disabled both Wi-Fi and mobile data access. 
 For more discussion of this topic, see the lesson <a
-href="{@docRoot}training/network-ops/managing.html">Managing Network
+href="{@docRoot}training/basics/network-ops/managing.html">Managing Network
 Usage</a>.</p>
 
 <pre>
diff --git a/docs/html/training/basics/network-ops/managing.jd b/docs/html/training/basics/network-ops/managing.jd
index 33cb195..0f3d495 100644
--- a/docs/html/training/basics/network-ops/managing.jd
+++ b/docs/html/training/basics/network-ops/managing.jd
@@ -116,7 +116,7 @@
 follows. The method {@link
 android.net.ConnectivityManager#getActiveNetworkInfo() getActiveNetworkInfo()}
 returns a {@link android.net.NetworkInfo} instance representing the first
-connected network interface it can find, or <code>null</code> if none if the
+connected network interface it can find, or <code>null</code> if none of the
 interfaces is connected (meaning that an
 internet connection is not available):</p>
 
diff --git a/docs/html/training/cloudsync/aesync.jd b/docs/html/training/cloudsync/aesync.jd
deleted file mode 100644
index a21b429..0000000
--- a/docs/html/training/cloudsync/aesync.jd
+++ /dev/null
@@ -1,432 +0,0 @@
-page.title=Syncing with App Engine
-parent.title=Syncing to the Cloud
-parent.link=index.html
-
-trainingnavtop=true
-next.title=Using the Backup API
-next.link=backupapi.html
-
-@jd:body
-
-<div id="tb-wrapper">
-<div id="tb">
-
-<!-- table of contents -->
-<h2>This lesson teaches you how to</h2>
-<ol>
-  <li><a href="#prepare">Prepare Your Environment</a></li>
-  <li><a href="#project">Create Your Project</a></li>
-  <li><a href="#data">Create the Data Layer</a></li>
-  <li><a href="#persistence">Create the Persistence Layer</a></li>
-  <li><a href="#androidapp">Query and Update from the Android App</a></li>
-  <li><a href="#serverc2dm">Configure the C2DM Server-Side</a></li>
-  <li><a href="#clientc2dm">Configure the C2DM Client-Side</a></li>
-</ol>
-<h2>You should also read</h2>
-    <ul>
-      <li><a
-        href="http://developers.google.com/appengine/">App Engine</a></li>
-      <li><a href="http://code.google.com/android/c2dm/">Android Cloud to Device
-        Messaging Framework</a></li>
-    </ul>
-<h2>Try it out</h2>
-
-<p>This lesson uses the Cloud Tasks sample code, originally shown at the
-<a href="http://www.youtube.com/watch?v=M7SxNNC429U">Android + AppEngine: A Developer's Dream Combination</a>
-talk at Google I/O.  You can use the sample application as a source of reusable code for your own
-application, or simply as a reference for how the Android and cloud pieces of the overall
-application fit together.  You can also build the sample application and see how it runs
-on your own device or emulator.</p>
-<p>
-  <a href="http://code.google.com/p/cloud-tasks-io/" class="button">Cloud Tasks
-  App</a>
-</p>
-
-</div>
-</div>
-
-<p>Writing an app that syncs to the cloud can be a challenge.  There are many little
-details to get right, like server-side auth, client-side auth, a shared data
-model, and an API.  One way to make this much easier is to use the Google Plugin
-for Eclipse, which handles a lot of the plumbing for you when building Android
-and App Engine applications that talk to each other.  This lesson walks you through building such a project.</p>
-
-<p>Following this lesson shows you how to:</p>
-<ul>
-  <li>Build Android and Appengine apps that can communicate with each other</li>
-  <li>Take advantage of Cloud to Device Messaging (C2DM) so your Android app doesn't have to poll for updates</li>
-</ul>
-
-<p>This lesson focuses on local development, and does not cover distribution
-(i.e, pushing your App Engine app live, or publishing your Android App to
-market), as those topics are covered extensively elsewhere.</p>
-
-<h2 id="prepare">Prepare Your Environment</h2>
-<p>If you want to follow along with the code example in this lesson, you must do
-the following to prepare your development environment:</p>
-<ul>
-<li>Install the <a href="http://code.google.com/eclipse/">Google Plugin for
-  Eclipse.</a></li>
-<li>Install the <a
-  href="http://code.google.com/webtoolkit/download.html">GWT SDK</a> and the <a
-  href="http://code.google.com/appengine/">Java App Engine SDK</a>. The <a
-  href="http://code.google.com/eclipse/docs/getting_started.html">Quick Start
-  Guide</a> shows you how to install these components.</li>
-<li>Sign up for <a href="http://code.google.com/android/c2dm/signup.html">C2DM
-  access</a>.  We strongly recommend <a
-  href="https://accounts.google.com/SignUp">creating a new Google account</a> specifically for
-connecting to C2DM.  The server component in this lesson uses this <em>role
-  account</em> repeatedly to authenticate with Google servers.
-</li>
-</ul>
-
-<h2 id="project">Create Your Projects</h2>
-<p>After installing the Google Plugin for Eclipse, notice that a new kind of Android project
-exists when you create a new Eclipse project:  The <strong>App Engine Connected
-  Android Project</strong> (under the <strong>Google</strong> project category).
-A wizard guides you through creating this project,
-during the course of which you are prompted to enter the account credentials for the role
-account you created.</p>
-
-<p class="note"><strong>Note:</strong> Remember to enter the credentials for
-your <i>role account</i> (the one you created to access C2DM services), not an
-account you'd log into as a user, or as an admin.</p>
-
-<p>Once you're done, you'll see two projects waiting for you in your
-workspace&mdash;An Android application and an App Engine application.  Hooray!
-These two applications are already fully functional&mdash; the wizard has
-created a sample application which lets you authenticate to the App Engine
-application from your Android device using AccountManager (no need to type in
-your credentials), and an App Engine app that can send messages to any logged-in
-device using C2DM.  In order to spin up your application and take it for a test
-drive, do the following:</p>
-
-<p>To spin up the Android application, make sure you have an AVD with a platform
-version of <em>at least</em> Android 2.2 (API Level 8).  Right click on the Android project in
-Eclipse, and go to <strong>Debug As &gt; Local App Engine Connected Android
-  Application</strong>.  This launches the emulator in such a way that it can
-test C2DM functionality (which typically works through Google Play).  It'll
-also launch a local instance of App Engine containing your awesome
-application.</p>
-
-<h2 id="data">Create the Data Layer</h2>
-
-<p>At this point you have a fully functional sample application running.  Now
-it's time to start changing the code to create your own application.</p>
-
-<p>First, create the data model that defines the data shared between
-the App Engine and Android applications.  To start, open up the source folder of
-your App Engine project, and navigate down to the <strong>(yourApp)-AppEngine
-  &gt; src &gt; (yourapp) &gt; server</strong> package.  Create a new class in there containing some data you want to
-store server-side. The code ends up looking something like this:</p>
-<pre>
-package com.cloudtasks.server;
-
-import javax.persistence.*;
-
-&#64;Entity
-public class Task {
-
-    private String emailAddress;
-    private String name;
-    private String userId;
-    private String note;
-
-    &#64;Id
-    &#64;GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-
-    public Task() {
-    }
-
-    public String getEmailAddress() {
-        return this.emailAddress;
-    }
-
-    public Long getId() {
-        return this.id;
-    }
-    ...
-}
-</pre>
-<p>Note the use of annotations:  <code>Entity</code>, <code>Id</code> and
-<code>GeneratedValue</code> are all part of the <a
-  href="http://www.oracle.com/technetwork/articles/javaee/jpa-137156.html">Java
-  Persistence API</a>.  Essentially, the <code>Entity</code> annotation goes
-above the class declaration, and indicates that this class represents an entity
-in your data layer.  The <code>Id</code> and <code>GeneratedValue</code>
-annotations, respectively, indicate the field used as a lookup key for this
-class, and how that id is generated (in this case,
-<code>GenerationType.IDENTITY</code> indicates that the is generated by
-the database).  You can find more on this topic in the App Engine documentation,
-on the page <a
-  href="http://code.google.com/appengine/docs/java/datastore/jpa/overview.html">Using
-  JPA with App Engine</a>.</p>
-
-<p>Once you've written all the classes that represent entities in your data
-layer, you need a way for the Android and App Engine applications to communicate
-about this data.  This communication is enabled by creating a Remote Procedure
-Call (RPC) service.
-Typically, this involves a lot of monotonous code.  Fortunately, there's an easy way!  Right
-click on the server project in your App Engine source folder, and in the context
-menu, navigate to <strong>New &gt; Other</strong> and then, in the resulting
-screen, select <strong>Google &gt; RPC Service.</strong>  A wizard appears, pre-populated
-with all the Entities you created in the previous step,
-which it found by seeking out the <code>&#64;Entity</code> annotation in the
-source files you added.  Pretty neat, right?  Click <strong>Finish</strong>, and the wizard
-creates a Service class with stub methods for the Create, Retrieve, Update and
-Delete (CRUD) operations of all your entities.</p>
-
-<h2 id="persistence">Create the Persistence Layer</h2>
-
-<p>The persistence layer is where your application data is stored
-long-term, so any information you want to keep for your users needs to go here.
-You have several options for writing your persistence layer, depending on
-what kind of data you want to store.  A few of the options hosted by Google
-(though you don't have to use these services) include <a
-  href="http://code.google.com/apis/storage/">Google Storage for Developers</a>
-and App Engine's built-in <a
-  href="http://code.google.com/appengine/docs/java/gettingstarted/usingdatastore.html">Datastore</a>.
-The sample code for this lesson uses DataStore code.</p>
-
-<p>Create a class in your <code>com.cloudtasks.server</code> package to handle
-persistence layer input and output.  In order to access the data store, use the <a
-  href="http://db.apache.org/jdo/api20/apidocs/javax/jdo/PersistenceManager.html">PersistenceManager</a>
-class.  You can generate an instance of this class using the PMF class in the
-<code>com.google.android.c2dm.server.PMF</code> package, and then use that to
-perform basic CRUD operations on your data store, like this:</p>
-<pre>
-/**
-* Remove this object from the data store.
-*/
-public void delete(Long id) {
-    PersistenceManager pm = PMF.get().getPersistenceManager();
-    try {
-        Task item = pm.getObjectById(Task.class, id);
-        pm.deletePersistent(item);
-    } finally {
-        pm.close();
-    }
-}
-</pre>
-
-<p>You can also use <a
-  href="http://code.google.com/appengine/docs/python/datastore/queryclass.html">Query</a>
-objects to retrieve data from your Datastore.  Here's an example of a method
-that searches out an object by its ID.</p>
-
-<pre>
-public Task find(Long id) {
-    if (id == null) {
-        return null;
-    }
-
-    PersistenceManager pm = PMF.get().getPersistenceManager();
-    try {
-        Query query = pm.newQuery("select from " + Task.class.getName()
-        + " where id==" + id.toString() + " &amp;&amp; emailAddress=='" + getUserEmail() + "'");
-        List&lt;Task> list = (List&lt;Task>) query.execute();
-        return list.size() == 0 ? null : list.get(0);
-    } catch (RuntimeException e) {
-        System.out.println(e);
-        throw e;
-    } finally {
-        pm.close();
-    }
-}
-</pre>
-
-<p>For a good example of a class that encapsulates the persistence layer for
-you, check out the <a
-  href="http://code.google.com/p/cloud-tasks-io/source/browse/trunk/CloudTasks-AppEngine/src/com/cloudtasks/server/DataStore.java">DataStore</a>
-class in the Cloud Tasks app.</p>
-
-
-
-<h2 id="androidapp">Query and Update from the Android App</h2>
-
-<p>In order to keep in sync with the App Engine application, your Android application
-needs to know how to do two things:  Pull data from the cloud, and send data up
-to the cloud.  Much of the plumbing for this is generated by the
-plugin, but you need to wire it up to your Android user interface yourself.</p>
-
-<p>Pop open the source code for the main Activity in your project and look for
-<code>&lt;YourProjectName&gt; Activity.java</code>, then for the method
-<code>setHelloWorldScreenContent()</code>.  Obviously you're not building a
-HelloWorld app, so delete this method entirely and replace it
-with something relevant.  However, the boilerplate code has some very important
-characteristics.  For one, the code that communicates with the cloud is wrapped
-in an {@link android.os.AsyncTask} and therefore <em>not</em> hitting the
-network on the UI thread.  Also, it gives an easy template for how to access
-the cloud in your own code, using the <a
-  href="http://code.google.com/webtoolkit/doc/latest/DevGuideRequestFactory.html">RequestFactory</a>
-class generated that was auto-generated for you by the Eclipse plugin (called
-MyRequestFactory in the example below), and various {@code Request} types.</p>
-
-<p>For instance, if your server-side data model included an object called {@code
-Task} when you generated an RPC layer it automatically created a
-{@code TaskRequest} class for you, as well as a {@code TaskProxy} representing the individual
-task.  In code, requesting a list of all these tasks from the server looks
-like this:</p>
-
-<pre>
-public void fetchTasks (Long id) {
-  // Request is wrapped in an AsyncTask to avoid making a network request
-  // on the UI thread.
-    new AsyncTask&lt;Long, Void, List&lt;TaskProxy>>() {
-        &#64;Override
-        protected List&lt;TaskProxy> doInBackground(Long... arguments) {
-            final List&lt;TaskProxy> list = new ArrayList&lt;TaskProxy>();
-            MyRequestFactory factory = Util.getRequestFactory(mContext,
-            MyRequestFactory.class);
-            TaskRequest taskRequest = factory.taskNinjaRequest();
-
-            if (arguments.length == 0 || arguments[0] == -1) {
-                factory.taskRequest().queryTasks().fire(new Receiver&lt;List&lt;TaskProxy>>() {
-                    &#64;Override
-                    public void onSuccess(List&lt;TaskProxy> arg0) {
-                      list.addAll(arg0);
-                    }
-                });
-            } else {
-                newTask = true;
-                factory.taskRequest().readTask(arguments[0]).fire(new Receiver&lt;TaskProxy>() {
-                    &#64;Override
-                    public void onSuccess(TaskProxy arg0) {
-                      list.add(arg0);
-                    }
-                });
-            }
-        return list;
-    }
-
-    &#64;Override
-    protected void onPostExecute(List&lt;TaskProxy> result) {
-        TaskNinjaActivity.this.dump(result);
-    }
-
-    }.execute(id);
-}
-...
-
-public void dump (List&lt;TaskProxy> tasks) {
-    for (TaskProxy task : tasks) {
-        Log.i("Task output", task.getName() + "\n" + task.getNote());
-    }
-}
-</pre>
-
-<p>This {@link android.os.AsyncTask} returns a list of
-<code>TaskProxy</code> objects, and sends it to the debug {@code dump()} method
-upon completion.  Note that if the argument list is empty, or the first argument
-is a -1, all tasks are retrieved from the server.  Otherwise, only the ones with
-IDs in the supplied list are returned.  All the fields you added to the task
-entity when building out the App Engine application are available via get/set
-methods in the <code>TaskProxy</code> class.</p>
-
-<p>In order to create new tasks and send them to the cloud, create a request
-object and use it to create a proxy object. Then populate the proxy object and
-call its update method.  Once again, this should be done in an
-<code>AsyncTask</code> to avoid doing networking on the UI thread.  The end
-result looks something like this.</p>
-
-<pre>
-new AsyncTask&lt;Void, Void, Void>() {
-    &#64;Override
-    protected Void doInBackground(Void... arg0) {
-        MyRequestFactory factory = (MyRequestFactory)
-                Util.getRequestFactory(TasksActivity.this,
-                MyRequestFactory.class);
-        TaskRequest request = factory.taskRequest();
-
-        // Create your local proxy object, populate it
-        TaskProxy task = request.create(TaskProxy.class);
-        task.setName(taskName);
-        task.setNote(taskDetails);
-        task.setDueDate(dueDate);
-
-        // To the cloud!
-        request.updateTask(task).fire();
-        return null;
-    }
-}.execute();
-</pre>
-
-<h2 id="serverc2dm">Configure the C2DM Server-Side</h2>
-
-<p>In order to set up C2DM messages to be sent to your Android device, go back
-into your App Engine codebase, and open up the service class that was created
-when you generated your RPC layer.  If the name of your project is Foo,
-this class is called FooService.  Add a line to each of the methods for
-adding, deleting, or updating data so that a C2DM message is sent to the
-user's device.  Here's an example of an update task:
-</p>
-
-<pre>
-public static Task updateTask(Task task) {
-    task.setEmailAddress(DataStore.getUserEmail());
-    task = db.update(task);
-    DataStore.sendC2DMUpdate(TaskChange.UPDATE + TaskChange.SEPARATOR + task.getId());
-    return task;
-}
-
-// Helper method.  Given a String, send it to the current user's device via C2DM.
-public static void sendC2DMUpdate(String message) {
-    UserService userService = UserServiceFactory.getUserService();
-    User user = userService.getCurrentUser();
-    ServletContext context = RequestFactoryServlet.getThreadLocalRequest().getSession().getServletContext();
-    SendMessage.sendMessage(context, user.getEmail(), message);
-}
-</pre>
-
-<p>In the following example, a helper class, {@code TaskChange}, has been created with a few
-constants.  Creating such a helper class makes managing the communication
-between App Engine and Android apps much easier.  Just create it in the shared
-folder, define a few constants (flags for what kind of message you're sending
-and a seperator is typically enough), and you're done.  By way of example,
-the above code works off of a {@code TaskChange} class defined as this:</p>
-
-<pre>
-public class TaskChange {
-    public static String UPDATE = "Update";
-    public static String DELETE = "Delete";
-    public static String SEPARATOR = ":";
-}
-</pre>
-
-<h2 id="clientc2dm">Configure the C2DM Client-Side</h2>
-
-<p>In order to define the Android applications behavior when a C2DM is recieved,
-open up the <code>C2DMReceiver</code> class, and browse to the
-<code>onMessage()</code> method.  Tweak this method to update based on the content
-of the message.</p>
-<pre>
-//In your C2DMReceiver class
-
-public void notifyListener(Intent intent) {
-    if (listener != null) {
-        Bundle extras = intent.getExtras();
-        if (extras != null) {
-            String message = (String) extras.get("message");
-            String[] messages = message.split(Pattern.quote(TaskChange.SEPARATOR));
-            listener.onTaskUpdated(messages[0], Long.parseLong(messages[1]));
-        }
-    }
-}
-</pre>
-
-<pre>
-// Elsewhere in your code, wherever it makes sense to perform local updates
-public void onTasksUpdated(String messageType, Long id) {
-    if (messageType.equals(TaskChange.DELETE)) {
-        // Delete this task from your local data store
-        ...
-    } else {
-        // Call that monstrous Asynctask defined earlier.
-        fetchTasks(id);
-    }
-}
-</pre>
-<p>
-Once you have C2DM set up to trigger local updates, you're all done.
-Congratulations, you have a cloud-connected Android application!</p>
diff --git a/docs/html/training/cloudsync/backupapi.jd b/docs/html/training/cloudsync/backupapi.jd
index 3055596..a5436c6 100644
--- a/docs/html/training/cloudsync/backupapi.jd
+++ b/docs/html/training/cloudsync/backupapi.jd
@@ -3,8 +3,9 @@
 parent.link=index.html
 
 trainingnavtop=true
-previous.title=Syncing with App Engine
-previous.link=aesync.html
+
+next.title=Making the Most of Google Cloud Messaging
+next.link=gcm.html
 
 @jd:body
 
diff --git a/docs/html/training/cloudsync/gcm.jd b/docs/html/training/cloudsync/gcm.jd
new file mode 100644
index 0000000..df26d34
--- /dev/null
+++ b/docs/html/training/cloudsync/gcm.jd
@@ -0,0 +1,217 @@
+page.title=Making the Most of Google Cloud Messaging
+parent.title=Syncing to the Cloud
+parent.link=index.html
+
+trainingnavtop=true
+
+previous.title=Using the Backup API
+previous.link=backupapi.html
+
+@jd:body
+
+<div id="tb-wrapper">
+  <div id="tb">
+    <h2>This lesson teaches you to</h2>
+    <ol>
+      <li><a href="#multicast">Send Multicast Messages Efficiently</a></li>
+      <li><a href="#collapse">Collapse Messages that can Be Replaced</a></li>
+      <li><a href="#embed">Embed Data Directly in the GCM Message</a></li>
+      <li><a href="#react">React Intelligently to GCM Messages</a></li>
+    </ol>
+    <h2>You should also read</h2>
+    <ul>
+      <li><a href="http://developer.android.com/guide/google/gcm/index.html">Google
+      Cloud Messaging for Android</a></li>
+    </ul>
+  </div>
+</div>
+
+<p>Google Cloud Messaging (GCM) is a free service for sending
+messages to Android devices.  GCM messaging can greatly enhance the user
+experience.  Your application can stay up to date without wasting battery power
+on waking up the radio and polling the server when there are no updates.  Also,
+GCM allows you to attach up to 1,000 recipients to a single message, letting you easily contact
+large user bases quickly when appropriate, while minimizing the work load on
+your server.</p>
+
+<p>This lesson covers some of the best practices
+for integrating GCM into your application, and assumes you are already familiar
+with basic implementation of this service.  If this is not the case, you can read the <a
+  href="{@docRoot}guide/google/gcm/demo.html">GCM demo app tutorial</a>.</p>
+
+<h2 id="multicast">Send Multicast Messages Efficiently</h2>
+<p>One of the most useful features in GCM is support for up to 1,000 recipients for
+a single message.  This capability makes it much easier to send out important messages to
+your entire user base.  For instance, let's say you had a message that needed to
+be sent to 1,000,000 of your users, and your server could handle sending out
+about 500 messages per second.  If you send each message with only a single
+recipient, it would take 1,000,000/500 = 2,000 seconds, or around half an hour.
+However, attaching 1,000 recipients to each message, the total time required to
+send a message out to 1,000,000 recipients becomes (1,000,000/1,000) / 500 = 2
+seconds. This is not only useful, but important for timely data, such as natural
+disaster alerts or sports scores, where a 30 minute interval might render the
+information useless.</p>
+
+<p>Taking advantage of this functionality is easy.  If you're using the <a
+  href="http://developer.android.com/guide/google/gcm/gs.html#libs">GCM helper
+  library</a> for Java, simply provide a <code>List<String></code> collection of
+registration IDs to the <code>send</code> or <code>sendNoRetry</code> method,
+instead of a single registration ID.</p>
+
+<pre>
+// This method name is completely fabricated, but you get the idea.
+List<String> regIds = whoShouldISendThisTo(message);
+
+// If you want the SDK to automatically retry a certain number of times, use the
+// standard send method.
+MulticastResult result = sender.send(message, regIds, 5);
+
+// Otherwise, use sendNoRetry.
+MulticastResult result = sender.sendNoRetry(message, regIds);
+</pre>
+
+<p>For those implementing GCM support in a language other than Java, construct
+an HTTP POST request with the following headers:</p>
+<ul>
+  <li><code>Authorization: key=YOUR_API_KEY</code></li>
+  <li><code>Content-type: application/json</code></li>
+</ul>
+
+<p>Then encode the parameters you want into a JSON object, listing all the
+registration IDs under the key <code>registration_ids</code>.  The snippet below
+serves as an example.  All parameters except <code>registration_ids</code> are
+optional, and the items nested in <code>data</code> represent the user-defined payload, not
+GCM-defined parameters.  The endpoint for this HTTP POST message will be
+<code>https://android.googleapis.com/gcm/send</code>.</p>
+
+<pre>
+{ "collapse_key": "score_update",
+   "time_to_live": 108,
+   "delay_while_idle": true,
+   "data": {
+       "score": "4 x 8",
+       "time": "15:16.2342"
+   },
+   "registration_ids":["4", "8", "15", "16", "23", "42"]
+}
+</pre>
+
+<p>For a more thorough overview of the format of multicast GCM messages, see the <a
+  href="http://developer.android.com/guide/google/gcm/gcm.html#send-msg">Sending
+  Messages</a> section of the GCM guide.</pre>
+
+<h2 id="collapse">Collapse Messages that Can Be Replaced</h2>
+<p>GCM messages are often a tickle, telling the mobile application to
+contact the server for fresh data.  In GCM, it's possible (and recommended) to
+create collapsible messages for this situation, wherein new messages replace
+older ones.  Let's take the example
+of sports scores.  If you send out a message to all users following a certain
+game with the updated score, and then 15 minutes later an updated score message
+goes out, the earlier one no longer matters.  For any users who haven't received
+the first message yet, there's no reason to send both, and force the device to
+react (and possibly alert the user) twice when only one of the messages is still
+important.</p>
+
+<p>When you define a collapse key, when multiple messages are queued up in the GCM
+servers for the same user, only the last one with any given collapse key is
+delivered.  For a situation like with sports scores, this saves the device from
+doing needless work and potentially over-notifying the user.  For situations
+that involve a server sync (like checking email), this can cut down on the
+number of syncs the device has to do.  For instance, if there are 10 emails
+waiting on the server, and ten "new email" GCM tickles have been sent to the
+device, it only needs one, since it should only sync once.</p>
+
+<p>In order to use this feature, just add a collapse key to your outgoing
+message.  If you're using the GCM helper library, use the Message class's <code>collapseKey(String key)</code> method.</p>
+
+<pre>
+Message message = new Message.Builder(regId)
+    .collapseKey("game4_scores") // The key for game 4.
+    .ttl(600) // Time in seconds to keep message queued if device offline.
+    .delayWhileIdle(true) // Wait for device to become active before sending.
+    .addPayload("key1", "value1")
+    .addPayload("key2", "value2")
+    .build();
+</pre>
+
+<p>If not using the helper library, simply add a variable to the
+POST header you're constructing, with <code>collapse_key</code> as the field
+name, and the string you're using for that set of updates as the value.</p>
+
+
+
+<h2 id="embed">Embed Data Directly in the GCM Message</h2>
+<p>Often, GCM messages are meant to be a tickle, or indication to the device
+that there's fresh data waiting on a server somewhere.  However, a GCM message
+can be up to 4kb in size, so sometimes it makes sense to simply send the
+data within the GCM message itself, so that the device doesn't need to contact the
+server at all.  Consider this approach for situations where all of the
+following statements are true:
+<ul>
+  <li>The total data fits inside the 4kb limit.</li>
+  <li>Each message is important, and should be preserved.</li>
+  <li>It doesn't make sense to collapse multiple GCM messages into a single
+  "new data on the server" tickle.</li>
+</ul>
+
+<p>For instance, short messages or encoded player moves
+in a turn-based network game are examples of good use-cases for data to embed directly
+into a GCM message. Email is an example of a bad use-case, since messages are
+often larger than 4kb,
+and users don't need a GCM message for each email waiting for them on
+the server.</p>
+
+<p>Also consider this approach when sending
+multicast messages, so you don't tell every device across your user base to hit
+your server for updates simultaneously.</p>
+<p>This strategy isn't appropriate for sending large amounts of data, for a few
+reasons:</p>
+<ul>
+  <li>Rate limits are in place to prevent malicious or poorly coded apps from spamming an
+  individual device with messages.</li>
+  <li>Messages aren't guaranteed to arrive in-order.</li>
+  <li>Messages aren't guaranteed to arrive as fast as you send them out.  Even
+  if the device receives one GCM message a second, at a max of 1K, that's 8kbps, or
+  about the speed of home dial-up internet in the early 1990's.  Your app rating
+  on Google Play will reflect having done that to your users.</p>
+</ul>
+
+<p>When used appropriately, directly embedding data in the GCM message can speed
+up the perceived speediness of your application, by letting it skip a round trip
+to the server.</p>
+
+<h2 id="react">React Intelligently to GCM Messages</h2>
+<p>Your application should not only react to incoming GCM messages, but react
+<em>intelligently</em>.  How to react depends on the context.</p>
+
+<h3>Don't be irritating</h3>
+<p>When it comes to alerting your user of fresh data, it's easy to cross the line
+from "useful" to "annoying".  If your application uses status bar notifications,
+<a
+  href="http://developer.android.com/guide/topics/ui/notifiers/notifications.html#Updating">update
+  your existing notification</a> instead of creating a second one. If you
+beep or vibrate to alert the user, consider setting up a timer.  Don't let the
+application alert more than once a minute, lest users be tempted to uninstall
+your application, turn the device off, or toss it in a nearby river.</p>
+
+<h3>Sync smarter, not harder</h3>
+<p>When using GCM as an indicator to the device that data needs to be downloaded
+from the server, remember you have 4kb of metadata you can send along to
+help your application be smart about it.  For instance, if you have a feed
+reading app, and your user has 100 feeds that they follow, help the device be
+smart about what it downloads from the server!  Look at the following examples
+of what metadata is sent to your application in the GCM payload, and how the application
+can react:</p>
+<ul>
+  <li><code>refresh</code> &mdash; Your app basically got told to request a dump of
+  every feed it follows.  Your app would either need to send feed requests to 100 different servers, or
+  if you have an aggregator on your server, send a request to retrieve, bundle
+  and
+  transmit recent data from 100 different feeds, every time one updates.</li>
+  <li><code>refresh</code>, <code>feedID</code> &mdash; Better:  Your app knows to check
+  a specific feed for updates.</li>
+  <li><code>refresh</code>, <code>feedID</code>, <code>timestamp</code> &mdash;
+  Best:  If the user happened to manually refresh before the GCM message
+  arrived, the application can compare timestamps of the most recent post, and
+  determine that it <em>doesn't need to do anything</em>.
+</ul>
diff --git a/docs/html/training/cloudsync/index.jd b/docs/html/training/cloudsync/index.jd
index e53844b..91885e8 100644
--- a/docs/html/training/cloudsync/index.jd
+++ b/docs/html/training/cloudsync/index.jd
@@ -2,8 +2,8 @@
 
 trainingnavtop=true
 startpage=true
-next.title=Syncing with App Engine
-next.link=aesync.html
+next.title=Making the Most of Google Cloud Messaging
+next.link=gcm.html
 
 @jd:body
 
@@ -21,14 +21,13 @@
 <h2>Lessons</h2>
 
 <dl>
-  <dt><strong><a href="aesync.html">Syncing with App Engine.</a></strong></dt>
-  <dd>Learn how to create a paired App Engine app and Android app which share a
-  data model, authenticates using the AccountManager, and communicate with each
-  other via REST and C2DM.</dd>
-  <dt><strong><a href="backupapi.html">Using the Backup
-      API</a></strong></dt>
+  <dt><strong><a href="backupapi.html">Using the Backup API</a></strong></dt>
   <dd>Learn how to integrate the Backup API into your Android Application, so
   that user data such as preferences, notes, and high scores update seamlessly
   across all of a user's devices</dd>
+  <dt><strong><a href="gcm.html">Making the Most of Google Cloud Messaging</a></strong></dt>
+  <dd>Learn how to efficiently send multicast messages, react intelligently to
+  incoming Google Cloud Messaging (GCM) messages, and use GCM messages to
+  efficiently sync with the server.</dd>
 </dl>
 
diff --git a/docs/html/training/connect-devices-wirelessly/index.jd b/docs/html/training/connect-devices-wirelessly/index.jd
new file mode 100644
index 0000000..37cf633
--- /dev/null
+++ b/docs/html/training/connect-devices-wirelessly/index.jd
@@ -0,0 +1,62 @@
+page.title=Connecting Devices Wirelessly
+
+trainingnavtop=true
+startpage=true
+next.title=Using Network Service Discovery
+next.link=nsd.html
+
+@jd:body
+
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>Dependencies and prerequisites</h2>
+<ul>
+  <li>Android 4.1 or higher</li>
+</ul>
+
+<h2>You should also read</h2>
+<ul>
+  <li><a href="{@docRoot}guide/topics/connectivity/wifip2p.html">Wi-Fi Direct</a></li>
+</ul>
+
+
+</div>
+</div>
+
+
+<p>Besides enabling communication with the cloud, Android's wireless APIs also
+enable communication with other devices on the same local network, and even
+devices which are not on a network, but are physically nearby.  The addition of
+Network Service Discovery (NSD) takes this further by allowing an application to
+seek out a nearby device running services with which it can communicate.
+Integrating this functionality into your application helps you provide a wide range
+of features, such as playing games with users in the same room, pulling
+images from a networked NSD-enabled webcam, or remotely logging into
+other machines on the same network.</p>
+<p>This class describes the key APIs for finding and
+connecting to other devices from your application.  Specifically, it
+describes the NSD API for discovering available services and the Wi-Fi
+Direct&trade; API for doing peer-to-peer wireless connections.  This class also
+shows you how to use NSD and Wi-Fi Direct in
+combination to detect the services offered by a device and connect to the
+device when neither device is connected to a network.
+</p>
+<h2>Lessons</h2>
+
+<dl>
+  <dt><strong><a href="nsd.html">Using Network Service Discovery</a></strong></dt>
+  <dd>Learn how to broadcast services offered by your own application, discover
+  services offered on the local network, and use NSD to determine the connection
+  details for the service you wish to connect to.</dd>
+  <dt><strong><a href="wifi-direct.html">Connecting with Wi-Fi Direct</a></strong></dt>
+  <dd>Learn how to fetch a list of nearby peer devices, create an access point
+  for legacy devices, and connect to other devices capable of Wi-Fi Direct
+  connections.</dd>
+  <dt><strong><a href="nsd-wifi-direct.html">Using Wi-Fi Direct for Service
+      Discovery</a></strong></dt>
+  <dd>Learn how to discover services published by nearby devices without being
+  on the same network, using Wi-Fi Direct.</dd>
+</dl>
+
diff --git a/docs/html/training/connect-devices-wirelessly/nsd-wifi-direct.jd b/docs/html/training/connect-devices-wirelessly/nsd-wifi-direct.jd
new file mode 100644
index 0000000..5e276de
--- /dev/null
+++ b/docs/html/training/connect-devices-wirelessly/nsd-wifi-direct.jd
@@ -0,0 +1,252 @@
+page.title=Using Wi-Fi Direct for Service Discovery
+parent.title=Connecting Devices Wirelessly
+parent.link=index.html
+
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+  <div id="tb">
+    <h2>This lesson teaches you to</h2>
+    <ol>
+      <li><a href="#manifest">Set Up the Manifest</a></li>
+      <li><a href="#register">Add a Local Service</a></li>
+      <li><a href="#discover">Discover Nearby Services</a></li>
+    </ol>
+    <!--
+    <h2>You should also read</h2>
+    <ul>
+      <li><a href="#"></a></li>
+    </ul>
+    -->
+  </div>
+</div>
+
+<p>The first lesson in this class, <a href="nsd.html">Using Network Service
+  Discovery</a>, showed you
+how to discover services that are connected to a local network. However, using
+Wi-Fi Direct&trad; Service Discovery allows you to discover the services of nearby devices directly,
+without being connected to a network.  You can also advertise the services
+running on your device.  These capabilities help you communicate between apps,
+even when no local network or hotspot is available.</p>
+<p>While this set of APIs is similar in purpose to the Network Service Discovery
+APIs outlined in a previous lesson, implementing them in code is very different.
+This lesson shows you how to discover services available from other devices,
+using Wi-Fi Direct&trade;. The lesson assumes that you're already familiar with the
+<a href="{@docRoot}guide/topics/connectivity/wifip2p.html">Wi-Fi Direct</a> API.</p>
+
+
+<h2 id="manifest">Set Up the Manifest</h2>
+<p>In order to use Wi-Fi Direct, add the {@link
+android.Manifest.permission#CHANGE_WIFI_STATE}, {@link
+android.Manifest.permission#ACCESS_WIFI_STATE},
+and {@link android.Manifest.permission#INTERNET}
+permissions to your manifest.  Even though Wi-Fi Direct doesn't require an
+Internet connection, it uses standard Java sockets, and using these in Android
+requires the requested permissions.</p>
+
+<pre>
+&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.android.nsdchat"
+    ...
+
+    &lt;uses-permission
+        android:required="true"
+        android:name="android.permission.ACCESS_WIFI_STATE"/&gt;
+    &lt;uses-permission
+        android:required="true"
+        android:name="android.permission.CHANGE_WIFI_STATE"/&gt;
+    &lt;uses-permission
+        android:required="true"
+        android:name="android.permission.INTERNET"/&gt;
+    ...
+</pre>
+
+<h2 id="register">Add a Local Service</h2>
+<p>If you're providing a local service, you need to register it for
+service discovery.  Once your local service is registered, the framework
+automatically responds to service discovery requests from peers.</p>
+
+<p>To create a local service:</p>
+
+<ol>
+  <li>Create a
+{@link android.net.wifi.p2p.nsd.WifiP2pServiceInfo} object.</li>
+  <li>Populate it with information about your service.</li>
+  <li>Call {@link
+android.net.wifi.p2p.WifiP2pManager#addLocalService(WifiP2pManager.Channel,
+WifiP2pServiceInfo, WifiP2pManager.ActionListener) addLocalService()} to register the local
+service for service discovery.</li>
+</ol>
+
+<pre>
+     private void startRegistration() {
+        //  Create a string map containing information about your service.
+        Map<String,String> record = new HashMap<String,String>();
+        record.put("listenport", String.valueOf(SERVER_PORT));
+        record.put("buddyname", "John Doe" + (int) (Math.random() * 1000));
+        record.put("available", "visible");
+
+        // Service information.  Pass it an instance name, service type
+        // _protocol._transportlayer , and the map containing
+        // information other devices will want once they connect to this one.
+        WifiP2pDnsSdServiceInfo serviceInfo =
+                WifiP2pDnsSdServiceInfo.newInstance("_test", "_presence._tcp", record);
+
+        // Add the local service, sending the service info, network channel,
+        // and listener that will be used to indicate success or failure of
+        // the request.
+        mManager.addLocalService(channel, serviceInfo, new ActionListener() {
+            &#64;Override
+            public void onSuccess() {
+                // Command successful! Code isn't necessarily needed here,
+                // Unless you want to update the UI or add logging statements.
+            }
+
+            &#64;Override
+            public void onFailure(int arg0) {
+                // Command failed.  Check for P2P_UNSUPPORTED, ERROR, or BUSY
+            }
+        });
+    }
+</pre>
+
+<h2 id="discover">Discover Nearby Services</h2>
+<p>Android uses callback methods to notify your application of available services, so
+the first thing to do is set those up.  Create a {@link
+android.net.wifi.p2p.WifiP2pManager.DnsSdTxtRecordListener} to listen for
+incoming records.  This record can optionally be broadcast by other
+devices.  When one comes in, copy the device address and any other
+relevant information you want into a data structure external to the current
+method, so you can access it later.  The following example assumes that the
+record contains a "buddyname" field, populated with the user's identity.</p>
+
+<pre>
+final HashMap&lt;String, String&gt; buddies = new HashMap&lt;String, String&gt;();
+...
+private void discoverService() {
+    DnsSdTxtRecordListener txtListener = new DnsSdTxtRecordListener() {
+        &#64;Override
+        /* Callback includes:
+         * fullDomain: full domain name: e.g "printer._ipp._tcp.local."
+         * record: TXT record dta as a map of key/value pairs.
+         * device: The device running the advertised service.
+         */
+
+        public void onDnsSdTxtRecordAvailable(
+                String fullDomain, Map<String,String> record, WifiP2pDevice device) {
+                Log.d(TAG, "DnsSdTxtRecord available -" + record.toString());
+                buddies.put(device.deviceAddress, record.get("buddyname"));
+            }
+        };
+    ...
+}
+</pre>
+
+<p>To get the service information, create a {@link
+android.net.wifi.p2p.WifiP2pManager.DnsSdServiceResponseListener}.  This
+receives the actual description and connection information.  The previous code
+snippet implemented a {@link java.util.Map} object to pair a device address with the buddy
+name.  The service response listener uses this to link the DNS record with the
+corresponding service information.  Once both
+listeners are implemented, add them to the {@link
+android.net.wifi.p2p.WifiP2pManager} using the {@link
+android.net.wifi.p2p.WifiP2pManager#setDnsSdResponseListeners(WifiP2pManager.Channel,
+WifiP2pManager.DnsSdServiceResponseListener,
+WifiP2pManager.DnsSdTxtRecordListener) setDnsSdResponseListeners()} method.</p>
+
+<pre>
+private void discoverService() {
+...
+
+    DnsSdServiceResponseListener servListener = new DnsSdServiceResponseListener() {
+        &#64;Override
+        public void onDnsSdServiceAvailable(String instanceName, String registrationType,
+                WifiP2pDevice resourceType) {
+
+                // Update the device name with the human-friendly version from
+                // the DnsTxtRecord, assuming one arrived.
+                resourceType.deviceName = buddies
+                        .containsKey(resourceType.deviceAddress) ? buddies
+                        .get(resourceType.deviceAddress) : resourceType.deviceName;
+
+                // Add to the custom adapter defined specifically for showing
+                // wifi devices.
+                WiFiDirectServicesList fragment = (WiFiDirectServicesList) getFragmentManager()
+                        .findFragmentById(R.id.frag_peerlist);
+                WiFiDevicesAdapter adapter = ((WiFiDevicesAdapter) fragment
+                        .getListAdapter());
+
+                adapter.add(resourceType);
+                adapter.notifyDataSetChanged();
+                Log.d(TAG, "onBonjourServiceAvailable " + instanceName);
+        }
+    };
+
+    mManager.setDnsSdResponseListeners(channel, servListener, txtListener);
+    ...
+}
+</pre>
+
+<p>Now create a service request and call {@link
+android.net.wifi.p2p.WifiP2pManager#addServiceRequest(WifiP2pManager.Channel,
+WifiP2pServiceRequest, WifiP2pManager.ActionListener) addServiceRequest()}.
+This method also takes a listener to report success or failure.</p>
+
+<pre>
+        serviceRequest = WifiP2pDnsSdServiceRequest.newInstance();
+        mManager.addServiceRequest(channel,
+                serviceRequest,
+                new ActionListener() {
+                    &#64;Override
+                    public void onSuccess() {
+                        // Success!
+                    }
+
+                    &#64;Override
+                    public void onFailure(int code) {
+                        // Command failed.  Check for P2P_UNSUPPORTED, ERROR, or BUSY
+                    }
+                });
+</pre>
+
+<p>Finally, make the call to {@link
+android.net.wifi.p2p.WifiP2pManager#discoverServices(WifiP2pManager.Channel,
+WifiP2pManager.ActionListener) discoverServices()}.</p>
+
+<pre>
+        mManager.discoverServices(channel, new ActionListener() {
+
+            &#64;Override
+            public void onSuccess() {
+                // Success!
+            }
+
+            &#64;Override
+            public void onFailure(int code) {
+                // Command failed.  Check for P2P_UNSUPPORTED, ERROR, or BUSY
+                if (code == WifiP2pManager.P2P_UNSUPPORTED) {
+                    Log.d(TAG, "P2P isn't supported on this device.");
+                else if(...)
+                    ...
+            }
+        });
+</pre>
+
+<p>If all goes well, hooray, you're done!  If you encounter problems, remember
+that the asynchronous calls you've made take an
+{@link android.net.wifi.p2p.WifiP2pManager.ActionListener} as an argument, and
+this provides you with callbacks indicating success or failure.  To diagnose
+problems, put debugging code in {@link
+android.net.wifi.p2p.WifiP2pManager.ActionListener#onFailure(int) onFailure()}.  The error code
+provided by the method hints at the problem.  Here are the possible error values
+and what they mean</p>
+<dl>
+  <dt> {@link android.net.wifi.p2p.WifiP2pManager#P2P_UNSUPPORTED}</dt>
+  <dd> Wi-Fi Direct isn't supported on the device running the app.</dd>
+  <dt> {@link android.net.wifi.p2p.WifiP2pManager#BUSY}</dt>
+  <dd> The system is to busy to process the request.</dd>
+  <dt> {@link android.net.wifi.p2p.WifiP2pManager#ERROR}</dt>
+  <dd> The operation failed due to an internal error.</dd>
+</dl>
diff --git a/docs/html/training/connect-devices-wirelessly/nsd.jd b/docs/html/training/connect-devices-wirelessly/nsd.jd
new file mode 100644
index 0000000..d2b01a1
--- /dev/null
+++ b/docs/html/training/connect-devices-wirelessly/nsd.jd
@@ -0,0 +1,373 @@
+page.title=Using Network Service Discovery
+parent.title=Connecting Devices Wirelessly
+parent.link=index.html
+
+trainingnavtop=true
+next.title=Connecting with Wi-Fi Direct
+next.link=wifi-direct.html
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<!-- table of contents -->
+<h2>This lesson teaches you how to</h2>
+<ol>
+  <li><a href="#register">Register Your Service on the Network</a></li>
+  <li><a href="#discover">Discover Services on the Network</a></li>
+  <li><a href="#connect">Connect to Services on the Network</a></li>
+  <li><a href="#teardown">Unregister Your Service on Application Close</a></li>
+</ol>
+
+<!--
+<h2>You should also read</h2>
+    <ul>
+    </ul>
+-->
+<h2>Try it out</h2>
+
+<div class="download-box">
+  <a href="{@docRoot}shareables/training/nsdchat.zip" class="button">Download
+    the sample app</a>
+  <p class="filename">nsdchat.zip</p>
+</div>
+</p>
+
+</div>
+</div>
+
+<p>Adding Network Service Discovery (NSD) to your app allows your users to
+identify other devices on the local network that support the services your app
+requests. This is useful for a variety of peer-to-peer applications such as file
+sharing or multi-player gaming. Android's NSD APIs simplify the effort required
+for you to implement such features.</p>
+
+<p>This lesson shows you how to build an application that can broadcast its
+name and connection information to the local network and scan for information
+from other applications doing the same.  Finally, this lesson shows you how
+to connect to the same application running on another device.</p>
+
+<h2 id="register">Register Your Service on the Network</h2>
+
+<p class="note"><strong>Note: </strong>This step is optional.  If
+you don't care about broadcasting your app's services over the local network,
+you can skip forward to the
+next section, <a href="#discover">Discover Services on the Network</a>.</p>
+
+<p>To register your service on the local network, first create a {@link
+android.net.nsd.NsdServiceInfo} object.  This object provides the information
+that other devices on the network use when they're deciding whether to connect to your
+service. </p>
+
+<pre>
+public void registerService(int port) {
+    // Create the NsdServiceInfo object, and populate it.
+    NsdServiceInfo serviceInfo  = new NsdServiceInfo();
+
+    // The name is subject to change based on conflicts
+    // with other services advertised on the same network.
+    serviceInfo.setServiceName("NsdChat");
+    serviceInfo.setServiceType("_http._tcp.");
+    serviceInfo.setPort(port);
+    ....
+}
+</pre>
+
+<p>This code snippet sets the service name to "NsdChat".
+The name is visible to any device on the network that is using NSD to look for
+local services.  Keep in mind that the name must be unique for any service on the
+network, and Android automatically handles conflict resolution.  If
+two devices on the network both have the NsdChat application installed, one of
+them changes the service name automatically, to something like "NsdChat
+(1)".</p>
+
+<p>The second parameter sets the service type, specifies which protocol and transport
+layer the application uses.  The syntax is
+"_&lt;protocol&gt;._&lt;transportlayer&gt;".  In the
+code snippet, the service uses HTTP protocol running over TCP.  An application
+offering a printer service (for instance, a network printer) would set the
+service type to "_ipp._tcp".</p>
+
+<p class="note"><strong>Note: </strong> The International Assigned Numbers
+Authority (IANA) manages a centralized,
+authoritative list of service types used by service discovery protocols such as NSD and Bonjour.
+You can download the list from <a
+  href="http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml">the
+IANA list of service names and port numbers</a>.
+If you intend to use a new service type, you should reserve it by filling out
+the  <a
+  href="http://www.iana.org/form/ports-services">IANA Ports and Service
+  registration form</a>.</p>
+
+<p>When setting the port for your service, avoid hardcoding it as this
+conflicts with other applications.  For instance, assuming
+that your application always uses port 1337 puts it in potential conflict with
+other installed applications that use the same port.  Instead, use the device's
+next available port.  Because this information is provided to other apps by a
+service broadcast, there's no need for the port your application uses to be
+known by other applications at compile-time.  Instead, the applications can get
+this information from your service broadcast, right before connecting to your
+service.</p>
+
+<p>If you're working with sockets, here's how you can initialize a socket to any
+available port simply by setting it to 0.</p>
+
+<pre>
+public void initializeServerSocket() {
+    // Initialize a server socket on the next available port.
+    mServerSocket = new ServerSocket(0);
+
+    // Store the chosen port.
+    mLocalPort =  mServerSocket.getLocalPort();
+    ...
+}
+</pre>
+
+<p>Now that you've defined the {@link android.net.nsd.NsdServiceInfo
+NsdServiceInfo} object, you need to implement the {@link
+android.net.nsd.NsdManager.RegistrationListener RegistrationListener} interface.  This
+interface contains callbacks used by Android to alert your application of the
+success or failure of service registration and unregistration.
+</p>
+<pre>
+public void initializeRegistrationListener() {
+    mRegistrationListener = new NsdManager.RegistrationListener() {
+
+        &#64;Override
+        public void onServiceRegistered(NsdServiceInfo NsdServiceInfo) {
+            // Save the service name.  Android may have changed it in order to
+            // resolve a conflict, so update the name you initially requested
+            // with the name Android actually used.
+            mServiceName = NsdServiceInfo.getServiceName();
+        }
+
+        &#64;Override
+        public void onRegistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
+            // Registration failed!  Put debugging code here to determine why.
+        }
+
+        &#64;Override
+        public void onServiceUnregistered(NsdServiceInfo arg0) {
+            // Service has been unregistered.  This only happens when you call
+            // NsdManager.unregisterService() and pass in this listener.
+        }
+
+        &#64;Override
+        public void onUnregistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
+            // Unregistration failed.  Put debugging code here to determine why.
+        }
+    };
+}
+</pre>
+
+<p>Now you have all the pieces to register your service.  Call the method
+{@link android.net.nsd.NsdManager#registerService registerService()}.
+</p>
+
+<p>Note that this method is asynchronous, so any code that needs to run
+after the service has been registered must go in the {@link
+android.net.nsd.NsdManager.RegistrationListener#onServiceRegistered(NsdServiceInfo)
+onServiceRegistered()} method.</p>
+
+<pre>
+public void registerService(int port) {
+    NsdServiceInfo serviceInfo  = new NsdServiceInfo();
+    serviceInfo.setServiceName("NsdChat");
+    serviceInfo.setServiceType("_http._tcp.");
+    serviceInfo.setPort(port);
+
+    mNsdManager = Context.getSystemService(Context.NSD_SERVICE);
+
+    mNsdManager.registerService(
+            serviceInfo, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener);
+}
+</pre>
+
+<h2 id="discover">Discover Services on the Network</h2>
+<p>The network is teeming with life, from the beastly network printers to the
+docile network webcams, to the brutal, fiery battles of nearby tic-tac-toe
+players.  The key to letting your application see this vibrant ecosystem of
+functionality is service discovery.  Your application needs to listen to service
+broadcasts on the network to see what services are available, and filter out
+anything the application can't work with.</p>
+
+<p>Service discovery, like service registration, has two steps:
+ setting up a discovery listener with the relevant callbacks, and making a single asynchronous
+API call to {@link android.net.nsd.NsdManager#discoverServices(String
+, int , NsdManager.DiscoveryListener) discoverServices()}.</p>
+
+<p>First, instantiate an anonymous class that implements {@link
+android.net.nsd.NsdManager.DiscoveryListener}.  The following snippet shows a
+simple example:</p>
+
+<pre>
+public void initializeDiscoveryListener() {
+
+    // Instantiate a new DiscoveryListener
+    mDiscoveryListener = new NsdManager.DiscoveryListener() {
+
+        //  Called as soon as service discovery begins.
+        &#64;Override
+        public void onDiscoveryStarted(String regType) {
+            Log.d(TAG, "Service discovery started");
+        }
+
+        &#64;Override
+        public void onServiceFound(NsdServiceInfo service) {
+            // A service was found!  Do something with it.
+            Log.d(TAG, "Service discovery success" + service);
+            if (!service.getServiceType().equals(SERVICE_TYPE)) {
+                // Service type is the string containing the protocol and
+                // transport layer for this service.
+                Log.d(TAG, "Unknown Service Type: " + service.getServiceType());
+            } else if (service.getServiceName().equals(mServiceName)) {
+                // The name of the service tells the user what they'd be
+                // connecting to. It could be "Bob's Chat App".
+                Log.d(TAG, "Same machine: " + mServiceName);
+            } else if (service.getServiceName().contains("NsdChat")){
+                mNsdManager.resolveService(service, mResolveListener);
+            }
+        }
+
+        &#64;Override
+        public void onServiceLost(NsdServiceInfo service) {
+            // When the network service is no longer available.
+            // Internal bookkeeping code goes here.
+            Log.e(TAG, "service lost" + service);
+        }
+
+        &#64;Override
+        public void onDiscoveryStopped(String serviceType) {
+            Log.i(TAG, "Discovery stopped: " + serviceType);
+        }
+
+        &#64;Override
+        public void onStartDiscoveryFailed(String serviceType, int errorCode) {
+            Log.e(TAG, "Discovery failed: Error code:" + errorCode);
+            mNsdManager.stopServiceDiscovery(this);
+        }
+
+        &#64;Override
+        public void onStopDiscoveryFailed(String serviceType, int errorCode) {
+            Log.e(TAG, "Discovery failed: Error code:" + errorCode);
+            mNsdManager.stopServiceDiscovery(this);
+        }
+    };
+}
+</pre>
+
+<p>The NSD API uses the methods in this interface to inform your application when discovery
+is started, when it fails, and when services are found and lost (lost means "is
+no longer available").  Notice that this snippet does several checks
+when a service is found.</p>
+<ol>
+  <li>The service name of the found service is compared to the service
+name of the local service to determine if the device just picked up its own
+broadcast (which is valid).</li>
+<li>The service type is checked, to verify it's a type of service your
+application can connect to.</li>
+<li>The service name is checked to verify connection to the correct
+application.</li>
+</ol>
+
+<p>Checking the service name isn't always necessary, and is only relevant if you
+want to connect to a specific application.  For instance, the application might
+only want to connect to instances of itself running on other devices.  However, if the
+application wants to connect to a network printer, it's enough to see that the service type
+is "_ipp._tcp".</p>
+
+<p>After setting up the listener, call {@link android.net.nsd.NsdManager#discoverServices(String, int,
+NsdManager.DiscoveryListener) discoverServices()}, passing in the service type
+your application should look for, the discovery protocol to use, and the
+listener you just created.</p>
+
+<pre>
+    mNsdManager.discoverServices(
+        SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD, mDiscoveryListener);
+</pre>
+
+
+<h2 id="connect">Connect to Services on the Network</h2>
+<p>When your application finds a service on the network to connect to, it
+must first determine the connection information for that service, using the
+{@link android.net.nsd.NsdManager#resolveService resolveService()} method.
+Implement a {@link android.net.nsd.NsdManager.ResolveListener} to pass into this
+method, and use it to get a {@link android.net.nsd.NsdServiceInfo} containing
+the connection information.</p>
+
+<pre>
+public void initializeResolveListener() {
+    mResolveListener = new NsdManager.ResolveListener() {
+
+        &#64;Override
+        public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {
+            // Called when the resolve fails.  Use the error code to debug.
+            Log.e(TAG, "Resolve failed" + errorCode);
+        }
+
+        &#64;Override
+        public void onServiceResolved(NsdServiceInfo serviceInfo) {
+            Log.e(TAG, "Resolve Succeeded. " + serviceInfo);
+
+            if (serviceInfo.getServiceName().equals(mServiceName)) {
+                Log.d(TAG, "Same IP.");
+                return;
+            }
+            mService = serviceInfo;
+            int port = mService.getPort();
+            InetAddress host = mService.getHost();
+        }
+    };
+}
+</pre>
+
+<p>Once the service is resolved, your application receives detailed
+service information including an IP address and port number.  This is  everything
+you need to create your own network connection to the service.</p>
+
+
+<h2 id="teardown">Unregister Your Service on Application Close</h2>
+<p>It's important to enable and disable NSD
+functionality as appropriate during the application's
+lifecycle.  Unregistering your application when it closes down helps prevent
+other applications from thinking it's still active and attempting to connect to
+it.  Also, service discovery is an expensive operation, and should be stopped
+when the parent Activity is paused, and re-enabled when the Activity is
+resumed.  Override the lifecycle methods of your main Activity and insert code
+to start and stop service broadcast and discovery as appropriate.</p>
+
+<pre>
+//In your application's Activity
+
+    &#64;Override
+    protected void onPause() {
+        if (mNsdHelper != null) {
+            mNsdHelper.tearDown();
+        }
+        super.onPause();
+    }
+
+    &#64;Override
+    protected void onResume() {
+        super.onResume();
+        if (mNsdHelper != null) {
+            mNsdHelper.registerService(mConnection.getLocalPort());
+            mNsdHelper.discoverServices();
+        }
+    }
+
+    &#64;Override
+    protected void onDestroy() {
+        mNsdHelper.tearDown();
+        mConnection.tearDown();
+        super.onDestroy();
+    }
+
+    // NsdHelper's tearDown method
+        public void tearDown() {
+        mNsdManager.unregisterService(mRegistrationListener);
+        mNsdManager.stopServiceDiscovery(mDiscoveryListener);
+    }
+</pre>
+
diff --git a/docs/html/training/connect-devices-wirelessly/wifi-direct.jd b/docs/html/training/connect-devices-wirelessly/wifi-direct.jd
new file mode 100644
index 0000000..99bb243
--- /dev/null
+++ b/docs/html/training/connect-devices-wirelessly/wifi-direct.jd
@@ -0,0 +1,372 @@
+page.title=Connecting with Wi-Fi Direct
+parent.title=Connecting Devices Wirelessly
+parent.link=index.html
+
+trainingnavtop=true
+previous.title=Using Network Service Discovery
+previous.link=nsd.html
+next.title=Service Discovery with Wi-Fi Direct
+next.link=nsd-wifi-direct.html
+
+@jd:body
+
+<div id="tb-wrapper">
+  <div id="tb">
+    <h2>This lesson teaches you how to</h2>
+    <ol>
+      <li><a href="#permissions">Set Up Application Permissions</a></li>
+      <li><a href="#receiver">Set Up the Broadcast Receiver and Peer-to-Peer
+        Manager</a></li>
+      <li><a href="#discover">Initiate Peer Discovery</a></li>
+      <li><a href="#fetch">Fetch the List of Peers</a></li>
+      <li><a href="#connect">Connect to a Peer</a></li>
+    </ol>
+  </div>
+</div>
+
+<p>The Wi-Fi Direct&trade; APIs allow applications to connect to nearby devices without
+needing to connect to a network or hotspot.  This allows your application to quickly
+find and interact with nearby devices, at a range beyond the capabilities of Bluetooth.
+</p>
+<p>
+This lesson shows you how to find and connect to nearby devices using Wi-Fi Direct.
+</p>
+<h2 id="permissions">Set Up Application Permissions</h2>
+<p>In order to use Wi-Fi Direct, add the {@link
+android.Manifest.permission#CHANGE_WIFI_STATE}, {@link
+android.Manifest.permission#ACCESS_WIFI_STATE},
+and {@link android.Manifest.permission#INTERNET}
+permissions to your manifest.   Wi-Fi Direct doesn't require an internet connection,
+but it does use standard Java sockets, which require the {@link
+android.Manifest.permission#INTERNET} permission.
+So you need the following permissions to use Wi-Fi Direct.</p>
+
+<pre>
+&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.android.nsdchat"
+    ...
+
+    &lt;uses-permission
+        android:required="true"
+        android:name="android.permission.ACCESS_WIFI_STATE"/&gt;
+    &lt;uses-permission
+        android:required="true"
+        android:name="android.permission.CHANGE_WIFI_STATE"/&gt;
+    &lt;uses-permission
+        android:required="true"
+        android:name="android.permission.INTERNET"/&gt;
+    ...
+</pre>
+
+<h2 id="receiver">Set Up a Broadcast Receiver and Peer-to-Peer Manager</h2>
+<p>To use Wi-Fi Direct, you need to listen for broadcast intents that tell your
+application when certain events have occurred.  In your application, instantiate
+an {@link
+android.content.IntentFilter} and set it to listen for the following:</p>
+<dl>
+  <dt>{@link android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_STATE_CHANGED_ACTION}</dt>
+  <dd>Indicates whether Wi-Fi Peer-To-Peer (P2P) is enabled</dd>
+  <dt>{@link android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_PEERS_CHANGED_ACTION}</dt>
+  <dd>Indicates that the available peer list has changed.</dd>
+  <dt>{@link android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_CONNECTION_CHANGED_ACTION}</dt>
+  <dd>Indicates the state of Wi-Fi P2P connectivity has changed.</dd>
+  <dt>{@link android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_THIS_DEVICE_CHANGED_ACTION}</dt>
+  <dd>Indicates this device's configuration details have changed.</dd>
+<pre>
+private final IntentFilter intentFilter = new IntentFilter();
+...
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.main);
+
+    //  Indicates a change in the Wi-Fi Peer-to-Peer status.
+    intentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);
+
+    // Indicates a change in the list of available peers.
+    intentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);
+
+    // Indicates the state of Wi-Fi P2P connectivity has changed.
+    intentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
+
+    // Indicates this device's details have changed.
+    intentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);
+
+    ...
+}
+</pre>
+
+  <p>At the end of the {@link android.app.Activity#onCreate onCreate()} method, get an instance of the {@link
+android.net.wifi.p2p.WifiP2pManager}, and call its {@link
+android.net.wifi.p2p.WifiP2pManager#initialize(Context, Looper, WifiP2pManager.ChannelListener) initialize()}
+method.  This method returns a {@link
+android.net.wifi.p2p.WifiP2pManager.Channel} object, which you'll use later to
+connect your app to the Wi-Fi Direct Framework.</p>
+
+<pre>
+&#64;Override
+
+Channel mChannel;
+
+public void onCreate(Bundle savedInstanceState) {
+    ....
+    mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
+    mChannel = mManager.initialize(this, getMainLooper(), null);
+}
+</pre>
+<p>Now create a new {@link
+android.content.BroadcastReceiver} class that you'll use to listen for changes
+to the System's Wi-Fi P2P state.  In the {@link
+android.content.BroadcastReceiver#onReceive(Context, Intent) onReceive()}
+method, add a condition to handle each P2P state change listed above.</p>
+
+<pre>
+
+    &#64;Override
+    public void onReceive(Context context, Intent intent) {
+        String action = intent.getAction();
+        if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {
+            // Determine if Wifi Direct mode is enabled or not, alert
+            // the Activity.
+            int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);
+            if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {
+                activity.setIsWifiP2pEnabled(true);
+            } else {
+                activity.setIsWifiP2pEnabled(false);
+            }
+        } else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {
+
+            // The peer list has changed!  We should probably do something about
+            // that.
+
+        } else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
+
+            // Connection state changed!  We should probably do something about
+            // that.
+
+        } else if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) {
+            DeviceListFragment fragment = (DeviceListFragment) activity.getFragmentManager()
+                    .findFragmentById(R.id.frag_list);
+            fragment.updateThisDevice((WifiP2pDevice) intent.getParcelableExtra(
+                    WifiP2pManager.EXTRA_WIFI_P2P_DEVICE));
+
+        }
+    }
+</pre>
+
+<p>Finally, add code to register the intent filter and broadcast receiver when
+your main activity is active, and unregister them when the activity is paused.
+The best place to do this is the {@link android.app.Activity#onResume()} and
+{@link android.app.Activity#onPause()} methods.
+
+<pre>
+    /** register the BroadcastReceiver with the intent values to be matched */
+    &#64;Override
+    public void onResume() {
+        super.onResume();
+        receiver = new WiFiDirectBroadcastReceiver(mManager, mChannel, this);
+        registerReceiver(receiver, intentFilter);
+    }
+
+    &#64;Override
+    public void onPause() {
+        super.onPause();
+        unregisterReceiver(receiver);
+    }
+</pre>
+
+
+<h2 id="discover">Initiate Peer Discovery</h2>
+<p>To start searching for nearby devices with Wi-Fi Direct, call {@link
+android.net.wifi.p2p.WifiP2pManager#discoverPeers(WifiP2pManager.Channel,
+WifiP2pManager.ActionListener) discoverPeers()}.  This method takes the
+following arguments:</p>
+<ul>
+  <li>The {@link android.net.wifi.p2p.WifiP2pManager.Channel} you
+  received back when you initialized the peer-to-peer mManager</li>
+  <li>An implementation of {@link android.net.wifi.p2p.WifiP2pManager.ActionListener} with methods
+  the system invokes for successful and unsuccessful discovery.</li>
+</ul>
+
+<pre>
+mManager.discoverPeers(mChannel, new WifiP2pManager.ActionListener() {
+
+        &#64;Override
+        public void onSuccess() {
+            // Code for when the discovery initiation is successful goes here.
+            // No services have actually been discovered yet, so this method
+            // can often be left blank.  Code for peer discovery goes in the
+            // onReceive method, detailed below.
+        }
+
+        &#64;Override
+        public void onFailure(int reasonCode) {
+            // Code for when the discovery initiation fails goes here.
+            // Alert the user that something went wrong.
+        }
+});
+</pre>
+
+<p>Keep in mind that this only <em>initiates</em> peer discovery.  The
+{@link android.net.wifi.p2p.WifiP2pManager#discoverPeers(WifiP2pManager.Channel,
+WifiP2pManager.ActionListener) discoverPeers()} method starts the discovery process and then
+immediately returns.  The system notifies you if the peer discovery process is
+successfully initiated by calling methods in the provided action listener.
+Also, discovery will remain active until a connection is initiated or a P2P group is
+formed.</p>
+
+<h2 id="fetch">Fetch the List of Peers</h2>
+<p>Now write the code that fetches and processes the list of peers.  First
+implement the {@link android.net.wifi.p2p.WifiP2pManager.PeerListListener}
+interface, which provides information about the peers that Wi-Fi Direct has
+detected.  The following code snippet illustrates this.</p>
+
+<pre>
+    private List<WifiP2pDevice> peers = new ArrayList<WifiP2pDevice>();
+    ...
+
+    private PeerListListener peerListListener = new PeerListListener() {
+        &#64;Override
+        public void onPeersAvailable(WifiP2pDeviceList peerList) {
+
+            // Out with the old, in with the new.
+            peers.clear();
+            peers.addAll(peerList.getDeviceList());
+
+            // If an AdapterView is backed by this data, notify it
+            // of the change.  For instance, if you have a ListView of available
+            // peers, trigger an update.
+            ((WiFiPeerListAdapter) getListAdapter()).notifyDataSetChanged();
+            if (peers.size() == 0) {
+                Log.d(WiFiDirectActivity.TAG, "No devices found");
+                return;
+            }
+        }
+    }
+</pre>
+
+<p>Now modify your broadcast receiver's {@link
+android.content.BroadcastReceiver#onReceive(Context, Intent) onReceive()}
+method to call {@link android.net.wifi.p2p.WifiP2pManager#requestPeers
+requestPeers()} when an intent with the action {@link
+android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_PEERS_CHANGED_ACTION} is received.  You
+need to pass this listener into the receiver somehow.  One way is to send it
+as an argument to the broadcast receiver's constructor.
+</p>
+
+<pre>
+public void onReceive(Context context, Intent intent) {
+    ...
+    else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {
+
+        // Request available peers from the wifi p2p manager. This is an
+        // asynchronous call and the calling activity is notified with a
+        // callback on PeerListListener.onPeersAvailable()
+        if (mManager != null) {
+            mManager.requestPeers(mChannel, peerListener);
+        }
+        Log.d(WiFiDirectActivity.TAG, "P2P peers changed");
+    }...
+}
+</pre>
+
+<p>Now, an intent with the action {@link
+android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_PEERS_CHANGED_ACTION} intent will
+trigger a request for an updated peer list. </p>
+
+<h2 id="connect">Connect to a Peer</h2>
+<p>In order to connect to a peer, create a new {@link
+android.net.wifi.p2p.WifiP2pConfig} object, and copy data into it from the
+{@link android.net.wifi.p2p.WifiP2pDevice} representing the device you want to
+connect to.  Then call the {@link
+android.net.wifi.p2p.WifiP2pManager#connect(WifiP2pManager.Channel,
+WifiP2pConfig, WifiP2pManager.ActionListener) connect()}
+method.</p>
+
+<pre>
+    &#64;Override
+    public void connect() {
+        // Picking the first device found on the network.
+        WifiP2pDevice device = peers.get(0);
+
+        WifiP2pConfig config = new WifiP2pConfig();
+        config.deviceAddress = device.deviceAddress;
+        config.wps.setup = WpsInfo.PBC;
+
+        mManager.connect(mChannel, config, new ActionListener() {
+
+            &#64;Override
+            public void onSuccess() {
+                // WiFiDirectBroadcastReceiver will notify us. Ignore for now.
+            }
+
+            &#64;Override
+            public void onFailure(int reason) {
+                Toast.makeText(WiFiDirectActivity.this, "Connect failed. Retry.",
+                        Toast.LENGTH_SHORT).show();
+            }
+        });
+    }
+</pre>
+
+<p>The {@link android.net.wifi.p2p.WifiP2pManager.ActionListener} implemented in
+this snippet only notifies you when the <em>initiation</em> succeeds or fails.
+To listen for <em>changes</em> in connection state, implement the {@link
+android.net.wifi.p2p.WifiP2pManager.ConnectionInfoListener} interface. Its {@link
+android.net.wifi.p2p.WifiP2pManager.ConnectionInfoListener#onConnectionInfoAvailable(WifiP2pInfo)
+onConnectionInfoAvailable()}
+callback will notify you when the state of the connection changes.  In cases
+where multiple devices are going to be connected to a single device (like a game with
+3 or more players, or a chat app), one device will be designated the "group
+owner".</p>
+
+<pre>
+    &#64;Override
+    public void onConnectionInfoAvailable(final WifiP2pInfo info) {
+
+        // InetAddress from WifiP2pInfo struct.
+        InetAddress groupOwnerAddress = info.groupOwnerAddress.getHostAddress());
+
+        // After the group negotiation, we can determine the group owner.
+        if (info.groupFormed && info.isGroupOwner) {
+            // Do whatever tasks are specific to the group owner.
+            // One common case is creating a server thread and accepting
+            // incoming connections.
+        } else if (info.groupFormed) {
+            // The other device acts as the client. In this case,
+            // you'll want to create a client thread that connects to the group
+            // owner.
+        }
+    }
+</pre>
+
+<p>Now go back to the {@link
+android.content.BroadcastReceiver#onReceive(Context, Intent) onReceive()} method of the broadcast receiver, and modify the section
+that listens for a {@link
+android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_CONNECTION_CHANGED_ACTION} intent.
+When this intent is received, call {@link
+android.net.wifi.p2p.WifiP2pManager#requestConnectionInfo(WifiP2pManager.Channel,
+WifiP2pManager.ConnectionInfoListener) requestConnectionInfo()}.  This is an
+asynchronous call, so results will be received by the connection info listener
+you provide as a parameter.
+
+<pre>
+        ...
+        } else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
+
+            if (mManager == null) {
+                return;
+            }
+
+            NetworkInfo networkInfo = (NetworkInfo) intent
+                    .getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO);
+
+            if (networkInfo.isConnected()) {
+
+                // We are connected with the other device, request connection
+                // info to find group owner IP
+
+                mManager.requestConnectionInfo(mChannel, connectionListener);
+            }
+            ...
+</pre>
diff --git a/docs/html/training/custom-views/create-view.jd b/docs/html/training/custom-views/create-view.jd
index b0bc8b4..674bcc9 100644
--- a/docs/html/training/custom-views/create-view.jd
+++ b/docs/html/training/custom-views/create-view.jd
@@ -61,7 +61,7 @@
     existing view
     subclasses, such as {@link android.widget.Button}.</p>
 
-<p>To allow the <a href=”{@docRoot}guide/developing/tools/adt.html”>Android Developer Tools
+<p>To allow the <a href="{@docRoot}guide/developing/tools/adt.html">Android Developer Tools
 </a> to interact with your view, at a minimum you must provide a constructor that takes a
 {@link android.content.Context} and an {@link android.util.AttributeSet} object as parameters.
 This constructor allows the layout editor to create and edit an instance of your view.</p>
@@ -105,7 +105,7 @@
 
 <pre>
 &lt;resources>;
-   &ltdeclare-styleable name="PieChart">
+   &lt;declare-styleable name="PieChart">
        &lt;attr name="showText" format="boolean" />
        &lt;attr name="labelPosition" format="enum">
            &lt;enum name="left" value="0"/>
@@ -276,6 +276,6 @@
             </ul>
 
             <p>For more information on creating accessible views, see
-                <a href=”{@docRoot}guide/topics/ui/accessibility/apps.html#custom-views”>
+                <a href="{@docRoot}guide/topics/ui/accessibility/apps.html#custom-views">
               Making Applications Accessible</a> in the Android Developers Guide.
         </p>
diff --git a/docs/html/training/custom-views/optimizing-view.jd b/docs/html/training/custom-views/optimizing-view.jd
index 1f489dd..7f2e762 100644
--- a/docs/html/training/custom-views/optimizing-view.jd
+++ b/docs/html/training/custom-views/optimizing-view.jd
@@ -19,7 +19,7 @@
 
         <h2>You should also read</h2>
         <ul>
-            <li><a href=”{@docRoot}guide/topics/graphics/hardware-accel.html”>
+            <li><a href="{@docRoot}guide/topics/graphics/hardware-accel.html">
                 Hardware Acceleration
             </a>
         </li>
diff --git a/docs/html/training/displaying-bitmaps/cache-bitmap.jd b/docs/html/training/displaying-bitmaps/cache-bitmap.jd
index 94abe21..2a333cc 100644
--- a/docs/html/training/displaying-bitmaps/cache-bitmap.jd
+++ b/docs/html/training/displaying-bitmaps/cache-bitmap.jd
@@ -96,7 +96,7 @@
 <p>Here’s an example of setting up a {@link android.util.LruCache} for bitmaps:</p>
 
 <pre>
-private LruCache<String, Bitmap> mMemoryCache;
+private LruCache&lt;String, Bitmap&gt; mMemoryCache;
 
 &#64;Override
 protected void onCreate(Bundle savedInstanceState) {
@@ -109,7 +109,7 @@
     // Use 1/8th of the available memory for this memory cache.
     final int cacheSize = 1024 * 1024 * memClass / 8;
 
-    mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
+    mMemoryCache = new LruCache&lt;String, Bitmap&gt;(cacheSize) {
         &#64;Override
         protected int sizeOf(String key, Bitmap bitmap) {
             // The cache size will be measured in bytes rather than number of items.
@@ -159,7 +159,7 @@
 updated to add entries to the memory cache:</p>
 
 <pre>
-class BitmapWorkerTask extends AsyncTask<Integer, Void, Bitmap> {
+class BitmapWorkerTask extends AsyncTask&lt;Integer, Void, Bitmap&gt; {
     ...
     // Decode image in background.
     &#64;Override
@@ -179,7 +179,7 @@
 rely on images being available in this cache. Components like {@link android.widget.GridView} with
 larger datasets can easily fill up a memory cache. Your application could be interrupted by another
 task like a phone call, and while in the background it might be killed and the memory cache
-destroyed. Once the user resumes, your application it has to process each image again.</p>
+destroyed. Once the user resumes, your application has to process each image again.</p>
 
 <p>A disk cache can be used in these cases to persist processed bitmaps and help decrease loading
 times where images are no longer available in a memory cache. Of course, fetching images from disk
@@ -190,18 +190,14 @@
 appropriate place to store cached images if they are accessed more frequently, for example in an
 image gallery application.</p>
 
-<p>Included in the sample code of this class is a basic {@code DiskLruCache} implementation.
-However, a more robust and recommended {@code DiskLruCache} solution is included in the Android 4.0
-source code ({@code libcore/luni/src/main/java/libcore/io/DiskLruCache.java}). Back-porting this
-class for use on previous Android releases should be fairly straightforward (a <a
-href="http://www.google.com/search?q=disklrucache">quick search</a> shows others who have already
-implemented this solution).</p>
-
-<p>Here’s updated example code that uses the simple {@code DiskLruCache} included in the sample
-application of this class:</p>
+<p>The sample code of this class uses a {@code DiskLruCache} implementation that is pulled from the 
+<a href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/io/DiskLruCache.java">Android source</a>. Here’s updated example code that adds a disk cache in addition
+to the existing memory cache:</p>
 
 <pre>
-private DiskLruCache mDiskCache;
+private DiskLruCache mDiskLruCache;
+private final Object mDiskCacheLock = new Object();
+private boolean mDiskCacheStarting = true;
 private static final int DISK_CACHE_SIZE = 1024 * 1024 * 10; // 10MB
 private static final String DISK_CACHE_SUBDIR = "thumbnails";
 
@@ -210,12 +206,26 @@
     ...
     // Initialize memory cache
     ...
-    File cacheDir = getCacheDir(this, DISK_CACHE_SUBDIR);
-    mDiskCache = DiskLruCache.openCache(this, cacheDir, DISK_CACHE_SIZE);
+    // Initialize disk cache on background thread
+    File cacheDir = getDiskCacheDir(this, DISK_CACHE_SUBDIR);
+    new InitDiskCacheTask().execute(cacheDir);
     ...
 }
 
-class BitmapWorkerTask extends AsyncTask<Integer, Void, Bitmap> {
+class InitDiskCacheTask extends AsyncTask&lt;File, Void, Void&gt; {
+    &#64;Override
+    protected Void doInBackground(File... params) {
+        synchronized (mDiskCacheLock) {
+            File cacheDir = params[0];
+            mDiskLruCache = DiskLruCache.open(cacheDir, DISK_CACHE_SIZE);
+            mDiskCacheStarting = false; // Finished initialization
+            mDiskCacheLock.notifyAll(); // Wake any waiting threads
+        }
+        return null;
+    }
+}
+
+class BitmapWorkerTask extends AsyncTask&lt;Integer, Void, Bitmap&gt; {
     ...
     // Decode image in background.
     &#64;Override
@@ -232,7 +242,7 @@
         }
 
         // Add final bitmap to caches
-        addBitmapToCache(String.valueOf(imageKey, bitmap);
+        addBitmapToCache(imageKey, bitmap);
 
         return bitmap;
     }
@@ -246,28 +256,48 @@
     }
 
     // Also add to disk cache
-    if (!mDiskCache.containsKey(key)) {
-        mDiskCache.put(key, bitmap);
+    synchronized (mDiskCacheLock) {
+        if (mDiskLruCache != null && mDiskLruCache.get(key) == null) {
+            mDiskLruCache.put(key, bitmap);
+        }
     }
 }
 
 public Bitmap getBitmapFromDiskCache(String key) {
-    return mDiskCache.get(key);
+    synchronized (mDiskCacheLock) {
+        // Wait while disk cache is started from background thread
+        while (mDiskCacheStarting) {
+            try {
+                mDiskCacheLock.wait();
+            } catch (InterruptedException e) {}
+        }
+        if (mDiskLruCache != null) {
+            return mDiskLruCache.get(key);
+        }
+    }
+    return null;
 }
 
 // Creates a unique subdirectory of the designated app cache directory. Tries to use external
 // but if not mounted, falls back on internal storage.
-public static File getCacheDir(Context context, String uniqueName) {
+public static File getDiskCacheDir(Context context, String uniqueName) {
     // Check if media is mounted or storage is built-in, if so, try and use external cache dir
     // otherwise use internal cache dir
-    final String cachePath = Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED
-            || !Environment.isExternalStorageRemovable() ?
-                    context.getExternalCacheDir().getPath() : context.getCacheDir().getPath();
+    final String cachePath =
+            Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) ||
+                    !isExternalStorageRemovable() ? getExternalCacheDir(context).getPath() :
+                            context.getCacheDir().getPath();
 
     return new File(cachePath + File.separator + uniqueName);
 }
 </pre>
 
+<p class="note"><strong>Note:</strong> Even initializing the disk cache requires disk operations
+and therefore should not take place on the main thread. However, this does mean there's a chance
+the cache is accessed before initialization. To address this, in the above implementation, a lock
+object ensures that the app does not read from the disk cache until the cache has been
+initialized.</p>
+
 <p>While the memory cache is checked in the UI thread, the disk cache is checked in the background
 thread. Disk operations should never take place on the UI thread. When image processing is
 complete, the final bitmap is added to both the memory and disk cache for future use.</p>
@@ -292,7 +322,7 @@
 changes using a {@link android.app.Fragment}:</p>
 
 <pre>
-private LruCache<String, Bitmap> mMemoryCache;
+private LruCache&lt;String, Bitmap&gt; mMemoryCache;
 
 &#64;Override
 protected void onCreate(Bundle savedInstanceState) {
@@ -301,7 +331,7 @@
             RetainFragment.findOrCreateRetainFragment(getFragmentManager());
     mMemoryCache = RetainFragment.mRetainedCache;
     if (mMemoryCache == null) {
-        mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
+        mMemoryCache = new LruCache&lt;String, Bitmap&gt;(cacheSize) {
             ... // Initialize cache here as usual
         }
         mRetainFragment.mRetainedCache = mMemoryCache;
@@ -311,7 +341,7 @@
 
 class RetainFragment extends Fragment {
     private static final String TAG = "RetainFragment";
-    public LruCache<String, Bitmap> mRetainedCache;
+    public LruCache&lt;String, Bitmap&gt; mRetainedCache;
 
     public RetainFragment() {}
 
diff --git a/docs/html/training/displaying-bitmaps/display-bitmap.jd b/docs/html/training/displaying-bitmaps/display-bitmap.jd
index 5eac04c..4572c42 100644
--- a/docs/html/training/displaying-bitmaps/display-bitmap.jd
+++ b/docs/html/training/displaying-bitmaps/display-bitmap.jd
@@ -103,7 +103,8 @@
 }
 </pre>
 
-<p>The details {@link android.app.Fragment} holds the {@link android.widget.ImageView} children:</p>
+<p>Here is an implementation of the details {@link android.app.Fragment} which holds the {@link android.widget.ImageView} children. This might seem like a perfectly reasonable approach, but can
+you see the drawbacks of this implementation? How could it be improved?</p>
 
 <pre>
 public class ImageDetailFragment extends Fragment {
@@ -146,11 +147,11 @@
 }
 </pre>
 
-<p>Hopefully you noticed the issue with this implementation; The images are being read from
-resources on the UI thread which can lead to an application hanging and being force closed. Using an
-{@link android.os.AsyncTask} as described in the <a href="process-bitmap.html">Processing Bitmaps Off
-the UI Thread</a> lesson, it’s straightforward to move image loading and processing to a background
-thread:</p>
+<p>Hopefully you noticed the issue: the images are being read from resources on the UI thread,
+which can lead to an application hanging and being force closed. Using an
+{@link android.os.AsyncTask} as described in the <a href="process-bitmap.html">Processing Bitmaps
+Off the UI Thread</a> lesson, it’s straightforward to move image loading and processing to a
+background thread:</p>
 
 <pre>
 public class ImageDetailActivity extends FragmentActivity {
@@ -190,7 +191,7 @@
 <pre>
 public class ImageDetailActivity extends FragmentActivity {
     ...
-    private LruCache<String, Bitmap> mMemoryCache;
+    private LruCache&lt;String, Bitmap&gt; mMemoryCache;
 
     &#64;Override
     public void onCreate(Bundle savedInstanceState) {
@@ -229,7 +230,8 @@
 the way {@link android.widget.GridView} recycles its children views).</p>
 
 <p>To start with, here is a standard {@link android.widget.GridView} implementation with {@link
-android.widget.ImageView} children placed inside a {@link android.app.Fragment}:</p>
+android.widget.ImageView} children placed inside a {@link android.app.Fragment}. Again, this might
+seem like a perfectly reasonable approach, but what would make it better?</p>
 
 <pre>
 public class ImageGridFragment extends Fragment implements AdapterView.OnItemClickListener {
@@ -261,7 +263,7 @@
     }
 
     &#64;Override
-    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
+    public void onItemClick(AdapterView&lt;?&gt; parent, View v, int position, long id) {
         final Intent i = new Intent(getActivity(), ImageDetailActivity.class);
         i.putExtra(ImageDetailActivity.EXTRA_IMAGE, position);
         startActivity(i);
@@ -345,13 +347,13 @@
     }
 
     static class AsyncDrawable extends BitmapDrawable {
-        private final WeakReference<BitmapWorkerTask> bitmapWorkerTaskReference;
+        private final WeakReference&lt;BitmapWorkerTask&gt; bitmapWorkerTaskReference;
 
         public AsyncDrawable(Resources res, Bitmap bitmap,
                 BitmapWorkerTask bitmapWorkerTask) {
             super(res, bitmap);
             bitmapWorkerTaskReference =
-                new WeakReference<BitmapWorkerTask>(bitmapWorkerTask);
+                new WeakReference&lt;BitmapWorkerTask&gt;(bitmapWorkerTask);
         }
 
         public BitmapWorkerTask getBitmapWorkerTask() {
diff --git a/docs/html/training/displaying-bitmaps/index.jd b/docs/html/training/displaying-bitmaps/index.jd
index 78371ad..b91172b 100644
--- a/docs/html/training/displaying-bitmaps/index.jd
+++ b/docs/html/training/displaying-bitmaps/index.jd
@@ -43,8 +43,8 @@
   perform under this minimum memory limit. However, keep in mind many devices are configured with
   higher limits.</li>
   <li>Bitmaps take up a lot of memory, especially for rich images like photographs. For example, the
-  camera on the <a href="http://www.google.com/nexus/">Galaxy Nexus</a> takes photos up to 2592x1936
-  pixels (5 megapixels). If the bitmap configuration used is {@link
+  camera on the <a href="http://www.android.com/devices/detail/galaxy-nexus">Galaxy Nexus</a> takes 
+  photos up to 2592x1936 pixels (5 megapixels). If the bitmap configuration used is {@link
   android.graphics.Bitmap.Config ARGB_8888} (the default from the Android 2.3 onward) then loading
   this image into memory takes about 19MB of memory (2592*1936*4 bytes), immediately exhausting the
   per-app limit on some devices.</li>
@@ -75,4 +75,4 @@
     components like {@link android.support.v4.view.ViewPager} and {@link android.widget.GridView}
     using a background thread and bitmap cache.</dd>
 
-</dl>
\ No newline at end of file
+</dl>
diff --git a/docs/html/training/displaying-bitmaps/process-bitmap.jd b/docs/html/training/displaying-bitmaps/process-bitmap.jd
index d1e346c..d4fcff3 100644
--- a/docs/html/training/displaying-bitmaps/process-bitmap.jd
+++ b/docs/html/training/displaying-bitmaps/process-bitmap.jd
@@ -62,13 +62,13 @@
 
 <a name="BitmapWorkerTask"></a>
 <pre>
-class BitmapWorkerTask extends AsyncTask<Integer, Void, Bitmap> {
-    private final WeakReference<ImageView> imageViewReference;
+class BitmapWorkerTask extends AsyncTask&lt;Integer, Void, Bitmap&gt; {
+    private final WeakReference&lt;ImageView&gt; imageViewReference;
     private int data = 0;
 
     public BitmapWorkerTask(ImageView imageView) {
         // Use a WeakReference to ensure the ImageView can be garbage collected
-        imageViewReference = new WeakReference<ImageView>(imageView);
+        imageViewReference = new WeakReference&lt;ImageView&gt;(imageView);
     }
 
     // Decode image in background.
@@ -133,13 +133,13 @@
 <a name="AsyncDrawable"></a>
 <pre>
 static class AsyncDrawable extends BitmapDrawable {
-    private final WeakReference<BitmapWorkerTask> bitmapWorkerTaskReference;
+    private final WeakReference&lt;BitmapWorkerTask&gt; bitmapWorkerTaskReference;
 
     public AsyncDrawable(Resources res, Bitmap bitmap,
             BitmapWorkerTask bitmapWorkerTask) {
         super(res, bitmap);
         bitmapWorkerTaskReference =
-            new WeakReference<BitmapWorkerTask>(bitmapWorkerTask);
+            new WeakReference&lt;BitmapWorkerTask&gt;(bitmapWorkerTask);
     }
 
     public BitmapWorkerTask getBitmapWorkerTask() {
@@ -211,7 +211,7 @@
 
 <a name="BitmapWorkerTaskUpdated"></a>
 <pre>
-class BitmapWorkerTask extends AsyncTask<Integer, Void, Bitmap> {
+class BitmapWorkerTask extends AsyncTask&lt;Integer, Void, Bitmap&gt; {
     ...
 
     &#64;Override
@@ -236,4 +236,4 @@
 android.widget.GridView} components as well as any other components that recycle their child
 views. Simply call {@code loadBitmap} where you normally set an image to your {@link
 android.widget.ImageView}. For example, in a {@link android.widget.GridView} implementation this
-would be in the {@link android.widget.Adapter#getView getView()} method of the backing adapter.</p>
\ No newline at end of file
+would be in the {@link android.widget.Adapter#getView getView()} method of the backing adapter.</p>
diff --git a/docs/html/training/efficient-downloads/regular_updates.jd b/docs/html/training/efficient-downloads/regular_updates.jd
index feb7a8e..262d676 100644
--- a/docs/html/training/efficient-downloads/regular_updates.jd
+++ b/docs/html/training/efficient-downloads/regular_updates.jd
@@ -15,14 +15,14 @@
 
 <h2>This lesson teaches you to</h2>
 <ol>
-  <li><a href="#C2DM">Use Cloud to Device Messaging as an alternative to polling</a></li>
+  <li><a href="#GCM">Use Google Cloud Messaging as an alternative to polling</a></li>
   <li><a href="#OptimizedPolling">Optimize polling with inexact repeating alarms and exponential back-offs</a></li>
 </ol>
 
 <h2>You should also read</h2>
 <ul>
   <li><a href="{@docRoot}training/monitoring-device-state/index.html">Optimizing Battery Life</a></li>
-  <li><a href="http://code.google.com/android/c2dm/">Android Cloud to Device Messaging</a></li>
+  <li><a href="{@docRoot}guide/google/gcm/index.html">Google Cloud Messaging for Android</a></li>
 </ul>
 
 </div>
@@ -34,17 +34,17 @@
 
 <p>This lesson will examine how your refresh frequency can be varied to best mitigate the effect of background updates on the underlying wireless radio state machine.</p>
  
-<h2 id="C2DM">Use Cloud to Device Messaging as an Alternative to Polling</h2> 
+<h2 id="GCM">Use Google Cloud Messaging as an Alternative to Polling</h2> 
  
 <p>Every time your app polls your server to check if an update is required, you activate the wireless radio, drawing power unnecessarily, for up to 20 seconds on a typical 3G connection.</p>
 
-<p><a href="http://code.google.com/android/c2dm/">Android Cloud to Device Messaging (C2DM)</a> is a lightweight mechanism used to transmit data from a server to a particular app instance. Using C2DM, your server can notify your app running on a particular device that there is new data available for it.</p>
+<p><a href="{@docRoot}guide/google/gcm/index.html">Google Cloud Messaging for Android (GCM)</a> is a lightweight mechanism used to transmit data from a server to a particular app instance. Using GCM, your server can notify your app running on a particular device that there is new data available for it.</p>
 
 <p>Compared to polling, where your app must regularly ping the server to query for new data, this event-driven model allows your app to create a new connection only when it knows there is data to download.</p>
 
 <p>The result is a reduction in unnecessary connections, and a reduced latency for updated data within your application.</p>
 
-<p>C2DM is implemented using a persistent TCP/IP connection. While it's possible to implement your own push service, it's best practice to use C2DM. This minimizes the number of persistent connections and allows the platform to optimize bandwidth and minimize the associated impact on battery life.</p>
+<p>GCM is implemented using a persistent TCP/IP connection. While it's possible to implement your own push service, it's best practice to use GCM. This minimizes the number of persistent connections and allows the platform to optimize bandwidth and minimize the associated impact on battery life.</p>
 
 <h2 id="OptimizedPolling">Optimize Polling with Inexact Repeating Alarms and Exponential Backoffs</h2> 
 
@@ -99,4 +99,4 @@
   }
 }</pre>
 
-<p>Alternatively, for transfers that are failure tolerant (such as regular updates), you can simply ignore failed connection and transfer attempts.</p>
\ No newline at end of file
+<p>Alternatively, for transfers that are failure tolerant (such as regular updates), you can simply ignore failed connection and transfer attempts.</p>
diff --git a/docs/html/training/implementing-navigation/lateral.jd b/docs/html/training/implementing-navigation/lateral.jd
index 76acf03..b59bab2 100644
--- a/docs/html/training/implementing-navigation/lateral.jd
+++ b/docs/html/training/implementing-navigation/lateral.jd
@@ -119,7 +119,7 @@
 
 <h2 id="horizontal-paging">Implement Horizontal Paging (Swipe Views)</h2>
 
-<p>Horizontal paging, or swipe views, allow users to <a href="{@docRoot}design/patterns/swipe-views">swipe</a> horizontally on the current screen to navigate to adjacent screens. This pattern can be implemented using the {@link android.support.v4.view.ViewPager} widget, currently available as part of the <a href="{@docRoot}tools/extras/support-library.html">Android Support Package</a>. For navigating between sibling screens representing a fixed number of sections, it's best to provide the {@link android.support.v4.view.ViewPager} with a {@link android.support.v4.app.FragmentPagerAdapter}. For horizontal paging across collections of objects, it's best to use a {@link android.support.v4.app.FragmentStatePagerAdapter}, which destroys fragments as the user navigates to other pages, minimizing memory usage.</p>
+<p>Horizontal paging, or swipe views, allow users to <a href="{@docRoot}design/patterns/swipe-views.html">swipe</a> horizontally on the current screen to navigate to adjacent screens. This pattern can be implemented using the {@link android.support.v4.view.ViewPager} widget, currently available as part of the <a href="{@docRoot}tools/extras/support-library.html">Android Support Package</a>. For navigating between sibling screens representing a fixed number of sections, it's best to provide the {@link android.support.v4.view.ViewPager} with a {@link android.support.v4.app.FragmentPagerAdapter}. For horizontal paging across collections of objects, it's best to use a {@link android.support.v4.app.FragmentStatePagerAdapter}, which destroys fragments as the user navigates to other pages, minimizing memory usage.</p>
 
 <p>Below is an example of using a {@link android.support.v4.view.ViewPager} to swipe across a collection of objects.</p>
 
diff --git a/docs/html/training/improving-layouts/reusing-layouts.jd b/docs/html/training/improving-layouts/reusing-layouts.jd
index 095b0dd..fdd3333 100644
--- a/docs/html/training/improving-layouts/reusing-layouts.jd
+++ b/docs/html/training/improving-layouts/reusing-layouts.jd
@@ -25,12 +25,9 @@
 <!-- other docs (NOT javadocs) -->
 <h2>You should also read</h2>
 <ul>
-  <li><a href="{@docRoot}resources/articles/layout-tricks-reuse.html">Creating Reusable UI
-Components</a></li>
-  <li><a href="{@docRoot}resources/articles/layout-tricks-merge.html">Merging Layouts</a></li>
   <li><a
 href="{@docRoot}guide/topics/resources/layout-resource.html#include-element">Layout
-Resource</a></li>
+Resources</a></li>
 </ul>
 
 </div>
diff --git a/docs/html/training/improving-layouts/smooth-scrolling.jd b/docs/html/training/improving-layouts/smooth-scrolling.jd
index 0afa929..2a1ffba 100644
--- a/docs/html/training/improving-layouts/smooth-scrolling.jd
+++ b/docs/html/training/improving-layouts/smooth-scrolling.jd
@@ -22,8 +22,8 @@
 <!-- other docs (NOT javadocs) -->
 <h2>You should also read</h2>
 <ul>
-  <li><a href="{@docRoot}resources/articles/listview-backgrounds.html">ListView
-Backgrounds: An Optimization</a></li>
+  <li><a href="http://android-developers.blogspot.com/2009/01/why-is-my-list-black-android.html">Why
+      is my list black? An Android optimization</a></li>
 </ul>
 
 </div>
diff --git a/docs/html/training/managing-audio/audio-focus.jd b/docs/html/training/managing-audio/audio-focus.jd
index 66649e8..33f04e9 100644
--- a/docs/html/training/managing-audio/audio-focus.jd
+++ b/docs/html/training/managing-audio/audio-focus.jd
@@ -135,7 +135,7 @@
 (pressing play in your app) to be required before you resume playing audio.</p>
 
 <p>In the following code snippet, we pause the playback or our media player object if the audio
-loss is transien and resume it when we have regained the focus. If the loss is permanent, it
+loss is transient and resume it when we have regained the focus. If the loss is permanent, it
 unregisters our media button event receiver and stops monitoring audio focus changes.<p>
 
 <pre>
@@ -169,7 +169,7 @@
 <pre>
 OnAudioFocusChangeListener afChangeListener = new OnAudioFocusChangeListener() {
     public void onAudioFocusChange(int focusChange) {
-        if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK
+        if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {
             // Lower the volume
         } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
             // Raise it back to normal
diff --git a/docs/html/training/notepad/index.jd b/docs/html/training/notepad/index.jd
index 87a57d1..64ba144 100644
--- a/docs/html/training/notepad/index.jd
+++ b/docs/html/training/notepad/index.jd
@@ -1,6 +1,5 @@
 page.title=Notepad Tutorial
 parent.title=Tutorials
-parent.link=../../browser.html?tag=tutorial
 @jd:body
 
 
diff --git a/docs/html/training/training_toc.cs b/docs/html/training/training_toc.cs
index 77a6837..4ad1353 100644
--- a/docs/html/training/training_toc.cs
+++ b/docs/html/training/training_toc.cs
@@ -104,6 +104,26 @@
       </li>
 
       <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot?>training/basics/data-storage/index.html">
+            <span class="en">Saving Data</span>
+          </a></div>
+        <ul>
+          <li><a href="<?cs var:toroot ?>training/basics/data-storage/shared-preferences.html">
+            <span class="en">Saving Key-Value Sets</span>
+          </a>
+          </li>
+          <li><a href="<?cs var:toroot ?>training/basics/data-storage/files.html">
+            <span class="en">Saving Files</span>
+          </a>
+          </li>
+          <li><a href="<?cs var:toroot ?>training/basics/data-storage/databases.html">
+            <span class="en">Saving Data in SQL Databases</span>
+          </a>
+          </li>
+        </ul>
+      </li>
+
+      <li class="nav-section">
         <div class="nav-section-header"><a href="<?cs var:toroot ?>training/basics/intents/index.html">
             <span class="en">Interacting with Other Apps</span>
           </a></div>
@@ -203,53 +223,43 @@
             <span class="en">Syncing to the Cloud</span>
           </a></div>
         <ul>
-          <li><a href="<?cs var:toroot ?>training/cloudsync/aesync.html">
-            <span class="en">Syncing with App Engine</span>
-          </a>
-          </li>
           <li><a href="<?cs var:toroot ?>training/cloudsync/backupapi.html">
             <span class="en">Using the Backup API</span>
           </a>
           </li>
+          <li><a href="<?cs var:toroot ?>training/cloudsync/gcm.html">
+            <span class="en">Making the Most of Google Cloud Messaging</span>
+          </a>
+          </li>
         </ul>
       </li>
       
       <li class="nav-section">
-        <div class="nav-section-header"><a href="<?cs var:toroot ?>training/multiscreen/index.html">
-            <span class="en">Designing for Multiple Screens</span>
-            <span class="es">Cómo diseñar aplicaciones para varias pantallas</span>
-            <span class="ja">複数画面のデザイン</span>
-            <span class="ko">Designing for Multiple Screens</span>
-            <span class="ru">Designing for Multiple Screens</span>
-            <span class="zh-CN">针对多种屏幕进行设计</span>
-          </a></div>
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>training/multiscreen/index.html"
+          zh-CN-lang="针对多种屏幕进行设计"
+          ja-lang="複数画面のデザイン"
+          es-lang="Cómo diseñar aplicaciones para varias pantallas"               
+          >Designing for Multiple Screens</a>
+        </div>
         <ul>
-          <li><a href="<?cs var:toroot ?>training/multiscreen/screensizes.html">
-            <span class="en">Supporting Different Screen Sizes</span>
-            <span class="es">Cómo admitir varios tamaños de pantalla</span>
-            <span class="ja">さまざまな画面サイズのサポート</span>
-            <span class="ko">다양한 화면 크기 지원</span>
-            <span class="ru">Supporting Different Screen Sizes</span>
-            <span class="zh-CN">支持各种屏幕尺寸</span>
-          </a>
+          <li><a href="<?cs var:toroot ?>training/multiscreen/screensizes.html"
+            zh-CN-lang="支持各种屏幕尺寸"
+            ko-lang="다양한 화면 크기 지원"
+            ja-lang="さまざまな画面サイズのサポート"
+            es-lang="Cómo admitir varios tamaños de pantalla"               
+            >Designing for Multiple Screens</a>
           </li>
-          <li><a href="<?cs var:toroot ?>training/multiscreen/screendensities.html">
-            <span class="en">Supporting Different Screen Densities</span>
-            <span class="es">Cómo admitir varias densidades de pantalla</span>
-            <span class="ja">さまざまな画面密度のサポート</span>
-            <span class="ko">Supporting Different Screen Densities</span>
-            <span class="ru">Supporting Different Screen Densities</span>
-            <span class="zh-CN">支持各种屏幕密度</span>
-          </a>
+          <li><a href="<?cs var:toroot ?>training/multiscreen/screendensities.html"
+            zh-CN-lang="支持各种屏幕密度"
+            ja-lang="さまざまな画面密度のサポート"
+            es-lang="Cómo admitir varias densidades de pantalla"               
+            >Supporting Different Screen Densities</a>
           </li>
-          <li><a href="<?cs var:toroot ?>training/multiscreen/adaptui.html">
-            <span class="en">Implementing Adaptive UI Flows</span>
-            <span class="es">Cómo implementar interfaces de usuario adaptables</span>
-            <span class="ja">順応性のある UI フローの実装</span>
-            <span class="ko">Implementing Adaptive UI Flows</span>
-            <span class="ru">Implementing Adaptive UI Flows</span>
-            <span class="zh-CN">实施自适应用户界面流程</span>
-          </a>
+          <li><a href="<?cs var:toroot ?>training/multiscreen/adaptui.html"
+            zh-CN-lang="实施自适应用户界面流程"
+            ja-lang="順応性のある UI フローの実装"
+            es-lang="Cómo implementar interfaces de usuario adaptables"               
+            >Implementing Adaptive UI Flows</a>
           </li>
         </ul>
       </li>
@@ -299,50 +309,36 @@
       </li>
       
       <li class="nav-section">
-        <div class="nav-section-header"><a href="<?cs var:toroot ?>training/monitoring-device-state/index.html">
-            <span class="en">Optimizing Battery Life</span>
-            <span class="es">Cómo optimizar la duración de la batería</span>
-            <span class="ja">電池消費量の最適化</span>
-            <span class="ko">Optimizing Battery Life</span>
-            <span class="ru">Optimizing Battery Life</span>
-            <span class="zh-CN">优化电池使用时间</span>
-          </a></div>
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>training/monitoring-device-state/index.html"
+          zh-CN-lang="优化电池使用时间"
+          ja-lang="電池消費量の最適化"
+          es-lang="Cómo optimizar la duración de la batería"               
+          >Optimizing Battery Life</a>
+        </div>
         <ul>
-          <li><a href="<?cs var:toroot ?>training/monitoring-device-state/battery-monitoring.html">
-            <span class="en">Monitoring the Battery Level and Charging State</span>
-            <span class="es">Cómo controlar el nivel de batería y el estado de carga</span>
-            <span class="ja">電池残量と充電状態の監視</span>
-            <span class="ko">Monitoring the Battery Level and Charging State</span>
-            <span class="ru">Monitoring the Battery Level and Charging State</span>
-            <span class="zh-CN">监控电池电量和充电状态</span>
-          </a>
+          <li><a href="<?cs var:toroot ?>training/monitoring-device-state/battery-monitoring.html"
+            zh-CN-lang="监控电池电量和充电状态"
+            ja-lang="電池残量と充電状態の監視"
+            es-lang="Cómo controlar el nivel de batería y el estado de carga"               
+            >Monitoring the Battery Level and Charging State</a>
           </li>
-          <li><a href="<?cs var:toroot ?>training/monitoring-device-state/docking-monitoring.html">
-            <span class="en">Determining and Monitoring the Docking State and Type</span>
-            <span class="es">Cómo determinar y controlar el tipo de conector y el estado de la conexión</span>
-            <span class="ja">ホルダーの装着状態とタイプの特定と監視</span>
-            <span class="ko">Determining and Monitoring the Docking State and Type</span>
-            <span class="ru">Determining and Monitoring the Docking State and Type</span>
-            <span class="zh-CN">确定和监控基座对接状态和类型</span>
-          </a>
+          <li><a href="<?cs var:toroot ?>training/monitoring-device-state/docking-monitoring.html"
+            zh-CN-lang="确定和监控基座对接状态和类型"
+            ja-lang="ホルダーの装着状態とタイプの特定と監視"
+            es-lang="Cómo determinar y controlar el tipo de conector y el estado de la conexión"               
+            >Determining and Monitoring the Docking State and Type</a>
           </li>
-          <li><a href="<?cs var:toroot ?>training/monitoring-device-state/connectivity-monitoring.html">
-            <span class="en">Determining and Monitoring the Connectivity Status</span>
-            <span class="es">Cómo determinar y controlar el estado de la conectividad</span>
-            <span class="ja">接続状態の特定と監視</span>
-            <span class="ko">Determining and Monitoring the Connectivity Status</span>
-            <span class="ru">Determining and Monitoring the Connectivity Status</span>
-            <span class="zh-CN">确定和监控网络连接状态</span>
-          </a>
+          <li><a href="<?cs var:toroot ?>training/monitoring-device-state/connectivity-monitoring.html"
+            zh-CN-lang="确定和监控网络连接状态"
+            ja-lang="接続状態の特定と監視"
+            es-lang="Cómo determinar y controlar el estado de la conectividad"               
+            >Determining and Monitoring the Connectivity Status</a>
           </li>
-          <li><a href="<?cs var:toroot ?>training/monitoring-device-state/manifest-receivers.html">
-            <span class="en">Manipulating Broadcast Receivers On Demand</span>
-            <span class="es">Cómo manipular los receptores de emisión bajo demanda</span>
-            <span class="ja">オンデマンドでのブロードキャスト レシーバ操作</span>
-            <span class="ko">Manipulating Broadcast Receivers On Demand</span>
-            <span class="ru">Manipulating Broadcast Receivers On Demand</span>
-            <span class="zh-CN">根据需要操作广播接收器</span>
-          </a>
+          <li><a href="<?cs var:toroot ?>training/monitoring-device-state/manifest-receivers.html"
+            zh-CN-lang="根据需要操作广播接收器"
+            ja-lang="オンデマンドでのブロードキャスト レシーバ操作"
+            es-lang="Cómo manipular los receptores de emisión bajo demanda"               
+            >Manipulating Broadcast Receivers On Demand</a>
           </li>
         </ul>
       </li>
@@ -673,6 +669,27 @@
       </li>
 
 
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/index.html">
+            <span class="en">Connecting Devices Wirelessly</span>
+          </a></div>
+        <ul>
+          <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd.html">
+            <span class="en">Using Network Service Discovery</span>
+          </a>
+          </li>
+          <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/wifi-direct.html">
+            <span class="en">Connecting with Wi-Fi Direct</span>
+          </a>
+          </li>
+          <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd-wifi-direct.html">
+            <span class="en">Using Wi-Fi Direct for Service Discovery</span>
+          </a>
+          </li>
+        </ul>
+      </li>
+
+
     </ul>
   </li>
 </ul><!-- nav -->
diff --git a/keystore/java/android/security/KeyStore.java b/keystore/java/android/security/KeyStore.java
index a32e469..f49c429 100644
--- a/keystore/java/android/security/KeyStore.java
+++ b/keystore/java/android/security/KeyStore.java
@@ -22,8 +22,9 @@
 import java.io.InputStream;
 import java.io.IOException;
 import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
+import java.io.UTFDataFormatException;
 import java.nio.charset.Charsets;
+import java.nio.charset.ModifiedUtf8;
 import java.util.ArrayList;
 
 /**
@@ -75,7 +76,7 @@
     }
 
     public byte[] get(String key) {
-        return get(getBytes(key));
+        return get(getKeyBytes(key));
     }
 
     private boolean put(byte[] key, byte[] value) {
@@ -84,7 +85,7 @@
     }
 
     public boolean put(String key, byte[] value) {
-        return put(getBytes(key), value);
+        return put(getKeyBytes(key), value);
     }
 
     private boolean delete(byte[] key) {
@@ -93,7 +94,7 @@
     }
 
     public boolean delete(String key) {
-        return delete(getBytes(key));
+        return delete(getKeyBytes(key));
     }
 
     private boolean contains(byte[] key) {
@@ -102,7 +103,7 @@
     }
 
     public boolean contains(String key) {
-        return contains(getBytes(key));
+        return contains(getKeyBytes(key));
     }
 
     public byte[][] saw(byte[] prefix) {
@@ -111,13 +112,13 @@
     }
 
     public String[] saw(String prefix) {
-        byte[][] values = saw(getBytes(prefix));
+        byte[][] values = saw(getKeyBytes(prefix));
         if (values == null) {
             return null;
         }
         String[] strings = new String[values.length];
         for (int i = 0; i < values.length; ++i) {
-            strings[i] = toString(values[i]);
+            strings[i] = toKeyString(values[i]);
         }
         return strings;
     }
@@ -133,7 +134,7 @@
     }
 
     public boolean password(String password) {
-        return password(getBytes(password));
+        return password(getPasswordBytes(password));
     }
 
     public boolean lock() {
@@ -147,7 +148,7 @@
     }
 
     public boolean unlock(String password) {
-        return unlock(getBytes(password));
+        return unlock(getPasswordBytes(password));
     }
 
     public boolean isEmpty() {
@@ -161,7 +162,7 @@
     }
 
     public boolean generate(String key) {
-        return generate(getBytes(key));
+        return generate(getKeyBytes(key));
     }
 
     private boolean importKey(byte[] keyName, byte[] key) {
@@ -170,7 +171,7 @@
     }
 
     public boolean importKey(String keyName, byte[] key) {
-        return importKey(getBytes(keyName), key);
+        return importKey(getKeyBytes(keyName), key);
     }
 
     private byte[] getPubkey(byte[] key) {
@@ -179,7 +180,7 @@
     }
 
     public byte[] getPubkey(String key) {
-        return getPubkey(getBytes(key));
+        return getPubkey(getKeyBytes(key));
     }
 
     private boolean delKey(byte[] key) {
@@ -188,7 +189,7 @@
     }
 
     public boolean delKey(String key) {
-        return delKey(getBytes(key));
+        return delKey(getKeyBytes(key));
     }
 
     private byte[] sign(byte[] keyName, byte[] data) {
@@ -197,7 +198,7 @@
     }
 
     public byte[] sign(String key, byte[] data) {
-        return sign(getBytes(key), data);
+        return sign(getKeyBytes(key), data);
     }
 
     private boolean verify(byte[] keyName, byte[] data, byte[] signature) {
@@ -206,7 +207,7 @@
     }
 
     public boolean verify(String key, byte[] data, byte[] signature) {
-        return verify(getBytes(key), data, signature);
+        return verify(getKeyBytes(key), data, signature);
     }
 
     private boolean grant(byte[] key, byte[] uid) {
@@ -215,7 +216,7 @@
     }
 
     public boolean grant(String key, int uid) {
-        return grant(getBytes(key), Integer.toString(uid).getBytes());
+         return grant(getKeyBytes(key), getUidBytes(uid));
     }
 
     private boolean ungrant(byte[] key, byte[] uid) {
@@ -224,7 +225,7 @@
     }
 
     public boolean ungrant(String key, int uid) {
-        return ungrant(getBytes(key), Integer.toString(uid).getBytes());
+        return ungrant(getKeyBytes(key), getUidBytes(uid));
     }
 
     public int getLastError() {
@@ -291,11 +292,34 @@
         return null;
     }
 
-    private static byte[] getBytes(String string) {
-        return string.getBytes(Charsets.UTF_8);
+    /**
+     * ModifiedUtf8 is used for key encoding to match the
+     * implementation of NativeCrypto.ENGINE_load_private_key.
+     */
+    private static byte[] getKeyBytes(String string) {
+        try {
+            int utfCount = (int) ModifiedUtf8.countBytes(string, false);
+            byte[] result = new byte[utfCount];
+            ModifiedUtf8.encode(result, 0, string);
+            return result;
+        } catch (UTFDataFormatException e) {
+            throw new RuntimeException(e);
+        }
     }
 
-    private static String toString(byte[] bytes) {
-        return new String(bytes, Charsets.UTF_8);
+    private static String toKeyString(byte[] bytes) {
+        try {
+            return ModifiedUtf8.decode(bytes, new char[bytes.length], 0, bytes.length);
+        } catch (UTFDataFormatException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private static byte[] getPasswordBytes(String password) {
+        return password.getBytes(Charsets.UTF_8);
+    }
+
+    private static byte[] getUidBytes(int uid) {
+        return Integer.toString(uid).getBytes(Charsets.UTF_8);
     }
 }
diff --git a/keystore/tests/src/android/security/KeyStoreTest.java b/keystore/tests/src/android/security/KeyStoreTest.java
index 91c56d6..32cd6e2 100755
--- a/keystore/tests/src/android/security/KeyStoreTest.java
+++ b/keystore/tests/src/android/security/KeyStoreTest.java
@@ -37,7 +37,7 @@
     private static final String TEST_PASSWD2 = "87654321";
     private static final String TEST_KEYNAME = "test-key";
     private static final String TEST_KEYNAME1 = "test-key.1";
-    private static final String TEST_KEYNAME2 = "test-key.2";
+    private static final String TEST_KEYNAME2 = "test-key\02";
     private static final byte[] TEST_KEYVALUE = "test value".getBytes(Charsets.UTF_8);
 
     // "Hello, World" in Chinese
diff --git a/location/java/android/location/ILocationManager.aidl b/location/java/android/location/ILocationManager.aidl
index 2255bf2..38a29d3 100644
--- a/location/java/android/location/ILocationManager.aidl
+++ b/location/java/android/location/ILocationManager.aidl
@@ -39,11 +39,11 @@
     boolean providerMeetsCriteria(String provider, in Criteria criteria);
 
     void requestLocationUpdates(String provider, in Criteria criteria, long minTime, float minDistance,
-        boolean singleShot, in ILocationListener listener);
+        boolean singleShot, in ILocationListener listener, String packageName);
     void requestLocationUpdatesPI(String provider, in Criteria criteria, long minTime, float minDistance,
-        boolean singleShot, in PendingIntent intent);
-    void removeUpdates(in ILocationListener listener);
-    void removeUpdatesPI(in PendingIntent intent);
+        boolean singleShot, in PendingIntent intent, String packageName);
+    void removeUpdates(in ILocationListener listener, String packageName);
+    void removeUpdatesPI(in PendingIntent intent, String packageName);
 
     boolean addGpsStatusListener(IGpsStatusListener listener);
     void removeGpsStatusListener(IGpsStatusListener listener);
@@ -54,13 +54,13 @@
     boolean sendExtraCommand(String provider, String command, inout Bundle extras);
 
     void addProximityAlert(double latitude, double longitude, float distance,
-        long expiration, in PendingIntent intent);
+        long expiration, in PendingIntent intent, String packageName);
     void removeProximityAlert(in PendingIntent intent);
 
     Bundle getProviderInfo(String provider);
     boolean isProviderEnabled(String provider);
 
-    Location getLastKnownLocation(String provider);
+    Location getLastKnownLocation(String provider, String packageName);
 
     // Used by location providers to tell the location manager when it has a new location.
     // Passive is true if the location is coming from the passive provider, in which case
diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java
index 1299574..5c256a3 100644
--- a/location/java/android/location/LocationManager.java
+++ b/location/java/android/location/LocationManager.java
@@ -17,6 +17,7 @@
 package android.location;
 
 import android.app.PendingIntent;
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.Looper;
@@ -160,6 +161,8 @@
      */
     public static final String EXTRA_GPS_ENABLED = "enabled";
 
+    private final Context mContext;
+
     // Map from LocationListeners to their associated ListenerTransport objects
     private HashMap<LocationListener,ListenerTransport> mListeners =
         new HashMap<LocationListener,ListenerTransport>();
@@ -260,8 +263,9 @@
      * right way to create an instance of this class is using the
      * factory Context.getSystemService.
      */
-    public LocationManager(ILocationManager service) {
+    public LocationManager(Context context, ILocationManager service) {
         mService = service;
+        mContext = context;
     }
 
     private LocationProvider createProvider(String name, Bundle info) {
@@ -657,7 +661,8 @@
                     transport = new ListenerTransport(listener, looper);
                 }
                 mListeners.put(listener, transport);
-                mService.requestLocationUpdates(provider, criteria, minTime, minDistance, singleShot, transport);
+                mService.requestLocationUpdates(provider, criteria, minTime, minDistance,
+                        singleShot, transport, mContext.getPackageName());
             }
         } catch (RemoteException ex) {
             Log.e(TAG, "requestLocationUpdates: DeadObjectException", ex);
@@ -837,7 +842,8 @@
         }
 
         try {
-            mService.requestLocationUpdatesPI(provider, criteria, minTime, minDistance, singleShot, intent);
+            mService.requestLocationUpdatesPI(provider, criteria, minTime, minDistance, singleShot,
+                    intent, mContext.getPackageName());
         } catch (RemoteException ex) {
             Log.e(TAG, "requestLocationUpdates: RemoteException", ex);
         }
@@ -1005,7 +1011,7 @@
         try {
             ListenerTransport transport = mListeners.remove(listener);
             if (transport != null) {
-                mService.removeUpdates(transport);
+                mService.removeUpdates(transport, mContext.getPackageName());
             }
         } catch (RemoteException ex) {
             Log.e(TAG, "removeUpdates: DeadObjectException", ex);
@@ -1028,7 +1034,7 @@
             Log.d(TAG, "removeUpdates: intent = " + intent);
         }
         try {
-            mService.removeUpdatesPI(intent);
+            mService.removeUpdatesPI(intent, mContext.getPackageName());
         } catch (RemoteException ex) {
             Log.e(TAG, "removeUpdates: RemoteException", ex);
         }
@@ -1087,7 +1093,7 @@
         }
         try {
             mService.addProximityAlert(latitude, longitude, radius,
-                                       expiration, intent);
+                                       expiration, intent, mContext.getPackageName());
         } catch (RemoteException ex) {
             Log.e(TAG, "addProximityAlert: RemoteException", ex);
         }
@@ -1153,7 +1159,7 @@
             throw new IllegalArgumentException("provider==null");
         }
         try {
-            return mService.getLastKnownLocation(provider);
+            return mService.getLastKnownLocation(provider, mContext.getPackageName());
         } catch (RemoteException ex) {
             Log.e(TAG, "getLastKnowLocation: RemoteException", ex);
             return null;
diff --git a/media/java/android/media/MediaExtractor.java b/media/java/android/media/MediaExtractor.java
index 9f10cb0..687d3a5 100644
--- a/media/java/android/media/MediaExtractor.java
+++ b/media/java/android/media/MediaExtractor.java
@@ -295,7 +295,7 @@
      * Returns true iff we are caching data and the cache has reached the
      * end of the data stream (for now, a future seek may of course restart
      * the fetching of data).
-     * This API only returns a meaningful result if {link #getCachedDuration}
+     * This API only returns a meaningful result if {@link #getCachedDuration}
      * indicates the presence of a cache, i.e. does NOT return -1.
      */
     public native boolean hasCacheReachedEndOfStream();
diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java
index 870a4a9..cd25865b 100644
--- a/media/java/android/media/MediaPlayer.java
+++ b/media/java/android/media/MediaPlayer.java
@@ -706,7 +706,7 @@
      * surface rendering area. When the surface has the same aspect ratio
      * as the content, the aspect ratio of the content is maintained;
      * otherwise, the aspect ratio of the content is not maintained when video
-     * is being rendered. Unlike {@ #VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING},
+     * is being rendered. Unlike {@link #VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING},
      * there is no content cropping with this video scaling mode.
      */
     public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1;
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index 2594167..384e8af2 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -63,7 +63,7 @@
     // database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion'
     // is properly propagated through your change.  Not doing so will result in a loss of user
     // settings.
-    private static final int DATABASE_VERSION = 79;
+    private static final int DATABASE_VERSION = 80;
 
     private Context mContext;
 
@@ -1071,6 +1071,52 @@
             upgradeVersion = 79;
         }
 
+        if (upgradeVersion == 79) {
+            // Before touch exploration was a global setting controlled by the user
+            // via the UI. However, if the enabled accessibility services do not
+            // handle touch exploration mode, enabling it makes no sense. Therefore,
+            // now the services request touch exploration mode and the user is
+            // presented with a dialog to allow that and if she does we store that
+            // in the database. As a result of this change a user that has enabled
+            // accessibility, touch exploration, and some accessibility services
+            // may lose touch exploration state, thus rendering the device useless
+            // unless sighted help is provided, since the enabled service(s) are
+            // not in the list of services to which the user granted a permission
+            // to put the device in touch explore mode. Here we are allowing all
+            // enabled accessibility services to toggle touch exploration provided
+            // accessibility and touch exploration are enabled and no services can
+            // toggle touch exploration. Note that the user has already manually
+            // enabled the services and touch exploration which means the she has
+            // given consent to have these services work in touch exploration mode.
+            final boolean accessibilityEnabled = getIntValueFromTable(db, "secure",
+                    Settings.Secure.ACCESSIBILITY_ENABLED, 0) == 1;
+            final boolean touchExplorationEnabled = getIntValueFromTable(db, "secure",
+                    Settings.Secure.TOUCH_EXPLORATION_ENABLED, 0) == 1;
+            if (accessibilityEnabled && touchExplorationEnabled) {
+                String enabledServices = getStringValueFromTable(db, "secure",
+                        Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, "");
+                String touchExplorationGrantedServices = getStringValueFromTable(db, "secure",
+                        Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES, "");
+                if (TextUtils.isEmpty(touchExplorationGrantedServices)
+                        && !TextUtils.isEmpty(enabledServices)) {
+                    SQLiteStatement stmt = null;
+                    try {
+                        db.beginTransaction();
+                        stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)"
+                                + " VALUES(?,?);");
+                        loadSetting(stmt,
+                                Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES,
+                                enabledServices);
+                        db.setTransactionSuccessful();
+                    } finally {
+                        db.endTransaction();
+                        if (stmt != null) stmt.close();
+                    }
+                }
+            }
+            upgradeVersion = 80;
+        }
+
         // *** Remember to update DATABASE_VERSION above!
 
         if (upgradeVersion != currentVersion) {
@@ -1700,18 +1746,28 @@
     }
 
     private int getIntValueFromSystem(SQLiteDatabase db, String name, int defaultValue) {
-        int value = defaultValue;
+        return getIntValueFromTable(db, "system", name, defaultValue);
+    }
+
+    private int getIntValueFromTable(SQLiteDatabase db, String table, String name,
+            int defaultValue) {
+        String value = getStringValueFromTable(db, table, name, null);
+        return (value != null) ? Integer.parseInt(value) : defaultValue;
+    }
+
+    private String getStringValueFromTable(SQLiteDatabase db, String table, String name,
+            String defaultValue) {
         Cursor c = null;
         try {
-            c = db.query("system", new String[] { Settings.System.VALUE }, "name='" + name + "'",
+            c = db.query(table, new String[] { Settings.System.VALUE }, "name='" + name + "'",
                     null, null, null, null);
             if (c != null && c.moveToFirst()) {
                 String val = c.getString(0);
-                value = val == null ? defaultValue : Integer.parseInt(val);
+                return val == null ? defaultValue : val;
             }
         } finally {
             if (c != null) c.close();
         }
-        return value;
+        return defaultValue;
     }
 }
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index 637c403..10849f6 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -84,26 +84,6 @@
             </intent-filter>
         </receiver>
 
-        <!-- should you need to launch the screensaver, this is a good way to do it -->
-        <activity android:name=".DreamsDockLauncher"
-                android:theme="@android:style/Theme.Dialog"
-                android:label="@string/dreams_dock_launcher">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
-
-        <!-- launch screensaver on (desk) dock event -->
-        <receiver android:name=".DreamsDockLauncher$DockEventReceiver" 
-            android:exported="true"
-            >
-            <intent-filter>
-                <action android:name="android.intent.action.DOCK_EVENT" />
-            </intent-filter>
-        </receiver>
-
-
         <activity android:name=".usb.UsbStorageActivity"
                   android:label="@*android:string/usb_storage_activity_title"
                   android:excludeFromRecents="true">
diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml
index 47e5b71..17dbcac 100644
--- a/packages/SystemUI/res/layout/status_bar_expanded.xml
+++ b/packages/SystemUI/res/layout/status_bar_expanded.xml
@@ -40,24 +40,34 @@
         android:visibility="invisible"
         />
 
-    <FrameLayout
+    <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_marginBottom="@dimen/close_handle_underlap"
+        android:orientation="vertical"
         >
 
         <include layout="@layout/status_bar_expanded_header"
             android:layout_width="match_parent"
             android:layout_height="@dimen/notification_panel_header_height"
             />
-     
+
+        <TextView
+            android:id="@+id/emergency_calls_only"
+            android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Network.EmergencyOnly"
+            android:layout_height="wrap_content"
+            android:layout_width="match_parent"
+            android:paddingBottom="4dp"
+            android:gravity="center"
+            android:visibility="gone"
+            />
+
         <ScrollView
             android:id="@+id/scroll"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:fadingEdge="none"
             android:overScrollMode="ifContentScrolls"
-            android:layout_marginTop="@dimen/notification_panel_header_height"
             >
             <com.android.systemui.statusbar.policy.NotificationRowLayout
                 android:id="@+id/latestItems"
@@ -66,7 +76,7 @@
                 systemui:rowHeight="@dimen/notification_row_min_height"
                 />
         </ScrollView>
-    </FrameLayout>
+    </LinearLayout>
 
     <com.android.systemui.statusbar.phone.CloseDragHandle android:id="@+id/close"
         android:layout_width="match_parent"
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 26dba67..fd5ef4e 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -65,5 +65,8 @@
 
     <!-- Vibration duration for MultiWaveView used in SearchPanelView -->
     <integer translatable="false" name="config_search_panel_view_vibration_duration">20</integer>
+
+    <!-- The length of the vibration when the notificaiotn pops open. -->
+    <integer name="blinds_pop_duration_ms">10</integer>
 </resources>
 
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 6c40461..c6fd66a 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -150,4 +150,10 @@
 
     <!-- Height of the carrier/wifi name label -->
     <dimen name="carrier_label_height">24dp</dimen>
+
+    <!-- The distance you can pull a notificaiton before it pops open -->
+    <dimen name="blinds_pop_threshold">32dp</dimen>
+
+    <!-- The size of the gesture span needed to activate the "pull" notification expansion -->
+    <dimen name="pull_span_min">25dp</dimen>
 </resources>
diff --git a/packages/SystemUI/res/values/ids.xml b/packages/SystemUI/res/values/ids.xml
index 8ebbc52..4a73200 100644
--- a/packages/SystemUI/res/values/ids.xml
+++ b/packages/SystemUI/res/values/ids.xml
@@ -18,4 +18,5 @@
 <resources>
     <item type="id" name="expandable_tag" />
     <item type="id" name="user_expanded_tag" />
+    <item type="id" name="user_lock_tag" />
 </resources>
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index 1d5bf3c..2564003 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -67,6 +67,9 @@
         <item name="android:textColor">#999999</item>
 	</style>
 
+    <style name="TextAppearance.StatusBar.Expanded.Network.EmergencyOnly">
+    </style>
+
     <style name="Animation" />
 
     <style name="Animation.ShirtPocketPanel">
diff --git a/packages/SystemUI/src/com/android/systemui/DreamsDockLauncher.java b/packages/SystemUI/src/com/android/systemui/DreamsDockLauncher.java
deleted file mode 100644
index 73249b4..0000000
--- a/packages/SystemUI/src/com/android/systemui/DreamsDockLauncher.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package com.android.systemui;
-
-import android.app.Activity;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.provider.Settings;
-import android.util.Slog;
-
-public class DreamsDockLauncher extends Activity {
-    private static final String TAG = "DreamsDockLauncher";
-
-    // Launch the screen saver if started as an activity.
-    @Override
-    protected void onCreate (Bundle icicle) {
-        super.onCreate(icicle);
-        launchDream(this);
-        finish();
-    }
-
-    private static void launchDream(Context context) {
-        try {
-            String component = Settings.Secure.getString(
-                    context.getContentResolver(), Settings.Secure.SCREENSAVER_COMPONENT);
-            if (component == null) {
-                component = context.getResources().getString(
-                    com.android.internal.R.string.config_defaultDreamComponent);
-            }
-            if (component != null) {
-                // dismiss the notification shade, recents, etc.
-                context.sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
-
-                ComponentName cn = ComponentName.unflattenFromString(component);
-                Intent zzz = new Intent(Intent.ACTION_MAIN)
-                    .setComponent(cn)
-                    .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
-                            | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
-                            | Intent.FLAG_ACTIVITY_NO_USER_ACTION
-                            | Intent.FLAG_FROM_BACKGROUND
-                            | Intent.FLAG_ACTIVITY_NO_HISTORY
-                        );
-                Slog.v(TAG, "Starting screen saver on dock event: " + component);
-                context.startActivity(zzz);
-            } else {
-                Slog.e(TAG, "Couldn't start screen saver: none selected");
-            }
-        } catch (android.content.ActivityNotFoundException exc) {
-            // no screensaver? give up
-            Slog.e(TAG, "Couldn't start screen saver: none installed");
-        }
-    }
-
-    // Trap low-level dock events and launch the screensaver.
-    public static class DockEventReceiver extends BroadcastReceiver {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            final boolean activateOnDock = 0 != Settings.Secure.getInt(
-                context.getContentResolver(),
-                Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, 0);
-
-            if (!activateOnDock) return;
-
-            if (Intent.ACTION_DOCK_EVENT.equals(intent.getAction())) {
-                Bundle extras = intent.getExtras();
-                int state = extras
-                        .getInt(Intent.EXTRA_DOCK_STATE, Intent.EXTRA_DOCK_STATE_UNDOCKED);
-                if (state == Intent.EXTRA_DOCK_STATE_DESK
-                        || state == Intent.EXTRA_DOCK_STATE_LE_DESK
-                        || state == Intent.EXTRA_DOCK_STATE_HE_DESK) {
-                    launchDream(context);
-                }
-            }
-        }
-    }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
index 5dd15c3..dcfd0b3 100644
--- a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
@@ -22,28 +22,35 @@
 import android.animation.AnimatorSet;
 import android.animation.ObjectAnimator;
 import android.content.Context;
+import android.os.Vibrator;
 import android.util.Slog;
 import android.view.Gravity;
 import android.view.MotionEvent;
 import android.view.ScaleGestureDetector;
 import android.view.View;
+import android.view.ViewConfiguration;
 import android.view.ViewGroup;
 import android.view.View.OnClickListener;
 
+import java.util.Stack;
+
 public class ExpandHelper implements Gefingerpoken, OnClickListener {
     public interface Callback {
         View getChildAtRawPosition(float x, float y);
         View getChildAtPosition(float x, float y);
         boolean canChildBeExpanded(View v);
-        boolean setUserExpandedChild(View v, boolean userxpanded);
+        boolean setUserExpandedChild(View v, boolean userExpanded);
+        boolean setUserLockedChild(View v, boolean userLocked);
     }
 
     private static final String TAG = "ExpandHelper";
     protected static final boolean DEBUG = false;
+    protected static final boolean DEBUG_SCALE = false;
+    protected static final boolean DEBUG_GLOW = false;
     private static final long EXPAND_DURATION = 250;
     private static final long GLOW_DURATION = 150;
 
-    // Set to false to disable focus-based gestures (two-finger pull).
+    // Set to false to disable focus-based gestures (spread-finger vertical pull).
     private static final boolean USE_DRAG = true;
     // Set to false to disable scale-based gestures (both horizontal and vertical).
     private static final boolean USE_SPAN = true;
@@ -62,7 +69,14 @@
     @SuppressWarnings("unused")
     private Context mContext;
 
-    private boolean mStretching;
+    private boolean mExpanding;
+    private static final int NONE    = 0;
+    private static final int BLINDS  = 1<<0;
+    private static final int PULL    = 1<<1;
+    private static final int STRETCH = 1<<2;
+    private int mExpansionStyle = NONE;
+    private boolean mWatchingForPull;
+    private boolean mHasPopped;
     private View mEventSource;
     private View mCurrView;
     private View mCurrViewTopGlow;
@@ -70,14 +84,21 @@
     private float mOldHeight;
     private float mNaturalHeight;
     private float mInitialTouchFocusY;
+    private float mInitialTouchY;
     private float mInitialTouchSpan;
+    private int mTouchSlop;
+    private int mLastMotionY;
+    private float mPopLimit;
+    private int mPopDuration;
+    private float mPullGestureMinXSpan;
     private Callback mCallback;
-    private ScaleGestureDetector mDetector;
+    private ScaleGestureDetector mSGD;
     private ViewScaler mScaler;
     private ObjectAnimator mScaleAnimation;
     private AnimatorSet mGlowAnimationSet;
     private ObjectAnimator mGlowTopAnimation;
     private ObjectAnimator mGlowBottomAnimation;
+    private Vibrator mVibrator;
 
     private int mSmallSize;
     private int mLargeSize;
@@ -85,6 +106,8 @@
 
     private int mGravity;
 
+    private View mScrollView;
+
     private class ViewScaler {
         View mView;
 
@@ -93,7 +116,7 @@
             mView = v;
         }
         public void setHeight(float h) {
-            if (DEBUG) Slog.v(TAG, "SetHeight: setting to " + h);
+            if (DEBUG_SCALE) Slog.v(TAG, "SetHeight: setting to " + h);
             ViewGroup.LayoutParams lp = mView.getLayoutParams();
             lp.height = (int)h;
             mView.setLayoutParams(lp);
@@ -104,11 +127,12 @@
             if (height < 0) {
                 height = mView.getMeasuredHeight();
             }
-            return (float) height;
+            return height;
         }
         public int getNaturalHeight(int maximum) {
             ViewGroup.LayoutParams lp = mView.getLayoutParams();
-            if (DEBUG) Slog.v(TAG, "Inspecting a child of type: " + mView.getClass().getName());
+            if (DEBUG_SCALE) Slog.v(TAG, "Inspecting a child of type: " +
+                    mView.getClass().getName());
             int oldHeight = lp.height;
             lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
             mView.setLayoutParams(lp);
@@ -142,6 +166,9 @@
         mGravity = Gravity.TOP;
         mScaleAnimation = ObjectAnimator.ofFloat(mScaler, "height", 0f);
         mScaleAnimation.setDuration(EXPAND_DURATION);
+        mPopLimit = mContext.getResources().getDimension(R.dimen.blinds_pop_threshold);
+        mPopDuration = mContext.getResources().getInteger(R.integer.blinds_pop_duration_ms);
+        mPullGestureMinXSpan = mContext.getResources().getDimension(R.dimen.pull_span_min);
 
         AnimatorListenerAdapter glowVisibilityController = new AnimatorListenerAdapter() {
             @Override
@@ -169,74 +196,108 @@
         mGlowAnimationSet.play(mGlowTopAnimation).with(mGlowBottomAnimation);
         mGlowAnimationSet.setDuration(GLOW_DURATION);
 
-        mDetector =
-                new ScaleGestureDetector(context,
+        final ViewConfiguration configuration = ViewConfiguration.get(mContext);
+        mTouchSlop = configuration.getScaledTouchSlop();
+
+        mSGD = new ScaleGestureDetector(context,
                                          new ScaleGestureDetector.SimpleOnScaleGestureListener() {
             @Override
             public boolean onScaleBegin(ScaleGestureDetector detector) {
-                if (DEBUG) Slog.v(TAG, "onscalebegin()");
-                float x = detector.getFocusX();
-                float y = detector.getFocusY();
-
-                View v = null;
-                if (mEventSource != null) {
-                    int[] location = new int[2];
-                    mEventSource.getLocationOnScreen(location);
-                    x += (float) location[0];
-                    y += (float) location[1];
-                    v = mCallback.getChildAtRawPosition(x, y);
-                } else {
-                    v = mCallback.getChildAtPosition(x, y);
-                }
+                if (DEBUG_SCALE) Slog.v(TAG, "onscalebegin()");
+                float focusX = detector.getFocusX();
+                float focusY = detector.getFocusY();
 
                 // your fingers have to be somewhat close to the bounds of the view in question
-                mInitialTouchFocusY = detector.getFocusY();
+                mInitialTouchFocusY = focusY;
                 mInitialTouchSpan = Math.abs(detector.getCurrentSpan());
-                if (DEBUG) Slog.d(TAG, "got mInitialTouchSpan: (" + mInitialTouchSpan + ")");
+                if (DEBUG_SCALE) Slog.d(TAG, "got mInitialTouchSpan: (" + mInitialTouchSpan + ")");
 
-                mStretching = initScale(v);
-                return mStretching;
+                final View underFocus = findView(focusX, focusY);
+                if (underFocus != null) {
+                    startExpanding(underFocus, STRETCH);
+                }
+                return mExpanding;
             }
 
             @Override
             public boolean onScale(ScaleGestureDetector detector) {
-                if (DEBUG) Slog.v(TAG, "onscale() on " + mCurrView);
-
-                // are we scaling or dragging?
-                float span = Math.abs(detector.getCurrentSpan()) - mInitialTouchSpan;
-                span *= USE_SPAN ? 1f : 0f;
-                float drag = detector.getFocusY() - mInitialTouchFocusY;
-                drag *= USE_DRAG ? 1f : 0f;
-                drag *= mGravity == Gravity.BOTTOM ? -1f : 1f;
-                float pull = Math.abs(drag) + Math.abs(span) + 1f;
-                float hand = drag * Math.abs(drag) / pull + span * Math.abs(span) / pull;
-                if (DEBUG) Slog.d(TAG, "current span handle is: " + hand);
-                hand = hand + mOldHeight;
-                float target = hand;
-                if (DEBUG) Slog.d(TAG, "target is: " + target);
-                hand = hand < mSmallSize ? mSmallSize : (hand > mLargeSize ? mLargeSize : hand);
-                hand = hand > mNaturalHeight ? mNaturalHeight : hand;
-                if (DEBUG) Slog.d(TAG, "scale continues: hand =" + hand);
-                mScaler.setHeight(hand);
-
-                // glow if overscale
-                float stretch = (float) Math.abs((target - hand) / mMaximumStretch);
-                float strength = 1f / (1f + (float) Math.pow(Math.E, -1 * ((8f * stretch) - 5f)));
-                if (DEBUG) Slog.d(TAG, "stretch: " + stretch + " strength: " + strength);
-                setGlow(GLOW_BASE + strength * (1f - GLOW_BASE));
+                if (DEBUG_SCALE) Slog.v(TAG, "onscale() on " + mCurrView);
+                updateExpansion();
                 return true;
             }
 
             @Override
             public void onScaleEnd(ScaleGestureDetector detector) {
-                if (DEBUG) Slog.v(TAG, "onscaleend()");
+                if (DEBUG_SCALE) Slog.v(TAG, "onscaleend()");
                 // I guess we're alone now
-                if (DEBUG) Slog.d(TAG, "scale end");
-                finishScale(false);
+                if (DEBUG_SCALE) Slog.d(TAG, "scale end");
+                finishExpanding(false);
+                clearView();
             }
         });
     }
 
+    private void updateExpansion() {
+        // are we scaling or dragging?
+        float span = Math.abs(mSGD.getCurrentSpan()) - mInitialTouchSpan;
+        span *= USE_SPAN ? 1f : 0f;
+        float drag = mSGD.getFocusY() - mInitialTouchFocusY;
+        drag *= USE_DRAG ? 1f : 0f;
+        drag *= mGravity == Gravity.BOTTOM ? -1f : 1f;
+        float pull = Math.abs(drag) + Math.abs(span) + 1f;
+        float hand = drag * Math.abs(drag) / pull + span * Math.abs(span) / pull;
+        float target = hand + mOldHeight;
+        float newHeight = clamp(target);
+        mScaler.setHeight(newHeight);
+
+        setGlow(calculateGlow(target, newHeight));
+    }
+
+    private float clamp(float target) {
+        float out = target;
+        out = out < mSmallSize ? mSmallSize : (out > mLargeSize ? mLargeSize : out);
+        out = out > mNaturalHeight ? mNaturalHeight : out;
+        return out;
+    }
+
+    private View findView(float x, float y) {
+        View v = null;
+        if (mEventSource != null) {
+            int[] location = new int[2];
+            mEventSource.getLocationOnScreen(location);
+            x += location[0];
+            y += location[1];
+            v = mCallback.getChildAtRawPosition(x, y);
+        } else {
+            v = mCallback.getChildAtPosition(x, y);
+        }
+        return v;
+    }
+
+    private boolean isInside(View v, float x, float y) {
+        if (DEBUG) Slog.d(TAG, "isinside (" + x + ", " + y + ")");
+
+        if (v == null) {
+            if (DEBUG) Slog.d(TAG, "isinside null subject");
+            return false;
+        }
+        if (mEventSource != null) {
+            int[] location = new int[2];
+            mEventSource.getLocationOnScreen(location);
+            x += location[0];
+            y += location[1];
+            if (DEBUG) Slog.d(TAG, "  to global (" + x + ", " + y + ")");
+        }
+        int[] location = new int[2];
+        v.getLocationOnScreen(location);
+        x -= location[0];
+        y -= location[1];
+        if (DEBUG) Slog.d(TAG, "  to local (" + x + ", " + y + ")");
+        if (DEBUG) Slog.d(TAG, "  inside (" + v.getWidth() + ", " + v.getHeight() + ")");
+        boolean inside = (x > 0f && y > 0f && x < v.getWidth() & y < v.getHeight());
+        return inside;
+    }
+
     public void setEventSource(View eventSource) {
         mEventSource = eventSource;
     }
@@ -245,13 +306,26 @@
         mGravity = gravity;
     }
 
+    public void setScrollView(View scrollView) {
+        mScrollView = scrollView;
+    }
+
+    private float calculateGlow(float target, float actual) {
+        // glow if overscale
+        if (DEBUG_GLOW) Slog.d(TAG, "target: " + target + " actual: " + actual);
+        float stretch = Math.abs((target - actual) / mMaximumStretch);
+        float strength = 1f / (1f + (float) Math.pow(Math.E, -1 * ((8f * stretch) - 5f)));
+        if (DEBUG_GLOW) Slog.d(TAG, "stretch: " + stretch + " strength: " + strength);
+        return (GLOW_BASE + strength * (1f - GLOW_BASE));
+    }
+
     public void setGlow(float glow) {
         if (!mGlowAnimationSet.isRunning() || glow == 0f) {
             if (mGlowAnimationSet.isRunning()) {
-                mGlowAnimationSet.cancel();
+                mGlowAnimationSet.end();
             }
             if (mCurrViewTopGlow != null && mCurrViewBottomGlow != null) {
-                if (glow == 0f || mCurrViewTopGlow.getAlpha() == 0f) { 
+                if (glow == 0f || mCurrViewTopGlow.getAlpha() == 0f) {
                     // animate glow in and out
                     mGlowTopAnimation.setTarget(mCurrViewTopGlow);
                     mGlowBottomAnimation.setTarget(mCurrViewBottomGlow);
@@ -276,72 +350,196 @@
                 View.INVISIBLE : View.VISIBLE);
     }
 
+    @Override
     public boolean onInterceptTouchEvent(MotionEvent ev) {
-        if (DEBUG) Slog.d(TAG, "interceptTouch: act=" + (ev.getAction()) +
-                         " stretching=" + mStretching);
-        mDetector.onTouchEvent(ev);
-        return mStretching;
+        final int action = ev.getAction();
+        if (DEBUG_SCALE) Slog.d(TAG, "intercept: act=" + MotionEvent.actionToString(action) +
+                         " expanding=" + mExpanding +
+                         (0 != (mExpansionStyle & BLINDS) ? " (blinds)" : "") +
+                         (0 != (mExpansionStyle & PULL) ? " (pull)" : "") +
+                         (0 != (mExpansionStyle & STRETCH) ? " (stretch)" : ""));
+        // check for a spread-finger vertical pull gesture
+        mSGD.onTouchEvent(ev);
+        final int x = (int) mSGD.getFocusX();
+        final int y = (int) mSGD.getFocusY();
+        if (mExpanding) {
+            return true;
+        } else {
+            if ((action == MotionEvent.ACTION_MOVE) && 0 != (mExpansionStyle & BLINDS)) {
+                // we've begun Venetian blinds style expansion
+                return true;
+            }
+            final float xspan = mSGD.getCurrentSpanX();
+            if ((action == MotionEvent.ACTION_MOVE &&
+                    xspan > mPullGestureMinXSpan &&
+                    xspan > mSGD.getCurrentSpanY())) {
+                // detect a vertical pulling gesture with fingers somewhat separated
+                if (DEBUG_SCALE) Slog.v(TAG, "got pull gesture (xspan=" + xspan + "px)");
+
+                mInitialTouchFocusY = y;
+
+                final View underFocus = findView(x, y);
+                if (underFocus != null) {
+                    startExpanding(underFocus, PULL);
+                }
+                return true;
+            }
+            if (mScrollView != null && mScrollView.getScrollY() > 0) {
+                return false;
+            }
+            // Now look for other gestures
+            switch (action & MotionEvent.ACTION_MASK) {
+            case MotionEvent.ACTION_MOVE: {
+                if (mWatchingForPull) {
+                    final int yDiff = y - mLastMotionY;
+                    if (yDiff > mTouchSlop) {
+                        if (DEBUG) Slog.v(TAG, "got venetian gesture (dy=" + yDiff + "px)");
+                        mLastMotionY = y;
+                        final View underFocus = findView(x, y);
+                        if (underFocus != null) {
+                            startExpanding(underFocus, BLINDS);
+                            mInitialTouchY = mLastMotionY;
+                            mHasPopped = false;
+                        }
+                    }
+                }
+                break;
+            }
+
+            case MotionEvent.ACTION_DOWN:
+                mWatchingForPull = isInside(mScrollView, x, y);
+                mLastMotionY = y;
+                break;
+
+            case MotionEvent.ACTION_CANCEL:
+            case MotionEvent.ACTION_UP:
+                if (DEBUG) Slog.d(TAG, "up/cancel");
+                finishExpanding(false);
+                clearView();
+                break;
+            }
+            return mExpanding;
+        }
     }
 
+    @Override
     public boolean onTouchEvent(MotionEvent ev) {
         final int action = ev.getAction();
-        if (DEBUG) Slog.d(TAG, "touch: act=" + (action) + " stretching=" + mStretching);
-        if (mStretching) {
-            if (DEBUG) Slog.d(TAG, "detector ontouch");
-            mDetector.onTouchEvent(ev);
-        }
+        if (DEBUG_SCALE) Slog.d(TAG, "touch: act=" + MotionEvent.actionToString(action) +
+                " expanding=" + mExpanding +
+                (0 != (mExpansionStyle & BLINDS) ? " (blinds)" : "") +
+                (0 != (mExpansionStyle & PULL) ? " (pull)" : "") +
+                (0 != (mExpansionStyle & STRETCH) ? " (stretch)" : ""));
+
+        mSGD.onTouchEvent(ev);
+
         switch (action) {
+            case MotionEvent.ACTION_MOVE: {
+                if (0 != (mExpansionStyle & BLINDS)) {
+                    final float rawHeight = ev.getY() - mInitialTouchY + mOldHeight;
+                    final float newHeight = clamp(rawHeight);
+                    final boolean wasClosed = (mOldHeight == mSmallSize);
+                    boolean isFinished = false;
+                    if (rawHeight > mNaturalHeight) {
+                        isFinished = true;
+                    }
+                    if (rawHeight < mSmallSize) {
+                        isFinished = true;
+                    }
+
+                    final float pull = Math.abs(ev.getY() - mInitialTouchY);
+                    if (mHasPopped || pull > mPopLimit) {
+                        if (!mHasPopped) {
+                            vibrate(mPopDuration);
+                            mHasPopped = true;
+                        }
+                    }
+
+                    if (mHasPopped) {
+                        mScaler.setHeight(newHeight);
+                        setGlow(GLOW_BASE);
+                    } else {
+                        setGlow(calculateGlow(4f * pull, 0f));
+                    }
+
+                    final int x = (int) mSGD.getFocusX();
+                    final int y = (int) mSGD.getFocusY();
+                    View underFocus = findView(x, y);
+                    if (isFinished && underFocus != null && underFocus != mCurrView) {
+                        finishExpanding(false); // @@@ needed?
+                        startExpanding(underFocus, BLINDS);
+                        mInitialTouchY = y;
+                        mHasPopped = false;
+                    }
+                    return true;
+                }
+
+                if (mExpanding) {
+                    updateExpansion();
+                    return true;
+                }
+
+                break;
+            }
             case MotionEvent.ACTION_UP:
             case MotionEvent.ACTION_CANCEL:
-                if (DEBUG) Slog.d(TAG, "cancel");
-                mStretching = false;
+                if (DEBUG) Slog.d(TAG, "up/cancel");
+                finishExpanding(false);
                 clearView();
                 break;
         }
         return true;
     }
-    private boolean initScale(View v) {
-        if (v != null) {
-            if (DEBUG) Slog.d(TAG, "scale begins on view: " + v);
-            mStretching = true;
-            setView(v);
-            setGlow(GLOW_BASE);
-            mScaler.setView(v);
-            mOldHeight = mScaler.getHeight();
-            if (mCallback.canChildBeExpanded(v)) {
-                if (DEBUG) Slog.d(TAG, "working on an expandable child");
-                mNaturalHeight = mScaler.getNaturalHeight(mLargeSize);
-            } else {
-                if (DEBUG) Slog.d(TAG, "working on a non-expandable child");
-                mNaturalHeight = mOldHeight;
-            }
-            if (DEBUG) Slog.d(TAG, "got mOldHeight: " + mOldHeight +
-                        " mNaturalHeight: " + mNaturalHeight);
-            v.getParent().requestDisallowInterceptTouchEvent(true);
+
+    private void startExpanding(View v, int expandType) {
+        mExpanding = true;
+        mExpansionStyle = expandType; 
+        if (DEBUG) Slog.d(TAG, "scale type " + expandType + " beginning on view: " + v);
+        mCallback.setUserLockedChild(v, true);
+        setView(v);
+        setGlow(GLOW_BASE);
+        mScaler.setView(v);
+        mOldHeight = mScaler.getHeight();
+        if (mCallback.canChildBeExpanded(v)) {
+            if (DEBUG) Slog.d(TAG, "working on an expandable child");
+            mNaturalHeight = mScaler.getNaturalHeight(mLargeSize);
+        } else {
+            if (DEBUG) Slog.d(TAG, "working on a non-expandable child");
+            mNaturalHeight = mOldHeight;
         }
-        return mStretching;
+        if (DEBUG) Slog.d(TAG, "got mOldHeight: " + mOldHeight +
+                    " mNaturalHeight: " + mNaturalHeight);
+        v.getParent().requestDisallowInterceptTouchEvent(true);
     }
 
-    private void finishScale(boolean force) {
+    private void finishExpanding(boolean force) {
+        if (!mExpanding) return;
+
+        float currentHeight = mScaler.getHeight();
+        float targetHeight = mSmallSize;
         float h = mScaler.getHeight();
         final boolean wasClosed = (mOldHeight == mSmallSize);
         if (wasClosed) {
-            h = (force || h > mSmallSize) ? mNaturalHeight : mSmallSize;
+            targetHeight = (force || currentHeight > mSmallSize) ? mNaturalHeight : mSmallSize;
         } else {
-            h = (force || h < mNaturalHeight) ? mSmallSize : mNaturalHeight;
+            targetHeight = (force || currentHeight < mNaturalHeight) ? mSmallSize : mNaturalHeight;
         }
-        if (DEBUG && mCurrView != null) mCurrView.setBackgroundColor(0);
         if (mScaleAnimation.isRunning()) {
             mScaleAnimation.cancel();
         }
-        mScaleAnimation.setFloatValues(h);
-        mScaleAnimation.setupStartValues();
-        mScaleAnimation.start();
-        mStretching = false;
         setGlow(0f);
         mCallback.setUserExpandedChild(mCurrView, h == mNaturalHeight);
+        if (targetHeight != currentHeight) {
+            mScaleAnimation.setFloatValues(targetHeight);
+            mScaleAnimation.setupStartValues();
+            mScaleAnimation.start();
+        }
+        mCallback.setUserLockedChild(mCurrView, false);
+
+        mExpanding = false;
+        mExpansionStyle = NONE;
+
         if (DEBUG) Slog.d(TAG, "scale was finished on view: " + mCurrView);
-        clearView();
     }
 
     private void clearView() {
@@ -357,7 +555,7 @@
             mCurrViewTopGlow = g.findViewById(R.id.top_glow);
             mCurrViewBottomGlow = g.findViewById(R.id.bottom_glow);
             if (DEBUG) {
-                String debugLog = "Looking for glows: " + 
+                String debugLog = "Looking for glows: " +
                         (mCurrViewTopGlow != null ? "found top " : "didn't find top") +
                         (mCurrViewBottomGlow != null ? "found bottom " : "didn't find bottom");
                 Slog.v(TAG,  debugLog);
@@ -367,8 +565,20 @@
 
     @Override
     public void onClick(View v) {
-        initScale(v);
-        finishScale(true);
+        startExpanding(v, STRETCH);
+        finishExpanding(true);
+        clearView();
+    }
 
+    /**
+     * Triggers haptic feedback.
+     */
+    private synchronized void vibrate(long duration) {
+        if (mVibrator == null) {
+            mVibrator = (android.os.Vibrator)
+                    mContext.getSystemService(Context.VIBRATOR_SERVICE);
+        }
+        mVibrator.vibrate(duration);
     }
 }
+
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 1204a89..8d7734e0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -783,16 +783,20 @@
         int N = mNotificationData.size();
         for (int i = 0; i < N; i++) {
             NotificationData.Entry entry = mNotificationData.get(i);
-            if (i == (N-1)) {
-                if (DEBUG) Slog.d(TAG, "expanding top notification at " + i);
-                expandView(entry, true);
-            } else {
-                if (!entry.userExpanded()) {
-                    if (DEBUG) Slog.d(TAG, "collapsing notification at " + i);
-                    expandView(entry, false);
+            if (!entry.userLocked()) {
+                if (i == (N-1)) {
+                    if (DEBUG) Slog.d(TAG, "expanding top notification at " + i);
+                    expandView(entry, true);
                 } else {
-                    if (DEBUG) Slog.d(TAG, "ignoring user-modified notification at " + i);
+                    if (!entry.userExpanded()) {
+                        if (DEBUG) Slog.d(TAG, "collapsing notification at " + i);
+                        expandView(entry, false);
+                    } else {
+                        if (DEBUG) Slog.d(TAG, "ignoring user-modified notification at " + i);
+                    }
                 }
+            } else {
+                if (DEBUG) Slog.d(TAG, "ignoring notification being held by user at " + i);
             }
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
index dfd8cf8..c82f250 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
@@ -71,6 +71,18 @@
         public boolean setUserExpanded(boolean userExpanded) {
             return NotificationData.setUserExpanded(row, userExpanded);
         }
+        /**
+         * Return whether the entry is being touched by the user.
+         */
+        public boolean userLocked() {
+            return NotificationData.getUserLocked(row);
+        }
+        /**
+         * Set the flag indicating that this is being touched by the user.
+         */
+        public boolean setUserLocked(boolean userLocked) {
+            return NotificationData.setUserLocked(row, userLocked);
+        }
     }
     private final ArrayList<Entry> mEntries = new ArrayList<Entry>();
     private final Comparator<Entry> mEntryCmp = new Comparator<Entry>() {
@@ -197,4 +209,18 @@
     public static boolean setUserExpanded(View row, boolean userExpanded) {
         return writeBooleanTag(row, R.id.user_expanded_tag, userExpanded);
     }
+
+    /**
+     * Return whether the entry is being touched by the user.
+     */
+    public static boolean getUserLocked(View row) {
+        return readBooleanTag(row, R.id.user_lock_tag);
+    }
+
+    /**
+     * Set whether the entry is being touched by the user.
+     */
+    public static boolean setUserLocked(View row, boolean userLocked) {
+        return writeBooleanTag(row, R.id.user_lock_tag, userLocked);
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index c337ebe..2f22cae 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -182,6 +182,7 @@
     private TextView mCarrierLabel;
     private boolean mCarrierLabelVisible = false;
     private int mCarrierLabelHeight;
+    private TextView mEmergencyCallLabel;
 
     // drag bar
     CloseDragHandle mCloseView;
@@ -409,14 +410,6 @@
         mPile = (NotificationRowLayout)mStatusBarWindow.findViewById(R.id.latestItems);
         mPile.setLayoutTransitionsEnabled(false);
         mPile.setLongPressListener(getNotificationLongClicker());
-        if (SHOW_CARRIER_LABEL) {
-            mPile.setOnSizeChangedListener(new OnSizeChangedListener() {
-                @Override
-                public void onSizeChanged(View view, int w, int h, int oldw, int oldh) {
-                    updateCarrierLabelVisibility(false);
-                }
-            });
-        }
         mExpandedContents = mPile; // was: expanded.findViewById(R.id.notificationLinearLayout);
 
         mClearButton = mStatusBarWindow.findViewById(R.id.clear_all_button);
@@ -429,9 +422,6 @@
         mSettingsButton.setOnClickListener(mSettingsButtonListener);
         mRotationButton = (RotationToggle) mStatusBarWindow.findViewById(R.id.rotation_lock_button);
         
-        mCarrierLabel = (TextView)mStatusBarWindow.findViewById(R.id.carrier_label);
-        mCarrierLabel.setVisibility(mCarrierLabelVisible ? View.VISIBLE : View.INVISIBLE);
-
         mScrollView = (ScrollView)mStatusBarWindow.findViewById(R.id.scroll);
         mScrollView.setVerticalScrollBarEnabled(false); // less drawing during pulldowns
 
@@ -460,7 +450,21 @@
         mNetworkController.addSignalCluster(signalCluster);
         signalCluster.setNetworkController(mNetworkController);
 
+        mEmergencyCallLabel = (TextView)mStatusBarWindow.findViewById(R.id.emergency_calls_only);
+        if (mEmergencyCallLabel != null) {
+            mNetworkController.addEmergencyLabelView(mEmergencyCallLabel);
+            mEmergencyCallLabel.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
+                @Override
+                public void onLayoutChange(View v, int left, int top, int right, int bottom,
+                        int oldLeft, int oldTop, int oldRight, int oldBottom) {
+                    updateCarrierLabelVisibility(false);
+                }});
+        }
+
         if (SHOW_CARRIER_LABEL) {
+            mCarrierLabel = (TextView)mStatusBarWindow.findViewById(R.id.carrier_label);
+            mCarrierLabel.setVisibility(mCarrierLabelVisible ? View.VISIBLE : View.INVISIBLE);
+
             // for mobile devices, we always show mobile connection info here (SPN/PLMN)
             // for other devices, we show whatever network is connected
             if (mNetworkController.hasMobileDataFeature()) {
@@ -468,6 +472,14 @@
             } else {
                 mNetworkController.addCombinedLabelView(mCarrierLabel);
             }
+
+            // set up the dynamic hide/show of the label
+            mPile.setOnSizeChangedListener(new OnSizeChangedListener() {
+                @Override
+                public void onSizeChanged(View view, int w, int h, int oldw, int oldh) {
+                    updateCarrierLabelVisibility(false);
+                }
+            });
         }
 
 //        final ImageView wimaxRSSI =
@@ -919,9 +931,11 @@
             Slog.d(TAG, String.format("pileh=%d scrollh=%d carrierh=%d",
                     mPile.getHeight(), mScrollView.getHeight(), mCarrierLabelHeight));
         }
-        
-        final boolean makeVisible = 
-            mPile.getHeight() < (mScrollView.getHeight() - mCarrierLabelHeight);
+
+        final boolean emergencyCallsShownElsewhere = mEmergencyCallLabel != null;
+        final boolean makeVisible =
+            !(emergencyCallsShownElsewhere && mNetworkController.isEmergencyOnly())
+            && mPile.getHeight() < (mScrollView.getHeight() - mCarrierLabelHeight);
         
         if (force || mCarrierLabelVisible != makeVisible) {
             mCarrierLabelVisible = makeVisible;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
index 9317561..2628631 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
@@ -53,6 +53,7 @@
         int maxHeight = getResources().getDimensionPixelSize(R.dimen.notification_row_max_height);
         mExpandHelper = new ExpandHelper(mContext, latestItems, minHeight, maxHeight);
         mExpandHelper.setEventSource(this);
+        mExpandHelper.setScrollView(scroller);
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
index 1068267..8cf7b4a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
@@ -145,6 +145,7 @@
     ArrayList<TextView> mCombinedLabelViews = new ArrayList<TextView>();
     ArrayList<TextView> mMobileLabelViews = new ArrayList<TextView>();
     ArrayList<TextView> mWifiLabelViews = new ArrayList<TextView>();
+    ArrayList<TextView> mEmergencyLabelViews = new ArrayList<TextView>();
     ArrayList<SignalCluster> mSignalClusters = new ArrayList<SignalCluster>();
     int mLastPhoneSignalIconId = -1;
     int mLastDataDirectionIconId = -1;
@@ -245,6 +246,10 @@
         return mHasMobileDataFeature;
     }
 
+    public boolean isEmergencyOnly() {
+        return (mServiceState != null && mServiceState.isEmergencyOnly());
+    }
+
     public void addPhoneSignalIconView(ImageView v) {
         mPhoneSignalIconViews.add(v);
     }
@@ -284,6 +289,10 @@
         mWifiLabelViews.add(v);
     }
 
+    public void addEmergencyLabelView(TextView v) {
+        mEmergencyLabelViews.add(v);
+    }
+
     public void addSignalCluster(SignalCluster cluster) {
         mSignalClusters.add(cluster);
         refreshSignalCluster(cluster);
@@ -566,18 +575,26 @@
                     }
                     break;
                 case TelephonyManager.NETWORK_TYPE_CDMA:
-                    // display 1xRTT for IS95A/B
-                    mDataIconList = TelephonyIcons.DATA_1X[mInetCondition];
-                    mDataTypeIconId = R.drawable.stat_sys_data_connected_1x;
-                    mContentDescriptionDataType = mContext.getString(
-                            R.string.accessibility_data_connection_cdma);
-                    break;
+                    if (!mShowAtLeastThreeGees) {
+                        // display 1xRTT for IS95A/B
+                        mDataIconList = TelephonyIcons.DATA_1X[mInetCondition];
+                        mDataTypeIconId = R.drawable.stat_sys_data_connected_1x;
+                        mContentDescriptionDataType = mContext.getString(
+                                R.string.accessibility_data_connection_cdma);
+                        break;
+                    } else {
+                        // fall through
+                    }
                 case TelephonyManager.NETWORK_TYPE_1xRTT:
-                    mDataIconList = TelephonyIcons.DATA_1X[mInetCondition];
-                    mDataTypeIconId = R.drawable.stat_sys_data_connected_1x;
-                    mContentDescriptionDataType = mContext.getString(
-                            R.string.accessibility_data_connection_cdma);
-                    break;
+                    if (!mShowAtLeastThreeGees) {
+                        mDataIconList = TelephonyIcons.DATA_1X[mInetCondition];
+                        mDataTypeIconId = R.drawable.stat_sys_data_connected_1x;
+                        mContentDescriptionDataType = mContext.getString(
+                                R.string.accessibility_data_connection_cdma);
+                        break;
+                    } else {
+                        // fall through
+                    }
                 case TelephonyManager.NETWORK_TYPE_EVDO_0: //fall through
                 case TelephonyManager.NETWORK_TYPE_EVDO_A:
                 case TelephonyManager.NETWORK_TYPE_EVDO_B:
@@ -917,6 +934,7 @@
         String wifiLabel = "";
         String mobileLabel = "";
         int N;
+        final boolean emergencyOnly = isEmergencyOnly();
 
         if (!mHasMobileDataFeature) {
             mDataSignalIconId = mPhoneSignalIconId = 0;
@@ -932,10 +950,12 @@
 
             if (mDataConnected) {
                 mobileLabel = mNetworkName;
-            } else if (mConnected) {
-                if (hasService()) {
+            } else if (mConnected || emergencyOnly) {
+                if (hasService() || emergencyOnly) {
+                    // The isEmergencyOnly test covers the case of a phone with no SIM
                     mobileLabel = mNetworkName;
                 } else {
+                    // Tablets, basically
                     mobileLabel = "";
                 }
             } else {
@@ -1076,6 +1096,7 @@
                     + " combinedActivityIconId=0x" + Integer.toHexString(combinedActivityIconId)
                     + " mobileLabel=" + mobileLabel
                     + " wifiLabel=" + wifiLabel
+                    + " emergencyOnly=" + emergencyOnly
                     + " combinedLabel=" + combinedLabel
                     + " mAirplaneMode=" + mAirplaneMode
                     + " mDataActivity=" + mDataActivity
@@ -1241,6 +1262,18 @@
                 v.setVisibility(View.VISIBLE);
             }
         }
+
+        // e-call label
+        N = mEmergencyLabelViews.size();
+        for (int i=0; i<N; i++) {
+            TextView v = mEmergencyLabelViews.get(i);
+            if (!emergencyOnly) {
+                v.setVisibility(View.GONE);
+            } else {
+                v.setText(mobileLabel); // comes from the telephony stack
+                v.setVisibility(View.VISIBLE);
+            }
+        }
     }
 
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java
index 61e5ab6..89eed1b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java
@@ -78,6 +78,7 @@
         super(context, attrs, defStyle);
 
         mRealLayoutTransition = new LayoutTransition();
+        mRealLayoutTransition.setAnimateParentHierarchy(true);
         setLayoutTransitionsEnabled(true);
         
         setOrientation(LinearLayout.VERTICAL);
@@ -161,7 +162,12 @@
         return NotificationData.setUserExpanded(v, userExpanded);
     }
 
+    public boolean setUserLockedChild(View v, boolean userLocked) {
+        return NotificationData.setUserLocked(v, userLocked);
+    }
+
     public void onChildDismissed(View v) {
+        if (DEBUG) Slog.v(TAG, "onChildDismissed: " + v + " mRemoveViews=" + mRemoveViews);
         final View veto = v.findViewById(R.id.veto);
         if (veto != null && veto.getVisibility() != View.GONE && mRemoveViews) {
             veto.performClick();
@@ -225,6 +231,7 @@
      * get removed properly.
      */
     public void setViewRemoval(boolean removeViews) {
+        if (DEBUG) Slog.v(TAG, "setViewRemoval: " + removeViews);
         mRemoveViews = removeViews;
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java
index fdbfb65..c1ea50d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java
@@ -25,6 +25,7 @@
 import android.util.AttributeSet;
 import android.util.Slog;
 import android.view.Gravity;
+import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.View;
@@ -34,7 +35,6 @@
 import android.view.animation.DecelerateInterpolator;
 import android.view.animation.Interpolator;
 import android.widget.RelativeLayout;
-import android.widget.ScrollView;
 
 import com.android.systemui.ExpandHelper;
 import com.android.systemui.R;
@@ -197,6 +197,27 @@
         return true;
     }
 
+    @Override
+    public boolean dispatchKeyEvent(KeyEvent event) {
+    final int keyCode = event.getKeyCode();
+        switch (keyCode) {
+            // We exclusively handle the back key by hiding this panel.
+            case KeyEvent.KEYCODE_BACK: {
+                if (event.getAction() == KeyEvent.ACTION_UP) {
+                    mBar.animateCollapse();
+                }
+                return true;
+            }
+            // We react to the home key but let the system handle it.
+            case KeyEvent.KEYCODE_HOME: {
+                if (event.getAction() == KeyEvent.ACTION_UP) {
+                    mBar.animateCollapse();
+                }
+            } break;
+        }
+        return super.dispatchKeyEvent(event);
+    }
+
     /*
     @Override
     protected void onLayout(boolean changed, int l, int t, int r, int b) {
diff --git a/policy/src/com/android/internal/policy/impl/KeyguardViewManager.java b/policy/src/com/android/internal/policy/impl/KeyguardViewManager.java
index 504bb63..fb6ff24 100644
--- a/policy/src/com/android/internal/policy/impl/KeyguardViewManager.java
+++ b/policy/src/com/android/internal/policy/impl/KeyguardViewManager.java
@@ -147,7 +147,7 @@
 
         if (enableScreenRotation) {
             if (DEBUG) Log.d(TAG, "Rotation sensor for lock screen On!");
-            mWindowLayoutParams.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR;
+            mWindowLayoutParams.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_USER;
         } else {
             if (DEBUG) Log.d(TAG, "Rotation sensor for lock screen Off!");
             mWindowLayoutParams.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_NOSENSOR;
diff --git a/samples/training/network-usage/AndroidManifest.xml b/samples/training/network-usage/AndroidManifest.xml
new file mode 100644
index 0000000..4b96d14
--- /dev/null
+++ b/samples/training/network-usage/AndroidManifest.xml
@@ -0,0 +1,48 @@
+<!--
+  Copyright (C) 2012 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.android.networkusage"
+    android:versionCode="1"
+    android:versionName="1.0" >
+
+    <uses-sdk android:minSdkVersion="4"
+        android:targetSdkVersion="14" />
+
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+
+    <application
+        android:icon="@drawable/ic_launcher"
+        android:label="@string/app_name" >
+
+        <activity
+            android:name="com.example.networkusage.NetworkActivity"
+            android:label="@string/app_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        <activity android:label="SettingsActivity" android:name=".SettingsActivity">
+             <intent-filter>
+                <action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />
+                <category android:name="android.intent.category.DEFAULT" />
+          </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/samples/training/network-usage/README.txt b/samples/training/network-usage/README.txt
new file mode 100644
index 0000000..cc9a7a0
--- /dev/null
+++ b/samples/training/network-usage/README.txt
@@ -0,0 +1,14 @@
+README
+======
+
+This Network Usage sample app does the following:
+
+-- Downloads an XML feed from StackOverflow.com for the most recent posts tagged "android".
+
+-- Parses the XML feed, combines feed elements with HTML markup, and displays the resulting HTML in the UI.
+
+-- Lets users control their network data usage through a settings UI. Users can choose to fetch the feed
+   when any network connection is available, or only when a Wi-Fi connection is available.
+
+-- Detects when there is a change in the device's connection status and responds accordingly. For example, if
+   the device loses its network connection, the app will not attempt to download the feed.
diff --git a/samples/training/network-usage/res/drawable-hdpi/ic_launcher.png b/samples/training/network-usage/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..8074c4c
--- /dev/null
+++ b/samples/training/network-usage/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/training/network-usage/res/drawable-ldpi/ic_launcher.png b/samples/training/network-usage/res/drawable-ldpi/ic_launcher.png
new file mode 100644
index 0000000..1095584e
--- /dev/null
+++ b/samples/training/network-usage/res/drawable-ldpi/ic_launcher.png
Binary files differ
diff --git a/samples/training/network-usage/res/drawable-mdpi/ic_launcher.png b/samples/training/network-usage/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..a07c69f
--- /dev/null
+++ b/samples/training/network-usage/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/training/network-usage/res/layout/main.xml b/samples/training/network-usage/res/layout/main.xml
new file mode 100644
index 0000000..8498934
--- /dev/null
+++ b/samples/training/network-usage/res/layout/main.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="vertical" >
+
+<WebView  xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/webview"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+/>
+</LinearLayout>
diff --git a/samples/training/network-usage/res/menu/mainmenu.xml b/samples/training/network-usage/res/menu/mainmenu.xml
new file mode 100644
index 0000000..17d44db
--- /dev/null
+++ b/samples/training/network-usage/res/menu/mainmenu.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  Copyright (C) 2012 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+     <item android:id="@+id/settings"
+          android:title="@string/settings" />
+    <item android:id="@+id/refresh"
+          android:title="@string/refresh" />
+</menu>
diff --git a/samples/training/network-usage/res/values/arrays.xml b/samples/training/network-usage/res/values/arrays.xml
new file mode 100644
index 0000000..2e8b8a7
--- /dev/null
+++ b/samples/training/network-usage/res/values/arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  Copyright (C) 2012 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<resources>
+    <string-array name="listArray">
+        <item>Only when on Wi-Fi</item>
+        <item>On any network</item>
+    </string-array>
+    <string-array name="listValues">
+        <item>Wi-Fi</item>
+        <item>Any</item>
+    </string-array>
+</resources>
diff --git a/samples/training/network-usage/res/values/strings.xml b/samples/training/network-usage/res/values/strings.xml
new file mode 100644
index 0000000..d7c702f
--- /dev/null
+++ b/samples/training/network-usage/res/values/strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  Copyright (C) 2012 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<resources>
+
+    <string name="app_name">NetworkUsage</string>
+
+    <!--  Menu items -->
+    <string name="settings">Settings</string>
+    <string name="refresh">Refresh</string>
+
+    <!--  NetworkActivity -->
+    <string name="page_title">Newest StackOverflow questions tagged \'android\'</string>
+    <string name="updated">Last updated:</string>
+    <string name="lost_connection">Lost connection.</string>
+    <string name="wifi_connected">Wi-Fi reconnected.</string>
+    <string name="connection_error">Unable to load content. Check your network connection.</string>
+    <string name="xml_error">Error parsing XML.</string>
+
+</resources>
diff --git a/samples/training/network-usage/res/xml/preferences.xml b/samples/training/network-usage/res/xml/preferences.xml
new file mode 100644
index 0000000..801ba79
--- /dev/null
+++ b/samples/training/network-usage/res/xml/preferences.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  Copyright (C) 2012 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    <ListPreference
+        android:title="Download Feed"
+        android:summary="Network connectivity required to download the feed."
+        android:key="listPref"
+        android:defaultValue="Wi-Fi"
+        android:entries="@array/listArray"
+        android:entryValues="@array/listValues"
+     />
+    <CheckBoxPreference
+        android:title="Show Summaries"
+        android:defaultValue="false"
+        android:summary="Show a summary for each link."
+        android:key="summaryPref" />
+</PreferenceScreen>
diff --git a/samples/training/network-usage/src/com/example/android/networkusage/NetworkActivity.java b/samples/training/network-usage/src/com/example/android/networkusage/NetworkActivity.java
new file mode 100644
index 0000000..b7ed331
--- /dev/null
+++ b/samples/training/network-usage/src/com/example/android/networkusage/NetworkActivity.java
@@ -0,0 +1,321 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.example.android.networkusage;
+
+import android.app.Activity;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.SharedPreferences;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.webkit.WebView;
+import android.widget.Toast;
+
+import com.example.android.networkusage.R;
+import com.example.android.networkusage.StackOverflowXmlParser.Entry;
+
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.List;
+
+
+/**
+ * Main Activity for the sample application.
+ *
+ * This activity does the following:
+ *
+ * o Presents a WebView screen to users. This WebView has a list of HTML links to the latest
+ *   questions tagged 'android' on stackoverflow.com.
+ *
+ * o Parses the StackOverflow XML feed using XMLPullParser.
+ *
+ * o Uses AsyncTask to download and process the XML feed.
+ *
+ * o Monitors preferences and the device's network connection to determine whether
+ *   to refresh the WebView content.
+ */
+public class NetworkActivity extends Activity {
+    public static final String WIFI = "Wi-Fi";
+    public static final String ANY = "Any";
+    private static final String URL =
+            "http://stackoverflow.com/feeds/tag?tagnames=android&sort=newest";
+
+    // Whether there is a Wi-Fi connection.
+    private static boolean wifiConnected = false;
+    // Whether there is a mobile connection.
+    private static boolean mobileConnected = false;
+    // Whether the display should be refreshed.
+    public static boolean refreshDisplay = true;
+
+    // The user's current network preference setting.
+    public static String sPref = null;
+
+    // The BroadcastReceiver that tracks network connectivity changes.
+    private NetworkReceiver receiver = new NetworkReceiver();
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Register BroadcastReceiver to track connection changes.
+        IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
+        receiver = new NetworkReceiver();
+        this.registerReceiver(receiver, filter);
+    }
+
+    // Refreshes the display if the network connection and the
+    // pref settings allow it.
+    @Override
+    public void onStart() {
+        super.onStart();
+
+        // Gets the user's network preference settings
+        SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
+
+        // Retrieves a string value for the preferences. The second parameter
+        // is the default value to use if a preference value is not found.
+        sPref = sharedPrefs.getString("listPref", "Wi-Fi");
+
+        updateConnectedFlags();
+
+        // Only loads the page if refreshDisplay is true. Otherwise, keeps previous
+        // display. For example, if the user has set "Wi-Fi only" in prefs and the
+        // device loses its Wi-Fi connection midway through the user using the app,
+        // you don't want to refresh the display--this would force the display of
+        // an error page instead of stackoverflow.com content.
+        if (refreshDisplay) {
+            loadPage();
+        }
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        if (receiver != null) {
+            this.unregisterReceiver(receiver);
+        }
+    }
+
+    // Checks the network connection and sets the wifiConnected and mobileConnected
+    // variables accordingly.
+    private void updateConnectedFlags() {
+        ConnectivityManager connMgr =
+                (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
+
+        NetworkInfo activeInfo = connMgr.getActiveNetworkInfo();
+        if (activeInfo != null && activeInfo.isConnected()) {
+            wifiConnected = activeInfo.getType() == ConnectivityManager.TYPE_WIFI;
+            mobileConnected = activeInfo.getType() == ConnectivityManager.TYPE_MOBILE;
+        } else {
+            wifiConnected = false;
+            mobileConnected = false;
+        }
+    }
+
+    // Uses AsyncTask subclass to download the XML feed from stackoverflow.com.
+    // This avoids UI lock up. To prevent network operations from
+    // causing a delay that results in a poor user experience, always perform
+    // network operations on a separate thread from the UI.
+    private void loadPage() {
+        if (((sPref.equals(ANY)) && (wifiConnected || mobileConnected))
+                || ((sPref.equals(WIFI)) && (wifiConnected))) {
+            // AsyncTask subclass
+            new DownloadXmlTask().execute(URL);
+        } else {
+            showErrorPage();
+        }
+    }
+
+    // Displays an error if the app is unable to load content.
+    private void showErrorPage() {
+        setContentView(R.layout.main);
+
+        // The specified network connection is not available. Displays error message.
+        WebView myWebView = (WebView) findViewById(R.id.webview);
+        myWebView.loadData(getResources().getString(R.string.connection_error),
+                "text/html", null);
+    }
+
+    // Populates the activity's options menu.
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        MenuInflater inflater = getMenuInflater();
+        inflater.inflate(R.menu.mainmenu, menu);
+        return true;
+    }
+
+    // Handles the user's menu selection.
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+        case R.id.settings:
+                Intent settingsActivity = new Intent(getBaseContext(), SettingsActivity.class);
+                startActivity(settingsActivity);
+                return true;
+        case R.id.refresh:
+                loadPage();
+                return true;
+        default:
+                return super.onOptionsItemSelected(item);
+        }
+    }
+
+    // Implementation of AsyncTask used to download XML feed from stackoverflow.com.
+    private class DownloadXmlTask extends AsyncTask<String, Void, String> {
+
+        @Override
+        protected String doInBackground(String... urls) {
+            try {
+                return loadXmlFromNetwork(urls[0]);
+            } catch (IOException e) {
+                return getResources().getString(R.string.connection_error);
+            } catch (XmlPullParserException e) {
+                return getResources().getString(R.string.xml_error);
+            }
+        }
+
+        @Override
+        protected void onPostExecute(String result) {
+            setContentView(R.layout.main);
+            // Displays the HTML string in the UI via a WebView
+            WebView myWebView = (WebView) findViewById(R.id.webview);
+            myWebView.loadData(result, "text/html", null);
+        }
+    }
+
+    // Uploads XML from stackoverflow.com, parses it, and combines it with
+    // HTML markup. Returns HTML string.
+    private String loadXmlFromNetwork(String urlString) throws XmlPullParserException, IOException {
+        InputStream stream = null;
+        StackOverflowXmlParser stackOverflowXmlParser = new StackOverflowXmlParser();
+        List<Entry> entries = null;
+        String title = null;
+        String url = null;
+        String summary = null;
+        Calendar rightNow = Calendar.getInstance();
+        DateFormat formatter = new SimpleDateFormat("MMM dd h:mmaa");
+
+        // Checks whether the user set the preference to include summary text
+        SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
+        boolean pref = sharedPrefs.getBoolean("summaryPref", false);
+
+        StringBuilder htmlString = new StringBuilder();
+        htmlString.append("<h3>" + getResources().getString(R.string.page_title) + "</h3>");
+        htmlString.append("<em>" + getResources().getString(R.string.updated) + " " +
+                formatter.format(rightNow.getTime()) + "</em>");
+
+        try {
+            stream = downloadUrl(urlString);
+            entries = stackOverflowXmlParser.parse(stream);
+        // Makes sure that the InputStream is closed after the app is
+        // finished using it.
+        } finally {
+            if (stream != null) {
+                stream.close();
+            }
+        }
+
+        // StackOverflowXmlParser returns a List (called "entries") of Entry objects.
+        // Each Entry object represents a single post in the XML feed.
+        // This section processes the entries list to combine each entry with HTML markup.
+        // Each entry is displayed in the UI as a link that optionally includes
+        // a text summary.
+        for (Entry entry : entries) {
+            htmlString.append("<p><a href='");
+            htmlString.append(entry.link);
+            htmlString.append("'>" + entry.title + "</a></p>");
+            // If the user set the preference to include summary text,
+            // adds it to the display.
+            if (pref) {
+                htmlString.append(entry.summary);
+            }
+        }
+        return htmlString.toString();
+    }
+
+    // Given a string representation of a URL, sets up a connection and gets
+    // an input stream.
+    private InputStream downloadUrl(String urlString) throws IOException {
+        URL url = new URL(urlString);
+        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+        conn.setReadTimeout(10000 /* milliseconds */);
+        conn.setConnectTimeout(15000 /* milliseconds */);
+        conn.setRequestMethod("GET");
+        conn.setDoInput(true);
+        // Starts the query
+        conn.connect();
+        InputStream stream = conn.getInputStream();
+        return stream;
+    }
+
+    /**
+     *
+     * This BroadcastReceiver intercepts the android.net.ConnectivityManager.CONNECTIVITY_ACTION,
+     * which indicates a connection change. It checks whether the type is TYPE_WIFI.
+     * If it is, it checks whether Wi-Fi is connected and sets the wifiConnected flag in the
+     * main activity accordingly.
+     *
+     */
+    public class NetworkReceiver extends BroadcastReceiver {
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            ConnectivityManager connMgr =
+                    (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+            NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
+
+            // Checks the user prefs and the network connection. Based on the result, decides
+            // whether
+            // to refresh the display or keep the current display.
+            // If the userpref is Wi-Fi only, checks to see if the device has a Wi-Fi connection.
+            if (WIFI.equals(sPref) && networkInfo != null
+                    && networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
+                // If device has its Wi-Fi connection, sets refreshDisplay
+                // to true. This causes the display to be refreshed when the user
+                // returns to the app.
+                refreshDisplay = true;
+                Toast.makeText(context, R.string.wifi_connected, Toast.LENGTH_SHORT).show();
+
+                // If the setting is ANY network and there is a network connection
+                // (which by process of elimination would be mobile), sets refreshDisplay to true.
+            } else if (ANY.equals(sPref) && networkInfo != null) {
+                refreshDisplay = true;
+
+                // Otherwise, the app can't download content--either because there is no network
+                // connection (mobile or Wi-Fi), or because the pref setting is WIFI, and there
+                // is no Wi-Fi connection.
+                // Sets refreshDisplay to false.
+            } else {
+                refreshDisplay = false;
+                Toast.makeText(context, R.string.lost_connection, Toast.LENGTH_SHORT).show();
+            }
+        }
+    }
+}
diff --git a/samples/training/network-usage/src/com/example/android/networkusage/SettingsActivity.java b/samples/training/network-usage/src/com/example/android/networkusage/SettingsActivity.java
new file mode 100644
index 0000000..73b72d2
--- /dev/null
+++ b/samples/training/network-usage/src/com/example/android/networkusage/SettingsActivity.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.example.android.networkusage;
+
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
+import android.os.Bundle;
+import android.preference.PreferenceActivity;
+import com.example.android.networkusage.R;
+
+/**
+ * This preference activity has in its manifest declaration an intent filter for
+ * the ACTION_MANAGE_NETWORK_USAGE action. This activity provides a settings UI
+ * for users to specify network settings to control data usage.
+ */
+public class SettingsActivity extends PreferenceActivity
+        implements
+            OnSharedPreferenceChangeListener {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Loads the XML preferences file.
+        addPreferencesFromResource(R.xml.preferences);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+
+        // Registers a callback to be invoked whenever a user changes a preference.
+        getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+
+        // Unregisters the listener set in onResume().
+        // It's best practice to unregister listeners when your app isn't using them to cut down on
+        // unnecessary system overhead. You do this in onPause().
+        getPreferenceScreen()
+                .getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
+    }
+
+    // Fires when the user changes a preference.
+    @Override
+    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
+        // Sets refreshDisplay to true so that when the user returns to the main
+        // activity, the display refreshes to reflect the new settings.
+        NetworkActivity.refreshDisplay = true;
+    }
+}
diff --git a/samples/training/network-usage/src/com/example/android/networkusage/StackOverflowXmlParser.java b/samples/training/network-usage/src/com/example/android/networkusage/StackOverflowXmlParser.java
new file mode 100644
index 0000000..6a01098
--- /dev/null
+++ b/samples/training/network-usage/src/com/example/android/networkusage/StackOverflowXmlParser.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.example.android.networkusage;
+
+import android.util.Xml;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * This class parses XML feeds from stackoverflow.com.
+ * Given an InputStream representation of a feed, it returns a List of entries,
+ * where each list element represents a single entry (post) in the XML feed.
+ */
+public class StackOverflowXmlParser {
+    private static final String ns = null;
+
+    // We don't use namespaces
+
+    public List<Entry> parse(InputStream in) throws XmlPullParserException, IOException {
+        try {
+            XmlPullParser parser = Xml.newPullParser();
+            parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
+            parser.setInput(in, null);
+            parser.nextTag();
+            return readFeed(parser);
+        } finally {
+            in.close();
+        }
+    }
+
+    private List<Entry> readFeed(XmlPullParser parser) throws XmlPullParserException, IOException {
+        List<Entry> entries = new ArrayList<Entry>();
+
+        parser.require(XmlPullParser.START_TAG, ns, "feed");
+        while (parser.next() != XmlPullParser.END_TAG) {
+            if (parser.getEventType() != XmlPullParser.START_TAG) {
+                continue;
+            }
+            String name = parser.getName();
+            // Starts by looking for the entry tag
+            if (name.equals("entry")) {
+                entries.add(readEntry(parser));
+            } else {
+                skip(parser);
+            }
+        }
+        return entries;
+    }
+
+    // This class represents a single entry (post) in the XML feed.
+    // It includes the data members "title," "link," and "summary."
+    public static class Entry {
+        public final String title;
+        public final String link;
+        public final String summary;
+
+        private Entry(String title, String summary, String link) {
+            this.title = title;
+            this.summary = summary;
+            this.link = link;
+        }
+    }
+
+    // Parses the contents of an entry. If it encounters a title, summary, or link tag, hands them
+    // off
+    // to their respective &quot;read&quot; methods for processing. Otherwise, skips the tag.
+    private Entry readEntry(XmlPullParser parser) throws XmlPullParserException, IOException {
+        parser.require(XmlPullParser.START_TAG, ns, "entry");
+        String title = null;
+        String summary = null;
+        String link = null;
+        while (parser.next() != XmlPullParser.END_TAG) {
+            if (parser.getEventType() != XmlPullParser.START_TAG) {
+                continue;
+            }
+            String name = parser.getName();
+            if (name.equals("title")) {
+                title = readTitle(parser);
+            } else if (name.equals("summary")) {
+                summary = readSummary(parser);
+            } else if (name.equals("link")) {
+                link = readLink(parser);
+            } else {
+                skip(parser);
+            }
+        }
+        return new Entry(title, summary, link);
+    }
+
+    // Processes title tags in the feed.
+    private String readTitle(XmlPullParser parser) throws IOException, XmlPullParserException {
+        parser.require(XmlPullParser.START_TAG, ns, "title");
+        String title = readText(parser);
+        parser.require(XmlPullParser.END_TAG, ns, "title");
+        return title;
+    }
+
+    // Processes link tags in the feed.
+    private String readLink(XmlPullParser parser) throws IOException, XmlPullParserException {
+        String link = "";
+        parser.require(XmlPullParser.START_TAG, ns, "link");
+        String tag = parser.getName();
+        String relType = parser.getAttributeValue(null, "rel");
+        if (tag.equals("link")) {
+            if (relType.equals("alternate")) {
+                link = parser.getAttributeValue(null, "href");
+                parser.nextTag();
+            }
+        }
+        parser.require(XmlPullParser.END_TAG, ns, "link");
+        return link;
+    }
+
+    // Processes summary tags in the feed.
+    private String readSummary(XmlPullParser parser) throws IOException, XmlPullParserException {
+        parser.require(XmlPullParser.START_TAG, ns, "summary");
+        String summary = readText(parser);
+        parser.require(XmlPullParser.END_TAG, ns, "summary");
+        return summary;
+    }
+
+    // For the tags title and summary, extracts their text values.
+    private String readText(XmlPullParser parser) throws IOException, XmlPullParserException {
+        String result = "";
+        if (parser.next() == XmlPullParser.TEXT) {
+            result = parser.getText();
+            parser.nextTag();
+        }
+        return result;
+    }
+
+    // Skips tags the parser isn't interested in. Uses depth to handle nested tags. i.e.,
+    // if the next tag after a START_TAG isn't a matching END_TAG, it keeps going until it
+    // finds the matching END_TAG (as indicated by the value of "depth" being 0).
+    private void skip(XmlPullParser parser) throws XmlPullParserException, IOException {
+        if (parser.getEventType() != XmlPullParser.START_TAG) {
+            throw new IllegalStateException();
+        }
+        int depth = 1;
+        while (depth != 0) {
+            switch (parser.next()) {
+            case XmlPullParser.END_TAG:
+                    depth--;
+                    break;
+            case XmlPullParser.START_TAG:
+                    depth++;
+                    break;
+            }
+        }
+    }
+}
diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java
index 2167c49..1f3f172b 100644
--- a/services/java/com/android/server/BackupManagerService.java
+++ b/services/java/com/android/server/BackupManagerService.java
@@ -2450,6 +2450,21 @@
                 }
             }
 
+            // Cull any packages that run as system-domain uids but do not define their
+            // own backup agents
+            for (int i = 0; i < packagesToBackup.size(); ) {
+                PackageInfo pkg = packagesToBackup.get(i);
+                if ((pkg.applicationInfo.uid < Process.FIRST_APPLICATION_UID)
+                        && (pkg.applicationInfo.backupAgentName == null)) {
+                    if (MORE_DEBUG) {
+                        Slog.i(TAG, "... ignoring non-agent system package " + pkg.packageName);
+                    }
+                    packagesToBackup.remove(i);
+                } else {
+                    i++;
+                }
+            }
+
             FileOutputStream ofstream = new FileOutputStream(mOutputFile.getFileDescriptor());
             OutputStream out = null;
 
@@ -3664,29 +3679,37 @@
                                 // Fall through to IGNORE if the app explicitly disallows backup
                                 final int flags = pkgInfo.applicationInfo.flags;
                                 if ((flags & ApplicationInfo.FLAG_ALLOW_BACKUP) != 0) {
-                                    // Verify signatures against any installed version; if they
-                                    // don't match, then we fall though and ignore the data.  The
-                                    // signatureMatch() method explicitly ignores the signature
-                                    // check for packages installed on the system partition, because
-                                    // such packages are signed with the platform cert instead of
-                                    // the app developer's cert, so they're different on every
-                                    // device.
-                                    if (signaturesMatch(sigs, pkgInfo)) {
-                                        if (pkgInfo.versionCode >= version) {
-                                            Slog.i(TAG, "Sig + version match; taking data");
-                                            policy = RestorePolicy.ACCEPT;
+                                    // Restore system-uid-space packages only if they have
+                                    // defined a custom backup agent
+                                    if ((pkgInfo.applicationInfo.uid >= Process.FIRST_APPLICATION_UID)
+                                            || (pkgInfo.applicationInfo.backupAgentName != null)) {
+                                        // Verify signatures against any installed version; if they
+                                        // don't match, then we fall though and ignore the data.  The
+                                        // signatureMatch() method explicitly ignores the signature
+                                        // check for packages installed on the system partition, because
+                                        // such packages are signed with the platform cert instead of
+                                        // the app developer's cert, so they're different on every
+                                        // device.
+                                        if (signaturesMatch(sigs, pkgInfo)) {
+                                            if (pkgInfo.versionCode >= version) {
+                                                Slog.i(TAG, "Sig + version match; taking data");
+                                                policy = RestorePolicy.ACCEPT;
+                                            } else {
+                                                // The data is from a newer version of the app than
+                                                // is presently installed.  That means we can only
+                                                // use it if the matching apk is also supplied.
+                                                Slog.d(TAG, "Data version " + version
+                                                        + " is newer than installed version "
+                                                        + pkgInfo.versionCode + " - requiring apk");
+                                                policy = RestorePolicy.ACCEPT_IF_APK;
+                                            }
                                         } else {
-                                            // The data is from a newer version of the app than
-                                            // is presently installed.  That means we can only
-                                            // use it if the matching apk is also supplied.
-                                            Slog.d(TAG, "Data version " + version
-                                                    + " is newer than installed version "
-                                                    + pkgInfo.versionCode + " - requiring apk");
-                                            policy = RestorePolicy.ACCEPT_IF_APK;
+                                            Slog.w(TAG, "Restore manifest signatures do not match "
+                                                    + "installed application for " + info.packageName);
                                         }
                                     } else {
-                                        Slog.w(TAG, "Restore manifest signatures do not match "
-                                                + "installed application for " + info.packageName);
+                                        Slog.w(TAG, "Package " + info.packageName
+                                                + " is system level with no agent");
                                     }
                                 } else {
                                     if (DEBUG) Slog.i(TAG, "Restore manifest from "
diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java
index 2918dbc..8c1581c 100644
--- a/services/java/com/android/server/LocationManagerService.java
+++ b/services/java/com/android/server/LocationManagerService.java
@@ -32,6 +32,7 @@
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.Signature;
 import android.content.res.Resources;
+import android.database.ContentObserver;
 import android.database.Cursor;
 import android.location.Address;
 import android.location.Criteria;
@@ -79,6 +80,8 @@
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Observable;
@@ -109,6 +112,9 @@
     private static final String INSTALL_LOCATION_PROVIDER =
         android.Manifest.permission.INSTALL_LOCATION_PROVIDER;
 
+    private static final String BLACKLIST_CONFIG_NAME = "locationPackagePrefixBlacklist";
+    private static final String WHITELIST_CONFIG_NAME = "locationPackagePrefixWhitelist";
+
     // Location Providers may sometimes deliver location updates
     // slightly faster that requested - provide grace period so
     // we don't unnecessarily filter events that are otherwise on
@@ -193,6 +199,10 @@
 
     private int mNetworkState = LocationProvider.TEMPORARILY_UNAVAILABLE;
 
+    // for prefix blacklist
+    private String[] mWhitelist = new String[0];
+    private String[] mBlacklist = new String[0];
+
     // for Settings change notification
     private ContentQueryMap mSettings;
 
@@ -205,20 +215,23 @@
         final PendingIntent mPendingIntent;
         final Object mKey;
         final HashMap<String,UpdateRecord> mUpdateRecords = new HashMap<String,UpdateRecord>();
+        final String mPackageName;
 
         int mPendingBroadcasts;
         String mRequiredPermissions;
 
-        Receiver(ILocationListener listener) {
+        Receiver(ILocationListener listener, String packageName) {
             mListener = listener;
             mPendingIntent = null;
             mKey = listener.asBinder();
+            mPackageName = packageName;
         }
 
-        Receiver(PendingIntent intent) {
+        Receiver(PendingIntent intent, String packageName) {
             mPendingIntent = intent;
             mListener = null;
             mKey = intent;
+            mPackageName = packageName;
         }
 
         @Override
@@ -601,6 +614,7 @@
 
         // Load providers
         loadProviders();
+        loadBlacklist();
 
         // Register for Network (Wifi or Mobile) updates
         IntentFilter intentFilter = new IntentFilter();
@@ -1110,11 +1124,11 @@
         }
     }
 
-    private Receiver getReceiver(ILocationListener listener) {
+    private Receiver getReceiver(ILocationListener listener, String packageName) {
         IBinder binder = listener.asBinder();
         Receiver receiver = mReceivers.get(binder);
         if (receiver == null) {
-            receiver = new Receiver(listener);
+            receiver = new Receiver(listener, packageName);
             mReceivers.put(binder, receiver);
 
             try {
@@ -1129,10 +1143,10 @@
         return receiver;
     }
 
-    private Receiver getReceiver(PendingIntent intent) {
+    private Receiver getReceiver(PendingIntent intent, String packageName) {
         Receiver receiver = mReceivers.get(intent);
         if (receiver == null) {
-            receiver = new Receiver(intent);
+            receiver = new Receiver(intent, packageName);
             mReceivers.put(intent, receiver);
         }
         return receiver;
@@ -1157,7 +1171,9 @@
     }
 
     public void requestLocationUpdates(String provider, Criteria criteria,
-        long minTime, float minDistance, boolean singleShot, ILocationListener listener) {
+        long minTime, float minDistance, boolean singleShot, ILocationListener listener,
+        String packageName) {
+        checkPackageName(Binder.getCallingUid(), packageName);
         if (criteria != null) {
             // FIXME - should we consider using multiple providers simultaneously
             // rather than only the best one?
@@ -1170,7 +1186,7 @@
         try {
             synchronized (mLock) {
                 requestLocationUpdatesLocked(provider, minTime, minDistance, singleShot,
-                        getReceiver(listener));
+                        getReceiver(listener, packageName));
             }
         } catch (SecurityException se) {
             throw se;
@@ -1194,7 +1210,9 @@
     }
 
     public void requestLocationUpdatesPI(String provider, Criteria criteria,
-            long minTime, float minDistance, boolean singleShot, PendingIntent intent) {
+            long minTime, float minDistance, boolean singleShot, PendingIntent intent,
+            String packageName) {
+        checkPackageName(Binder.getCallingUid(), packageName);
         validatePendingIntent(intent);
         if (criteria != null) {
             // FIXME - should we consider using multiple providers simultaneously
@@ -1208,7 +1226,7 @@
         try {
             synchronized (mLock) {
                 requestLocationUpdatesLocked(provider, minTime, minDistance, singleShot,
-                        getReceiver(intent));
+                        getReceiver(intent, packageName));
             }
         } catch (SecurityException se) {
             throw se;
@@ -1270,10 +1288,10 @@
         }
     }
 
-    public void removeUpdates(ILocationListener listener) {
+    public void removeUpdates(ILocationListener listener, String packageName) {
         try {
             synchronized (mLock) {
-                removeUpdatesLocked(getReceiver(listener));
+                removeUpdatesLocked(getReceiver(listener, packageName));
             }
         } catch (SecurityException se) {
             throw se;
@@ -1284,10 +1302,10 @@
         }
     }
 
-    public void removeUpdatesPI(PendingIntent intent) {
+    public void removeUpdatesPI(PendingIntent intent, String packageName) {
         try {
             synchronized (mLock) {
-                removeUpdatesLocked(getReceiver(intent));
+                removeUpdatesLocked(getReceiver(intent, packageName));
             }
         } catch (SecurityException se) {
             throw se;
@@ -1446,15 +1464,17 @@
         final long mExpiration;
         final PendingIntent mIntent;
         final Location mLocation;
+        final String mPackageName;
 
         public ProximityAlert(int uid, double latitude, double longitude,
-            float radius, long expiration, PendingIntent intent) {
+            float radius, long expiration, PendingIntent intent, String packageName) {
             mUid = uid;
             mLatitude = latitude;
             mLongitude = longitude;
             mRadius = radius;
             mExpiration = expiration;
             mIntent = intent;
+            mPackageName = packageName;
 
             mLocation = new Location("");
             mLocation.setLatitude(latitude);
@@ -1522,6 +1542,10 @@
                 PendingIntent intent = alert.getIntent();
                 long expiration = alert.getExpiration();
 
+                if (inBlacklist(alert.mPackageName)) {
+                    continue;
+                }
+
                 if ((expiration == -1) || (now <= expiration)) {
                     boolean entered = mProximitiesEntered.contains(alert);
                     boolean inProximity =
@@ -1632,11 +1656,12 @@
     }
 
     public void addProximityAlert(double latitude, double longitude,
-        float radius, long expiration, PendingIntent intent) {
+        float radius, long expiration, PendingIntent intent, String packageName) {
         validatePendingIntent(intent);
         try {
             synchronized (mLock) {
-                addProximityAlertLocked(latitude, longitude, radius, expiration, intent);
+                addProximityAlertLocked(latitude, longitude, radius, expiration, intent,
+                        packageName);
             }
         } catch (SecurityException se) {
             throw se;
@@ -1648,7 +1673,7 @@
     }
 
     private void addProximityAlertLocked(double latitude, double longitude,
-        float radius, long expiration, PendingIntent intent) {
+        float radius, long expiration, PendingIntent intent, String packageName) {
         if (LOCAL_LOGV) {
             Slog.v(TAG, "addProximityAlert: latitude = " + latitude +
                     ", longitude = " + longitude +
@@ -1656,6 +1681,8 @@
                     ", intent = " + intent);
         }
 
+        checkPackageName(Binder.getCallingUid(), packageName);
+
         // Require ability to access all providers for now
         if (!isAllowedProviderSafe(LocationManager.GPS_PROVIDER) ||
             !isAllowedProviderSafe(LocationManager.NETWORK_PROVIDER)) {
@@ -1666,12 +1693,12 @@
             expiration += System.currentTimeMillis();
         }
         ProximityAlert alert = new ProximityAlert(Binder.getCallingUid(),
-                latitude, longitude, radius, expiration, intent);
+                latitude, longitude, radius, expiration, intent, packageName);
         mProximityAlerts.put(intent, alert);
 
         if (mProximityReceiver == null) {
             mProximityListener = new ProximityListener();
-            mProximityReceiver = new Receiver(mProximityListener);
+            mProximityReceiver = new Receiver(mProximityListener, packageName);
 
             for (int i = mProviders.size() - 1; i >= 0; i--) {
                 LocationProviderInterface provider = mProviders.get(i);
@@ -1787,13 +1814,13 @@
         return isAllowedBySettingsLocked(provider);
     }
 
-    public Location getLastKnownLocation(String provider) {
+    public Location getLastKnownLocation(String provider, String packageName) {
         if (LOCAL_LOGV) {
             Slog.v(TAG, "getLastKnownLocation: " + provider);
         }
         try {
             synchronized (mLock) {
-                return _getLastKnownLocationLocked(provider);
+                return _getLastKnownLocationLocked(provider, packageName);
             }
         } catch (SecurityException se) {
             throw se;
@@ -1803,8 +1830,9 @@
         }
     }
 
-    private Location _getLastKnownLocationLocked(String provider) {
+    private Location _getLastKnownLocationLocked(String provider, String packageName) {
         checkPermissionsSafe(provider, null);
+        checkPackageName(Binder.getCallingUid(), packageName);
 
         LocationProviderInterface p = mProvidersByName.get(provider);
         if (p == null) {
@@ -1815,6 +1843,10 @@
             return null;
         }
 
+        if (inBlacklist(packageName)) {
+            return null;
+        }
+
         return mLastKnownLocation.get(provider);
     }
 
@@ -1877,6 +1909,10 @@
             Receiver receiver = r.mReceiver;
             boolean receiverDead = false;
 
+            if (inBlacklist(receiver.mPackageName)) {
+                continue;
+            }
+
             Location lastLoc = r.mLastFixBroadcast;
             if ((lastLoc == null) || shouldBroadcastSafe(location, lastLoc, r)) {
                 if (lastLoc == null) {
@@ -2315,6 +2351,113 @@
         }
     }
 
+    public class BlacklistObserver extends ContentObserver {
+        public BlacklistObserver(Handler handler) {
+            super(handler);
+        }
+        @Override
+        public void onChange(boolean selfChange) {
+            reloadBlacklist();
+        }
+    }
+
+    private void loadBlacklist() {
+        // Register for changes
+        BlacklistObserver observer = new BlacklistObserver(mLocationHandler);
+        mContext.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(
+                BLACKLIST_CONFIG_NAME), false, observer);
+        mContext.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(
+                WHITELIST_CONFIG_NAME), false, observer);
+        reloadBlacklist();
+    }
+
+    private void reloadBlacklist() {
+        String blacklist[] = getStringArray(BLACKLIST_CONFIG_NAME);
+        String whitelist[] = getStringArray(WHITELIST_CONFIG_NAME);
+        synchronized (mLock) {
+            mWhitelist = whitelist;
+            Slog.i(TAG, "whitelist: " + arrayToString(mWhitelist));
+            mBlacklist = blacklist;
+            Slog.i(TAG, "blacklist: " + arrayToString(mBlacklist));
+        }
+    }
+
+    private static String arrayToString(String[] array) {
+        StringBuilder s = new StringBuilder();
+        s.append('[');
+        boolean first = true;
+        for (String a : array) {
+            if (!first) s.append(',');
+            first = false;
+            s.append(a);
+        }
+        s.append(']');
+        return s.toString();
+    }
+
+    private String[] getStringArray(String key) {
+        String flatString = Settings.Secure.getString(mContext.getContentResolver(), key);
+        if (flatString == null) {
+            return new String[0];
+        }
+        String[] splitStrings = flatString.split(",");
+        ArrayList<String> result = new ArrayList<String>();
+        for (String pkg : splitStrings) {
+            pkg = pkg.trim();
+            if (pkg.isEmpty()) {
+                continue;
+            }
+            result.add(pkg);
+        }
+        return result.toArray(new String[result.size()]);
+    }
+
+    /**
+     * Return true if in blacklist, and not in whitelist.
+     */
+    private boolean inBlacklist(String packageName) {
+        synchronized (mLock) {
+            for (String black : mBlacklist) {
+                if (packageName.startsWith(black)) {
+                    if (inWhitelist(packageName)) {
+                        continue;
+                    } else {
+                        if (LOCAL_LOGV) Log.d(TAG, "dropping location (blacklisted): "
+                                + packageName + " matches " + black);
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Return true if any of packages are in whitelist
+     */
+    private boolean inWhitelist(String pkg) {
+        synchronized (mLock) {
+            for (String white : mWhitelist) {
+                if (pkg.startsWith(white)) return true;
+            }
+        }
+        return false;
+    }
+
+    private void checkPackageName(int uid, String packageName) {
+        if (packageName == null) {
+            throw new SecurityException("packageName cannot be null");
+        }
+        String[] packages = mPackageManager.getPackagesForUid(uid);
+        if (packages == null) {
+            throw new SecurityException("invalid UID " + uid);
+        }
+        for (String pkg : packages) {
+            if (packageName.equals(pkg)) return;
+        }
+        throw new SecurityException("invalid package name");
+    }
+
     private void log(String log) {
         if (Log.isLoggable(TAG, Log.VERBOSE)) {
             Slog.d(TAG, log);
@@ -2346,6 +2489,8 @@
                     j.getValue().dump(pw, "        ");
                 }
             }
+            pw.println("  Package blacklist:" + arrayToString(mBlacklist));
+            pw.println("  Package whitelist:" + arrayToString(mWhitelist));
             pw.println("  Records by Provider:");
             for (Map.Entry<String, ArrayList<UpdateRecord>> i
                     : mRecordsByProvider.entrySet()) {
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 9dd4a91..6d0b26f 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -114,6 +114,8 @@
                 : Integer.parseInt(factoryTestStr);
         final boolean headless = "1".equals(SystemProperties.get("ro.config.headless", "0"));
 
+        AccountManagerService accountManager = null;
+        ContentService contentService = null;
         LightsService lights = null;
         PowerManagerService power = null;
         BatteryService battery = null;
@@ -190,14 +192,14 @@
             // The AccountManager must come before the ContentService
             try {
                 Slog.i(TAG, "Account Manager");
-                ServiceManager.addService(Context.ACCOUNT_SERVICE,
-                        new AccountManagerService(context));
+                accountManager = new AccountManagerService(context);
+                ServiceManager.addService(Context.ACCOUNT_SERVICE, accountManager);
             } catch (Throwable e) {
                 Slog.e(TAG, "Failure starting Account Manager", e);
             }
 
             Slog.i(TAG, "Content Manager");
-            ContentService.main(context,
+            contentService = ContentService.main(context,
                     factoryTest == SystemServer.FACTORY_TEST_LOW_LEVEL);
 
             Slog.i(TAG, "System Content Providers");
@@ -466,6 +468,20 @@
             }
 
             try {
+                if (accountManager != null)
+                    accountManager.systemReady();
+            } catch (Throwable e) {
+                reportWtf("making Account Manager Service ready", e);
+            }
+
+            try {
+                if (contentService != null)
+                    contentService.systemReady();
+            } catch (Throwable e) {
+                reportWtf("making Content Service ready", e);
+            }
+
+            try {
                 Slog.i(TAG, "Notification Manager");
                 notification = new NotificationManagerService(context, statusBar, lights);
                 ServiceManager.addService(Context.NOTIFICATION_SERVICE, notification);
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index 3501e47..75b3f04 100644
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -8833,7 +8833,7 @@
         // little while.
         mHandler.post(new Runnable() {
             public void run() {
-                updateExternalMediaStatusInner(mediaStatus, reportStatus);
+                updateExternalMediaStatusInner(mediaStatus, reportStatus, true);
             }
         });
     }
@@ -8843,7 +8843,7 @@
      * Should block until all the ASEC containers are finished being scanned.
      */
     public void scanAvailableAsecs() {
-        updateExternalMediaStatusInner(true, false);
+        updateExternalMediaStatusInner(true, false, false);
     }
 
     /*
@@ -8852,7 +8852,8 @@
      * Please note that we always have to report status if reportStatus has been
      * set to true especially when unloading packages.
      */
-    private void updateExternalMediaStatusInner(boolean isMounted, boolean reportStatus) {
+    private void updateExternalMediaStatusInner(boolean isMounted, boolean reportStatus,
+            boolean externalStorage) {
         // Collection of uids
         int uidArr[] = null;
         // Collection of stale containers
@@ -8890,6 +8891,14 @@
                         continue;
                     }
 
+                    /*
+                     * Skip packages that are not external if we're unmounting
+                     * external storage.
+                     */
+                    if (externalStorage && !isMounted && !isExternal(ps)) {
+                        continue;
+                    }
+
                     final AsecInstallArgs args = new AsecInstallArgs(cid, isForwardLocked(ps));
                     // The package status is changed only if the code path
                     // matches between settings and the container id.
diff --git a/telephony/java/android/telephony/cdma/CdmaSmsCbProgramData.java b/telephony/java/android/telephony/cdma/CdmaSmsCbProgramData.java
index f94efd8..010ad2b 100644
--- a/telephony/java/android/telephony/cdma/CdmaSmsCbProgramData.java
+++ b/telephony/java/android/telephony/cdma/CdmaSmsCbProgramData.java
@@ -81,8 +81,8 @@
     /** Service category to modify. */
     private final int mCategory;
 
-    /** Language used for service category name (ISO 639 two character code). */
-    private final String mLanguage;
+    /** Language used for service category name (defined in BearerData.LANGUAGE_*). */
+    private final int mLanguage;
 
     /** Maximum number of messages to store for this service category. */
     private final int mMaxMessages;
@@ -94,7 +94,7 @@
     private final String mCategoryName;
 
     /** Create a new CdmaSmsCbProgramData object with the specified values. */
-    public CdmaSmsCbProgramData(int operation, int category, String language, int maxMessages,
+    public CdmaSmsCbProgramData(int operation, int category, int language, int maxMessages,
             int alertOption, String categoryName) {
         mOperation = operation;
         mCategory = category;
@@ -108,7 +108,7 @@
     CdmaSmsCbProgramData(Parcel in) {
         mOperation = in.readInt();
         mCategory = in.readInt();
-        mLanguage = in.readString();
+        mLanguage = in.readInt();
         mMaxMessages = in.readInt();
         mAlertOption = in.readInt();
         mCategoryName = in.readString();
@@ -124,7 +124,7 @@
     public void writeToParcel(Parcel dest, int flags) {
         dest.writeInt(mOperation);
         dest.writeInt(mCategory);
-        dest.writeString(mLanguage);
+        dest.writeInt(mLanguage);
         dest.writeInt(mMaxMessages);
         dest.writeInt(mAlertOption);
         dest.writeString(mCategoryName);
@@ -147,10 +147,10 @@
     }
 
     /**
-     * Returns the ISO-639-1 language code for the service category name, or null if not present.
-     * @return a two-digit ISO-639-1 language code, e.g. "en" for English
+     * Returns the CDMA language code for this service category.
+     * @return one of the language values defined in BearerData.LANGUAGE_*
      */
-    public String getLanguageCode() {
+    public int getLanguage() {
         return mLanguage;
     }
 
@@ -171,7 +171,7 @@
     }
 
     /**
-     * Returns the service category name, in the language specified by {@link #getLanguageCode()}.
+     * Returns the service category name, in the language specified by {@link #getLanguage()}.
      * @return an optional service category name
      */
     public String getCategoryName() {
diff --git a/telephony/java/android/telephony/cdma/CdmaSmsCbProgramResults.java b/telephony/java/android/telephony/cdma/CdmaSmsCbProgramResults.java
new file mode 100644
index 0000000..68bfa3c
--- /dev/null
+++ b/telephony/java/android/telephony/cdma/CdmaSmsCbProgramResults.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.cdma;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * CDMA Service Category Program Results from SCPT teleservice SMS.
+ *
+ * {@hide}
+ */
+public class CdmaSmsCbProgramResults implements Parcelable {
+
+    /** Program result: success. */
+    public static final int RESULT_SUCCESS                  = 0;
+
+    /** Program result: memory limit exceeded. */
+    public static final int RESULT_MEMORY_LIMIT_EXCEEDED    = 1;
+
+    /** Program result: limit exceeded. */
+    public static final int RESULT_CATEGORY_LIMIT_EXCEEDED  = 2;
+
+    /** Program result: category already opted in. */
+    public static final int RESULT_CATEGORY_ALREADY_ADDED   = 3;
+
+    /** Program result: category already opted in. */
+    public static final int RESULT_CATEGORY_ALREADY_DELETED = 4;
+
+    /** Program result: invalid MAX_MESSAGES. */
+    public static final int RESULT_INVALID_MAX_MESSAGES     = 5;
+
+    /** Program result: invalid ALERT_OPTION. */
+    public static final int RESULT_INVALID_ALERT_OPTION     = 6;
+
+    /** Program result: invalid service category name. */
+    public static final int RESULT_INVALID_CATEGORY_NAME    = 7;
+
+    /** Program result: unspecified programming failure. */
+    public static final int RESULT_UNSPECIFIED_FAILURE      = 8;
+
+    /** Service category to modify. */
+    private final int mCategory;
+
+    /** Language used for service category name (defined in BearerData.LANGUAGE_*). */
+    private final int mLanguage;
+
+    /** Result of service category programming for this category. */
+    private final int mCategoryResult;
+
+    /** Create a new CdmaSmsCbProgramResults object with the specified values. */
+    public CdmaSmsCbProgramResults(int category, int language, int categoryResult) {
+        mCategory = category;
+        mLanguage = language;
+        mCategoryResult = categoryResult;
+    }
+
+    /** Create a new CdmaSmsCbProgramResults object from a Parcel. */
+    CdmaSmsCbProgramResults(Parcel in) {
+        mCategory = in.readInt();
+        mLanguage = in.readInt();
+        mCategoryResult = in.readInt();
+    }
+
+    /**
+     * Flatten this object into a Parcel.
+     *
+     * @param dest  The Parcel in which the object should be written.
+     * @param flags Additional flags about how the object should be written (ignored).
+     */
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(mCategory);
+        dest.writeInt(mLanguage);
+        dest.writeInt(mCategoryResult);
+    }
+
+    /**
+     * Returns the CDMA service category to modify.
+     * @return a 16-bit CDMA service category value
+     */
+    public int getCategory() {
+        return mCategory;
+    }
+
+    /**
+     * Returns the CDMA language code for this service category.
+     * @return one of the language values defined in BearerData.LANGUAGE_*
+     */
+    public int getLanguage() {
+        return mLanguage;
+    }
+
+    /**
+     * Returns the result of service programming for this category
+     * @return the result of service programming for this category
+     */
+    public int getCategoryResult() {
+        return mCategoryResult;
+    }
+
+    @Override
+    public String toString() {
+        return "CdmaSmsCbProgramResults{category=" + mCategory
+                + ", language=" + mLanguage + ", result=" + mCategoryResult + '}';
+    }
+
+    /**
+     * Describe the kinds of special objects contained in the marshalled representation.
+     * @return a bitmask indicating this Parcelable contains no special objects
+     */
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    /** Creator for unparcelling objects. */
+    public static final Parcelable.Creator<CdmaSmsCbProgramResults>
+            CREATOR = new Parcelable.Creator<CdmaSmsCbProgramResults>() {
+        @Override
+        public CdmaSmsCbProgramResults createFromParcel(Parcel in) {
+            return new CdmaSmsCbProgramResults(in);
+        }
+
+        @Override
+        public CdmaSmsCbProgramResults[] newArray(int size) {
+            return new CdmaSmsCbProgramResults[size];
+        }
+    };
+}
diff --git a/telephony/java/com/android/internal/telephony/SMSDispatcher.java b/telephony/java/com/android/internal/telephony/SMSDispatcher.java
index 07d733e..40c22a7 100644
--- a/telephony/java/com/android/internal/telephony/SMSDispatcher.java
+++ b/telephony/java/com/android/internal/telephony/SMSDispatcher.java
@@ -339,6 +339,22 @@
     }
 
     /**
+     * Grabs a wake lock and sends intent as an ordered broadcast.
+     * Used for setting a custom result receiver for CDMA SCPD.
+     *
+     * @param intent intent to broadcast
+     * @param permission Receivers are required to have this permission
+     * @param resultReceiver the result receiver to use
+     */
+    public void dispatch(Intent intent, String permission, BroadcastReceiver resultReceiver) {
+        // Hold a wake lock for WAKE_LOCK_TIMEOUT seconds, enough to give any
+        // receivers time to take their own wake locks.
+        mWakeLock.acquire(WAKE_LOCK_TIMEOUT);
+        mContext.sendOrderedBroadcast(intent, permission, resultReceiver,
+                this, Activity.RESULT_OK, null, null);
+    }
+
+    /**
      * Called when SMS send completes. Broadcasts a sentIntent on success.
      * On failure, either sets up retries or broadcasts a sentIntent with
      * the failure in the result code.
diff --git a/telephony/java/com/android/internal/telephony/cat/CatService.java b/telephony/java/com/android/internal/telephony/cat/CatService.java
index 2b37072..17574ce 100644
--- a/telephony/java/com/android/internal/telephony/cat/CatService.java
+++ b/telephony/java/com/android/internal/telephony/cat/CatService.java
@@ -169,8 +169,11 @@
             } catch (ClassCastException e) {
                 // for error handling : cast exception
                 CatLog.d(this, "Fail to parse proactive command");
-                sendTerminalResponse(mCurrntCmd.mCmdDet, ResultCode.CMD_DATA_NOT_UNDERSTOOD,
+                // Don't send Terminal Resp if command detail is not available
+                if (mCurrntCmd != null) {
+                    sendTerminalResponse(mCurrntCmd.mCmdDet, ResultCode.CMD_DATA_NOT_UNDERSTOOD,
                                      false, 0x00, null);
+                }
                 break;
             }
             if (cmdParams != null) {
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java b/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java
index e6b45f6..a6b32f9 100755
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java
@@ -20,20 +20,23 @@
 import android.app.Activity;
 import android.app.PendingIntent;
 import android.app.PendingIntent.CanceledException;
-import android.content.ContentValues;
+import android.content.BroadcastReceiver;
+import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
-import android.database.Cursor;
-import android.database.SQLException;
+import android.content.res.Resources;
+import android.os.Bundle;
 import android.os.Message;
 import android.os.SystemProperties;
 import android.preference.PreferenceManager;
 import android.provider.Telephony;
 import android.provider.Telephony.Sms.Intents;
+import android.telephony.PhoneNumberUtils;
 import android.telephony.SmsCbMessage;
 import android.telephony.SmsManager;
 import android.telephony.SmsMessage.MessageClass;
 import android.telephony.cdma.CdmaSmsCbProgramData;
+import android.telephony.cdma.CdmaSmsCbProgramResults;
 import android.util.Log;
 
 import com.android.internal.telephony.CommandsInterface;
@@ -45,16 +48,17 @@
 import com.android.internal.telephony.SmsUsageMonitor;
 import com.android.internal.telephony.TelephonyProperties;
 import com.android.internal.telephony.WspTypeDecoder;
+import com.android.internal.telephony.cdma.sms.BearerData;
+import com.android.internal.telephony.cdma.sms.CdmaSmsAddress;
 import com.android.internal.telephony.cdma.sms.SmsEnvelope;
 import com.android.internal.telephony.cdma.sms.UserData;
-import com.android.internal.util.HexDump;
 
 import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
-import java.util.List;
-
-import android.content.res.Resources;
 
 
 final class CdmaSMSDispatcher extends SMSDispatcher {
@@ -107,15 +111,16 @@
      * {@link android.telephony.cdma.CdmaSmsCbProgramData} objects.
      */
     private void handleServiceCategoryProgramData(SmsMessage sms) {
-        List<CdmaSmsCbProgramData> programDataList = sms.getSmsCbProgramData();
+        ArrayList<CdmaSmsCbProgramData> programDataList = sms.getSmsCbProgramData();
         if (programDataList == null) {
             Log.e(TAG, "handleServiceCategoryProgramData: program data list is null!");
             return;
         }
 
         Intent intent = new Intent(Intents.SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED_ACTION);
-        intent.putExtra("program_data_list", (CdmaSmsCbProgramData[]) programDataList.toArray());
-        dispatch(intent, RECEIVE_SMS_PERMISSION);
+        intent.putExtra("sender", sms.getOriginatingAddress());
+        intent.putParcelableArrayListExtra("program_data", programDataList);
+        dispatch(intent, RECEIVE_SMS_PERMISSION, mScpResultsReceiver);
     }
 
     /** {@inheritDoc} */
@@ -425,4 +430,72 @@
         }
         return false;
     }
+
+    // Receiver for Service Category Program Data results.
+    // We already ACK'd the original SCPD SMS, so this sends a new response SMS.
+    // TODO: handle retries if the RIL returns an error.
+    private final BroadcastReceiver mScpResultsReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            int rc = getResultCode();
+            boolean success = (rc == Activity.RESULT_OK) || (rc == Intents.RESULT_SMS_HANDLED);
+            if (!success) {
+                Log.e(TAG, "SCP results error: result code = " + rc);
+                return;
+            }
+            Bundle extras = getResultExtras(false);
+            if (extras == null) {
+                Log.e(TAG, "SCP results error: missing extras");
+                return;
+            }
+            String sender = extras.getString("sender");
+            if (sender == null) {
+                Log.e(TAG, "SCP results error: missing sender extra.");
+                return;
+            }
+            ArrayList<CdmaSmsCbProgramResults> results
+                    = extras.getParcelableArrayList("results");
+            if (results == null) {
+                Log.e(TAG, "SCP results error: missing results extra.");
+                return;
+            }
+
+            BearerData bData = new BearerData();
+            bData.messageType = BearerData.MESSAGE_TYPE_SUBMIT;
+            bData.messageId = SmsMessage.getNextMessageId();
+            bData.serviceCategoryProgramResults = results;
+            byte[] encodedBearerData = BearerData.encode(bData);
+
+            ByteArrayOutputStream baos = new ByteArrayOutputStream(100);
+            DataOutputStream dos = new DataOutputStream(baos);
+            try {
+                dos.writeInt(SmsEnvelope.TELESERVICE_SCPT);
+                dos.writeInt(0); //servicePresent
+                dos.writeInt(0); //serviceCategory
+                CdmaSmsAddress destAddr = CdmaSmsAddress.parse(
+                        PhoneNumberUtils.cdmaCheckAndProcessPlusCode(sender));
+                dos.write(destAddr.digitMode);
+                dos.write(destAddr.numberMode);
+                dos.write(destAddr.ton); // number_type
+                dos.write(destAddr.numberPlan);
+                dos.write(destAddr.numberOfDigits);
+                dos.write(destAddr.origBytes, 0, destAddr.origBytes.length); // digits
+                // Subaddress is not supported.
+                dos.write(0); //subaddressType
+                dos.write(0); //subaddr_odd
+                dos.write(0); //subaddr_nbr_of_digits
+                dos.write(encodedBearerData.length);
+                dos.write(encodedBearerData, 0, encodedBearerData.length);
+                // Ignore the RIL response. TODO: implement retry if SMS send fails.
+                mCm.sendCdmaSms(baos.toByteArray(), null);
+            } catch (IOException e) {
+                Log.e(TAG, "exception creating SCP results PDU", e);
+            } finally {
+                try {
+                    dos.close();
+                } catch (IOException ignored) {
+                }
+            }
+        }
+    };
 }
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
index 25cd112..564ce3b 100755
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
@@ -1378,7 +1378,8 @@
                 mZoneTime    = c.getTimeInMillis();
             }
             if (DBG) {
-                log("NITZ: tzOffset=" + tzOffset + " dst=" + dst + " zone=" + zone.getID() +
+                log("NITZ: tzOffset=" + tzOffset + " dst=" + dst + " zone=" +
+                        (zone!=null ? zone.getID() : "NULL") +
                         " iso=" + iso + " mGotCountryCode=" + mGotCountryCode +
                         " mNeedFixZone=" + mNeedFixZone);
             }
diff --git a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
index a723de3..9a0ebed 100644
--- a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
+++ b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
@@ -42,6 +42,7 @@
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
 
 import static android.telephony.SmsMessage.MessageClass;
@@ -468,7 +469,13 @@
      *  {@link com.android.internal.telephony.cdma.sms.SmsEnvelope#MESSAGE_TYPE_ACKNOWLEDGE},
     */
     /* package */ int getMessageType() {
-        return mEnvelope.messageType;
+        // NOTE: mEnvelope.messageType is not set correctly for cell broadcasts with some RILs.
+        // Use the service category parameter to detect CMAS and other cell broadcast messages.
+        if (mEnvelope.serviceCategory != 0) {
+            return SmsEnvelope.MESSAGE_TYPE_BROADCAST;
+        } else {
+            return SmsEnvelope.MESSAGE_TYPE_POINT_TO_POINT;
+        }
     }
 
     /**
@@ -775,7 +782,7 @@
      * binder-call, and hence should be thread-safe, it has been
      * synchronized.
      */
-    private synchronized static int getNextMessageId() {
+    synchronized static int getNextMessageId() {
         // Testing and dialog with partners has indicated that
         // msgId==0 is (sometimes?) treated specially by lower levels.
         // Specifically, the ID is not preserved for delivery ACKs.
@@ -991,7 +998,7 @@
      * Returns the list of service category program data, if present.
      * @return a list of CdmaSmsCbProgramData objects, or null if not present
      */
-    List<CdmaSmsCbProgramData> getSmsCbProgramData() {
+    ArrayList<CdmaSmsCbProgramData> getSmsCbProgramData() {
         return mBearerData.serviceCategoryProgramData;
     }
 }
diff --git a/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java b/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java
index 0f49762..3d88f50 100755
--- a/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java
+++ b/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java
@@ -18,9 +18,9 @@
 
 import android.content.res.Resources;
 import android.telephony.SmsCbCmasInfo;
-import android.telephony.SmsCbMessage;
 import android.telephony.SmsMessage;
 import android.telephony.cdma.CdmaSmsCbProgramData;
+import android.telephony.cdma.CdmaSmsCbProgramResults;
 import android.text.format.Time;
 import android.util.Log;
 
@@ -32,8 +32,6 @@
 import com.android.internal.util.BitwiseOutputStream;
 
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
 import java.util.TimeZone;
 
 import static android.telephony.SmsMessage.ENCODING_16BIT;
@@ -353,7 +351,14 @@
      * {@link android.telephony.cdma.CdmaSmsCbProgramData} objects containing the
      * operation(s) to perform.
      */
-    public List<CdmaSmsCbProgramData> serviceCategoryProgramData;
+    public ArrayList<CdmaSmsCbProgramData> serviceCategoryProgramData;
+
+    /**
+     * The Service Category Program Results subparameter informs the message center
+     * of the results of a Service Category Program Data request.
+     */
+    public ArrayList<CdmaSmsCbProgramResults> serviceCategoryProgramResults;
+
 
     private static class CodingException extends Exception {
         public CodingException(String s) {
@@ -590,7 +595,6 @@
         byte[] payload = encodeUtf16(uData.payloadStr);
         int udhBytes = udhData.length + 1;  // Add length octet.
         int udhCodeUnits = (udhBytes + 1) / 2;
-        int udhPadding = udhBytes % 2;
         int payloadCodeUnits = payload.length / 2;
         uData.msgEncoding = UserData.ENCODING_UNICODE_16;
         uData.msgEncodingSet = true;
@@ -598,7 +602,7 @@
         uData.payload = new byte[uData.numFields * 2];
         uData.payload[0] = (byte)udhData.length;
         System.arraycopy(udhData, 0, uData.payload, 1, udhData.length);
-        System.arraycopy(payload, 0, uData.payload, udhBytes + udhPadding, payload.length);
+        System.arraycopy(payload, 0, uData.payload, udhBytes, payload.length);
     }
 
     private static void encodeEmsUserDataPayload(UserData uData)
@@ -857,6 +861,21 @@
         outStream.skip(6);
     }
 
+    private static void encodeScpResults(BearerData bData, BitwiseOutputStream outStream)
+        throws BitwiseOutputStream.AccessException
+    {
+        ArrayList<CdmaSmsCbProgramResults> results = bData.serviceCategoryProgramResults;
+        outStream.write(8, (results.size() * 4));   // 4 octets per program result
+        for (CdmaSmsCbProgramResults result : results) {
+            int category = result.getCategory();
+            outStream.write(8, category >> 8);
+            outStream.write(8, category);
+            outStream.write(8, result.getLanguage());
+            outStream.write(4, result.getCategoryResult());
+            outStream.skip(4);
+        }
+    }
+
     /**
      * Create serialized representation for BearerData object.
      * (See 3GPP2 C.R1001-F, v1.0, section 4.5 for layout details)
@@ -916,6 +935,10 @@
                 outStream.write(8, SUBPARAM_MESSAGE_STATUS);
                 encodeMsgStatus(bData, outStream);
             }
+            if (bData.serviceCategoryProgramResults != null) {
+                outStream.write(8, SUBPARAM_SERVICE_CATEGORY_PROGRAM_RESULTS);
+                encodeScpResults(bData, outStream);
+            }
             return outStream.toByteArray();
         } catch (BitwiseOutputStream.AccessException ex) {
             Log.e(LOG_TAG, "BearerData encode failed: " + ex);
@@ -973,27 +996,37 @@
     private static String decodeUtf8(byte[] data, int offset, int numFields)
         throws CodingException
     {
-        if (numFields < 0 || (numFields + offset) > data.length) {
-            throw new CodingException("UTF-8 decode failed: offset or length out of range");
-        }
-        try {
-            return new String(data, offset, numFields, "UTF-8");
-        } catch (java.io.UnsupportedEncodingException ex) {
-            throw new CodingException("UTF-8 decode failed: " + ex);
-        }
+        return decodeCharset(data, offset, numFields, 1, "UTF-8");
     }
 
     private static String decodeUtf16(byte[] data, int offset, int numFields)
         throws CodingException
     {
-        int byteCount = numFields * 2;
-        if (byteCount < 0 || (byteCount + offset) > data.length) {
-            throw new CodingException("UTF-16 decode failed: offset or length out of range");
+        // Subtract header and possible padding byte (at end) from num fields.
+        int padding = offset % 2;
+        numFields -= (offset + padding) / 2;
+        return decodeCharset(data, offset, numFields, 2, "utf-16be");
+    }
+
+    private static String decodeCharset(byte[] data, int offset, int numFields, int width,
+            String charset) throws CodingException
+    {
+        if (numFields < 0 || (numFields * width + offset) > data.length) {
+            // Try to decode the max number of characters in payload
+            int padding = offset % width;
+            int maxNumFields = (data.length - offset - padding) / width;
+            if (maxNumFields < 0) {
+                throw new CodingException(charset + " decode failed: offset out of range");
+            }
+            Log.e(LOG_TAG, charset + " decode error: offset = " + offset + " numFields = "
+                    + numFields + " data.length = " + data.length + " maxNumFields = "
+                    + maxNumFields);
+            numFields = maxNumFields;
         }
         try {
-            return new String(data, offset, byteCount, "utf-16be");
+            return new String(data, offset, numFields * width, charset);
         } catch (java.io.UnsupportedEncodingException ex) {
-            throw new CodingException("UTF-16 decode failed: " + ex);
+            throw new CodingException(charset + " decode failed: " + ex);
         }
     }
 
@@ -1049,14 +1082,7 @@
     private static String decodeLatin(byte[] data, int offset, int numFields)
         throws CodingException
     {
-        if (numFields < 0 || (numFields + offset) > data.length) {
-            throw new CodingException("ISO-8859-1 decode failed: offset or length out of range");
-        }
-        try {
-            return new String(data, offset, numFields, "ISO-8859-1");
-        } catch (java.io.UnsupportedEncodingException ex) {
-            throw new CodingException("ISO-8859-1 decode failed: " + ex);
-        }
+        return decodeCharset(data, offset, numFields, 1, "ISO-8859-1");
     }
 
     private static void decodeUserDataPayload(UserData userData, boolean hasUserDataHeader)
@@ -1638,7 +1664,7 @@
         while (paramBits >= CATEGORY_FIELD_MIN_SIZE) {
             int operation = inStream.read(4);
             int category = (inStream.read(8) << 8) | inStream.read(8);
-            String language = getLanguageCodeForValue(inStream.read(8));
+            int language = inStream.read(8);
             int maxMessages = inStream.read(8);
             int alertOption = inStream.read(4);
             int numFields = inStream.read(8);
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
index a971066..23364b4 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
@@ -996,9 +996,23 @@
     }
 
     private boolean dataConnectionNotInUse(DataConnectionAc dcac) {
+        if (DBG) log("dataConnectionNotInUse: check if dcac is inuse dc=" + dcac.dataConnection);
         for (ApnContext apnContext : mApnContexts.values()) {
-            if (apnContext.getDataConnectionAc() == dcac) return false;
+            if (apnContext.getDataConnectionAc() == dcac) {
+                if (DBG) log("dataConnectionNotInUse: in use by apnContext=" + apnContext);
+                return false;
+            }
         }
+        // TODO: Fix retry handling so free DataConnections have empty apnlists.
+        // Probably move retry handling into DataConnections and reduce complexity
+        // of DCT.
+        for (ApnContext apnContext : dcac.getApnListSync()) {
+            if (DBG) {
+                log("dataConnectionNotInUse: removing apnContext=" + apnContext);
+            }
+            dcac.removeApnContextSync(apnContext);
+        }
+        if (DBG) log("dataConnectionNotInUse: not in use return true");
         return true;
     }
 
@@ -2131,14 +2145,14 @@
     protected void onDisconnectDone(int connId, AsyncResult ar) {
         ApnContext apnContext = null;
 
-        if(DBG) log("onDisconnectDone: EVENT_DISCONNECT_DONE connId=" + connId);
         if (ar.userObj instanceof ApnContext) {
             apnContext = (ApnContext) ar.userObj;
         } else {
-            loge("Invalid ar in onDisconnectDone");
+            loge("onDisconnectDone: Invalid ar in onDisconnectDone, ignore");
             return;
         }
 
+        if(DBG) log("onDisconnectDone: EVENT_DISCONNECT_DONE apnContext=" + apnContext);
         apnContext.setState(State.IDLE);
 
         mPhone.notifyDataConnection(apnContext.getReason(), apnContext.getApnType());
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
index b7569da..4896efb 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
@@ -512,8 +512,8 @@
                 || !TextUtils.equals(plmn, curPlmn)) {
             boolean showSpn = !mEmergencyOnly && !TextUtils.isEmpty(spn)
                 && (rule & SIMRecords.SPN_RULE_SHOW_SPN) == SIMRecords.SPN_RULE_SHOW_SPN;
-            boolean showPlmn = !TextUtils.isEmpty(plmn) &&
-                (rule & SIMRecords.SPN_RULE_SHOW_PLMN) == SIMRecords.SPN_RULE_SHOW_PLMN;
+            boolean showPlmn = !TextUtils.isEmpty(plmn) && (mEmergencyOnly ||
+                ((rule & SIMRecords.SPN_RULE_SHOW_PLMN) == SIMRecords.SPN_RULE_SHOW_PLMN));
 
             if (DBG) {
                 log(String.format("updateSpnDisplay: changed sending intent" + " rule=" + rule +
diff --git a/telephony/tests/telephonytests/src/com/android/internal/telephony/cdma/CdmaSmsCbTest.java b/telephony/tests/telephonytests/src/com/android/internal/telephony/cdma/CdmaSmsCbTest.java
index d2faceb..a95f60c 100644
--- a/telephony/tests/telephonytests/src/com/android/internal/telephony/cdma/CdmaSmsCbTest.java
+++ b/telephony/tests/telephonytests/src/com/android/internal/telephony/cdma/CdmaSmsCbTest.java
@@ -635,7 +635,7 @@
         assertEquals(CdmaSmsCbProgramData.OPERATION_ADD_CATEGORY, programData.getOperation());
         assertEquals(SmsEnvelope.SERVICE_CATEGORY_CMAS_EXTREME_THREAT, programData.getCategory());
         assertEquals(CAT_EXTREME_THREAT, programData.getCategoryName());
-        assertEquals("en", programData.getLanguageCode());
+        assertEquals(BearerData.LANGUAGE_ENGLISH, programData.getLanguage());
         assertEquals(100, programData.getMaxMessages());
         assertEquals(CdmaSmsCbProgramData.ALERT_OPTION_DEFAULT_ALERT, programData.getAlertOption());
     }
@@ -692,7 +692,7 @@
         assertEquals(CdmaSmsCbProgramData.OPERATION_DELETE_CATEGORY, programData.getOperation());
         assertEquals(SmsEnvelope.SERVICE_CATEGORY_CMAS_SEVERE_THREAT, programData.getCategory());
         assertEquals(CAT_SEVERE_THREAT, programData.getCategoryName());
-        assertEquals("en", programData.getLanguageCode());
+        assertEquals(BearerData.LANGUAGE_ENGLISH, programData.getLanguage());
         assertEquals(0, programData.getMaxMessages());
         assertEquals(CdmaSmsCbProgramData.ALERT_OPTION_NO_ALERT, programData.getAlertOption());
 
@@ -701,7 +701,7 @@
         assertEquals(SmsEnvelope.SERVICE_CATEGORY_CMAS_CHILD_ABDUCTION_EMERGENCY,
                 programData.getCategory());
         assertEquals(CAT_AMBER_ALERTS, programData.getCategoryName());
-        assertEquals("en", programData.getLanguageCode());
+        assertEquals(BearerData.LANGUAGE_ENGLISH, programData.getLanguage());
         assertEquals(0, programData.getMaxMessages());
         assertEquals(CdmaSmsCbProgramData.ALERT_OPTION_NO_ALERT, programData.getAlertOption());
     }
diff --git a/telephony/tests/telephonytests/src/com/android/internal/telephony/cdma/sms/CdmaSmsTest.java b/telephony/tests/telephonytests/src/com/android/internal/telephony/cdma/sms/CdmaSmsTest.java
index 58e73e0..f1bc268 100644
--- a/telephony/tests/telephonytests/src/com/android/internal/telephony/cdma/sms/CdmaSmsTest.java
+++ b/telephony/tests/telephonytests/src/com/android/internal/telephony/cdma/sms/CdmaSmsTest.java
@@ -35,10 +35,21 @@
 import android.util.Log;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 
 public class CdmaSmsTest extends AndroidTestCase {
     private final static String LOG_TAG = "XXX CdmaSmsTest XXX";
 
+    // CJK ideographs, Hiragana, Katakana, full width letters, Cyrillic, etc.
+    private static final String sUnicodeChars = "\u4e00\u4e01\u4e02\u4e03" +
+            "\u4e04\u4e05\u4e06\u4e07\u4e08\u4e09\u4e0a\u4e0b\u4e0c\u4e0d" +
+            "\u4e0e\u4e0f\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048" +
+            "\u30a1\u30a2\u30a3\u30a4\u30a5\u30a6\u30a7\u30a8" +
+            "\uff10\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18" +
+            "\uff70\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78" +
+            "\u0400\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408" +
+            "\u00a2\u00a9\u00ae\u2122";
+
     @SmallTest
     public void testCdmaSmsAddrParsing() throws Exception {
         CdmaSmsAddress addr = CdmaSmsAddress.parse("6502531000");
@@ -811,23 +822,51 @@
 
     @SmallTest
     public void testUserDataHeaderWithEightCharMsg() throws Exception {
+        encodeDecodeAssertEquals("01234567", 2, 2, false);
+    }
+
+    private void encodeDecodeAssertEquals(String payload, int index, int total,
+            boolean oddLengthHeader) throws Exception {
         BearerData bearerData = new BearerData();
         bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
         bearerData.messageId = 55;
-        SmsHeader.ConcatRef concatRef = new SmsHeader.ConcatRef();
-        concatRef.refNumber = 0xEE;
-        concatRef.msgCount = 2;
-        concatRef.seqNumber = 2;
-        concatRef.isEightBits = true;
         SmsHeader smsHeader = new SmsHeader();
-        smsHeader.concatRef = concatRef;
+        if (oddLengthHeader) {
+            // Odd length header to verify correct UTF-16 header padding
+            SmsHeader.MiscElt miscElt = new SmsHeader.MiscElt();
+            miscElt.id = 0x27;  // reserved for future use; ignored on decode
+            miscElt.data = new byte[]{0x12, 0x34};
+            smsHeader.miscEltList.add(miscElt);
+        } else {
+            // Even length header normally generated for concatenated SMS.
+            SmsHeader.ConcatRef concatRef = new SmsHeader.ConcatRef();
+            concatRef.refNumber = 0xEE;
+            concatRef.msgCount = total;
+            concatRef.seqNumber = index;
+            concatRef.isEightBits = true;
+            smsHeader.concatRef = concatRef;
+        }
+        byte[] encodeHeader = SmsHeader.toByteArray(smsHeader);
+        if (oddLengthHeader) {
+            assertEquals(4, encodeHeader.length);     // 5 bytes with UDH length
+        } else {
+            assertEquals(5, encodeHeader.length);     // 6 bytes with UDH length
+        }
         UserData userData = new UserData();
-        userData.payloadStr = "01234567";
+        userData.payloadStr = payload;
         userData.userDataHeader = smsHeader;
         bearerData.userData = userData;
         byte[] encodedSms = BearerData.encode(bearerData);
         BearerData revBearerData = BearerData.decode(encodedSms);
         assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
+        assertTrue(revBearerData.hasUserDataHeader);
+        byte[] header = SmsHeader.toByteArray(revBearerData.userData.userDataHeader);
+        if (oddLengthHeader) {
+            assertEquals(4, header.length);     // 5 bytes with UDH length
+        } else {
+            assertEquals(5, header.length);     // 6 bytes with UDH length
+        }
+        assertTrue(Arrays.equals(encodeHeader, header));
     }
 
     @SmallTest
@@ -881,7 +920,27 @@
         if (isCdmaPhone) {
             ArrayList<String> fragments = android.telephony.SmsMessage.fragmentText(text2);
             assertEquals(3, fragments.size());
+
+            for (int i = 0; i < 3; i++) {
+                encodeDecodeAssertEquals(fragments.get(i), i + 1, 3, false);
+                encodeDecodeAssertEquals(fragments.get(i), i + 1, 3, true);
+            }
         }
 
+        // Test case for multi-part UTF-16 message.
+        String text3 = sUnicodeChars + sUnicodeChars + sUnicodeChars;
+        ted = SmsMessage.calculateLength(text3, false);
+        assertEquals(3, ted.msgCount);
+        assertEquals(189, ted.codeUnitCount);
+        assertEquals(3, ted.codeUnitSize);
+        if (isCdmaPhone) {
+            ArrayList<String> fragments = android.telephony.SmsMessage.fragmentText(text3);
+            assertEquals(3, fragments.size());
+
+            for (int i = 0; i < 3; i++) {
+                encodeDecodeAssertEquals(fragments.get(i), i + 1, 3, false);
+                encodeDecodeAssertEquals(fragments.get(i), i + 1, 3, true);
+            }
+        }
     }
 }
diff --git a/test-runner/src/android/test/MoreAsserts.java b/test-runner/src/android/test/MoreAsserts.java
index 9e0d018..83cc420 100644
--- a/test-runner/src/android/test/MoreAsserts.java
+++ b/test-runner/src/android/test/MoreAsserts.java
@@ -158,7 +158,7 @@
      * Asserts that array {@code actual} is the same size and every element
      * is the same as those in array {@code expected}. Note that this uses
      * {@code equals()} instead of {@code ==} to compare the objects.
-     * {@code null} will be considered equal to {code null} (unlike SQL).
+     * {@code null} will be considered equal to {@code null} (unlike SQL).
      * On failure, message indicates first specific element mismatch.
      */
     public static void assertEquals(
diff --git a/test-runner/src/android/test/ProviderTestCase2.java b/test-runner/src/android/test/ProviderTestCase2.java
index 2811b0d..f7c4e03 100644
--- a/test-runner/src/android/test/ProviderTestCase2.java
+++ b/test-runner/src/android/test/ProviderTestCase2.java
@@ -64,7 +64,7 @@
  *     {@link #ProviderTestCase2(Class, String)} as  its first operation.
  * </p>
  * For more information on content provider testing, please see
- * <a href="{@docRoot}guide/topics/testing/provider_testing.html">Content Provider Testing</a>.
+ * <a href="{@docRoot}tools/testing/contentprovider_testing.html">Content Provider Testing</a>.
  */
 public abstract class ProviderTestCase2<T extends ContentProvider> extends AndroidTestCase {
 
diff --git a/test-runner/src/android/test/ServiceTestCase.java b/test-runner/src/android/test/ServiceTestCase.java
index 06c1c5b..d8ced38 100644
--- a/test-runner/src/android/test/ServiceTestCase.java
+++ b/test-runner/src/android/test/ServiceTestCase.java
@@ -91,7 +91,7 @@
  *      {@link #setApplication setApplication()}.  You must do this <em>before</em> calling
  *      startService() or bindService().  The test framework provides a
  *      number of alternatives for Context, including
- *      {link android.test.mock.MockContext MockContext},
+ *      {@link android.test.mock.MockContext MockContext},
  *      {@link android.test.RenamingDelegatingContext RenamingDelegatingContext},
  *      {@link android.content.ContextWrapper ContextWrapper}, and
  *      {@link android.test.IsolatedContext}.
@@ -216,7 +216,7 @@
      *      the service. The flag is assumed to be {@link android.content.Context#BIND_AUTO_CREATE}.
      * </p>
      * <p>
-     *      See <a href="{@docRoot}guide/developing/tools/aidl.html">Designing a Remote Interface
+     *      See <a href="{@docRoot}guide/components/aidl.html">Designing a Remote Interface
      *      Using AIDL</a> for more information about the communication channel object returned
      *      by this method.
      * </p>
diff --git a/tests/DataIdleTest/src/com/android/tests/dataidle/DataIdleTest.java b/tests/DataIdleTest/src/com/android/tests/dataidle/DataIdleTest.java
index 919e2b3..4ec86b186 100644
--- a/tests/DataIdleTest/src/com/android/tests/dataidle/DataIdleTest.java
+++ b/tests/DataIdleTest/src/com/android/tests/dataidle/DataIdleTest.java
@@ -69,7 +69,7 @@
     /**
      * Helper method that fetches all the network stats available and reports it
      * to instrumentation out.
-     * @param template {link {@link NetworkTemplate} to match.
+     * @param template {@link NetworkTemplate} to match.
      */
     private void fetchStats(NetworkTemplate template) {
         INetworkStatsSession session = null;
diff --git a/tools/aapt/Bundle.h b/tools/aapt/Bundle.h
index daeadc0..8e0be1c 100644
--- a/tools/aapt/Bundle.h
+++ b/tools/aapt/Bundle.h
@@ -62,7 +62,8 @@
           mMinSdkVersion(NULL), mTargetSdkVersion(NULL), mMaxSdkVersion(NULL),
           mVersionCode(NULL), mVersionName(NULL), mCustomPackage(NULL), mExtraPackages(NULL),
           mMaxResVersion(NULL), mDebugMode(false), mNonConstantId(false), mProduct(NULL),
-          mUseCrunchCache(false), mArgc(0), mArgv(NULL)
+          mUseCrunchCache(false), mErrorOnFailedInsert(false), mOutputTextSymbols(NULL),
+          mArgc(0), mArgv(NULL)
         {}
     ~Bundle(void) {}
 
@@ -113,6 +114,8 @@
     void setAutoAddOverlay(bool val) { mAutoAddOverlay = val; }
     bool getGenDependencies() { return mGenDependencies; }
     void setGenDependencies(bool val) { mGenDependencies = val; }
+    bool getErrorOnFailedInsert() { return mErrorOnFailedInsert; }
+    void setErrorOnFailedInsert(bool val) { mErrorOnFailedInsert = val; }
 
     bool getUTF16StringsOption() {
         return mWantUTF16 || !isMinSdkAtLeast(SDK_FROYO);
@@ -174,6 +177,8 @@
     void setProduct(const char * val) { mProduct = val; }
     void setUseCrunchCache(bool val) { mUseCrunchCache = val; }
     bool getUseCrunchCache() const { return mUseCrunchCache; }
+    const char* getOutputTextSymbols() const { return mOutputTextSymbols; }
+    void setOutputTextSymbols(const char* val) { mOutputTextSymbols = val; }
 
     /*
      * Set and get the file specification.
@@ -280,6 +285,8 @@
     bool        mNonConstantId;
     const char* mProduct;
     bool        mUseCrunchCache;
+    bool        mErrorOnFailedInsert;
+    const char* mOutputTextSymbols;
 
     /* file specification */
     int         mArgc;
diff --git a/tools/aapt/Main.cpp b/tools/aapt/Main.cpp
index 9f05c6a..d48394a 100644
--- a/tools/aapt/Main.cpp
+++ b/tools/aapt/Main.cpp
@@ -70,7 +70,8 @@
         "        [--product product1,product2,...] \\\n"
         "        [-c CONFIGS] [--preferred-configurations CONFIGS] \\\n"
         "        [-o] \\\n"
-        "        [raw-files-dir [raw-files-dir] ...]\n"
+        "        [raw-files-dir [raw-files-dir] ...] \\\n"
+        "        [--output-text-symbols DIR]\n"
         "\n"
         "   Package the android resources.  It will read assets and resources that are\n"
         "   supplied with the -M -A -S or raw-files-dir arguments.  The -J -P -F and -R\n"
@@ -179,6 +180,14 @@
         "       Make the resources ID non constant. This is required to make an R java class\n"
         "       that does not contain the final value but is used to make reusable compiled\n"
         "       libraries that need to access resources.\n"
+        "   --error-on-failed-insert\n"
+        "       Forces aapt to return an error if it fails to insert values into the manifest\n"
+        "       with --debug-mode, --min-sdk-version, --target-sdk-version --version-code\n"
+        "       and --version-name.\n"
+        "       Insertion typically fails if the manifest already defines the attribute.\n"
+        "   --output-text-symbols\n"
+        "       Generates a text file containing the resource symbols of the R class in the\n"
+        "       specified folder.\n"
         "   --ignore-assets\n"
         "       Assets to be ignored. Default pattern is:\n"
         "       %s\n",
@@ -547,6 +556,17 @@
                     bundle.setInstrumentationPackageNameOverride(argv[0]);
                 } else if (strcmp(cp, "-auto-add-overlay") == 0) {
                     bundle.setAutoAddOverlay(true);
+                } else if (strcmp(cp, "-error-on-failed-insert") == 0) {
+                    bundle.setErrorOnFailedInsert(true);
+                } else if (strcmp(cp, "-output-text-symbols") == 0) {
+                    argc--;
+                    argv++;
+                    if (!argc) {
+                        fprintf(stderr, "ERROR: No argument supplied for '-output-text-symbols' option\n");
+                        wantUsage = true;
+                        goto bail;
+                    }
+                    bundle.setOutputTextSymbols(argv[0]);
                 } else if (strcmp(cp, "-product") == 0) {
                     argc--;
                     argv++;
diff --git a/tools/aapt/Resource.cpp b/tools/aapt/Resource.cpp
index ee076e6..77168f9 100644
--- a/tools/aapt/Resource.cpp
+++ b/tools/aapt/Resource.cpp
@@ -673,24 +673,40 @@
     return true;
 }
 
-void addTagAttribute(const sp<XMLNode>& node, const char* ns8,
-        const char* attr8, const char* value)
+/*
+ * Inserts an attribute in a given node, only if the attribute does not
+ * exist.
+ * If errorOnFailedInsert is true, and the attribute already exists, returns false.
+ * Returns true otherwise, even if the attribute already exists.
+ */
+bool addTagAttribute(const sp<XMLNode>& node, const char* ns8,
+        const char* attr8, const char* value, bool errorOnFailedInsert)
 {
     if (value == NULL) {
-        return;
+        return true;
     }
-    
+
     const String16 ns(ns8);
     const String16 attr(attr8);
-    
+
     if (node->getAttribute(ns, attr) != NULL) {
+        if (errorOnFailedInsert) {
+            fprintf(stderr, "Error: AndroidManifest.xml already defines %s (in %s);"
+                            " cannot insert new value %s.\n",
+                    String8(attr).string(), String8(ns).string(), value);
+            return false;
+        }
+
         fprintf(stderr, "Warning: AndroidManifest.xml already defines %s (in %s);"
                         " using existing value in manifest.\n",
                 String8(attr).string(), String8(ns).string());
-        return;
+
+        // don't stop the build.
+        return true;
     }
     
     node->addAttribute(ns, attr, String16(value));
+    return true;
 }
 
 static void fullyQualifyClassName(const String8& package, sp<XMLNode> node,
@@ -728,11 +744,17 @@
         fprintf(stderr, "No <manifest> tag.\n");
         return UNKNOWN_ERROR;
     }
-    
-    addTagAttribute(root, RESOURCES_ANDROID_NAMESPACE, "versionCode",
-            bundle->getVersionCode());
-    addTagAttribute(root, RESOURCES_ANDROID_NAMESPACE, "versionName",
-            bundle->getVersionName());
+
+    bool errorOnFailedInsert = bundle->getErrorOnFailedInsert();
+
+    if (!addTagAttribute(root, RESOURCES_ANDROID_NAMESPACE, "versionCode",
+            bundle->getVersionCode(), errorOnFailedInsert)) {
+        return UNKNOWN_ERROR;
+    }
+    if (!addTagAttribute(root, RESOURCES_ANDROID_NAMESPACE, "versionName",
+            bundle->getVersionName(), errorOnFailedInsert)) {
+        return UNKNOWN_ERROR;
+    }
     
     if (bundle->getMinSdkVersion() != NULL
             || bundle->getTargetSdkVersion() != NULL
@@ -743,18 +765,27 @@
             root->insertChildAt(vers, 0);
         }
         
-        addTagAttribute(vers, RESOURCES_ANDROID_NAMESPACE, "minSdkVersion",
-                bundle->getMinSdkVersion());
-        addTagAttribute(vers, RESOURCES_ANDROID_NAMESPACE, "targetSdkVersion",
-                bundle->getTargetSdkVersion());
-        addTagAttribute(vers, RESOURCES_ANDROID_NAMESPACE, "maxSdkVersion",
-                bundle->getMaxSdkVersion());
+        if (!addTagAttribute(vers, RESOURCES_ANDROID_NAMESPACE, "minSdkVersion",
+                bundle->getMinSdkVersion(), errorOnFailedInsert)) {
+            return UNKNOWN_ERROR;
+        }
+        if (!addTagAttribute(vers, RESOURCES_ANDROID_NAMESPACE, "targetSdkVersion",
+                bundle->getTargetSdkVersion(), errorOnFailedInsert)) {
+            return UNKNOWN_ERROR;
+        }
+        if (!addTagAttribute(vers, RESOURCES_ANDROID_NAMESPACE, "maxSdkVersion",
+                bundle->getMaxSdkVersion(), errorOnFailedInsert)) {
+            return UNKNOWN_ERROR;
+        }
     }
 
     if (bundle->getDebugMode()) {
         sp<XMLNode> application = root->getChildElement(String16(), String16("application"));
         if (application != NULL) {
-            addTagAttribute(application, RESOURCES_ANDROID_NAMESPACE, "debuggable", "true");
+            if (!addTagAttribute(application, RESOURCES_ANDROID_NAMESPACE, "debuggable", "true",
+                    errorOnFailedInsert)) {
+                return UNKNOWN_ERROR;
+            }
         }
     }
 
@@ -1821,6 +1852,110 @@
     return hasErrors ? UNKNOWN_ERROR : NO_ERROR;
 }
 
+static status_t writeTextLayoutClasses(
+    FILE* fp, const sp<AaptAssets>& assets,
+    const sp<AaptSymbols>& symbols, bool includePrivate)
+{
+    String16 attr16("attr");
+    String16 package16(assets->getPackage());
+
+    bool hasErrors = false;
+
+    size_t i;
+    size_t N = symbols->getNestedSymbols().size();
+    for (i=0; i<N; i++) {
+        sp<AaptSymbols> nsymbols = symbols->getNestedSymbols().valueAt(i);
+        String16 nclassName16(symbols->getNestedSymbols().keyAt(i));
+        String8 realClassName(nclassName16);
+        if (fixupSymbol(&nclassName16) != NO_ERROR) {
+            hasErrors = true;
+        }
+        String8 nclassName(nclassName16);
+
+        SortedVector<uint32_t> idents;
+        Vector<uint32_t> origOrder;
+        Vector<bool> publicFlags;
+
+        size_t a;
+        size_t NA = nsymbols->getSymbols().size();
+        for (a=0; a<NA; a++) {
+            const AaptSymbolEntry& sym(nsymbols->getSymbols().valueAt(a));
+            int32_t code = sym.typeCode == AaptSymbolEntry::TYPE_INT32
+                    ? sym.int32Val : 0;
+            bool isPublic = true;
+            if (code == 0) {
+                String16 name16(sym.name);
+                uint32_t typeSpecFlags;
+                code = assets->getIncludedResources().identifierForName(
+                    name16.string(), name16.size(),
+                    attr16.string(), attr16.size(),
+                    package16.string(), package16.size(), &typeSpecFlags);
+                if (code == 0) {
+                    fprintf(stderr, "ERROR: In <declare-styleable> %s, unable to find attribute %s\n",
+                            nclassName.string(), sym.name.string());
+                    hasErrors = true;
+                }
+                isPublic = (typeSpecFlags&ResTable_typeSpec::SPEC_PUBLIC) != 0;
+            }
+            idents.add(code);
+            origOrder.add(code);
+            publicFlags.add(isPublic);
+        }
+
+        NA = idents.size();
+
+        fprintf(fp, "int[] styleable %s {", nclassName.string());
+
+        for (a=0; a<NA; a++) {
+            if (a != 0) {
+                fprintf(fp, ",");
+            }
+            fprintf(fp, " 0x%08x", idents[a]);
+        }
+
+        fprintf(fp, " }\n");
+
+        for (a=0; a<NA; a++) {
+            ssize_t pos = idents.indexOf(origOrder.itemAt(a));
+            if (pos >= 0) {
+                const AaptSymbolEntry& sym = nsymbols->getSymbols().valueAt(a);
+                if (!publicFlags.itemAt(a) && !includePrivate) {
+                    continue;
+                }
+                String8 name8(sym.name);
+                String16 comment(sym.comment);
+                String16 typeComment;
+                if (comment.size() <= 0) {
+                    comment = getAttributeComment(assets, name8, &typeComment);
+                } else {
+                    getAttributeComment(assets, name8, &typeComment);
+                }
+                String16 name(name8);
+                if (fixupSymbol(&name) != NO_ERROR) {
+                    hasErrors = true;
+                }
+
+                uint32_t typeSpecFlags = 0;
+                String16 name16(sym.name);
+                assets->getIncludedResources().identifierForName(
+                    name16.string(), name16.size(),
+                    attr16.string(), attr16.size(),
+                    package16.string(), package16.size(), &typeSpecFlags);
+                //printf("%s:%s/%s: 0x%08x\n", String8(package16).string(),
+                //    String8(attr16).string(), String8(name16).string(), typeSpecFlags);
+                const bool pub = (typeSpecFlags&ResTable_typeSpec::SPEC_PUBLIC) != 0;
+
+                fprintf(fp,
+                        "int styleable %s_%s %d\n",
+                        nclassName.string(),
+                        String8(name).string(), (int)pos);
+            }
+        }
+    }
+
+    return hasErrors ? UNKNOWN_ERROR : NO_ERROR;
+}
+
 static status_t writeSymbolClass(
     FILE* fp, const sp<AaptAssets>& assets, bool includePrivate,
     const sp<AaptSymbols>& symbols, const String8& className, int indent,
@@ -1848,7 +1983,6 @@
             continue;
         }
         String16 name(sym.name);
-        String8 realName(name);
         if (fixupSymbol(&name) != NO_ERROR) {
             return UNKNOWN_ERROR;
         }
@@ -1960,6 +2094,51 @@
     return NO_ERROR;
 }
 
+static status_t writeTextSymbolClass(
+    FILE* fp, const sp<AaptAssets>& assets, bool includePrivate,
+    const sp<AaptSymbols>& symbols, const String8& className)
+{
+    size_t i;
+    status_t err = NO_ERROR;
+
+    size_t N = symbols->getSymbols().size();
+    for (i=0; i<N; i++) {
+        const AaptSymbolEntry& sym = symbols->getSymbols().valueAt(i);
+        if (sym.typeCode != AaptSymbolEntry::TYPE_INT32) {
+            continue;
+        }
+
+        if (!assets->isJavaSymbol(sym, includePrivate)) {
+            continue;
+        }
+
+        String16 name(sym.name);
+        if (fixupSymbol(&name) != NO_ERROR) {
+            return UNKNOWN_ERROR;
+        }
+
+        fprintf(fp, "int %s %s 0x%08x\n",
+                className.string(),
+                String8(name).string(), (int)sym.int32Val);
+    }
+
+    N = symbols->getNestedSymbols().size();
+    for (i=0; i<N; i++) {
+        sp<AaptSymbols> nsymbols = symbols->getNestedSymbols().valueAt(i);
+        String8 nclassName(symbols->getNestedSymbols().keyAt(i));
+        if (nclassName == "styleable") {
+            err = writeTextLayoutClasses(fp, assets, nsymbols, includePrivate);
+        } else {
+            err = writeTextSymbolClass(fp, assets, includePrivate, nsymbols, nclassName);
+        }
+        if (err != NO_ERROR) {
+            return err;
+        }
+    }
+
+    return NO_ERROR;
+}
+
 status_t writeResourceSymbols(Bundle* bundle, const sp<AaptAssets>& assets,
     const String8& package, bool includePrivate)
 {
@@ -1967,11 +2146,15 @@
         return NO_ERROR;
     }
 
+    const char* textSymbolsDest = bundle->getOutputTextSymbols();
+
+    String8 R("R");
     const size_t N = assets->getSymbols().size();
     for (size_t i=0; i<N; i++) {
         sp<AaptSymbols> symbols = assets->getSymbols().valueAt(i);
         String8 className(assets->getSymbols().keyAt(i));
         String8 dest(bundle->getRClassDir());
+
         if (bundle->getMakePackageDirs()) {
             String8 pkg(package);
             const char* last = pkg.string();
@@ -2003,14 +2186,14 @@
         }
 
         fprintf(fp,
-        "/* AUTO-GENERATED FILE.  DO NOT MODIFY.\n"
-        " *\n"
-        " * This class was automatically generated by the\n"
-        " * aapt tool from the resource data it found.  It\n"
-        " * should not be modified by hand.\n"
-        " */\n"
-        "\n"
-        "package %s;\n\n", package.string());
+            "/* AUTO-GENERATED FILE.  DO NOT MODIFY.\n"
+            " *\n"
+            " * This class was automatically generated by the\n"
+            " * aapt tool from the resource data it found.  It\n"
+            " * should not be modified by hand.\n"
+            " */\n"
+            "\n"
+            "package %s;\n\n", package.string());
 
         status_t err = writeSymbolClass(fp, assets, includePrivate, symbols,
                 className, 0, bundle->getNonConstantId());
@@ -2019,14 +2202,37 @@
         }
         fclose(fp);
 
+        if (textSymbolsDest != NULL && R == className) {
+            String8 textDest(textSymbolsDest);
+            textDest.appendPath(className);
+            textDest.append(".txt");
+
+            FILE* fp = fopen(textDest.string(), "w+");
+            if (fp == NULL) {
+                fprintf(stderr, "ERROR: Unable to open text symbol file %s: %s\n",
+                        textDest.string(), strerror(errno));
+                return UNKNOWN_ERROR;
+            }
+            if (bundle->getVerbose()) {
+                printf("  Writing text symbols for class %s.\n", className.string());
+            }
+
+            status_t err = writeTextSymbolClass(fp, assets, includePrivate, symbols,
+                    className);
+            if (err != NO_ERROR) {
+                return err;
+            }
+            fclose(fp);
+        }
+
         // If we were asked to generate a dependency file, we'll go ahead and add this R.java
         // as a target in the dependency file right next to it.
-        if (bundle->getGenDependencies()) {
+        if (bundle->getGenDependencies() && R == className) {
             // Add this R.java to the dependency file
             String8 dependencyFile(bundle->getRClassDir());
             dependencyFile.appendPath("R.java.d");
 
-            fp = fopen(dependencyFile.string(), "a");
+            FILE *fp = fopen(dependencyFile.string(), "a");
             fprintf(fp,"%s \\\n", dest.string());
             fclose(fp);
         }
@@ -2036,7 +2242,6 @@
 }
 
 
-
 class ProguardKeepSet
 {
 public:
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java
index 7f8f9ce..7e47c99 100644
--- a/wifi/java/android/net/wifi/WifiStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiStateMachine.java
@@ -1590,7 +1590,7 @@
 
     /**
      * Record the detailed state of a network.
-     * @param state the new @{code DetailedState}
+     * @param state the new {@code DetailedState}
      */
     private void setNetworkDetailedState(NetworkInfo.DetailedState state) {
         if (DBG) {
diff --git a/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java b/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java
index 1a42f93..45efe3e 100644
--- a/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java
@@ -881,6 +881,9 @@
             //test to avoid any wifi connectivity issues
             loge("ARP test initiation failure: " + se);
             success = true;
+        } catch (IllegalArgumentException e) {
+            // ArpPeer throws exception for IPv6 address
+            success = true;
         }
 
         return success;