Merge "Cleaner controls between Vpn and init services." into jb-mr1-dev
diff --git a/api/current.txt b/api/current.txt
index 6e0cd7c..a4512ee5 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -5075,6 +5075,7 @@
   public class ContentProviderClient {
     method public android.content.ContentProviderResult[] applyBatch(java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
     method public int bulkInsert(android.net.Uri, android.content.ContentValues[]) throws android.os.RemoteException;
+    method public android.os.Bundle call(java.lang.String, java.lang.String, android.os.Bundle) throws android.os.RemoteException;
     method public int delete(android.net.Uri, java.lang.String, java.lang.String[]) throws android.os.RemoteException;
     method public android.content.ContentProvider getLocalContentProvider();
     method public java.lang.String[] getStreamTypes(android.net.Uri, java.lang.String) throws android.os.RemoteException;
@@ -5319,9 +5320,10 @@
     method public abstract void revokeUriPermission(android.net.Uri, int);
     method public abstract void sendBroadcast(android.content.Intent);
     method public abstract void sendBroadcast(android.content.Intent, java.lang.String);
-    method public void sendBroadcastToUser(android.content.Intent, int);
+    method public abstract void sendBroadcastToUser(android.content.Intent, int);
     method public abstract void sendOrderedBroadcast(android.content.Intent, java.lang.String);
     method public abstract void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
+    method public abstract void sendOrderedBroadcastToUser(android.content.Intent, int, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
     method public abstract void sendStickyBroadcast(android.content.Intent);
     method public abstract void sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
     method public abstract void setTheme(int);
@@ -5453,8 +5455,10 @@
     method public void revokeUriPermission(android.net.Uri, int);
     method public void sendBroadcast(android.content.Intent);
     method public void sendBroadcast(android.content.Intent, java.lang.String);
+    method public void sendBroadcastToUser(android.content.Intent, int);
     method public void sendOrderedBroadcast(android.content.Intent, java.lang.String);
     method public void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
+    method public void sendOrderedBroadcastToUser(android.content.Intent, int, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
     method public void sendStickyBroadcast(android.content.Intent);
     method public void sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
     method public void setTheme(int);
@@ -5828,7 +5832,7 @@
     field public static final java.lang.String EXTRA_KEY_EVENT = "android.intent.extra.KEY_EVENT";
     field public static final java.lang.String EXTRA_LOCAL_ONLY = "android.intent.extra.LOCAL_ONLY";
     field public static final java.lang.String EXTRA_NOT_UNKNOWN_SOURCE = "android.intent.extra.NOT_UNKNOWN_SOURCE";
-    field public static final java.lang.String EXTRA_ORIGINATING_URI = "android.intent.extra.ORIGINATING_URI";
+    field public static final java.lang.String EXTRA_ORIGINATING_URL = "android.intent.extra.ORIGINATING_URL";
     field public static final java.lang.String EXTRA_PHONE_NUMBER = "android.intent.extra.PHONE_NUMBER";
     field public static final java.lang.String EXTRA_REFERRER = "android.intent.extra.REFERRER";
     field public static final java.lang.String EXTRA_REMOTE_INTENT_TOKEN = "android.intent.extra.remote_intent_token";
@@ -6235,6 +6239,7 @@
     field public static final int FLAG_HARDWARE_ACCELERATED = 512; // 0x200
     field public static final int FLAG_MULTIPROCESS = 1; // 0x1
     field public static final int FLAG_NO_HISTORY = 128; // 0x80
+    field public static final int FLAG_SINGLE_USER = 1073741824; // 0x40000000
     field public static final int FLAG_STATE_NOT_NEEDED = 16; // 0x10
     field public static final int LAUNCH_MULTIPLE = 0; // 0x0
     field public static final int LAUNCH_SINGLE_INSTANCE = 3; // 0x3
@@ -6657,7 +6662,9 @@
     ctor public ProviderInfo(android.content.pm.ProviderInfo);
     method public int describeContents();
     field public static final android.os.Parcelable.Creator CREATOR;
+    field public static final int FLAG_SINGLE_USER = 1073741824; // 0x40000000
     field public java.lang.String authority;
+    field public int flags;
     field public boolean grantUriPermissions;
     field public int initOrder;
     field public deprecated boolean isSyncable;
@@ -6703,7 +6710,7 @@
     method public void dump(android.util.Printer, java.lang.String);
     field public static final android.os.Parcelable.Creator CREATOR;
     field public static final int FLAG_ISOLATED_PROCESS = 2; // 0x2
-    field public static final int FLAG_SINGLE_USER = 4; // 0x4
+    field public static final int FLAG_SINGLE_USER = 1073741824; // 0x40000000
     field public static final int FLAG_STOP_WITH_TASK = 1; // 0x1
     field public int flags;
     field public java.lang.String permission;
@@ -8114,8 +8121,11 @@
     method public static android.graphics.Bitmap createBitmap(android.graphics.Bitmap, int, int, int, int);
     method public static android.graphics.Bitmap createBitmap(android.graphics.Bitmap, int, int, int, int, android.graphics.Matrix, boolean);
     method public static android.graphics.Bitmap createBitmap(int, int, android.graphics.Bitmap.Config);
+    method public static android.graphics.Bitmap createBitmap(android.util.DisplayMetrics, int, int, android.graphics.Bitmap.Config);
     method public static android.graphics.Bitmap createBitmap(int[], int, int, int, int, android.graphics.Bitmap.Config);
+    method public static android.graphics.Bitmap createBitmap(android.util.DisplayMetrics, int[], int, int, int, int, android.graphics.Bitmap.Config);
     method public static android.graphics.Bitmap createBitmap(int[], int, int, android.graphics.Bitmap.Config);
+    method public static android.graphics.Bitmap createBitmap(android.util.DisplayMetrics, int[], int, int, android.graphics.Bitmap.Config);
     method public static android.graphics.Bitmap createScaledBitmap(android.graphics.Bitmap, int, int, boolean);
     method public int describeContents();
     method public void eraseColor(int);
@@ -11502,6 +11512,7 @@
     method public void setVideoSource(int) throws java.lang.IllegalStateException;
     method public void start() throws java.lang.IllegalStateException;
     method public void stop() throws java.lang.IllegalStateException;
+    field public static final int MEDIA_ERROR_SERVER_DIED = 100; // 0x64
     field public static final int MEDIA_RECORDER_ERROR_UNKNOWN = 1; // 0x1
     field public static final int MEDIA_RECORDER_INFO_MAX_DURATION_REACHED = 800; // 0x320
     field public static final int MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED = 801; // 0x321
@@ -12399,6 +12410,7 @@
     field public static final java.lang.String EXTRA_EXTRA_INFO = "extraInfo";
     field public static final java.lang.String EXTRA_IS_FAILOVER = "isFailover";
     field public static final deprecated java.lang.String EXTRA_NETWORK_INFO = "networkInfo";
+    field public static final java.lang.String EXTRA_NETWORK_TYPE = "networkType";
     field public static final java.lang.String EXTRA_NO_CONNECTIVITY = "noConnectivity";
     field public static final java.lang.String EXTRA_OTHER_NETWORK_INFO = "otherNetwork";
     field public static final java.lang.String EXTRA_REASON = "reason";
@@ -16244,6 +16256,7 @@
     method public static final int myPid();
     method public static final int myTid();
     method public static final int myUid();
+    method public static final int myUserHandle();
     method public static final void sendSignal(int, int);
     method public static final void setThreadPriority(int, int) throws java.lang.IllegalArgumentException, java.lang.SecurityException;
     method public static final void setThreadPriority(int) throws java.lang.IllegalArgumentException, java.lang.SecurityException;
@@ -19927,6 +19940,49 @@
 
 }
 
+package android.service.dreams {
+
+  public class Dream extends android.app.Service implements android.view.Window.Callback {
+    ctor public Dream();
+    method public void addContentView(android.view.View, android.view.ViewGroup.LayoutParams);
+    method public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
+    method public boolean dispatchKeyEvent(android.view.KeyEvent);
+    method public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
+    method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+    method public boolean dispatchTouchEvent(android.view.MotionEvent);
+    method public boolean dispatchTrackballEvent(android.view.MotionEvent);
+    method public android.view.View findViewById(int);
+    method public void finish();
+    method public android.view.Window getWindow();
+    method public android.view.WindowManager getWindowManager();
+    method public boolean isInteractive();
+    method protected void lightsOut();
+    method public void onActionModeFinished(android.view.ActionMode);
+    method public void onActionModeStarted(android.view.ActionMode);
+    method public void onAttachedToWindow();
+    method public final android.os.IBinder onBind(android.content.Intent);
+    method public void onContentChanged();
+    method public boolean onCreatePanelMenu(int, android.view.Menu);
+    method public android.view.View onCreatePanelView(int);
+    method public void onDetachedFromWindow();
+    method public boolean onMenuItemSelected(int, android.view.MenuItem);
+    method public boolean onMenuOpened(int, android.view.Menu);
+    method public void onPanelClosed(int, android.view.Menu);
+    method public boolean onPreparePanel(int, android.view.View, android.view.Menu);
+    method public boolean onSearchRequested();
+    method public void onStart();
+    method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
+    method public void onWindowFocusChanged(boolean);
+    method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
+    method public void setContentView(int);
+    method public void setContentView(android.view.View);
+    method public void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
+    method public void setInteractive(boolean);
+    field public static final java.lang.String SERVICE_INTERFACE = "android.service.dreams.Dream";
+  }
+
+}
+
 package android.service.textservice {
 
   public abstract class SpellCheckerService extends android.app.Service {
@@ -21096,8 +21152,10 @@
     method public void revokeUriPermission(android.net.Uri, int);
     method public void sendBroadcast(android.content.Intent);
     method public void sendBroadcast(android.content.Intent, java.lang.String);
+    method public void sendBroadcastToUser(android.content.Intent, int);
     method public void sendOrderedBroadcast(android.content.Intent, java.lang.String);
     method public void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
+    method public void sendOrderedBroadcastToUser(android.content.Intent, int, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
     method public void sendStickyBroadcast(android.content.Intent);
     method public void sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
     method public void setTheme(int);
diff --git a/cmds/am/src/com/android/commands/am/Am.java b/cmds/am/src/com/android/commands/am/Am.java
index f42fd2a..a79eb14 100644
--- a/cmds/am/src/com/android/commands/am/Am.java
+++ b/cmds/am/src/com/android/commands/am/Am.java
@@ -133,6 +133,8 @@
             runScreenCompat();
         } else if (op.equals("display-size")) {
             runDisplaySize();
+        } else if (op.equals("display-density")) {
+            runDisplayDensity();
         } else if (op.equals("to-uri")) {
             runToUri(false);
         } else if (op.equals("to-intent-uri")) {
@@ -1127,6 +1129,44 @@
         }
     }
 
+    private void runDisplayDensity() throws Exception {
+        String densityStr = nextArgRequired();
+        int density;
+        if ("reset".equals(densityStr)) {
+            density = -1;
+        } else {
+            try {
+                density = Integer.parseInt(densityStr);
+            } catch (NumberFormatException e) {
+                System.err.println("Error: bad number " + e);
+                showUsage();
+                return;
+            }
+            if (density < 72) {
+                System.err.println("Error: density must be >= 72");
+                showUsage();
+                return;
+            }
+        }
+
+        IWindowManager wm = IWindowManager.Stub.asInterface(ServiceManager.checkService(
+                Context.WINDOW_SERVICE));
+        if (wm == null) {
+            System.err.println(NO_SYSTEM_ERROR_CODE);
+            throw new AndroidException("Can't connect to window manager; is the system running?");
+        }
+
+        try {
+            if (density > 0) {
+                // TODO(multidisplay): For now Configuration only applies to main screen.
+                wm.setForcedDisplayDensity(Display.DEFAULT_DISPLAY, density);
+            } else {
+                wm.clearForcedDisplayDensity(Display.DEFAULT_DISPLAY);
+            }
+        } catch (RemoteException e) {
+        }
+    }
+
     private void runToUri(boolean intentScheme) throws Exception {
         Intent intent = makeIntent();
         System.out.println(intent.toUri(intentScheme ? Intent.URI_INTENT_SCHEME : 0));
@@ -1301,6 +1341,7 @@
                 "       am monitor [--gdb <port>]\n" +
                 "       am screen-compat [on|off] <PACKAGE>\n" +
                 "       am display-size [reset|MxN]\n" +
+                "       am display-density [reset|DENSITY]\n" +
                 "       am to-uri [INTENT]\n" +
                 "       am to-intent-uri [INTENT]\n" +
                 "\n" +
@@ -1355,6 +1396,8 @@
                 "\n" +
                 "am display-size: override display size.\n" +
                 "\n" +
+                "am display-density: override display density.\n" +
+                "\n" +
                 "am to-uri: print the given Intent specification as a URI.\n" +
                 "\n" +
                 "am to-intent-uri: print the given Intent specification as an intent: URI.\n" +
diff --git a/cmds/pm/src/com/android/commands/pm/Pm.java b/cmds/pm/src/com/android/commands/pm/Pm.java
index 4311c06..4cb5270 100644
--- a/cmds/pm/src/com/android/commands/pm/Pm.java
+++ b/cmds/pm/src/com/android/commands/pm/Pm.java
@@ -782,7 +782,6 @@
         String macAlgo = null;
         byte[] macKey = null;
         byte[] tag = null;
-        String referrer = null;
 
         while ((opt=nextOption()) != null) {
             if (opt.equals("-l")) {
@@ -846,13 +845,6 @@
                     showUsage();
                     return;
                 }
-            } else if (opt.equals("--referrer")) {
-                referrer = nextOptionData();
-                if (referrer == null) {
-                    System.err.println("Error: must supply argument for --referrer");
-                    showUsage();
-                    return;
-                }
             } else {
                 System.err.println("Error: Unknown option: " + opt);
                 showUsage();
@@ -900,13 +892,6 @@
 
         final Uri apkURI;
         final Uri verificationURI;
-        final Uri referrerURI;
-
-        if (referrer != null) {
-            referrerURI = Uri.parse(referrer);
-        } else {
-            referrerURI = null;
-        }
 
         // Populate apkURI, must be present
         final String apkFilePath = nextArg();
@@ -931,7 +916,7 @@
         PackageInstallObserver obs = new PackageInstallObserver();
         try {
             mPm.installPackageWithVerification(apkURI, obs, installFlags, installerPackageName,
-                    verificationURI, null, encryptionParams, apkURI, referrerURI);
+                    verificationURI, null, encryptionParams);
 
             synchronized (obs) {
                 while (!obs.finished) {
@@ -1451,8 +1436,7 @@
         System.err.println("       pm list libraries");
         System.err.println("       pm path PACKAGE");
         System.err.println("       pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f]");
-        System.err.println("                  [--algo <algorithm name> --key <key-in-hex> --iv <IV-in-hex>]");
-        System.err.println("                  [--referrer <URI>] PATH");
+        System.err.println("                  [--algo <algorithm name> --key <key-in-hex> --iv <IV-in-hex>] PATH");
         System.err.println("       pm uninstall [-k] PACKAGE");
         System.err.println("       pm clear PACKAGE");
         System.err.println("       pm enable PACKAGE_OR_COMPONENT");
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/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 92b6f72..1bbc49a 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -1840,6 +1840,18 @@
         return PackageManager.PERMISSION_DENIED;
     }
 
+    /** @hide */
+    public static int checkUidPermission(String permission, int uid) {
+        try {
+            return AppGlobals.getPackageManager()
+                    .checkUidPermission(permission, uid);
+        } catch (RemoteException e) {
+            // Should never happen, but if it does... deny!
+            Slog.e(TAG, "PackageManager is dead?!?", e);
+        }
+        return PackageManager.PERMISSION_DENIED;
+    }
+
     /**
      * Returns the usage statistics of each installed package.
      *
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index f8d01de..bb35ddd 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -167,6 +167,7 @@
     AppBindData mBoundApplication;
     Profiler mProfiler;
     int mCurDefaultDisplayDpi;
+    boolean mDensityCompatMode;
     Configuration mConfiguration;
     Configuration mCompatConfiguration;
     Configuration mResConfiguration;
@@ -2733,7 +2734,8 @@
 
                 // On platforms where we don't want thumbnails, set dims to (0,0)
                 if ((w > 0) && (h > 0)) {
-                    thumbnail = Bitmap.createBitmap(w, h, THUMBNAIL_FORMAT);
+                    thumbnail = Bitmap.createBitmap(r.activity.getResources().getDisplayMetrics(),
+                            w, h, THUMBNAIL_FORMAT);
                     thumbnail.eraseColor(0);
                 }
             }
@@ -3468,6 +3470,7 @@
         // If there was a pending configuration change, execute it first.
         if (changedConfig != null) {
             mCurDefaultDisplayDpi = changedConfig.densityDpi;
+            updateDefaultDensity();
             handleConfigurationChanged(changedConfig, null);
         }
 
@@ -3718,6 +3721,7 @@
                 if (!mPendingConfiguration.isOtherSeqNewer(config)) {
                     config = mPendingConfiguration;
                     mCurDefaultDisplayDpi = config.densityDpi;
+                    updateDefaultDensity();
                 }
                 mPendingConfiguration = null;
             }
@@ -3918,8 +3922,20 @@
         } catch (RemoteException e) {
             // Ignore
         }
-    }    
-    
+    }
+
+    private void updateDefaultDensity() {
+        if (mCurDefaultDisplayDpi != Configuration.DENSITY_DPI_UNDEFINED
+                && mCurDefaultDisplayDpi != DisplayMetrics.DENSITY_DEVICE
+                && !mDensityCompatMode) {
+            Slog.i(TAG, "Switching default density from "
+                    + DisplayMetrics.DENSITY_DEVICE + " to "
+                    + mCurDefaultDisplayDpi);
+            DisplayMetrics.DENSITY_DEVICE = mCurDefaultDisplayDpi;
+            Bitmap.setDefaultDensity(DisplayMetrics.DENSITY_DEFAULT);
+        }
+    }
+
     private void handleBindApplication(AppBindData data) {
         mBoundApplication = data;
         mConfiguration = new Configuration(data.config);
@@ -3980,6 +3996,16 @@
 
         data.info = getPackageInfoNoCheck(data.appInfo, data.compatInfo);
 
+        /**
+         * Switch this process to density compatibility mode if needed.
+         */
+        if ((data.appInfo.flags&ApplicationInfo.FLAG_SUPPORTS_SCREEN_DENSITIES)
+                == 0) {
+            mDensityCompatMode = true;
+            Bitmap.setDefaultDensity(DisplayMetrics.DENSITY_DEFAULT);
+        }
+        updateDefaultDensity();
+
         final ContextImpl appContext = new ContextImpl();
         appContext.init(data.info, null, this);
         final File cacheDir = appContext.getCacheDir();
@@ -4010,14 +4036,6 @@
             StrictMode.enableDeathOnNetwork();
         }
 
-        /**
-         * Switch this process to density compatibility mode if needed.
-         */
-        if ((data.appInfo.flags&ApplicationInfo.FLAG_SUPPORTS_SCREEN_DENSITIES)
-                == 0) {
-            Bitmap.setDefaultDensity(DisplayMetrics.DENSITY_DEFAULT);
-        }
-
         if (data.debugMode != IApplicationThread.DEBUG_OFF) {
             // XXX should have option to change the port.
             Debug.changeDebugPort(8100);
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
index 9aa2505..9a50a41 100644
--- a/core/java/android/app/ApplicationPackageManager.java
+++ b/core/java/android/app/ApplicationPackageManager.java
@@ -972,24 +972,12 @@
     }
 
     @Override
-    public void installPackageWithOrigin(Uri packageURI, IPackageInstallObserver observer,
-            int flags, String installerPackageName, Uri originatingURI, Uri referrer) {
-        try {
-            mPM.installPackageWithOrigin(packageURI, observer, flags, null, originatingURI,
-                    referrer);
-        } catch (RemoteException e) {
-            // Should never happen!
-        }
-    }
-
-    @Override
     public void installPackageWithVerification(Uri packageURI, IPackageInstallObserver observer,
             int flags, String installerPackageName, Uri verificationURI,
-            ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams,
-            Uri originatingURI, Uri referrer) {
+            ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams) {
         try {
             mPM.installPackageWithVerification(packageURI, observer, flags, installerPackageName,
-                    verificationURI, manifestDigest, encryptionParams, originatingURI, referrer);
+                    verificationURI, manifestDigest, encryptionParams);
         } catch (RemoteException e) {
             // Should never happen!
         }
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index 3c8a290..f46388f 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -967,18 +967,6 @@
     }
 
     @Override
-    public void sendBroadcastToUser(Intent intent, int userId) {
-        String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
-        try {
-            intent.setAllowFds(false);
-            ActivityManagerNative.getDefault().broadcastIntent(mMainThread.getApplicationThread(),
-                    intent, resolvedType, null, Activity.RESULT_OK, null, null, null, false, false,
-                    userId);
-        } catch (RemoteException e) {
-        }
-    }
-
-    @Override
     public void sendBroadcast(Intent intent, String receiverPermission) {
         String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
         try {
@@ -1039,6 +1027,50 @@
     }
 
     @Override
+    public void sendBroadcastToUser(Intent intent, int userHandle) {
+        String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
+        try {
+            intent.setAllowFds(false);
+            ActivityManagerNative.getDefault().broadcastIntent(mMainThread.getApplicationThread(),
+                    intent, resolvedType, null, Activity.RESULT_OK, null, null, null, false, false,
+                    userHandle);
+        } catch (RemoteException e) {
+        }
+    }
+
+    @Override
+    public void sendOrderedBroadcastToUser(Intent intent, int userHandle,
+            BroadcastReceiver resultReceiver, Handler scheduler,
+            int initialCode, String initialData, Bundle initialExtras) {
+        IIntentReceiver rd = null;
+        if (resultReceiver != null) {
+            if (mPackageInfo != null) {
+                if (scheduler == null) {
+                    scheduler = mMainThread.getHandler();
+                }
+                rd = mPackageInfo.getReceiverDispatcher(
+                    resultReceiver, getOuterContext(), scheduler,
+                    mMainThread.getInstrumentation(), false);
+            } else {
+                if (scheduler == null) {
+                    scheduler = mMainThread.getHandler();
+                }
+                rd = new LoadedApk.ReceiverDispatcher(
+                        resultReceiver, getOuterContext(), scheduler, null, false).getIIntentReceiver();
+            }
+        }
+        String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
+        try {
+            intent.setAllowFds(false);
+            ActivityManagerNative.getDefault().broadcastIntent(
+                mMainThread.getApplicationThread(), intent, resolvedType, rd,
+                initialCode, initialData, initialExtras, null,
+                true, false, userHandle);
+        } catch (RemoteException e) {
+        }
+    }
+
+    @Override
     public void sendStickyBroadcast(Intent intent) {
         String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
         try {
@@ -1197,7 +1229,7 @@
 
     /** @hide */
     @Override
-    public boolean bindService(Intent service, ServiceConnection conn, int flags, int userId) {
+    public boolean bindService(Intent service, ServiceConnection conn, int flags, int userHandle) {
         IServiceConnection sd;
         if (conn == null) {
             throw new IllegalArgumentException("connection is null");
@@ -1219,7 +1251,7 @@
             int res = ActivityManagerNative.getDefault().bindService(
                 mMainThread.getApplicationThread(), getActivityToken(),
                 service, service.resolveTypeIfNeeded(getContentResolver()),
-                sd, flags, userId);
+                sd, flags, userHandle);
             if (res < 0) {
                 throw new SecurityException(
                         "Not allowed to bind to service " + service);
diff --git a/core/java/android/app/DownloadManager.java b/core/java/android/app/DownloadManager.java
index 17700f9..0b1c524 100644
--- a/core/java/android/app/DownloadManager.java
+++ b/core/java/android/app/DownloadManager.java
@@ -344,6 +344,13 @@
          */
         public static final int NETWORK_WIFI = 1 << 1;
 
+        /**
+         * Bit flag for {@link #setAllowedNetworkTypes} corresponding to
+         * {@link ConnectivityManager#TYPE_BLUETOOTH}.
+         * @hide
+         */
+        public static final int NETWORK_BLUETOOTH = 1 << 2;
+
         private Uri mUri;
         private Uri mDestinationUri;
         private List<Pair<String, String>> mRequestHeaders = new ArrayList<Pair<String, String>>();
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/bluetooth/BluetoothA2dp.java b/core/java/android/bluetooth/BluetoothA2dp.java
index 1b415e5..6e2278d 100755
--- a/core/java/android/bluetooth/BluetoothA2dp.java
+++ b/core/java/android/bluetooth/BluetoothA2dp.java
@@ -337,9 +337,7 @@
         if (mService != null && isEnabled()
             && isValidDevice(device)) {
             if (priority != BluetoothProfile.PRIORITY_OFF &&
-                priority != BluetoothProfile.PRIORITY_ON &&
-                priority != BluetoothProfile.PRIORITY_UNDEFINED &&
-                priority != BluetoothProfile.PRIORITY_AUTO_CONNECT) {
+                priority != BluetoothProfile.PRIORITY_ON){
               return false;
             }
             try {
diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java
index dc18029..ceaf17e 100755
--- a/core/java/android/bluetooth/BluetoothAdapter.java
+++ b/core/java/android/bluetooth/BluetoothAdapter.java
@@ -1246,10 +1246,8 @@
      * @hide
      */
     public boolean enableNoAutoConnect() {
-        try {
-            return mService.enableNoAutoConnect();
-        } catch (RemoteException e) {Log.e(TAG, "", e);}
-        return false;
+        // TODO avoid auto-connect in the new stack.
+        return enable();
     }
 
     /**
diff --git a/core/java/android/bluetooth/BluetoothHeadset.java b/core/java/android/bluetooth/BluetoothHeadset.java
index 8e6ebaf..541b69f 100755
--- a/core/java/android/bluetooth/BluetoothHeadset.java
+++ b/core/java/android/bluetooth/BluetoothHeadset.java
@@ -455,9 +455,7 @@
         if (mService != null && isEnabled() &&
             isValidDevice(device)) {
             if (priority != BluetoothProfile.PRIORITY_OFF &&
-                priority != BluetoothProfile.PRIORITY_ON &&
-                priority != BluetoothProfile.PRIORITY_UNDEFINED &&
-                priority != BluetoothProfile.PRIORITY_AUTO_CONNECT) {
+                priority != BluetoothProfile.PRIORITY_ON) {
               return false;
             }
             try {
diff --git a/core/java/android/bluetooth/BluetoothPbap.java b/core/java/android/bluetooth/BluetoothPbap.java
old mode 100644
new mode 100755
index 639ae1a..7de2ef6
--- a/core/java/android/bluetooth/BluetoothPbap.java
+++ b/core/java/android/bluetooth/BluetoothPbap.java
@@ -70,6 +70,7 @@
     private IBluetoothPbap mService;
     private final Context mContext;
     private ServiceListener mServiceListener;
+    private BluetoothAdapter mAdapter;
 
     /** There was an error trying to obtain the state */
     public static final int STATE_ERROR        = -1;
@@ -96,7 +97,7 @@
          * this callback before making IPC calls on the BluetoothPbap
          * service.
          */
-        public void onServiceConnected();
+        public void onServiceConnected(BluetoothPbap proxy);
 
         /**
          * Called to notify the client that this proxy object has been
@@ -108,12 +109,54 @@
         public void onServiceDisconnected();
     }
 
+    final private IBluetoothStateChangeCallback mBluetoothStateChangeCallback =
+            new IBluetoothStateChangeCallback.Stub() {
+                public void onBluetoothStateChange(boolean up) {
+                    if (DBG) Log.d(TAG, "onBluetoothStateChange: up=" + up);
+                    if (!up) {
+                        if (DBG) Log.d(TAG,"Unbinding service...");
+                        synchronized (mConnection) {
+                            try {
+                                mService = null;
+                                mContext.unbindService(mConnection);
+                            } catch (Exception re) {
+                                Log.e(TAG,"",re);
+                            }
+                        }
+                    } else {
+                        synchronized (mConnection) {
+                            try {
+                                if (mService == null) {
+                                    if (DBG) Log.d(TAG,"Binding service...");
+                                    if (!mContext.bindService(
+                                                        new Intent(IBluetoothPbap.class.getName()),
+                                                        mConnection, 0)) {
+                                        Log.e(TAG, "Could not bind to Bluetooth PBAP Service");
+                                    }
+                                }
+                            } catch (Exception re) {
+                                Log.e(TAG,"",re);
+                            }
+                        }
+                    }
+                }
+        };
+
     /**
      * Create a BluetoothPbap proxy object.
      */
     public BluetoothPbap(Context context, ServiceListener l) {
         mContext = context;
         mServiceListener = l;
+        mAdapter = BluetoothAdapter.getDefaultAdapter();
+        IBluetoothManager mgr = mAdapter.getBluetoothManager();
+        if (mgr != null) {
+            try {
+                mgr.registerStateChangeCallback(mBluetoothStateChangeCallback);
+            } catch (RemoteException e) {
+                Log.e(TAG,"",e);
+            }
+        }
         if (!context.bindService(new Intent(IBluetoothPbap.class.getName()), mConnection, 0)) {
             Log.e(TAG, "Could not bind to Bluetooth Pbap Service");
         }
@@ -134,9 +177,25 @@
      * are ok.
      */
     public synchronized void close() {
-        if (mConnection != null) {
-            mContext.unbindService(mConnection);
-            mConnection = null;
+        IBluetoothManager mgr = mAdapter.getBluetoothManager();
+        if (mgr != null) {
+            try {
+                mgr.unregisterStateChangeCallback(mBluetoothStateChangeCallback);
+            } catch (Exception e) {
+                Log.e(TAG,"",e);
+            }
+        }
+
+        synchronized (mConnection) {
+            if (mService != null) {
+                try {
+                    mService = null;
+                    mContext.unbindService(mConnection);
+                    mConnection = null;
+                } catch (Exception re) {
+                    Log.e(TAG,"",re);
+                }
+            }
         }
         mServiceListener = null;
     }
@@ -240,7 +299,7 @@
             if (DBG) log("Proxy object connected");
             mService = IBluetoothPbap.Stub.asInterface(service);
             if (mServiceListener != null) {
-                mServiceListener.onServiceConnected();
+                mServiceListener.onServiceConnected(BluetoothPbap.this);
             }
         }
         public void onServiceDisconnected(ComponentName className) {
diff --git a/core/java/android/bluetooth/BluetoothProfile.java b/core/java/android/bluetooth/BluetoothProfile.java
index eada27c..1920efa 100755
--- a/core/java/android/bluetooth/BluetoothProfile.java
+++ b/core/java/android/bluetooth/BluetoothProfile.java
@@ -115,13 +115,6 @@
     public static final int PRIORITY_UNDEFINED = -1;
 
     /**
-     * This Intent is sent to initiate the other  profile connections which are enabled
-     * @hide
-     **/
-    public static final String ACTION_CONNECT_OTHER_PROFILES =
-                            "android.bluetooth.profile.CONNECT_OTHER_PROFILES";
-
-    /**
      * Get connected devices for this specific profile.
      *
      * <p> Return the set of devices which are in state {@link #STATE_CONNECTED}
diff --git a/core/java/android/content/ContentProviderClient.java b/core/java/android/content/ContentProviderClient.java
index 5c315ce..204f963 100644
--- a/core/java/android/content/ContentProviderClient.java
+++ b/core/java/android/content/ContentProviderClient.java
@@ -231,6 +231,19 @@
         }
     }
 
+    /** See {@link ContentProvider#call(String, String, Bundle)} */
+    public Bundle call(String method, String arg, Bundle extras)
+            throws RemoteException {
+        try {
+            return mContentProvider.call(method, arg, extras);
+        } catch (DeadObjectException e) {
+            if (!mStable) {
+                mContentResolver.unstableProviderDied(mContentProvider);
+            }
+            throw e;
+        }
+    }
+
     /**
      * Call this to indicate to the system that the associated {@link ContentProvider} is no
      * longer needed by this {@link ContentProviderClient}.
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index af8b213..fca1d55 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -988,18 +988,6 @@
     public abstract void sendBroadcast(Intent intent);
 
     /**
-     * Same as #sendBroadcast(Intent intent), but for a specific user.  This broadcast
-     * can only be sent to receivers that are part of the calling application.  It
-     * requires holding the {@link android.Manifest.permission#INTERACT_ACROSS_USERS}
-     * permission.
-     * @param intent the intent to broadcast
-     * @param userId user to send the intent to
-     */
-    public void sendBroadcastToUser(Intent intent, int userId) {
-        throw new RuntimeException("Not implemented. Must override in a subclass.");
-    }
-
-    /**
      * Broadcast the given intent to all interested BroadcastReceivers, allowing
      * an optional required permission to be enforced.  This
      * call is asynchronous; it returns immediately, and you will continue
@@ -1097,6 +1085,48 @@
             Bundle initialExtras);
 
     /**
+     * Same as {@link #sendBroadcast(Intent)}, but for a specific user.  This broadcast
+     * can only be sent to receivers that are part of the calling application.  It
+     * requires holding the {@link android.Manifest.permission#INTERACT_ACROSS_USERS}
+     * permission.
+     * @param intent The intent to broadcast
+     * @param userHandle User to send the intent to.
+     * @see #sendBroadcast(Intent)
+     */
+    public abstract void sendBroadcastToUser(Intent intent, int userHandle);
+
+    /**
+     * Same as
+     * {@link #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle)},
+     * but for a specific user.  This broadcast
+     * can only be sent to receivers that are part of the calling application.  It
+     * requires holding the {@link android.Manifest.permission#INTERACT_ACROSS_USERS}
+     * permission.
+     *
+     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
+     *
+     * @param intent The Intent to broadcast; all receivers matching this
+     *               Intent will receive the broadcast.
+     * @param userHandle User to send the intent to.
+     * @param resultReceiver Your own BroadcastReceiver to treat as the final
+     *                       receiver of the broadcast.
+     * @param scheduler A custom Handler with which to schedule the
+     *                  resultReceiver callback; if null it will be
+     *                  scheduled in the Context's main thread.
+     * @param initialCode An initial value for the result code.  Often
+     *                    Activity.RESULT_OK.
+     * @param initialData An initial value for the result data.  Often
+     *                    null.
+     * @param initialExtras An initial value for the result extras.  Often
+     *                      null.
+     *
+     * @see #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle)
+     */
+    public abstract void sendOrderedBroadcastToUser(Intent intent, int userHandle,
+            BroadcastReceiver resultReceiver, Handler scheduler,
+            int initialCode, String initialData, Bundle initialExtras);
+
+    /**
      * Perform a {@link #sendBroadcast(Intent)} that is "sticky," meaning the
      * Intent you are sending stays around after the broadcast is complete,
      * so that others can quickly retrieve that data through the return
@@ -1403,11 +1433,11 @@
             int flags);
 
     /**
-     * Same as {@link #bindService(Intent, ServiceConnection, int)}, but with an explicit userId
+     * Same as {@link #bindService(Intent, ServiceConnection, int)}, but with an explicit userHandle
      * argument for use by system server and other multi-user aware code.
      * @hide
      */
-    public boolean bindService(Intent service, ServiceConnection conn, int flags, int userId) {
+    public boolean bindService(Intent service, ServiceConnection conn, int flags, int userHandle) {
         throw new RuntimeException("Not implemented. Must override in a subclass.");
     }
 
diff --git a/core/java/android/content/ContextWrapper.java b/core/java/android/content/ContextWrapper.java
index 7738132..af6bc11 100644
--- a/core/java/android/content/ContextWrapper.java
+++ b/core/java/android/content/ContextWrapper.java
@@ -313,11 +313,6 @@
     }
 
     @Override
-    public void sendBroadcastToUser(Intent intent, int userId) {
-        mBase.sendBroadcastToUser(intent, userId);
-    }
-
-    @Override
     public void sendBroadcast(Intent intent, String receiverPermission) {
         mBase.sendBroadcast(intent, receiverPermission);
     }
@@ -339,6 +334,19 @@
     }
 
     @Override
+    public void sendBroadcastToUser(Intent intent, int userHandle) {
+        mBase.sendBroadcastToUser(intent, userHandle);
+    }
+
+    @Override
+    public void sendOrderedBroadcastToUser(Intent intent, int userHandle,
+            BroadcastReceiver resultReceiver, Handler scheduler,
+            int initialCode, String initialData, Bundle initialExtras) {
+        mBase.sendOrderedBroadcastToUser(intent, userHandle, resultReceiver,
+                scheduler, initialCode, initialData, initialExtras);
+    }
+
+    @Override
     public void sendStickyBroadcast(Intent intent) {
         mBase.sendStickyBroadcast(intent);
     }
@@ -395,8 +403,8 @@
 
     /** @hide */
     @Override
-    public boolean bindService(Intent service, ServiceConnection conn, int flags, int userId) {
-        return mBase.bindService(service, conn, flags, userId);
+    public boolean bindService(Intent service, ServiceConnection conn, int flags, int userHandle) {
+        return mBase.bindService(service, conn, flags, userHandle);
     }
 
     @Override
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index 6d2de8e..d325186 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -571,7 +571,7 @@
  *     <li> {@link #EXTRA_INITIAL_INTENTS}
  *     <li> {@link #EXTRA_INTENT}
  *     <li> {@link #EXTRA_KEY_EVENT}
- *     <li> {@link #EXTRA_ORIGINATING_URI}
+ *     <li> {@link #EXTRA_ORIGINATING_URL}
  *     <li> {@link #EXTRA_PHONE_NUMBER}
  *     <li> {@link #EXTRA_REFERRER}
  *     <li> {@link #EXTRA_REMOTE_INTENT_TOKEN}
@@ -1288,17 +1288,17 @@
             = "android.intent.extra.NOT_UNKNOWN_SOURCE";
 
     /**
-     * Used as a URI extra field with {@link #ACTION_INSTALL_PACKAGE} and
-     * {@link #ACTION_VIEW} to indicate the URI from which the local APK in the Intent
+     * Used as a string extra field with {@link #ACTION_INSTALL_PACKAGE} and
+     * {@link #ACTION_VIEW} to indicate the URL from which the local APK in the Intent
      * data field originated from.
      */
-    public static final String EXTRA_ORIGINATING_URI
-            = "android.intent.extra.ORIGINATING_URI";
+    public static final String EXTRA_ORIGINATING_URL
+            = "android.intent.extra.ORIGINATING_URL";
 
     /**
-     * Used as a URI extra field with {@link #ACTION_INSTALL_PACKAGE} and
-     * {@link #ACTION_VIEW} to indicate the HTTP referrer URI associated with the Intent
-     * data field or {@link #EXTRA_ORIGINATING_URI}.
+     * Used as a string extra field with {@link #ACTION_INSTALL_PACKAGE} and
+     * {@link #ACTION_VIEW} to indicate the HTTP referrer associated with the Intent
+     * data field or {@link #EXTRA_ORIGINATING_URL}.
      */
     public static final String EXTRA_REFERRER
             = "android.intent.extra.REFERRER";
diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java
index 35e5610..3035729 100644
--- a/core/java/android/content/pm/ActivityInfo.java
+++ b/core/java/android/content/pm/ActivityInfo.java
@@ -172,6 +172,14 @@
      */
     public static final int FLAG_IMMERSIVE = 0x0400;
     /**
+     * Bit in {@link #flags}: If set, a single instance of the receiver will
+     * run for all users on the device.  Set from the
+     * {@link android.R.attr#singleUser} attribute.  Note that this flag is
+     * only relevent for ActivityInfo structures that are describiner receiver
+     * components; it is not applied to activities.
+     */
+    public static final int FLAG_SINGLE_USER = 0x40000000;
+    /**
      * Options that have been set in the activity declaration in the
      * manifest.
      * These include:
@@ -181,7 +189,7 @@
      * {@link #FLAG_STATE_NOT_NEEDED}, {@link #FLAG_EXCLUDE_FROM_RECENTS},
      * {@link #FLAG_ALLOW_TASK_REPARENTING}, {@link #FLAG_NO_HISTORY},
      * {@link #FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS},
-     * {@link #FLAG_HARDWARE_ACCELERATED}
+     * {@link #FLAG_HARDWARE_ACCELERATED}, {@link #FLAG_SINGLE_USER}.
      */
     public int flags;
 
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index 1b28a33..0d87df5 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -352,7 +352,7 @@
     String nextPackageToClean(String lastPackage);
 
     void movePackage(String packageName, IPackageMoveObserver observer, int flags);
-
+    
     boolean addPermissionAsync(in PermissionInfo info);
 
     boolean setInstallLocation(int loc);
@@ -363,14 +363,9 @@
     void setUserName(int userId, String name);
     ParcelFileDescriptor setUserIcon(int userId);
 
-    void installPackageWithOrigin(in Uri packageURI, in IPackageInstallObserver observer,
-            int flags, in String installerPackageName, in Uri originatingURI,
-            in Uri referrer);
-
     void installPackageWithVerification(in Uri packageURI, in IPackageInstallObserver observer,
             int flags, in String installerPackageName, in Uri verificationURI,
-            in ManifestDigest manifestDigest, in ContainerEncryptionParams encryptionParams,
-            in Uri originatingURI, in Uri referrer);
+            in ManifestDigest manifestDigest, in ContainerEncryptionParams encryptionParams);
 
     void verifyPendingInstall(int id, int verificationCode);
 
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index f745c89..cd7ef0e 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -2196,33 +2196,6 @@
     /**
      * Similar to
      * {@link #installPackage(Uri, IPackageInstallObserver, int, String)} but
-     * with references to the location of where the package originated from.
-     *
-     * @param packageURI The location of the package file to install. This can
-     *            be a 'file:' or a 'content:' URI.
-     * @param observer An observer callback to get notified when the package
-     *            installation is complete.
-     *            {@link IPackageInstallObserver#packageInstalled(String, int)}
-     *            will be called when that happens. observer may be null to
-     *            indicate that no callback is desired.
-     * @param flags - possible values: {@link #INSTALL_FORWARD_LOCK},
-     *            {@link #INSTALL_REPLACE_EXISTING}, {@link #INSTALL_ALLOW_TEST}
-     * @param installerPackageName Optional package name of the application that
-     *            is performing the installation. This identifies which market
-     *            the package came from.
-     * @param originatingURI URI referencing where the package was downloaded
-     *            from. May be {@code null}.
-     * @param referrer HTTP referrer URI associated with the originatingURI.
-     *            May be {@code null}.
-     * @hide
-     */
-    public abstract void installPackageWithOrigin(
-            Uri packageURI, IPackageInstallObserver observer, int flags,
-            String installerPackageName, Uri originatingURI, Uri referrer);
-
-    /**
-     * Similar to
-     * {@link #installPackage(Uri, IPackageInstallObserver, int, String)} but
      * with an extra verification file provided.
      *
      * @param packageURI The location of the package file to install. This can
@@ -2246,17 +2219,12 @@
      * @param encryptionParams if the package to be installed is encrypted,
      *            these parameters describing the encryption and authentication
      *            used. May be {@code null}.
-     * @param originatingURI URI referencing where the package was downloaded
-     *            from. May be {@code null}.
-     * @param referrer HTTP referrer URI associated with the originatingURI.
-     *            May be {@code null}.
      * @hide
      */
     public abstract void installPackageWithVerification(Uri packageURI,
             IPackageInstallObserver observer, int flags, String installerPackageName,
             Uri verificationURI, ManifestDigest manifestDigest,
-            ContainerEncryptionParams encryptionParams, Uri originatingURI,
-            Uri referrer);
+            ContainerEncryptionParams encryptionParams);
 
     /**
      * Allows a package listening to the
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 3ce7c78..05bb8fc 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -2040,7 +2040,7 @@
             return null;
         }
 
-        final boolean setExported = sa.hasValue(
+        boolean setExported = sa.hasValue(
                 com.android.internal.R.styleable.AndroidManifestActivity_exported);
         if (setExported) {
             a.info.exported = sa.getBoolean(
@@ -2166,6 +2166,21 @@
             a.info.configChanges = 0;
         }
 
+        if (receiver) {
+            if (sa.getBoolean(
+                    com.android.internal.R.styleable.AndroidManifestActivity_singleUser,
+                    false)) {
+                a.info.flags |= ServiceInfo.FLAG_SINGLE_USER;
+                if (a.info.exported) {
+                    Slog.w(TAG, "Activity exported request ignored due to singleUser: "
+                            + a.className + " at " + mArchiveSourcePath + " "
+                            + parser.getPositionDescription());
+                    a.info.exported = false;
+                }
+                setExported = true;
+            }
+        }
+
         sa.recycle();
 
         if (receiver && (owner.applicationInfo.flags&ApplicationInfo.FLAG_CANT_SAVE_STATE) != 0) {
@@ -2428,8 +2443,28 @@
             return null;
         }
 
+        boolean providerExportedDefault = false;
+
+        if (owner.applicationInfo.targetSdkVersion < Build.VERSION_CODES.JELLY_BEAN_MR1) {
+            // For compatibility, applications targeting API level 16 or lower
+            // should have their content providers exported by default, unless they
+            // specify otherwise.
+            providerExportedDefault = true;
+        }
+
+        if (((owner.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0)
+            && (owner.applicationInfo.targetSdkVersion == Build.VERSION_CODES.JELLY_BEAN)) {
+            // STOPSHIP: REMOVE THIS IF BLOCK
+            // To expose more bugs, pre-installed system apps targeting API level 16
+            // should not have their content providers exported by default.
+            // This is only a short term check, and should be removed when the
+            // default SDK version changes to 17.
+            providerExportedDefault = false;
+        }
+
         p.info.exported = sa.getBoolean(
-                com.android.internal.R.styleable.AndroidManifestProvider_exported, true);
+                com.android.internal.R.styleable.AndroidManifestProvider_exported,
+                providerExportedDefault);
 
         String cpname = sa.getNonConfigurationString(
                 com.android.internal.R.styleable.AndroidManifestProvider_authorities, 0);
@@ -2475,6 +2510,20 @@
                 com.android.internal.R.styleable.AndroidManifestProvider_initOrder,
                 0);
 
+        p.info.flags = 0;
+
+        if (sa.getBoolean(
+                com.android.internal.R.styleable.AndroidManifestProvider_singleUser,
+                false)) {
+            p.info.flags |= ProviderInfo.FLAG_SINGLE_USER;
+            if (p.info.exported) {
+                Slog.w(TAG, "Provider exported request ignored due to singleUser: "
+                        + p.className + " at " + mArchiveSourcePath + " "
+                        + parser.getPositionDescription());
+                p.info.exported = false;
+            }
+        }
+
         sa.recycle();
 
         if ((owner.applicationInfo.flags&ApplicationInfo.FLAG_CANT_SAVE_STATE) != 0) {
@@ -2487,7 +2536,7 @@
         }
         
         if (cpname == null) {
-            outError[0] = "<provider> does not incude authorities attribute";
+            outError[0] = "<provider> does not include authorities attribute";
             return null;
         }
         p.info.authority = cpname.intern();
diff --git a/core/java/android/content/pm/ProviderInfo.java b/core/java/android/content/pm/ProviderInfo.java
index ec01775..a534176 100644
--- a/core/java/android/content/pm/ProviderInfo.java
+++ b/core/java/android/content/pm/ProviderInfo.java
@@ -73,7 +73,21 @@
     /** Used to control initialization order of single-process providers
      *  running in the same process.  Higher goes first. */
     public int initOrder = 0;
-    
+
+    /**
+     * Bit in {@link #flags}: If set, a single instance of the provider will
+     * run for all users on the device.  Set from the
+     * {@link android.R.attr#singleUser} attribute.
+     */
+    public static final int FLAG_SINGLE_USER = 0x40000000;
+
+    /**
+     * Options that have been set in the provider declaration in the
+     * manifest.
+     * These include: {@link #FLAG_SINGLE_USER}.
+     */
+    public int flags = 0;
+
     /**
      * Whether or not this provider is syncable.
      * @deprecated This flag is now being ignored. The current way to make a provider
@@ -95,6 +109,7 @@
         pathPermissions = orig.pathPermissions;
         multiprocess = orig.multiprocess;
         initOrder = orig.initOrder;
+        flags = orig.flags;
         isSyncable = orig.isSyncable;
     }
     
@@ -112,6 +127,7 @@
         out.writeTypedArray(pathPermissions, parcelableFlags);
         out.writeInt(multiprocess ? 1 : 0);
         out.writeInt(initOrder);
+        out.writeInt(flags);
         out.writeInt(isSyncable ? 1 : 0);
     }
 
@@ -127,8 +143,7 @@
     };
 
     public String toString() {
-        return "ContentProviderInfo{name=" + authority + " className=" + name
-            + " isSyncable=" + (isSyncable ? "true" : "false") + "}";
+        return "ContentProviderInfo{name=" + authority + " className=" + name + "}";
     }
 
     private ProviderInfo(Parcel in) {
@@ -141,6 +156,7 @@
         pathPermissions = in.createTypedArray(PathPermission.CREATOR);
         multiprocess = in.readInt() != 0;
         initOrder = in.readInt();
+        flags = in.readInt();
         isSyncable = in.readInt() != 0;
     }
 }
diff --git a/core/java/android/content/pm/ServiceInfo.java b/core/java/android/content/pm/ServiceInfo.java
index 1aaceb4..796c2a4 100644
--- a/core/java/android/content/pm/ServiceInfo.java
+++ b/core/java/android/content/pm/ServiceInfo.java
@@ -53,13 +53,14 @@
      * run for all users on the device.  Set from the
      * {@link android.R.attr#singleUser} attribute.
      */
-    public static final int FLAG_SINGLE_USER = 0x0004;
+    public static final int FLAG_SINGLE_USER = 0x40000000;
 
     /**
      * Options that have been set in the service declaration in the
      * manifest.
      * These include:
-     * {@link #FLAG_STOP_WITH_TASK}, {@link #FLAG_ISOLATED_PROCESS}.
+     * {@link #FLAG_STOP_WITH_TASK}, {@link #FLAG_ISOLATED_PROCESS},
+     * {@link #FLAG_SINGLE_USER}.
      */
     public int flags;
 
diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java
index c7e55ce..d2af3e9 100755
--- a/core/java/android/content/res/Resources.java
+++ b/core/java/android/content/res/Resources.java
@@ -89,7 +89,8 @@
             = new LongSparseArray<ColorStateList>();
     private static final LongSparseArray<Drawable.ConstantState> sPreloadedColorDrawables
             = new LongSparseArray<Drawable.ConstantState>();
-    private static boolean mPreloaded;
+    private static boolean sPreloaded;
+    private static int sPreloadedDensity;
 
     /*package*/ final TypedValue mTmpValue = new TypedValue();
     /*package*/ final Configuration mTmpConfig = new Configuration();
@@ -1837,11 +1838,14 @@
      */
     public final void startPreloading() {
         synchronized (mSync) {
-            if (mPreloaded) {
+            if (sPreloaded) {
                 throw new IllegalStateException("Resources already preloaded");
             }
-            mPreloaded = true;
+            sPreloaded = true;
             mPreloading = true;
+            sPreloadedDensity = DisplayMetrics.DENSITY_DEVICE;
+            mConfiguration.densityDpi = sPreloadedDensity;
+            updateConfiguration(null, null);
         }
     }
     
@@ -1855,7 +1859,24 @@
             flushLayoutCache();
         }
     }
-    
+
+    private boolean verifyPreloadConfig(TypedValue value, String name) {
+        if ((value.changingConfigurations&~(ActivityInfo.CONFIG_FONT_SCALE
+                | ActivityInfo.CONFIG_DENSITY)) != 0) {
+            String resName;
+            try {
+                resName = getResourceName(value.resourceId);
+            } catch (NotFoundException e) {
+                resName = "?";
+            }
+            Log.w(TAG, "Preloaded " + name + " resource #0x"
+                    + Integer.toHexString(value.resourceId)
+                    + " (" + resName + ") that varies with configuration!!");
+            return false;
+        }
+        return true;
+    }
+
     /*package*/ Drawable loadDrawable(TypedValue value, int id)
             throws NotFoundException {
 
@@ -1879,8 +1900,10 @@
             return dr;
         }
 
-        Drawable.ConstantState cs = isColorDrawable ?
-                sPreloadedColorDrawables.get(key) : sPreloadedDrawables.get(key);
+        Drawable.ConstantState cs = isColorDrawable
+                ? sPreloadedColorDrawables.get(key)
+                : (sPreloadedDensity == mConfiguration.densityDpi
+                        ? sPreloadedDrawables.get(key) : null);
         if (cs != null) {
             dr = cs.newDrawable(this);
         } else {
@@ -1948,10 +1971,12 @@
             cs = dr.getConstantState();
             if (cs != null) {
                 if (mPreloading) {
-                    if (isColorDrawable) {
-                        sPreloadedColorDrawables.put(key, cs);
-                    } else {
-                        sPreloadedDrawables.put(key, cs);
+                    if (verifyPreloadConfig(value, "drawable")) {
+                        if (isColorDrawable) {
+                            sPreloadedColorDrawables.put(key, cs);
+                        } else {
+                            sPreloadedDrawables.put(key, cs);
+                        }
                     }
                 } else {
                     synchronized (mTmpValue) {
@@ -2016,7 +2041,9 @@
 
             csl = ColorStateList.valueOf(value.data);
             if (mPreloading) {
-                sPreloadedColorStateLists.put(key, csl);
+                if (verifyPreloadConfig(value, "color")) {
+                    sPreloadedColorStateLists.put(key, csl);
+                }
             }
 
             return csl;
@@ -2060,7 +2087,9 @@
 
         if (csl != null) {
             if (mPreloading) {
-                sPreloadedColorStateLists.put(key, csl);
+                if (verifyPreloadConfig(value, "color")) {
+                    sPreloadedColorStateLists.put(key, csl);
+                }
             } else {
                 synchronized (mTmpValue) {
                     //Log.i(TAG, "Saving cached color state list @ #" +
diff --git a/core/java/android/database/AbstractCursor.java b/core/java/android/database/AbstractCursor.java
index fb04817..e7ff92d 100644
--- a/core/java/android/database/AbstractCursor.java
+++ b/core/java/android/database/AbstractCursor.java
@@ -424,6 +424,9 @@
         if (mSelfObserver != null && mSelfObserverRegistered == true) {
             mContentResolver.unregisterContentObserver(mSelfObserver);
         }
+        try {
+            if (!mClosed) close();
+        } catch(Exception e) { }
     }
 
     /**
diff --git a/core/java/android/inputmethodservice/IInputMethodSessionWrapper.java b/core/java/android/inputmethodservice/IInputMethodSessionWrapper.java
index e10f218..ce797d1 100644
--- a/core/java/android/inputmethodservice/IInputMethodSessionWrapper.java
+++ b/core/java/android/inputmethodservice/IInputMethodSessionWrapper.java
@@ -17,6 +17,7 @@
 package android.inputmethodservice;
 
 import com.android.internal.os.HandlerCaller;
+import com.android.internal.os.SomeArgs;
 import com.android.internal.view.IInputMethodCallback;
 import com.android.internal.view.IInputMethodSession;
 
@@ -91,28 +92,28 @@
                         (ExtractedText)msg.obj);
                 return;
             case DO_DISPATCH_KEY_EVENT: {
-                HandlerCaller.SomeArgs args = (HandlerCaller.SomeArgs)msg.obj;
+                SomeArgs args = (SomeArgs)msg.obj;
                 mInputMethodSession.dispatchKeyEvent(msg.arg1,
                         (KeyEvent)args.arg1,
                         new InputMethodEventCallbackWrapper(
                                 (IInputMethodCallback)args.arg2));
-                mCaller.recycleArgs(args);
+                args.recycle();
                 return;
             }
             case DO_DISPATCH_TRACKBALL_EVENT: {
-                HandlerCaller.SomeArgs args = (HandlerCaller.SomeArgs)msg.obj;
+                SomeArgs args = (SomeArgs)msg.obj;
                 mInputMethodSession.dispatchTrackballEvent(msg.arg1,
                         (MotionEvent)args.arg1,
                         new InputMethodEventCallbackWrapper(
                                 (IInputMethodCallback)args.arg2));
-                mCaller.recycleArgs(args);
+                args.recycle();
                 return;
             }
             case DO_UPDATE_SELECTION: {
-                HandlerCaller.SomeArgs args = (HandlerCaller.SomeArgs)msg.obj;
+                SomeArgs args = (SomeArgs)msg.obj;
                 mInputMethodSession.updateSelection(args.argi1, args.argi2,
                         args.argi3, args.argi4, args.argi5, args.argi6);
-                mCaller.recycleArgs(args);
+                args.recycle();
                 return;
             }
             case DO_UPDATE_CURSOR: {
@@ -120,10 +121,10 @@
                 return;
             }
             case DO_APP_PRIVATE_COMMAND: {
-                HandlerCaller.SomeArgs args = (HandlerCaller.SomeArgs)msg.obj;
+                SomeArgs args = (SomeArgs)msg.obj;
                 mInputMethodSession.appPrivateCommand((String)args.arg1,
                         (Bundle)args.arg2);
-                mCaller.recycleArgs(args);
+                args.recycle();
                 return;
             }
             case DO_TOGGLE_SOFT_INPUT: {
diff --git a/core/java/android/inputmethodservice/IInputMethodWrapper.java b/core/java/android/inputmethodservice/IInputMethodWrapper.java
index 17c9ee7..5275314 100644
--- a/core/java/android/inputmethodservice/IInputMethodWrapper.java
+++ b/core/java/android/inputmethodservice/IInputMethodWrapper.java
@@ -17,6 +17,7 @@
 package android.inputmethodservice;
 
 import com.android.internal.os.HandlerCaller;
+import com.android.internal.os.SomeArgs;
 import com.android.internal.view.IInputContext;
 import com.android.internal.view.IInputMethod;
 import com.android.internal.view.IInputMethodCallback;
@@ -124,7 +125,7 @@
                 if (target == null) {
                     return;
                 }
-                HandlerCaller.SomeArgs args = (HandlerCaller.SomeArgs)msg.obj;
+                SomeArgs args = (SomeArgs)msg.obj;
                 try {
                     target.dump((FileDescriptor)args.arg1,
                             (PrintWriter)args.arg2, (String[])args.arg3);
@@ -134,6 +135,7 @@
                 synchronized (args.arg4) {
                     ((CountDownLatch)args.arg4).countDown();
                 }
+                args.recycle();
                 return;
             }
             
@@ -149,23 +151,25 @@
                 inputMethod.unbindInput();
                 return;
             case DO_START_INPUT: {
-                HandlerCaller.SomeArgs args = (HandlerCaller.SomeArgs)msg.obj;
+                SomeArgs args = (SomeArgs)msg.obj;
                 IInputContext inputContext = (IInputContext)args.arg1;
                 InputConnection ic = inputContext != null
                         ? new InputConnectionWrapper(inputContext) : null;
                 EditorInfo info = (EditorInfo)args.arg2;
                 info.makeCompatible(mTargetSdkVersion);
                 inputMethod.startInput(ic, info);
+                args.recycle();
                 return;
             }
             case DO_RESTART_INPUT: {
-                HandlerCaller.SomeArgs args = (HandlerCaller.SomeArgs)msg.obj;
+                SomeArgs args = (SomeArgs)msg.obj;
                 IInputContext inputContext = (IInputContext)args.arg1;
                 InputConnection ic = inputContext != null
                         ? new InputConnectionWrapper(inputContext) : null;
                 EditorInfo info = (EditorInfo)args.arg2;
                 info.makeCompatible(mTargetSdkVersion);
                 inputMethod.restartInput(ic, info);
+                args.recycle();
                 return;
             }
             case DO_CREATE_SESSION: {
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index fa1ff85..d30ef04 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -89,11 +89,21 @@
      *             should always obtain network information through
      *             {@link #getActiveNetworkInfo()} or
      *             {@link #getAllNetworkInfo()}.
+     * @see #EXTRA_NETWORK_TYPE
      */
     @Deprecated
     public static final String EXTRA_NETWORK_INFO = "networkInfo";
 
     /**
+     * Network type which triggered a {@link #CONNECTIVITY_ACTION} broadcast.
+     * Can be used with {@link #getNetworkInfo(int)} to get {@link NetworkInfo}
+     * state based on the calling application.
+     *
+     * @see android.content.Intent#getIntExtra(String, int)
+     */
+    public static final String EXTRA_NETWORK_TYPE = "networkType";
+
+    /**
      * The lookup key for a boolean that indicates whether a connect event
      * is for a network to which the connectivity manager was failing over
      * following a disconnect on another network.
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index 1bb27bd..fcc0ae4 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -1705,7 +1705,7 @@
             
             if (u.hasUserActivity()) {
                 boolean hasData = false;
-                for (int i=0; i<NUM_SCREEN_BRIGHTNESS_BINS; i++) {
+                for (int i=0; i<Uid.NUM_USER_ACTIVITY_TYPES; i++) {
                     int val = u.getUserActivityCount(i, which);
                     if (val != 0) {
                         if (!hasData) {
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/Build.java b/core/java/android/os/Build.java
index 7cf869c..8860e0a 100644
--- a/core/java/android/os/Build.java
+++ b/core/java/android/os/Build.java
@@ -414,6 +414,15 @@
 
         /**
          * Moar jelly beans!
+         *
+         * <p>Applications targeting this or a later release will get these
+         * new changes in behavior:</p>
+         * <ul>
+         * <li>Content Providers: The default value of {@code android:exported} is now
+         * {@code false}. See
+         * <a href="{@docRoot}guide/topics/manifest/provider-element.html#exported">
+         * the android:exported section</a> in the provider documentation for more details.</li>
+         * </ul>
          */
         public static final int JELLY_BEAN_MR1 = 17;
     }
diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java
index a04ad93..93860aa 100644
--- a/core/java/android/os/Process.java
+++ b/core/java/android/os/Process.java
@@ -640,11 +640,24 @@
     public static final native int myTid();
 
     /**
-     * Returns the identifier of this process's user.
+     * Returns the identifier of this process's uid.  This is the kernel uid
+     * that the process is running under, which is the identity of its
+     * app-specific sandbox.  It is different from {@link #myUserHandle} in that
+     * a uid identifies a specific app sandbox in a specific user.
      */
     public static final native int myUid();
 
     /**
+     * Returns the identifier of this process's user handle.  This is the
+     * user the process is running under.  It is distinct from
+     * {@link #myUid()} in that a particular user will have multiple
+     * distinct apps running under it each with their own uid.
+     */
+    public static final int myUserHandle() {
+        return UserId.getUserId(myUid());
+    }
+
+    /**
      * Returns whether the current process is in an isolated sandbox.
      * @hide
      */
diff --git a/core/java/android/os/StrictMode.java b/core/java/android/os/StrictMode.java
index ce213fb..f682abe 100644
--- a/core/java/android/os/StrictMode.java
+++ b/core/java/android/os/StrictMode.java
@@ -407,17 +407,17 @@
             }
 
             /**
-             * Enable detection of disk reads.
+             * Enable detection of slow calls.
              */
             public Builder detectCustomSlowCalls() {
                 return enable(DETECT_CUSTOM);
             }
 
             /**
-             * Enable detection of disk reads.
+             * Disable detection of slow calls.
              */
             public Builder permitCustomSlowCalls() {
-                return enable(DETECT_CUSTOM);
+                return disable(DETECT_CUSTOM);
             }
 
             /**
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index 8e123ac..0c16565 100644
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -345,10 +345,10 @@
      * directory provider URIs by themselves. This level of indirection allows
      * Contacts Provider to implement additional system-level features and
      * optimizations. Access to Contacts Provider is protected by the
-     * READ_CONTACTS permission, but access to the directory provider is not.
-     * Therefore directory providers must reject requests coming from clients
-     * other than the Contacts Provider itself. An easy way to prevent such
-     * unauthorized access is to check the name of the calling package:
+     * READ_CONTACTS permission, but access to the directory provider is protected by
+     * BIND_DIRECTORY_SEARCH. This permission was introduced at the API level 17, for previous
+     * platform versions the provider should perform the following check to make sure the call
+     * is coming from the ContactsProvider:
      * <pre>
      * private boolean isCallerAllowed() {
      *   PackageManager pm = getContext().getPackageManager();
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 840f27d..e1ef67c 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -2585,6 +2585,13 @@
         public static final String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled";
 
         /**
+         * When the user has enable the option to have a "bug report" command
+         * in the power menu.
+         * @hide
+         */
+        public static final String BUGREPORT_IN_POWER_MENU = "bugreport_in_power_menu";
+
+        /**
          * Whether ADB is enabled.
          */
         public static final String ADB_ENABLED = "adb_enabled";
@@ -2794,6 +2801,13 @@
         public static final String DISPLAY_SIZE_FORCED = "display_size_forced";
 
         /**
+         * The saved value for WindowManagerService.setForcedDisplayDensity().
+         * One integer in dpi.  If unset, then use the real display density.
+         * @hide
+         */
+        public static final String DISPLAY_DENSITY_FORCED = "display_density_forced";
+
+        /**
          * Whether assisted GPS should be enabled or not.
          * @hide
          */
@@ -4309,6 +4323,7 @@
          */
         public static final String[] SETTINGS_TO_BACKUP = {
             ADB_ENABLED,
+            BUGREPORT_IN_POWER_MENU,
             ALLOW_MOCK_LOCATION,
             PARENTAL_CONTROL_ENABLED,
             PARENTAL_CONTROL_REDIRECT_URL,
diff --git a/core/java/android/service/dreams/Dream.java b/core/java/android/service/dreams/Dream.java
index 83464c9..9a903e4 100644
--- a/core/java/android/service/dreams/Dream.java
+++ b/core/java/android/service/dreams/Dream.java
@@ -1,26 +1,31 @@
 /**
- * 
+ * 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.service.dreams;
 
-import com.android.internal.policy.PolicyManager;
-
 import android.annotation.SdkConstant;
 import android.annotation.SdkConstant.SdkConstantType;
 import android.app.Service;
-import android.content.Context;
 import android.content.Intent;
-import android.content.pm.ActivityInfo;
 import android.graphics.drawable.ColorDrawable;
-import android.os.Binder;
 import android.os.Handler;
 import android.os.IBinder;
-import android.os.Looper;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.util.Slog;
 import android.view.ActionMode;
-import android.view.IWindowManager;
 import android.view.KeyEvent;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -28,14 +33,14 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.Window;
+import android.view.WindowManager;
 import android.view.WindowManager.LayoutParams;
 import android.view.accessibility.AccessibilityEvent;
-import android.view.WindowManager;
-import android.view.WindowManagerImpl;
+
+import com.android.internal.policy.PolicyManager;
 
 /**
- * @hide
- *
+ *  Extend this class to implement a custom screensaver.
  */
 public class Dream extends Service implements Window.Callback {
     private final static boolean DEBUG = true;
@@ -61,7 +66,7 @@
     final Handler mHandler = new Handler();
     
     boolean mFinished = false;
-    
+
     // begin Window.Callback methods
     @Override
     public boolean dispatchKeyEvent(KeyEvent event) {
@@ -210,19 +215,14 @@
 
         mSandman = IDreamManager.Stub.asInterface(ServiceManager.getService("dreams"));
     }
-    
+
     /**
-     * Called when this Dream is started. Place your initialization here.
-     * 
-     * Subclasses must call through to the superclass implementation.
-     * 
-     * XXX(dsandler) Might want to make this final and have a different method for clients to override 
+     * Called when this Dream is started.
      */
-    @Override
-    public int onStartCommand(Intent intent, int flags, int startId) {
-        return super.onStartCommand(intent, flags, startId);
+    public void onStart() {
+        // hook for subclasses
     }
-    
+
    /**
      * Inflate a layout resource and set it to be the content view for this Dream.
      * Behaves similarly to {@link android.app.Activity#setContentView(int)}.
@@ -351,9 +351,12 @@
             @Override
             public void run() {
                 if (DEBUG) Slog.v(TAG, "Dream window added on thread " + Thread.currentThread().getId());
-                
+
                 getWindowManager().addView(mWindow.getDecorView(), mWindow.getAttributes());
-            }});        
+
+                // start it up
+                onStart();
+            }});
     }
     
     /**
diff --git a/core/java/android/service/dreams/DreamManagerService.java b/core/java/android/service/dreams/DreamManagerService.java
index 4a14ced..dd177cb 100644
--- a/core/java/android/service/dreams/DreamManagerService.java
+++ b/core/java/android/service/dreams/DreamManagerService.java
@@ -5,8 +5,6 @@
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
 
-import com.android.internal.view.IInputMethod;
-
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -16,34 +14,32 @@
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.os.ServiceManager;
-import android.os.SystemClock;
 import android.provider.Settings;
-import android.util.Log;
 import android.util.Slog;
 import android.view.IWindowManager;
 import android.view.WindowManager;
 
 /**
- * 
+ *
  * @hide
  *
  */
 
-public class DreamManagerService 
-        extends IDreamManager.Stub 
+public class DreamManagerService
+        extends IDreamManager.Stub
         implements ServiceConnection
 {
     private static final boolean DEBUG = true;
     private static final String TAG = "DreamManagerService";
-    
+
     final Object mLock = new Object[0];
 
     private Context mContext;
     private IWindowManager mIWindowManager;
-    
+
     private ComponentName mCurrentDreamComponent;
     private IDreamService mCurrentDream;
-    private Binder mCurrentDreamToken; 
+    private Binder mCurrentDreamToken;
 
     public DreamManagerService(Context context) {
         if (DEBUG) Slog.v(TAG, "DreamManagerService startup");
@@ -60,6 +56,7 @@
     }
 
     // IDreamManager method
+    @Override
     public void dream() {
         ComponentName name = getDreamComponent();
         if (name != null) {
@@ -75,26 +72,26 @@
     }
 
     // IDreamManager method
+    @Override
     public void setDreamComponent(ComponentName name) {
         Settings.Secure.putString(mContext.getContentResolver(), SCREENSAVER_COMPONENT, name.flattenToString());
     }
-    
+
     // IDreamManager method
+    @Override
     public ComponentName getDreamComponent() {
-        // TODO(dsandler) don't load this every time, watch the value  
+        // TODO(dsandler) don't load this every time, watch the value
         String component = Settings.Secure.getString(mContext.getContentResolver(), SCREENSAVER_COMPONENT);
-        if (component == null) {
-            component = mContext.getResources().getString(
-                com.android.internal.R.string.config_defaultDreamComponent);
-        }
         if (component != null) {
             return ComponentName.unflattenFromString(component);
         } else {
+            // We rely on DatabaseHelper to set a sane default for us when the settings DB is upgraded
             return null;
         }
     }
-    
+
     // IDreamManager method
+    @Override
     public void testDream(ComponentName name) {
         if (DEBUG) Slog.v(TAG, "startDream name=" + name
                 + " pid=" + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid());
@@ -110,15 +107,25 @@
     }
 
     // IDreamManager method
+    @Override
     public void awaken() {
         if (DEBUG) Slog.v(TAG, "awaken()");
         synchronized (mLock) {
             if (mCurrentDream != null) {
+                if (DEBUG) Slog.v(TAG, "disconnecting: " +  mCurrentDreamComponent + " service: " + mCurrentDream);
                 mContext.unbindService(this);
+                mCurrentDream = null;
+                mCurrentDreamToken = null;
             }
         }
     }
 
+    // IDreamManager method
+    @Override
+    public boolean isDreaming() {
+        return mCurrentDream != null;
+    }
+
     public void bindDreamComponentL(ComponentName componentName, boolean test) {
         if (DEBUG) Slog.v(TAG, "bindDreamComponent: componentName=" + componentName
                 + " pid=" + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid());
@@ -129,22 +136,21 @@
                 Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
                 )
             .putExtra("android.dreams.TEST", test);
-        
-        if (!mContext.bindService(intent, this, Context.BIND_AUTO_CREATE)) {
-            Slog.w(TAG, "unable to bind service: " + componentName);
-            return;
-        }
+
         mCurrentDreamComponent = componentName;
         mCurrentDreamToken = new Binder();
         try {
-            if (DEBUG) Slog.v(TAG, "Adding window token: " + mCurrentDreamToken 
+            if (DEBUG) Slog.v(TAG, "Adding window token: " + mCurrentDreamToken
                     + " for window type: " + WindowManager.LayoutParams.TYPE_DREAM);
             mIWindowManager.addWindowToken(mCurrentDreamToken,
                     WindowManager.LayoutParams.TYPE_DREAM);
         } catch (RemoteException e) {
             Slog.w(TAG, "Unable to add window token. Proceed at your own risk.");
         }
-        
+
+        if (!mContext.bindService(intent, this, Context.BIND_AUTO_CREATE)) {
+            Slog.w(TAG, "unable to bind service: " + componentName);
+        }
     }
 
     @Override
@@ -163,10 +169,9 @@
     @Override
     public void onServiceDisconnected(ComponentName name) {
         if (DEBUG) Slog.v(TAG, "disconnected: " + name + " service: " + mCurrentDream);
-        mCurrentDream = null;
-        mCurrentDreamToken = null;
+        // Only happens in exceptional circumstances
     }
-    
+
     @Override
     protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
         mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG);
diff --git a/core/java/android/service/dreams/IDreamManager.aidl b/core/java/android/service/dreams/IDreamManager.aidl
index 7225013..b64dd8f 100644
--- a/core/java/android/service/dreams/IDreamManager.aidl
+++ b/core/java/android/service/dreams/IDreamManager.aidl
@@ -27,4 +27,5 @@
     void setDreamComponent(in ComponentName componentName);
     ComponentName getDreamComponent();
     void testDream(in ComponentName componentName);
+    boolean isDreaming();
 }
\ No newline at end of file
diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java
index 6f45ca7..b513915 100644
--- a/core/java/android/service/wallpaper/WallpaperService.java
+++ b/core/java/android/service/wallpaper/WallpaperService.java
@@ -255,7 +255,7 @@
 
         final BaseIWindow mWindow = new BaseIWindow() {
             @Override
-            public void resized(int w, int h, Rect contentInsets,
+            public void resized(Rect frame, Rect contentInsets,
                     Rect visibleInsets, boolean reportDraw, Configuration newConfig) {
                 Message msg = mCaller.obtainMessageI(MSG_WINDOW_RESIZED,
                         reportDraw ? 1 : 0);
diff --git a/core/java/android/test/AndroidTestCase.java b/core/java/android/test/AndroidTestCase.java
index 1015506..0c8cbe6 100644
--- a/core/java/android/test/AndroidTestCase.java
+++ b/core/java/android/test/AndroidTestCase.java
@@ -135,7 +135,8 @@
             fail("expected SecurityException requiring " + permission);
         } catch (SecurityException expected) {
             assertNotNull("security exception's error message.", expected.getMessage());
-            assertTrue("error message should contain " + permission + ".",
+            assertTrue("error message should contain \"" + permission + "\". Got: \""
+                    + expected.getMessage() + "\".",
                     expected.getMessage().contains(permission));
         }
     }
diff --git a/core/java/android/util/DisplayMetrics.java b/core/java/android/util/DisplayMetrics.java
index d58eec4..506594b 100644
--- a/core/java/android/util/DisplayMetrics.java
+++ b/core/java/android/util/DisplayMetrics.java
@@ -92,7 +92,7 @@
      * density for a display in {@link #densityDpi}.
      */
     @Deprecated
-    public static final int DENSITY_DEVICE = getDeviceDensity();
+    public static int DENSITY_DEVICE = getDeviceDensity();
 
     /**
      * The absolute width of the display in pixels.
diff --git a/core/java/android/view/AccessibilityInteractionController.java b/core/java/android/view/AccessibilityInteractionController.java
index fbda474..9bee4bf 100644
--- a/core/java/android/view/AccessibilityInteractionController.java
+++ b/core/java/android/view/AccessibilityInteractionController.java
@@ -25,16 +25,14 @@
 import android.os.Message;
 import android.os.Process;
 import android.os.RemoteException;
-import android.util.Pool;
-import android.util.Poolable;
-import android.util.PoolableManager;
-import android.util.Pools;
 import android.util.SparseLongArray;
 import android.view.accessibility.AccessibilityInteractionClient;
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.accessibility.AccessibilityNodeProvider;
 import android.view.accessibility.IAccessibilityInteractionConnectionCallback;
 
+import com.android.internal.os.SomeArgs;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -48,7 +46,6 @@
  * UI thread.
  */
 final class AccessibilityInteractionController {
-    private static final int POOL_SIZE = 5;
 
     private ArrayList<AccessibilityNodeInfo> mTempAccessibilityNodeInfoList =
         new ArrayList<AccessibilityNodeInfo>();
@@ -76,60 +73,6 @@
         mPrefetcher = new AccessibilityNodePrefetcher();
     }
 
-    // Reusable poolable arguments for interacting with the view hierarchy
-    // to fit more arguments than Message and to avoid sharing objects between
-    // two messages since several threads can send messages concurrently.
-    private final Pool<SomeArgs> mPool = Pools.synchronizedPool(Pools.finitePool(
-            new PoolableManager<SomeArgs>() {
-                public SomeArgs newInstance() {
-                    return new SomeArgs();
-                }
-
-                public void onAcquired(SomeArgs info) {
-                    /* do nothing */
-                }
-
-                public void onReleased(SomeArgs info) {
-                    info.clear();
-                }
-            }, POOL_SIZE)
-    );
-
-    private class SomeArgs implements Poolable<SomeArgs> {
-        private SomeArgs mNext;
-        private boolean mIsPooled;
-
-        public Object arg1;
-        public Object arg2;
-        public int argi1;
-        public int argi2;
-        public int argi3;
-
-        public SomeArgs getNextPoolable() {
-            return mNext;
-        }
-
-        public boolean isPooled() {
-            return mIsPooled;
-        }
-
-        public void setNextPoolable(SomeArgs args) {
-            mNext = args;
-        }
-
-        public void setPooled(boolean isPooled) {
-            mIsPooled = isPooled;
-        }
-
-        private void clear() {
-            arg1 = null;
-            arg2 = null;
-            argi1 = 0;
-            argi2 = 0;
-            argi3 = 0;
-        }
-    }
-
     private boolean isShown(View view) {
         // The first two checks are made also made by isShown() which
         // however traverses the tree up to the parent to catch that.
@@ -148,7 +91,7 @@
         message.what = PrivateHandler.MSG_FIND_ACCESSIBLITY_NODE_INFO_BY_ACCESSIBILITY_ID;
         message.arg1 = flags;
 
-        SomeArgs args = mPool.acquire();
+        SomeArgs args = SomeArgs.obtain();
         args.argi1 = AccessibilityNodeInfo.getAccessibilityViewId(accessibilityNodeId);
         args.argi2 = AccessibilityNodeInfo.getVirtualDescendantId(accessibilityNodeId);
         args.argi3 = interactionId;
@@ -177,7 +120,7 @@
         final IAccessibilityInteractionConnectionCallback callback =
             (IAccessibilityInteractionConnectionCallback) args.arg1;
 
-        mPool.release(args);
+        args.recycle();
 
         List<AccessibilityNodeInfo> infos = mTempAccessibilityNodeInfoList;
         infos.clear();
@@ -216,7 +159,7 @@
         message.arg1 = flags;
         message.arg2 = AccessibilityNodeInfo.getAccessibilityViewId(accessibilityNodeId);
 
-        SomeArgs args = mPool.acquire();
+        SomeArgs args = SomeArgs.obtain();
         args.argi1 = viewId;
         args.argi2 = interactionId;
         args.arg1 = callback;
@@ -245,7 +188,7 @@
         final IAccessibilityInteractionConnectionCallback callback =
             (IAccessibilityInteractionConnectionCallback) args.arg1;
 
-        mPool.release(args);
+        args.recycle();
 
         AccessibilityNodeInfo info = null;
         try {
@@ -284,7 +227,7 @@
         message.what = PrivateHandler.MSG_FIND_ACCESSIBLITY_NODE_INFO_BY_TEXT;
         message.arg1 = flags;
 
-        SomeArgs args = mPool.acquire();
+        SomeArgs args = SomeArgs.obtain();
         args.arg1 = text;
         args.arg2 = callback;
         args.argi1 = AccessibilityNodeInfo.getAccessibilityViewId(accessibilityNodeId);
@@ -315,7 +258,7 @@
         final int accessibilityViewId = args.argi1;
         final int virtualDescendantId = args.argi2;
         final int interactionId = args.argi3;
-        mPool.release(args);
+        args.recycle();
 
         List<AccessibilityNodeInfo> infos = null;
         try {
@@ -383,7 +326,7 @@
         message.arg1 = flags;
         message.arg2 = focusType;
 
-        SomeArgs args = mPool.acquire();
+        SomeArgs args = SomeArgs.obtain();
         args.argi1 = interactionId;
         args.argi2 = AccessibilityNodeInfo.getAccessibilityViewId(accessibilityNodeId);
         args.argi3 = AccessibilityNodeInfo.getVirtualDescendantId(accessibilityNodeId);
@@ -414,7 +357,7 @@
         final IAccessibilityInteractionConnectionCallback callback =
             (IAccessibilityInteractionConnectionCallback) args.arg1;
 
-        mPool.release(args);
+        args.recycle();
 
         AccessibilityNodeInfo focused = null;
         try {
@@ -480,8 +423,7 @@
         message.arg1 = flags;
         message.arg2 = AccessibilityNodeInfo.getAccessibilityViewId(accessibilityNodeId);
 
-        SomeArgs args = mPool.acquire();
-        args.argi1 = AccessibilityNodeInfo.getVirtualDescendantId(accessibilityNodeId);
+        SomeArgs args = SomeArgs.obtain();
         args.argi2 = direction;
         args.argi3 = interactionId;
         args.arg1 = callback;
@@ -505,13 +447,12 @@
         final int accessibilityViewId = message.arg2;
 
         SomeArgs args = (SomeArgs) message.obj;
-        final int virtualDescendantId = args.argi1;
         final int direction = args.argi2;
         final int interactionId = args.argi3;
         final IAccessibilityInteractionConnectionCallback callback =
             (IAccessibilityInteractionConnectionCallback) args.arg1;
 
-        mPool.release(args);
+        args.recycle();
 
         AccessibilityNodeInfo next = null;
         try {
@@ -552,7 +493,7 @@
         message.arg1 = flags;
         message.arg2 = AccessibilityNodeInfo.getAccessibilityViewId(accessibilityNodeId);
 
-        SomeArgs args = mPool.acquire();
+        SomeArgs args = SomeArgs.obtain();
         args.argi1 = AccessibilityNodeInfo.getVirtualDescendantId(accessibilityNodeId);
         args.argi2 = action;
         args.argi3 = interactionId;
@@ -585,7 +526,7 @@
             (IAccessibilityInteractionConnectionCallback) args.arg1;
         Bundle arguments = (Bundle) args.arg2;
 
-        mPool.release(args);
+        args.recycle();
 
         boolean succeeded = false;
         try {
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index c59f1bf..2b0c14d 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -16,7 +16,6 @@
 
 package android.view;
 
-import android.content.res.CompatibilityInfo;
 import android.graphics.PixelFormat;
 import android.graphics.Point;
 import android.graphics.Rect;
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java
index 8236cd7..188fede 100644
--- a/core/java/android/view/HardwareRenderer.java
+++ b/core/java/android/view/HardwareRenderer.java
@@ -135,7 +135,19 @@
      * @hide
      */
     public static final String DEBUG_DIRTY_REGIONS_PROPERTY = "debug.hwui.show_dirty_regions";
-    
+
+    /**
+     * Turn on to flash hardware layers when they update.
+     *
+     * Possible values:
+     * "true", to enable hardware layers updates debugging
+     * "false", to disable hardware layers updates debugging
+     *
+     * @hide
+     */
+    public static final String DEBUG_SHOW_LAYERS_UPDATES_PROPERTY =
+            "debug.hwui.show_layers_updates";
+
     /**
      * A process can set this flag to false to prevent the use of hardware
      * rendering.
diff --git a/core/java/android/view/IWindow.aidl b/core/java/android/view/IWindow.aidl
index 9f22870..15bd46c 100644
--- a/core/java/android/view/IWindow.aidl
+++ b/core/java/android/view/IWindow.aidl
@@ -45,7 +45,7 @@
      */
     void executeCommand(String command, String parameters, in ParcelFileDescriptor descriptor);
 
-    void resized(int w, int h, in Rect contentInsets,
+    void resized(in Rect frame, in Rect contentInsets,
             in Rect visibleInsets, boolean reportDraw, in Configuration newConfig);
     void moved(int newX, int newY);
     void dispatchAppVisibility(boolean visible);
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index f58cd83..5bccdd4 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -59,6 +59,8 @@
 
     void setForcedDisplaySize(int displayId, int longDimen, int shortDimen);
     void clearForcedDisplaySize(int displayId);
+    void setForcedDisplayDensity(int displayId, int density);
+    void clearForcedDisplayDensity(int displayId);
 
     // Is the device configured to have a full system bar for larger screens?
     boolean hasSystemNavBar();
diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java
index abab268..5f5d1f2 100644
--- a/core/java/android/view/Surface.java
+++ b/core/java/android/view/Surface.java
@@ -469,6 +469,8 @@
     public native   void setFlags(int flags, int mask);
     /** @hide */
     public native   void setWindowCrop(Rect crop);
+    /** @hide */
+    public native   void setDisplayId(int displayId);
 
 
    
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index d3457b3..f4d40cb 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -531,7 +531,7 @@
 
                     mSurface.transferFrom(mNewSurface);
 
-                    if (visible) {
+                    if (visible && mSurface.isValid()) {
                         if (!mSurfaceCreated && (surfaceChanged || visibleChanged)) {
                             mSurfaceCreated = true;
                             mIsCreating = true;
diff --git a/core/java/android/view/TextureView.java b/core/java/android/view/TextureView.java
index a719a01..fe14c88 100644
--- a/core/java/android/view/TextureView.java
+++ b/core/java/android/view/TextureView.java
@@ -534,7 +534,8 @@
      */
     public Bitmap getBitmap(int width, int height) {
         if (isAvailable() && width > 0 && height > 0) {
-            return getBitmap(Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888));
+            return getBitmap(Bitmap.createBitmap(getResources().getDisplayMetrics(),
+                    width, height, Bitmap.Config.ARGB_8888));
         }
         return null;
     }
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 50c3407..59aeffc 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -2076,6 +2076,15 @@
      */
     static final int VIEW_QUICK_REJECTED = 0x10000000;
 
+    /**
+     * Flag indicating that start/end padding has been resolved into left/right padding
+     * for use in measurement, layout, drawing, etc. This is set by {@link #resolvePadding()}
+     * and checked by {@link #measure(int, int)} to determine if padding needs to be resolved
+     * during measurement. In some special cases this is required such as when an adapter-based
+     * view measures prospective children without attaching them to a window.
+     */
+    static final int PADDING_RESOLVED = 0x20000000;
+
     // There are a couple of flags left in mPrivateFlags2
 
     /* End of masks for mPrivateFlags2 */
@@ -11335,6 +11344,7 @@
 
         internalSetPadding(mUserPaddingLeft, mPaddingTop, mUserPaddingRight, mUserPaddingBottom);
         onPaddingChanged(resolvedLayoutDirection);
+        mPrivateFlags2 |= PADDING_RESOLVED;
     }
 
     /**
@@ -11430,6 +11440,7 @@
         resetResolvedLayoutDirection();
         resetResolvedTextAlignment();
         resetAccessibilityStateChanged();
+        mPrivateFlags2 &= ~PADDING_RESOLVED;
     }
 
     /**
@@ -12402,7 +12413,8 @@
                 if (bitmap != null) bitmap.recycle();
 
                 try {
-                    bitmap = Bitmap.createBitmap(width, height, quality);
+                    bitmap = Bitmap.createBitmap(mResources.getDisplayMetrics(),
+                            width, height, quality);
                     bitmap.setDensity(getResources().getDisplayMetrics().densityDpi);
                     if (autoScale) {
                         mDrawingCache = bitmap;
@@ -12494,7 +12506,8 @@
         width = (int) ((width * scale) + 0.5f);
         height = (int) ((height * scale) + 0.5f);
 
-        Bitmap bitmap = Bitmap.createBitmap(width > 0 ? width : 1, height > 0 ? height : 1, quality);
+        Bitmap bitmap = Bitmap.createBitmap(mResources.getDisplayMetrics(),
+                width > 0 ? width : 1, height > 0 ? height : 1, quality);
         if (bitmap == null) {
             throw new OutOfMemoryError();
         }
@@ -14105,7 +14118,7 @@
         internalSetPadding(left, top, right, bottom);
     }
 
-    private void internalSetPadding(int left, int top, int right, int bottom) {
+    void internalSetPadding(int left, int top, int right, int bottom) {
         mUserPaddingLeft = left;
         mUserPaddingRight = right;
         mUserPaddingBottom = bottom;
@@ -14947,6 +14960,10 @@
             // first clears the measured dimension flag
             mPrivateFlags &= ~MEASURED_DIMENSION_SET;
 
+            if ((mPrivateFlags2 & PADDING_RESOLVED) == 0) {
+                resolvePadding();
+            }
+
             // measure ourselves, this should set the measured dimension flag back
             onMeasure(widthMeasureSpec, heightMeasureSpec);
 
diff --git a/core/java/android/view/ViewDebug.java b/core/java/android/view/ViewDebug.java
index 00d4fc7..dae9265 100644
--- a/core/java/android/view/ViewDebug.java
+++ b/core/java/android/view/ViewDebug.java
@@ -546,7 +546,7 @@
                                         (view != null && view.getResources() != null) ?
                                                 view.getResources().getDisplayMetrics() : null;
                                 final Bitmap bitmap = metrics != null ?
-                                        Bitmap.createBitmap(metrics.widthPixels,
+                                        Bitmap.createBitmap(metrics, metrics.widthPixels,
                                                 metrics.heightPixels, Bitmap.Config.RGB_565) : null;
                                 final Canvas canvas = bitmap != null ? new Canvas(bitmap) : null;
                                 return new Object[] {
@@ -706,7 +706,8 @@
             Log.w("View", "Failed to create capture bitmap!");
             // Send an empty one so that it doesn't get stuck waiting for
             // something.
-            b = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
+            b = Bitmap.createBitmap(root.getResources().getDisplayMetrics(),
+                    1, 1, Bitmap.Config.ARGB_8888);
         }
 
         BufferedOutputStream out = null;
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 95eed33..1548743 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -170,6 +170,14 @@
      * This field should be made private, so it is hidden from the SDK.
      * {@hide}
      */
+    @ViewDebug.ExportedProperty(flagMapping = {
+            @ViewDebug.FlagToString(mask = FLAG_CLIP_CHILDREN, equals = FLAG_CLIP_CHILDREN,
+                    name = "CLIP_CHILDREN"),
+            @ViewDebug.FlagToString(mask = FLAG_CLIP_TO_PADDING, equals = FLAG_CLIP_TO_PADDING,
+                    name = "CLIP_TO_PADDING"),
+            @ViewDebug.FlagToString(mask = FLAG_PADDING_NOT_NULL, equals = FLAG_PADDING_NOT_NULL,
+                    name = "PADDING_NOT_NULL")
+    })
     protected int mGroupFlags;
 
     /*
@@ -2509,12 +2517,9 @@
         super.dispatchDetachedFromWindow();
     }
 
-    /**
-     * {@inheritDoc}
-     */
     @Override
-    public void setPadding(int left, int top, int right, int bottom) {
-        super.setPadding(left, top, right, bottom);
+    void internalSetPadding(int left, int top, int right, int bottom) {
+        super.internalSetPadding(left, top, right, bottom);
 
         if ((mPaddingLeft | mPaddingTop | mPaddingRight | mPaddingBottom) != 0) {
             mGroupFlags |= FLAG_PADDING_NOT_NULL;
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 1ad42f5..afcbaaf 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -74,6 +74,7 @@
 import android.widget.Scroller;
 
 import com.android.internal.R;
+import com.android.internal.os.SomeArgs;
 import com.android.internal.policy.PolicyManager;
 import com.android.internal.view.BaseSurfaceHolder;
 import com.android.internal.view.RootViewSurfaceTaker;
@@ -109,7 +110,7 @@
     private static final boolean DEBUG_FPS = false;
 
     private static final boolean USE_RENDER_THREAD = false;
-    
+
     /**
      * Set this system property to true to force the view hierarchy to render
      * at 60 Hz. This can be used to measure the potential framerate.
@@ -264,12 +265,6 @@
     final Configuration mLastConfiguration = new Configuration();
     final Configuration mPendingConfiguration = new Configuration();
 
-    class ResizedInfo {
-        Rect contentInsets;
-        Rect visibleInsets;
-        Configuration newConfig;
-    }
-    
     boolean mScrollMayChange;
     int mSoftInputMode;
     View mLastScrolledFocus;
@@ -2823,29 +2818,31 @@
             case MSG_DISPATCH_GET_NEW_SURFACE:
                 handleGetNewSurface();
                 break;
-            case MSG_RESIZED:
-                ResizedInfo ri = (ResizedInfo)msg.obj;
-
-                if (mWinFrame.width() == msg.arg1 && mWinFrame.height() == msg.arg2
-                        && mPendingContentInsets.equals(ri.contentInsets)
-                        && mPendingVisibleInsets.equals(ri.visibleInsets)
-                        && ((ResizedInfo)msg.obj).newConfig == null) {
+            case MSG_RESIZED: {
+                // Recycled in the fall through...
+                SomeArgs args = (SomeArgs) msg.obj;
+                if (mWinFrame.equals((Rect) args.arg1)
+                        && mPendingContentInsets.equals((Rect) args.arg2)
+                        && mPendingVisibleInsets.equals((Rect) args.arg3)
+                        && ((Configuration) args.arg4 == null)) {
                     break;
                 }
-                // fall through...
+                } // fall through...
             case MSG_RESIZED_REPORT:
                 if (mAdded) {
-                    Configuration config = ((ResizedInfo)msg.obj).newConfig;
+                    SomeArgs args = (SomeArgs) msg.obj;
+
+                    Configuration config = (Configuration) args.arg4;
                     if (config != null) {
                         updateConfiguration(config, false);
                     }
-                    // TODO: Should left/top stay unchanged and only change the right/bottom?
-                    mWinFrame.left = 0;
-                    mWinFrame.right = msg.arg1;
-                    mWinFrame.top = 0;
-                    mWinFrame.bottom = msg.arg2;
-                    mPendingContentInsets.set(((ResizedInfo)msg.obj).contentInsets);
-                    mPendingVisibleInsets.set(((ResizedInfo)msg.obj).visibleInsets);
+
+                    mWinFrame.set((Rect) args.arg1);
+                    mPendingContentInsets.set((Rect) args.arg2);
+                    mPendingVisibleInsets.set((Rect) args.arg3);
+
+                    args.recycle();
+
                     if (msg.what == MSG_RESIZED_REPORT) {
                         mReportNextDraw = true;
                     }
@@ -2853,6 +2850,7 @@
                     if (mView != null) {
                         forceLayout(mView);
                     }
+
                     requestLayout();
                 }
                 break;
@@ -4069,26 +4067,25 @@
         mHandler.sendMessage(msg);
     }
 
-    public void dispatchResized(int w, int h, Rect contentInsets,
+    public void dispatchResized(Rect frame, Rect contentInsets,
             Rect visibleInsets, boolean reportDraw, Configuration newConfig) {
-        if (DEBUG_LAYOUT) Log.v(TAG, "Resizing " + this + ": w=" + w
-                + " h=" + h + " contentInsets=" + contentInsets.toShortString()
+        if (DEBUG_LAYOUT) Log.v(TAG, "Resizing " + this + ": frame=" + frame.toShortString()
+                + " contentInsets=" + contentInsets.toShortString()
                 + " visibleInsets=" + visibleInsets.toShortString()
                 + " reportDraw=" + reportDraw);
-        Message msg = mHandler.obtainMessage(reportDraw ? MSG_RESIZED_REPORT :MSG_RESIZED);
+        Message msg = mHandler.obtainMessage(reportDraw ? MSG_RESIZED_REPORT : MSG_RESIZED);
         if (mTranslator != null) {
+            mTranslator.translateRectInScreenToAppWindow(frame);
             mTranslator.translateRectInScreenToAppWindow(contentInsets);
             mTranslator.translateRectInScreenToAppWindow(visibleInsets);
-            w *= mTranslator.applicationInvertedScale;
-            h *= mTranslator.applicationInvertedScale;
         }
-        msg.arg1 = w;
-        msg.arg2 = h;
-        ResizedInfo ri = new ResizedInfo();
-        ri.contentInsets = new Rect(contentInsets);
-        ri.visibleInsets = new Rect(visibleInsets);
-        ri.newConfig = newConfig;
-        msg.obj = ri;
+        SomeArgs args = SomeArgs.obtain();
+        final boolean sameProcessCall = (Binder.getCallingPid() == android.os.Process.myPid());
+        args.arg1 = sameProcessCall ? new Rect(frame) : frame;
+        args.arg2 = sameProcessCall ? new Rect(contentInsets) : contentInsets;
+        args.arg3 = sameProcessCall ? new Rect(visibleInsets) : visibleInsets;
+        args.arg4 = sameProcessCall && newConfig != null ? new Configuration(newConfig) : newConfig;
+        msg.obj = args;
         mHandler.sendMessage(msg);
     }
 
@@ -4734,11 +4731,11 @@
             mViewAncestor = new WeakReference<ViewRootImpl>(viewAncestor);
         }
 
-        public void resized(int w, int h, Rect contentInsets,
+        public void resized(Rect frame, Rect contentInsets,
                 Rect visibleInsets, boolean reportDraw, Configuration newConfig) {
             final ViewRootImpl viewAncestor = mViewAncestor.get();
             if (viewAncestor != null) {
-                viewAncestor.dispatchResized(w, h, contentInsets,
+                viewAncestor.dispatchResized(frame, contentInsets,
                         visibleInsets, reportDraw, newConfig);
             }
         }
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java
index 9522a1b..407bae5 100644
--- a/core/java/android/view/WindowManagerPolicy.java
+++ b/core/java/android/view/WindowManagerPolicy.java
@@ -483,7 +483,7 @@
      * Called by window manager once it has the initial, default native
      * display dimensions.
      */
-    public void setInitialDisplaySize(Display display, int width, int height);
+    public void setInitialDisplaySize(Display display, int width, int height, int density);
 
     /**
      * Check permissions when adding a window.
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index 58f0b85..548d4ad9 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -16,7 +16,7 @@
 
 package android.view.inputmethod;
 
-import com.android.internal.os.HandlerCaller;
+import com.android.internal.os.SomeArgs;
 import com.android.internal.view.IInputConnectionWrapper;
 import com.android.internal.view.IInputContext;
 import com.android.internal.view.IInputMethodCallback;
@@ -341,7 +341,7 @@
         public void handleMessage(Message msg) {
             switch (msg.what) {
                 case MSG_DUMP: {
-                    HandlerCaller.SomeArgs args = (HandlerCaller.SomeArgs)msg.obj;
+                    SomeArgs args = (SomeArgs)msg.obj;
                     try {
                         doDump((FileDescriptor)args.arg1,
                                 (PrintWriter)args.arg2, (String[])args.arg3);
@@ -351,6 +351,7 @@
                     synchronized (args.arg4) {
                         ((CountDownLatch)args.arg4).countDown();
                     }
+                    args.recycle();
                     return;
                 }
                 case MSG_BIND: {
@@ -486,7 +487,7 @@
             // interface to the system.
             
             CountDownLatch latch = new CountDownLatch(1);
-            HandlerCaller.SomeArgs sargs = new HandlerCaller.SomeArgs();
+            SomeArgs sargs = SomeArgs.obtain();
             sargs.arg1 = fd;
             sargs.arg2 = fout;
             sargs.arg3 = args;
diff --git a/core/java/android/widget/ProgressBar.java b/core/java/android/widget/ProgressBar.java
index a28e9ff..860e583 100644
--- a/core/java/android/widget/ProgressBar.java
+++ b/core/java/android/widget/ProgressBar.java
@@ -985,9 +985,13 @@
     }
 
     private void updateDrawableBounds(int w, int h) {
-        // onDraw will translate the canvas so we draw starting at 0,0
-        int right = w - mPaddingRight - mPaddingLeft;
-        int bottom = h - mPaddingBottom - mPaddingTop;
+        // onDraw will translate the canvas so we draw starting at 0,0.
+        // Subtract out padding for the purposes of the calculations below.
+        w -= mPaddingRight + mPaddingLeft;
+        h -= mPaddingTop + mPaddingBottom;
+
+        int right = w;
+        int bottom = h;
         int top = 0;
         int left = 0;
 
diff --git a/core/java/android/widget/StackView.java b/core/java/android/widget/StackView.java
index 293eda1..6853660 100644
--- a/core/java/android/widget/StackView.java
+++ b/core/java/android/widget/StackView.java
@@ -1412,8 +1412,8 @@
                 return null;
             }
 
-            Bitmap bitmap = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(),
-                    Bitmap.Config.ARGB_8888);
+            Bitmap bitmap = Bitmap.createBitmap(v.getResources().getDisplayMetrics(),
+                    v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
             mCanvas.setBitmap(bitmap);
 
             float rotationX = v.getRotationX();
diff --git a/core/java/android/widget/package.html b/core/java/android/widget/package.html
index 7d94a4b..91d327c 100644
--- a/core/java/android/widget/package.html
+++ b/core/java/android/widget/package.html
@@ -1,11 +1,16 @@
 <HTML>
 <BODY>
+<p>
 The widget package contains (mostly visual) UI elements to use
-on your Application screen. You can design your own <p>
+on your Application screen. You can also design your own.
+</p>
+
+<p>
 To create your own widget, extend {@link android.view.View} or a subclass. To
 use your widget in layout XML, there are two additional files for you to
 create. Here is a list of files you'll need to create to implement a custom
 widget:
+</p>
 <ul>
 <li><b>Java implementation file</b> - This is the file that implements the
 behavior of the widget. If you can instantiate the object from layout XML,
@@ -19,14 +24,16 @@
 res/layout/ that describes the layout of your widget. You could also do
 this in code in your Java file.</li>
 </ul>
+
+<p>
 ApiDemos sample application has an example of creating a custom layout XML
 tag, LabelView. See the following files that demonstrate implementing and using
-a custom widget:</p>
+a custom widget:
+</p>
 <ul>
-    <li><strong>LabelView.java</strong> - The implentation file</li>
+    <li><strong>LabelView.java</strong> - The implementation file</li>
     <li><strong>res/values/attrs.xml</strong> - Definition file</li>
-    <li><strong>res/layout/custom_view_1.xml</strong> - Layout
-file</li>
+    <li><strong>res/layout/custom_view_1.xml</strong> - Layout file</li>
 </ul>
 </BODY>
 </HTML>
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 4656b8b..94e7a06 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -2332,8 +2332,8 @@
                 batteryRealtime, which);
     }
 
-    @Override public int getPhoneSignalStrengthCount(int dataType, int which) {
-        return mPhoneDataConnectionsTimer[dataType].getCountLocked(which);
+    @Override public int getPhoneSignalStrengthCount(int strengthBin, int which) {
+        return mPhoneSignalStrengthsTimer[strengthBin].getCountLocked(which);
     }
 
     @Override public long getPhoneDataConnectionTime(int dataType,
diff --git a/core/java/com/android/internal/os/HandlerCaller.java b/core/java/com/android/internal/os/HandlerCaller.java
index a94fb1e..84699dc 100644
--- a/core/java/com/android/internal/os/HandlerCaller.java
+++ b/core/java/com/android/internal/os/HandlerCaller.java
@@ -22,35 +22,14 @@
 import android.os.Message;
 
 public class HandlerCaller {
-    private static final String TAG = "HandlerCaller";
-    private static final boolean DEBUG = false;
-    
+
     public final Context mContext;
     
     final Looper mMainLooper;
     final Handler mH;
 
     final Callback mCallback;
-    
-    public static class SomeArgs {
-        SomeArgs next;
-        
-        public Object arg1;
-        public Object arg2;
-        public Object arg3;
-        public Object arg4;
-        public int argi1;
-        public int argi2;
-        public int argi3;
-        public int argi4;
-        public int argi5;
-        public int argi6;
-    }
-    
-    static final int ARGS_POOL_MAX_SIZE = 10;
-    int mArgsPoolSize;
-    SomeArgs mArgsPool;
-    
+
     class MyHandler extends Handler {
         MyHandler(Looper looper) {
             super(looper);
@@ -80,29 +59,6 @@
         mCallback = callback;
     }
 
-    public SomeArgs obtainArgs() {
-        synchronized (mH) {
-            SomeArgs args = mArgsPool;
-            if (args != null) {
-                mArgsPool = args.next;
-                args.next = null;
-                mArgsPoolSize--;
-                return args;
-            }
-        }
-        return new SomeArgs();
-    }
-    
-    public void recycleArgs(SomeArgs args) {
-        synchronized (mH) {
-            if (mArgsPoolSize < ARGS_POOL_MAX_SIZE) {
-                args.next = mArgsPool;
-                mArgsPool = args;
-                mArgsPoolSize++;
-            }
-        }
-    }
-    
     public void executeOrSendMessage(Message msg) {
         // If we are calling this from the main thread, then we can call
         // right through.  Otherwise, we need to send the message to the
@@ -141,7 +97,7 @@
     }
     
     public Message obtainMessageBOO(int what, boolean arg1, Object arg2, Object arg3) {
-        SomeArgs args = obtainArgs();
+        SomeArgs args = SomeArgs.obtain();
         args.arg1 = arg2;
         args.arg2 = arg3;
         return mH.obtainMessage(what, arg1 ? 1 : 0, 0, args);
@@ -169,28 +125,28 @@
     
     public Message obtainMessageIIOO(int what, int arg1, int arg2,
             Object arg3, Object arg4) {
-        SomeArgs args = obtainArgs();
+        SomeArgs args = SomeArgs.obtain();
         args.arg1 = arg3;
         args.arg2 = arg4;
         return mH.obtainMessage(what, arg1, arg2, args);
     }
     
     public Message obtainMessageIOO(int what, int arg1, Object arg2, Object arg3) {
-        SomeArgs args = obtainArgs();
+        SomeArgs args = SomeArgs.obtain();
         args.arg1 = arg2;
         args.arg2 = arg3;
         return mH.obtainMessage(what, arg1, 0, args);
     }
     
     public Message obtainMessageOO(int what, Object arg1, Object arg2) {
-        SomeArgs args = obtainArgs();
+        SomeArgs args = SomeArgs.obtain();
         args.arg1 = arg1;
         args.arg2 = arg2;
         return mH.obtainMessage(what, 0, 0, args);
     }
     
     public Message obtainMessageOOO(int what, Object arg1, Object arg2, Object arg3) {
-        SomeArgs args = obtainArgs();
+        SomeArgs args = SomeArgs.obtain();
         args.arg1 = arg1;
         args.arg2 = arg2;
         args.arg3 = arg3;
@@ -199,7 +155,7 @@
     
     public Message obtainMessageOOOO(int what, Object arg1, Object arg2,
             Object arg3, Object arg4) {
-        SomeArgs args = obtainArgs();
+        SomeArgs args = SomeArgs.obtain();
         args.arg1 = arg1;
         args.arg2 = arg2;
         args.arg3 = arg3;
@@ -209,7 +165,7 @@
     
     public Message obtainMessageIIII(int what, int arg1, int arg2,
             int arg3, int arg4) {
-        SomeArgs args = obtainArgs();
+        SomeArgs args = SomeArgs.obtain();
         args.argi1 = arg1;
         args.argi2 = arg2;
         args.argi3 = arg3;
@@ -219,7 +175,7 @@
     
     public Message obtainMessageIIIIII(int what, int arg1, int arg2,
             int arg3, int arg4, int arg5, int arg6) {
-        SomeArgs args = obtainArgs();
+        SomeArgs args = SomeArgs.obtain();
         args.argi1 = arg1;
         args.argi2 = arg2;
         args.argi3 = arg3;
@@ -231,7 +187,7 @@
     
     public Message obtainMessageIIIIO(int what, int arg1, int arg2,
             int arg3, int arg4, Object arg5) {
-        SomeArgs args = obtainArgs();
+        SomeArgs args = SomeArgs.obtain();
         args.arg1 = arg5;
         args.argi1 = arg1;
         args.argi2 = arg2;
diff --git a/core/java/com/android/internal/os/SomeArgs.java b/core/java/com/android/internal/os/SomeArgs.java
new file mode 100644
index 0000000..88e58dc
--- /dev/null
+++ b/core/java/com/android/internal/os/SomeArgs.java
@@ -0,0 +1,95 @@
+/*
+ * 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.android.internal.os;
+
+/**
+ * Helper class for passing more arguments though a message
+ * and avoiding allocation of a custom class for wrapping the
+ * arguments. This class maintains a pool of instances and
+ * it is responsibility of the client to recycle and instance
+ * once it is no longer used.
+ */
+public final class SomeArgs {
+
+    private static final int MAX_POOL_SIZE = 10;
+
+    private static SomeArgs sPool;
+    private static int sPoolSize;
+    private static Object sPoolLock = new Object();
+
+    private SomeArgs mNext;
+
+    private boolean mInPool;
+
+    public Object arg1;
+    public Object arg2;
+    public Object arg3;
+    public Object arg4;
+    public int argi1;
+    public int argi2;
+    public int argi3;
+    public int argi4;
+    public int argi5;
+    public int argi6;
+
+    private SomeArgs() {
+        /* do nothing - reduce visibility */
+    }
+
+    public static SomeArgs obtain() {
+        synchronized (sPoolLock) {
+            if (sPoolSize > 0) {
+                SomeArgs args = sPool;
+                sPool = sPool.mNext;
+                args.mNext = null;
+                args.mInPool = false;
+                sPoolSize--;
+                return args;
+            } else {
+                return new SomeArgs();
+            }
+        }
+    }
+
+    public void recycle() {
+        if (mInPool) {
+            throw new IllegalStateException("Already recycled.");
+        }
+        synchronized (sPoolLock) {
+            clear();
+            if (sPoolSize < MAX_POOL_SIZE) {
+                mNext = sPool;
+                mInPool = true;
+                sPool = this;
+                sPoolSize++;
+            }
+        }
+    }
+
+    private void clear() {
+        arg1 = null;
+        arg2 = null;
+        arg3 = null;
+        arg4 = null;
+        argi1 = 0;
+        argi2 = 0;
+        argi3 = 0;
+        argi4 = 0;
+        argi5 = 0;
+        argi6 = 0;
+    }
+}
diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java
index 998c037..6ad67c3 100644
--- a/core/java/com/android/internal/os/ZygoteInit.java
+++ b/core/java/com/android/internal/os/ZygoteInit.java
@@ -384,7 +384,12 @@
                 Log.v(TAG, "Preloading resource #" + Integer.toHexString(id));
             }
             if (id != 0) {
-                mResources.getColorStateList(id);
+                if (mResources.getColorStateList(id) == null) {
+                    throw new IllegalArgumentException(
+                            "Unable to find preloaded color resource #0x"
+                            + Integer.toHexString(id)
+                            + " (" + ar.getString(i) + ")");
+                }
             }
         }
         return N;
@@ -407,11 +412,11 @@
                 Log.v(TAG, "Preloading resource #" + Integer.toHexString(id));
             }
             if (id != 0) {
-                Drawable dr = mResources.getDrawable(id);
-                if ((dr.getChangingConfigurations()&~ActivityInfo.CONFIG_FONT_SCALE) != 0) {
-                    Log.w(TAG, "Preloaded drawable resource #0x"
+                if (mResources.getDrawable(id) == null) {
+                    throw new IllegalArgumentException(
+                            "Unable to find preloaded drawable resource #0x"
                             + Integer.toHexString(id)
-                            + " (" + ar.getString(i) + ") that varies with configuration!!");
+                            + " (" + ar.getString(i) + ")");
                 }
             }
         }
diff --git a/core/java/com/android/internal/view/BaseIWindow.java b/core/java/com/android/internal/view/BaseIWindow.java
index ac1d594..b76e89d 100644
--- a/core/java/com/android/internal/view/BaseIWindow.java
+++ b/core/java/com/android/internal/view/BaseIWindow.java
@@ -34,7 +34,7 @@
     }
 
     @Override
-    public void resized(int w, int h, Rect contentInsets,
+    public void resized(Rect frame, Rect contentInsets,
             Rect visibleInsets, boolean reportDraw, Configuration newConfig) {
         if (reportDraw) {
             try {
diff --git a/core/java/com/android/internal/view/menu/ActionMenuView.java b/core/java/com/android/internal/view/menu/ActionMenuView.java
index 85e23fa..dc4ee3a 100644
--- a/core/java/com/android/internal/view/menu/ActionMenuView.java
+++ b/core/java/com/android/internal/view/menu/ActionMenuView.java
@@ -531,6 +531,9 @@
 
     @Override
     protected boolean hasDividerBeforeChildAt(int childIndex) {
+        if (childIndex == 0) {
+            return false;
+        }
         final View childBefore = getChildAt(childIndex - 1);
         final View child = getChildAt(childIndex);
         boolean result = false;
diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java
index 8ff39d69..2108d0d 100644
--- a/core/java/com/android/internal/widget/ActionBarView.java
+++ b/core/java/com/android/internal/widget/ActionBarView.java
@@ -26,6 +26,7 @@
 import com.android.internal.view.menu.MenuView;
 import com.android.internal.view.menu.SubMenuBuilder;
 
+import android.animation.LayoutTransition;
 import android.app.ActionBar;
 import android.app.ActionBar.OnNavigationListener;
 import android.app.Activity;
@@ -847,7 +848,7 @@
 
         int contentWidth = MeasureSpec.getSize(widthMeasureSpec);
 
-        int maxHeight = mContentHeight > 0 ?
+        int maxHeight = mContentHeight >= 0 ?
                 mContentHeight : MeasureSpec.getSize(heightMeasureSpec);
         
         final int verticalPadding = getPaddingTop() + getPaddingBottom();
@@ -855,6 +856,7 @@
         final int paddingRight = getPaddingRight();
         final int height = maxHeight - verticalPadding;
         final int childSpecHeight = MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST);
+        final int exactHeightSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
 
         int availableWidth = contentWidth - paddingLeft - paddingRight;
         int leftOfCenter = availableWidth / 2;
@@ -870,16 +872,14 @@
             } else {
                 homeWidthSpec = MeasureSpec.makeMeasureSpec(lp.width, MeasureSpec.EXACTLY);
             }
-            homeLayout.measure(homeWidthSpec,
-                    MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY));
+            homeLayout.measure(homeWidthSpec, exactHeightSpec);
             final int homeWidth = homeLayout.getMeasuredWidth() + homeLayout.getStartOffset();
             availableWidth = Math.max(0, availableWidth - homeWidth);
             leftOfCenter = Math.max(0, availableWidth - homeWidth);
         }
         
         if (mMenuView != null && mMenuView.getParent() == this) {
-            availableWidth = measureChildView(mMenuView, availableWidth,
-                    childSpecHeight, 0);
+            availableWidth = measureChildView(mMenuView, availableWidth, exactHeightSpec, 0);
             rightOfCenter = Math.max(0, rightOfCenter - mMenuView.getMeasuredWidth());
         }
 
@@ -1271,12 +1271,19 @@
         private ImageView mIconView;
         private int mUpWidth;
 
+        private static final long DEFAULT_TRANSITION_DURATION = 150;
+
         public HomeView(Context context) {
             this(context, null);
         }
 
         public HomeView(Context context, AttributeSet attrs) {
             super(context, attrs);
+            LayoutTransition t = getLayoutTransition();
+            if (t != null) {
+                // Set a lower duration than the default
+                t.setDuration(DEFAULT_TRANSITION_DURATION);
+            }
         }
 
         public void setUp(boolean isUp) {
diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp
index 3cd28b1..3ad6406 100644
--- a/core/jni/android_view_Surface.cpp
+++ b/core/jni/android_view_Surface.cpp
@@ -717,6 +717,14 @@
     }
 }
 
+static void Surface_setDisplayId(JNIEnv* env, jobject thiz, jint displayId)
+{
+    const sp<SurfaceControl>& surface(getSurfaceControl(env, thiz));
+    if (surface == 0) return;
+
+    // TODO(mathias): Everything.
+}
+
 // ----------------------------------------------------------------------------
 
 static void Surface_copyFrom(
@@ -855,6 +863,7 @@
     {"writeToParcel",       "(Landroid/os/Parcel;I)V", (void*)Surface_writeToParcel },
     {"isConsumerRunningBehind", "()Z", (void*)Surface_isConsumerRunningBehind },
     {"setWindowCrop",       "(Landroid/graphics/Rect;)V", (void*)Surface_setWindowCrop },
+    {"setDisplayId",        "(I)V", (void*)Surface_setDisplayId },
 };
 
 void nativeClassInit(JNIEnv* env, jclass clazz)
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index d636713..195b1ef 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -278,6 +278,13 @@
         android:label="@string/permlab_writeContacts"
         android:description="@string/permdesc_writeContacts" />
 
+    <!-- Allows an application to execute contacts directory search.
+         This should only be used by ContactsProvider. -->
+    <!-- @hide -->
+    <permission android:name="android.permission.BIND_DIRECTORY_SEARCH"
+        android:permissionGroup="android.permission-group.PERSONAL_INFO"
+        android:protectionLevel="signature" />
+
     <!-- Allows an application to read the user's call log. -->
     <permission android:name="android.permission.READ_CALL_LOG"
         android:permissionGroup="android.permission-group.PERSONAL_INFO"
diff --git a/core/res/res/drawable-nodpi/background_holo_dark.png b/core/res/res/drawable-nodpi/background_holo_dark.png
deleted file mode 100644
index 85bd6f7..0000000
--- a/core/res/res/drawable-nodpi/background_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-nodpi/background_holo_light.png b/core/res/res/drawable-nodpi/background_holo_light.png
deleted file mode 100644
index 5fb4a9d..0000000
--- a/core/res/res/drawable-nodpi/background_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable/background_holo_dark.xml b/core/res/res/drawable/background_holo_dark.xml
new file mode 100644
index 0000000..7cfae4d
--- /dev/null
+++ b/core/res/res/drawable/background_holo_dark.xml
@@ -0,0 +1,22 @@
+<?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.
+-->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <gradient
+            android:startColor="#ff000000"
+            android:endColor="#ff272d33"
+            android:angle="270" />
+</shape>
diff --git a/core/res/res/drawable/background_holo_light.xml b/core/res/res/drawable/background_holo_light.xml
new file mode 100644
index 0000000..4e863ea
--- /dev/null
+++ b/core/res/res/drawable/background_holo_light.xml
@@ -0,0 +1,22 @@
+<?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.
+-->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <gradient
+            android:startColor="#ffe8e8e8"
+            android:endColor="#ffffffff"
+            android:angle="270" />
+</shape>
diff --git a/core/res/res/layout/action_bar_home.xml b/core/res/res/layout/action_bar_home.xml
index 91af7e9..fe58215 100644
--- a/core/res/res/layout/action_bar_home.xml
+++ b/core/res/res/layout/action_bar_home.xml
@@ -18,7 +18,8 @@
       class="com.android.internal.widget.ActionBarView$HomeView"
       android:layout_width="wrap_content"
       android:layout_height="match_parent"
-      android:background="?android:attr/actionBarItemBackground" >
+      android:background="?android:attr/actionBarItemBackground"
+      android:animateLayoutChanges="true">
     <ImageView android:id="@android:id/up"
                android:src="?android:attr/homeAsUpIndicator"
                android:layout_gravity="center_vertical|start"
diff --git a/core/res/res/layout/global_actions_item.xml b/core/res/res/layout/global_actions_item.xml
index bf9c638..b3a5aa2 100644
--- a/core/res/res/layout/global_actions_item.xml
+++ b/core/res/res/layout/global_actions_item.xml
@@ -22,7 +22,7 @@
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:orientation="horizontal"
 
-    android:paddingStart="16dip"
+    android:paddingStart="8dip"
     android:paddingTop="6dip"
     android:paddingBottom="6dip"
     >
@@ -30,7 +30,7 @@
         android:layout_width="56dp"
         android:layout_height="56dp"
         android:layout_gravity="center"
-        android:layout_marginEnd="16dip"
+        android:layout_marginEnd="8dip"
         android:scaleType="center"/>
 
     <LinearLayout
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 476f7b0..5c383e6 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Laat die program toe om WAP-boodskappe te ontvang en te verwerk. Hierdie toestemming sluit ook in dat boodskappe wat na jou toestel gestuur is, gemonitor of uitgevee kan word, sonder dat jy dit gesien het."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"haal lopende programme op"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Laat die program toe om inligting oor die huidig- en onlangslopende take op te haal. Dit kan moontlik die program toelaat om inligting oor watter programme op die toestel gebruik word, te ontdek."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"interaksie tussen gebruikers"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Laat die program toe om aksies vir verskillende gebruikers op die toestel uit te voer. Kwaadwillige programme kan dit gebruik om die beskerming tussen gebruikers te skend."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"volle lisensie vir interaksie tussen gebruikers"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Laat alle moontlike interaksies tussen gebruikers toe."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"haal besonderhede van lopende programme op"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Laat die program toe om inligting op te haal oor huidige en onlangse lopende take. Kwaadwillige programme kan dalk private inligting oor ander programme ontdek."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"herrangskik lopende programme"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Stelsel"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth-oudio"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Klaar"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Media-uitvoer"</string>
 </resources>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 0a490eb..23a4d83 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"መተግበሪያው የWAP መልእክቶችን እንዲያነብ እና እንዲያካሂድ ይፈቅዳል። ይህ ፈቃድ የተላኩልህን መልእክቶች ላንተ ሳያሳይህ የመቆጣጠር ወይም የመሰረዝ ብቃትን ያጠቃልላል።"</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"አሂድ መተግበሪያዎችን ሰርስረህ አውጣ"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"መተግበሪያው በአሁኑ ጊዜና በቅርቡ እየተካሄዱ ስላሉ ተግባሮችን መረጃ ሰርስሮ እንዲያወጣ ይፈቅድለታል። ይህ መተግበሪያው በመሳሪያው ላይ የትኛዎቹ መተግበሪያዎች ጥቅም ላይ ስለመዋላቸው መረጃ እንዲያገኝ ሊፈቅድለት ይችላል።"</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"በተለያዩ ተጠቃሚዎች መካከል መስተጋብር መፍጠር"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"መተግበሪያው በመሣሪያው ላይ በተለያዩ ተጠቃሚዎች ላይ እርምጃዎችን እንዲፈጽም ይፈቅድለታል። ተንኮል-አዘል መተግበሪያዎች ይህንን ተጠቅመው በተጠቃሚዎች መካከል ያለውን ጥበቃ ሊጥሱ ይችላሉ።"</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"በተለያዩ ተጠቃሚዎች መካከል መስተጋብር ለመፍጠር ሙሉ ፍቃድ"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"በተለያዩ ተጠቃሚዎች ላይ ሊኖሩ የሚችሉ መስተጋብሮችን ሁሉ ይፈቅዳል።"</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"እየሄዱ ስላሉ የመተግበሪያዎች ዝርዝሮች አምጣ"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"መተግበሪያው በአሁኑ ጊዜ እየተካሄዱ ስላሉና በቅርብ ጊዜ ስለተካሄዱ ተግባሮች መረጃ ዝርዝር እንዲያወጣ ይፈቅድለታል። ተንኮል-አዘል መተግበሪያዎች ስለ ሌሎች መተግበሪያዎች የግል መረጃ ሊያገኙ ይችላሉ።"</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"አሂድ ትግበራዎችን ድጋሚ ደርድር"</string>
@@ -1150,7 +1154,7 @@
     <string name="permission_request_notification_title" msgid="6486759795926237907">"ፈቃድ ተጠይቋል"</string>
     <string name="permission_request_notification_with_subtitle" msgid="8530393139639560189">\n" ለ<xliff:g id="ACCOUNT">%s</xliff:g> መለያ ፈቃድ ተጠይቋል"</string>
     <string name="input_method_binding_label" msgid="1283557179944992649">"ግቤት ሜተድ"</string>
-    <string name="sync_binding_label" msgid="3687969138375092423">"አሳምር"</string>
+    <string name="sync_binding_label" msgid="3687969138375092423">"አስምር"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"ተደራሽነት"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"ልጣፍ"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"ልጣፍ ለውጥ"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"ስርዓት"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"የብሉቱዝ ድምጽ"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"ተከናውኗል"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"የሚዲያ ውጽዓት"</string>
 </resources>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index cae9a5b..ef1c421 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"للسماح للتطبيق بتلقي رسائل WAP ومعالجتها. ويتضمن هذا الإذن إمكانية مراقبة الرسائل التي يتم إرسالها إليك أو حذفها بدون عرضها لك."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"استرداد التطبيقات التي قيد التشغيل"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"للسماح للتطبيق باسترداد معلومات حول المهام التي يجري تشغيلها حاليًا والتي تم تشغيلها مؤخرًا. وقد يسمح هذا للتطبيق باكتشاف معلومات حول التطبيقات المستخدمة على الجهاز."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"التعامل بين المستخدمين"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"للسماح للتطبيق بتنفيذ إجراءات بين مستخدمين مختلفين على الجهاز. قد تستخدم التطبيقات الضارة ذلك لانتهاك الحماية بين المستخدمين."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"الترخيص بالكامل للتعامل بين المستخدمين"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"للسماح بجميع التعاملات المحتملة بين المستخدمين."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"استرداد تفاصيل التطبيقات قيد التشغيل"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"يسمح للتطبيق باسترداد معلومات تفصيلية حول المهام قيد التشغيل حاليًا ومؤخرًا. قد تكتشف التطبيقات الضارة معلومات خاصة حول التطبيقات الأخرى."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"إعادة ترتيب التطبيقات قيد التشغيل"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"النظام"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"صوت بلوتوث"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"تم"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"المنفذ الإعلامي"</string>
 </resources>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 1f7c043..e3db2e6 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Дазваляе прыкладанням атрымліваць і апрацоўваць паведамленні WAP. Дзякуючы гэтаму дазволу можна кантраляваць або выдаляць паведамленні, пасланыя вам, не паказваючы іх."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"атрымаць запушчаныя прыкладанні"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Дазваляе прыкладанню атрымлiваць звесткi пра прыкладаннi, запушчаныя зараз i нядаўна. Прыкладанне можа знайсцi iнфармацыю пра тое, якiя прыкладаннi выкарыстоўваюцца на прыладзе."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"узаемадзеянне паміж карыстальнікамі"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Дазваляе прыкладанню выконваць дзеяннi сярод розных карыстальнiкаў прылады. Шкоднасныя прыкладаннi могуць выкарыстоўваць гэта, каб парушыць абарону памiж карыстальнiкамi."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"поўная ліцэнзія для ўзаемадзеяння паміж карыстальнiкамi"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Дазваляе ўсе магчымыя ўзаемадзеяннi паміж карыстальнікамі."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"атрымаць падрабязныя дадзеныя пра запушчаныя прыкладаннi"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Дазваляе прыкладанню атрымліваць падрабязную інфармацыю пра бягучыя і нядаўна запушчаныя задачы. Шкоднасныя прыкладанні могуць атрымліваць асабістую інфармацыю пра іншыя прыкладаннi."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"змяніць парадак запушчаных прыкладанняў"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Сістэма"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth-аўдыё"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Гатова"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Мультымедыйны выхад"</string>
 </resources>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 0645d78..cd72391 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Разрешава на приложението да получава и обработва WAP съобщения. Това разрешение включва възможността да наблюдава или изтрива изпратените до вас, без да ви ги покаже."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"извличане на изпълняваните приложения"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Разрешава на приложението да извлича информация за задачите, изпълнявани понастоящем и неотдавна. Това може да му позволи да открива данни за това, кои приложения се използват на устройството."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"взаимодействие с потребителите"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Разрешава на приложението да изпълнява действия за различни потребители на устройството. Злонамерените приложения може да използват това, за да нарушат защитата между потребителите."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"пълен лиценз за взаимодействие с потребителите"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Разрешава всички възможни взаимодействия с потребителите."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"извличане на подробности за изпълняваните прилож."</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Разрешава на приложението да извлича подробна информация за задачите, изпълнявани понастоящем и неотдавна. Злонамерените приложения могат да открият поверителна информация за други приложения."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"пренареждане на изпълняваните приложения"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Система"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Звук през Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Готово"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Изходяща мултимедия"</string>
 </resources>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 95f8944..02cc1f9 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Permet que l\'aplicació rebi i processi missatges WAP. Aquest permís inclou la capacitat de controlar o de suprimir missatges que s\'han enviat al teu dispositiu sense mostrar-te\'ls."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"recupera les aplicacions en execució"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Permet que l\'aplicació recuperi informació sobre les tasques que s\'executen actualment i les que s\'han executat recentment. Aquesta acció pot permetre que l\'aplicació descobreixi informació sobre les aplicacions que s\'utilitzen al dispositiu."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"interacciona entre usuaris"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Permet que l\'aplicació dugui a terme accions en diferents usuaris del dispositiu. Les aplicacions malicioses poden fer servir aquest permís per infringir la protecció entre usuaris."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"llicència completa per interaccionar entre usuaris"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Permet totes les interaccions possibles entre usuaris."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"recupera els detalls d\'aplicacions en execució"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Permet que l\'aplicació recuperi informació detallada sobre les tasques que s\'estan executant actualment i que s\'han executat recentment. Les aplicacions malicioses poden descobrir informació privada sobre altres aplicacions."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"canvia l\'ordre de les aplicacions en execució"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Sistema"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Àudio per Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Fet"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Sortida de contingut multimèdia"</string>
 </resources>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 190eb62..c833be1 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Umožňuje aplikaci přijmout a zpracovat zprávy WAP. Toto oprávnění umožňuje sledovat přijaté zprávy nebo je smazat, aniž by se vám zobrazily."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"načtení spuštěných aplikací"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Umožňuje aplikaci získat informace o aktuálně a naposledy spuštěných úlohách. Aplikace s tímto oprávněním může odhalit informace o aplikacích, které se v zařízení používají."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"interakce napříč uživateli"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Umožňuje aplikaci provádět akce napříč různými uživateli zařízení. Škodlivé aplikace toto oprávnění mohou zneužít k obejití ochrany mezi uživateli."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"úplné oprávnění k interakcím napříč uživateli"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Povoluje všechny možné interakce napříč uživateli."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"získání podrobností o spuštěných aplikacích"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Umožňuje aplikaci získat podrobné informace o aktuálně a naposledy spuštěných úlohách. Škodlivé aplikace mohou odhalit soukromé informace o ostatních aplikacích."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"změna uspořádání spuštěných aplikací"</string>
@@ -1217,8 +1221,8 @@
     <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Ubrat minutu"</string>
     <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Přidat hodinu"</string>
     <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Ubrat hodinu"</string>
-    <string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Nastavit odp."</string>
-    <string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Nastavit dop."</string>
+    <string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Nastavit PM"</string>
+    <string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Nastavit AM"</string>
     <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Přidat měsíc"</string>
     <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Ubrat měsíc"</string>
     <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Přidat den"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Systém"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth Audio"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Hotovo"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Výstup médií"</string>
 </resources>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 89f2e1e..6915079 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Tillader, at appen kan modtage og behandle WAP-beskeder. Denne tilladelse omfatter muligheden for at overvåge eller slette de beskeder, der sendes til dig, uden at vise dem til dig."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"hente kørende apps"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Tillader, at appen kan hente oplysninger om nuværende og seneste opgaver. Med denne tilladelse kan appen finde oplysninger om, hvilke applikationer der bruges på enheden."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"kommuniker på tværs af brugere"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Tillader, at appen udfører handlinger på tværs af forskellige brugere på enheden. Ondsindede apps kan bruge dette til at krænke beskyttelsen mellem brugere."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"fuld licens til at kommunikere på tværs af brugere"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Tillader alle mulige former for kommunikation på tværs af brugere."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"hente oplysninger om apps, der kører"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Tillader, at appen kan hente oplysninger om aktuelle og seneste opgaver. Ondsindede apps kan muligvis finde personlige oplysninger om andre apps."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"omorganisere kørende apps"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"System"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth-lyd"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Udfør"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Medieudgang"</string>
 </resources>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 02017c4..f01a81a 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Ermöglicht der App, WAP-Nachrichten zu empfangen und zu verarbeiten. Mit der Berechtigung können Nachrichten, die an Sie gesendet wurden, überwacht und gelöscht werden, bevor sie Ihnen angezeigt werden."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"aktive Apps abrufen"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Ermöglicht der App, Informationen zu aktuellen und kürzlich ausgeführten Aufgaben abzurufen. Damit kann die App möglicherweise ermitteln, welche Apps auf Ihrem Gerät zum Einsatz kommen."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"Nutzerübergreifend interagieren"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Ermöglicht der App, auf dem Gerät nutzerübergreifend Aktionen durchzuführen. Schädliche Apps können so den zwischen den Nutzern bestehenden Schutz aufheben."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"Vollständige Lizenz zum nutzerübergreifenden Interagieren"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Ermöglicht alle möglichen nutzerübergreifenden Interaktionen"</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"Details zu ausgeführten Apps abrufen"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Ermöglicht der App, detaillierte Informationen zu aktuellen und kürzlich ausgeführten Aufgaben abzurufen. Schädliche Apps können so geheime Informationen zu anderen Apps erhalten."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"Aktive Apps neu ordnen"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"System"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth-Audio"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Fertig"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Medienausgabe"</string>
 </resources>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 3116317..32d343f 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Επιτρέπει στην εφαρμογή τη λήψη και την επεξεργασία μηνυμάτων WAP. Αυτό σημαίνει ότι η εφαρμογή θα μπορούσε να παρακολουθήσει ή να διαγράψει τα μηνύματα που αποστέλλονται στη συσκευή σας χωρίς αυτά να εμφανιστούν σε εσάς."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"ανάκτηση εκτελούμενων εφαρμογών"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Επιτρέπει στην εφαρμογή την ανάκτηση πληροφοριών σχετικά με τρέχουσες και πρόσφατα εκτελούμενες εργασίες. Αυτό μπορεί να δίνει τη δυνατότητα στην εφαρμογή να ανακαλύπτει πληροφορίες σχετικά με το ποιες εφαρμογές χρησιμοποιούνται στη συσκευή."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"αλληλεπίδραση στους χρήστες"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Δίνει στην εφαρμογή τη δυνατότητα να πραγματοποιεί ενέργειες σε όλους τους διαφορετικούς χρήστες στη συσκευή. Οι κακόβουλες εφαρμογές ενδέχεται να χρησιμοποιήσουν αυτή τη δυνατότητα για να παραβιάσουν την προστασία μεταξύ των χρηστών."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"πλήρης άδεια αλληλεπίδρασης στους χρήστες"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Επιτρέπει όλες τις πιθανές αλληλεπιδράσεις στους χρήστες."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"ανάκτηση λεπτομερειών σχετικά με τις εκτελούμενες εφαρμογές"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Επιτρέπει στην εφαρμογή την ανάκτηση λεπτομερών πληροφοριών σχετικά με τις τρέχουσες εκτελούμενες εργασίες και τις εργασίες που έχουν εκτελεστεί πρόσφατα. Τυχόν κακόβουλες εφαρμογές ενδέχεται να ανακαλύψουν ιδιωτικές πληροφορίες σχετικά με άλλες εφαρμογές."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"αναδιάταξη εκτελούμενων εφαρμογών"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Σύστημα"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Ήχος Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Τέλος"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Έξοδος μέσων"</string>
 </resources>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index e6e85ed..e6fbf30 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -217,6 +217,14 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Allows the app to receive and process WAP messages. This permission includes the ability to monitor or delete messages sent to you without showing them to you."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"retrieve running apps"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Allows the app to retrieve information about currently and recently running tasks. This may allow the app to discover information about which applications are used on the device."</string>
+    <!-- no translation found for permlab_interactAcrossUsers (7114255281944211682) -->
+    <skip />
+    <!-- no translation found for permdesc_interactAcrossUsers (364670963623385786) -->
+    <skip />
+    <!-- no translation found for permlab_interactAcrossUsersFull (2567734285545074105) -->
+    <skip />
+    <!-- no translation found for permdesc_interactAcrossUsersFull (376841368395502366) -->
+    <skip />
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"retrieve details of running apps"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Allows the app to retrieve detailed information about currently and recently running tasks. Malicious apps may discover private information about other apps."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"re-order running apps"</string>
@@ -1301,4 +1309,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"System"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth audio"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Done"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Media output"</string>
 </resources>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index b1cf6bd..e28a098 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Permite que la aplicación reciba y procese mensajes WAP, lo que significa que podría controlar o eliminar mensajes enviados al usuario sin mostrártelos."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"recuperar aplicaciones en ejecución"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Permite que la aplicación recupere información sobre las tareas que se estén ejecutando en ese momento o que se hayan ejecutado recientemente. La aplicación puede utilizar este permiso para descubrir cuáles son las aplicaciones que se utilizan en el dispositivo."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"Interactuar con los usuarios"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Permite que la aplicación lleve a cabo acciones entre los diferentes usuarios del dispositivo. Las aplicaciones maliciosas pueden utilizar este permiso para infringir la protección entre usuarios."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"Licencia completa para interactuar con los usuarios"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Permite que la aplicación interactúe con los usuarios."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"recuperar información sobre las aplicaciones en ejecución"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Permite que la aplicación recupere información detallada sobre tareas en ejecución y recientemente ejecutadas. Las aplicaciones malintencionadas pueden hallar información privada sobre otras aplicaciones."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"reorganizar aplicaciones en ejecución"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Sistema"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Audio Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Listo"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Salida multimedia"</string>
 </resources>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index c765056..2d326c3 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Permite que la aplicación reciba y procese mensajes WAP, lo que significa que podría utilizar este permiso para controlar o eliminar mensajes enviados al usuario sin mostrárselos."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"recuperar aplicaciones en ejecución"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Permite que aplicación recupere información sobre tareas que se están ejecutando en ese momento o que se han ejecutado recientemente. La aplicación puede utilizar este permiso para descubrir cuáles son las aplicaciones que se utilizan en el dispositivo."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"interactuar con los usuarios"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Permite que la aplicación lleve a cabo acciones entre los diferentes usuarios del dispositivo. Las aplicaciones maliciosas pueden utilizar este permiso para infringir la protección entre usuarios."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"licencia completa para interactuar con los usuarios"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Permite que la aplicación interactúe con los usuarios."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"recuperar información de aplicaciones en ejecución"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Permite que la aplicación recupere información sobre tareas que se están ejecutando en este momento o que se han ejecutado recientemente. Las aplicaciones malintencionadas pueden usar este servicio para acceder a información privada sobre otras aplicaciones."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"reorganizar aplicaciones en ejecución"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Sistema"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Audio Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Fin"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Salida multimedia"</string>
 </resources>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 4228f28..f16465e 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Võimaldab rakendusel vastu võtta ja töödelda WAP-sõnumeid. See luba hõlmab võimet jälgida või kustutada teile saadetud sõnumeid neid teile näitamata."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"Käitatud rakenduste toomine"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Võimaldab rakendusel tuua teavet praegu ja hiljuti käitatud ülesannete kohta. See võib lubada rakendusel avastada teavet selle kohta, milliseid rakendusi seadmes kasutatakse."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"toimingud erinevatel kasutajakontodel"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Lubab rakendusel teha toiminguid seadme erinevatel kasutajakontodel. Pahatahtlikud rakendused võivad kasutada seda kasutajatevahelise kaitse rikkumiseks."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"täielik litsents teha toiminguid erinevatel kasutajakontodel"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Lubab kõiki võimalikke toiminguid erinevatel kasutajakontodel."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"töötavate rakenduste üksikasjade toomine"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Võimaldab rakendusel tuua üksikasjalikku teavet praegu töötavate ja hiljuti käitatud ülesannete kohta. Pahatahtlikud rakendused võivad tuvastada privaatset teavet muude rakenduste kohta."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"käitatud rakenduste ümberjärjestamine"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Süsteem"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth-heli"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Valmis"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Meediaväljund"</string>
 </resources>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index e497489..2aa056b 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"به برنامه اجازه می‌دهد پیام‌های WAP را دریافت و پردازش کند. این مجوز می‌تواند پیام‌های ارسالی به شما را بدون نمایش آن‌ها به شما حذف یا کنترل کند."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"بازیابی برنامه‎های در حال اجرا"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"به برنامه امکان می‌دهد اطلاعات مربوط به کارهای در حال اجرای اخیر و کنونی را بازیابی کند. این ممکن است به برنامه امکان دهد به اطلاعات مربوط به برنامه‌هایی که در دستگاه استفاده می‌شوند دست یابد."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"ارتباط بین کاربران"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"به برنامه اجازه می‌دهد اقداماتی در بین کاربران مختلف در دستگاه انجام دهد. ممکن است برنامه‌های مخرب از این قابلیت برای نقض حفاظت موجود در بین کاربران استفاده کنند."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"مجوز کامل برای ارتباط بین کاربران"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"اجازه می‌دهد همه ارتباطات ممکن بین کاربران انجام شود."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"بازیابی جزئیات برنامه‌های در حال اجرا"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"به برنامه اجازه می‎دهد تا اطلاعات مفصلی مربوط به کارهایی که در حال حاضر و اخیراً اجرا می‎شوند را بازیابی کند. برنامه‎های مخرب می‎توانند اطلاعات شخصی مربوط به برنامه‎های دیگر را پیدا کنند."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"تنظیم مجدد ترتیب برنامه‎های در حال اجرا"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"سیستم"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"بلوتوث‌های صوتی"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"انجام شد"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"خروجی رسانه"</string>
 </resources>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index edf133a..d740099 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Antaa sovelluksen vastaanottaa ja käsitellä WAP-viestejä. Sovellus voi valvoa tai poistaa laitteeseesi lähetettyjä viestejä näyttämättä niitä sinulle."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"käynnissä olevien sovellusten noutaminen"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Antaa sovelluksen noutaa tietoja käynnissä olevista ja äskettäin suoritetuista tehtävistä. Sovellus voi saada tietoja laitteella käytetyistä sovelluksista."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"suorita käyttäjien välisiä toimintoja"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Antaa sovelluksen suorittaa käyttäjien välisiä toimintoja laitteessa. Haitalliset sovellukset voivat vahingoittaa käyttäjien välistä suojausta."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"lupa suorittaa käyttäjien välisiä toimintoja"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Sallii kaikki käyttäjien väliset toiminnot."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"hae tiedot suoritettavista sovelluksista"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Antaa sovellukselle oikeuden noutaa käynnissä oleviin ja käynnissä olleisiin tehtäviin liittyviä tietoja. Haitalliset sovellukset saattavat saada näin muihin sovelluksiin liittyviä yksityisiä tietoja."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"käynnissä olevien sovellusten järjesteleminen"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Järjestelmä"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth-ääni"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Valmis"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Median äänentoisto"</string>
 </resources>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 58ae361..e768ecb 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Permet à l\'application de recevoir et de traiter les messages WAP. Cette autorisation lui donne la possibilité de surveiller ou supprimer les messages envoyés à votre appareil sans vous les montrer."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"récupérer les applications en cours d\'exécution"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Permet à l\'application de récupérer des informations sur des tâches en cours d\'exécution et récemment exécutées. L\'application est ainsi susceptible de d\'obtenir des informations sur les applications utilisées sur l\'appareil."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"interagir entre les utilisateurs"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Permet à l\'application d\'effectuer des actions entre les différents utilisateurs de l\'appareil. Les applications malveillantes peuvent utiliser cette autorisation pour passer outre la protection entre les utilisateurs."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"autorisation totale d\'interagir entre les utilisateurs"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Permet toutes les interactions possibles entre les utilisateurs."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"récupérer les détails des applications en cours d\'exécution"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Permet à l\'application de récupérer des informations détaillées sur les tâches en cours d\'exécution ou récemment exécutées. Des applications malveillantes peuvent utiliser cette fonctionnalité pour obtenir des informations confidentielles relatives à d\'autres applications."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"réorganiser les applications en cours d\'exécution"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Système"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Audio Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"OK"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Sortie multimédia"</string>
 </resources>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 093d62a..c30f47e 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"एप्लिकेशन को WAP संदेशों को प्राप्‍त और संसाधित करने देता है. इस अनुमति में आपको भेजे गए संदेशों की निगरानी आपको दिखाए बिना करने और हटाने की क्षमता शामिल है."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"चल रहे एप्‍लिकेशन पुनर्प्राप्त करें"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"एप्लिकेशन को वर्तमान में और हाल ही में चल रहे कार्यों के बारे में जानकारी को पुन: प्राप्‍त करने देता है. इससे एप्लिकेशन उपकरण पर उपयोग किए गए एप्लिकेशन के बारे में जानकारी खोज सकता है."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"उपयोगकर्ताओं के बीच सहभागिता करें"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"एप्लिकेशन को उपकरण पर भिन्न उपयोगकर्ताओं के बीच कार्य निष्पादित करने देता है. दुर्भावनापूर्ण एप्लिकेशन उपयोगकर्ताओं के बीच सुरक्षा का उल्लंघन करने के लिए इसका उपयोग कर सकते हैं."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"उपयोगकर्ताओं के बीच सहभागिता करने के लिए पूर्ण लाइसेंस"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"उपयोगकर्ताओं के बीच सभी संभव सहभागिता करने देता है."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"चल रहे एप्‍लिकेशन के विवरण प्राप्त करें"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"एप्लिकेशन को वर्तमान में और हाल ही में चल रहे कार्यों की जानकारी प्राप्त करने देता है. दुर्भावनापूर्ण एप्लिकेशन अन्य एप्लिकेशन के बारे में निजी जानकारी खोज सकते हैं."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"चल रहे एप्‍लिकेशन पुन: क्रमित करें"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"सिस्‍टम"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth ऑडियो"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"पूर्ण"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"मीडिया आउटपुट"</string>
 </resources>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 41f34f6..a92e080 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Aplikaciji omogućuje primanje i obradu WAP poruka. Ta dozvola uključuje mogućnost nadziranja ili brisanja vama poslanih poruka, a da vam ih ne prikaže."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"dohvaćanje pokrenutih aplikacija"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Aplikaciji omogućuje dohvaćanje informacija o trenutačnim i nedavnim tekućim zadacima. To aplikaciji može omogućiti otkrivanje informacija o tome koje se aplikacije upotrebljavaju na uređaju."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"interakcija među korisnicima"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Omogućuje aplikaciji izvršavanje radnji među korisnicima na uređaju. Zlonamjerne aplikacije mogu to iskoristiti za narušavanje zaštite među korisnicima."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"dozvola za potpunu interakciju među korisnicima"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Omogućuje sve moguće interakcije među korisnicima."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"dohvaćanje pojedinosti o pokrenutim aplikacijama"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Aplikaciji omogućuje dohvaćanje detaljnih informacija o trenutačno i nedavno pokrenutim zadacima. Zlonamjerne aplikacije mogu otkriti privatne informacije o drugim aplikacijama."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"promjena redoslijeda pokrenutih aplikacija"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Sustav"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth zvuk"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Gotovo"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Medijski izlaz"</string>
 </resources>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index f4526fa..678bd3d 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Lehetővé teszi az alkalmazás számára, hogy WAP-üzeneteket fogadjon és dolgozzon fel. Ez azt is jelenti, hogy az alkalmazás megfigyelheti vagy törölheti a beérkező üzeneteket anélkül, hogy Ön látná azokat."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"futó alkalmazások lekérése"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Lehetővé teszi az alkalmazás számára a jelenleg futó és nemrég befejezett feladatokkal kapcsolatos információk lekérését. Ezáltal az alkalmazás engedélyt kap az eszközön használt alkalmazásokkal kapcsolatos információk felderítésére."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"felhasználók közötti interakció"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Lehetővé teszi az alkalmazás számára, hogy több felhasználó között végezzen különféle műveleteket az eszközön. A rosszindulatú alkalmazások arra használhatják ezt, hogy megsértsék a felhasználók biztonságát."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"teljes licenc a felhasználók közötti interakcióhoz"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Lehetővé teszi az összes lehetséges interakciót a felhasználók között."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"futó alkalmazások részleteinek lekérése"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Lehetővé teszi az alkalmazás számára a jelenleg és a nemrég futó feladatok részletes adatainak lekérését. A rosszindulatú alkalmazások más alkalmazásokkal kapcsolatos privát adatokhoz férhetnek hozzá."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"futó alkalmazások átrendezése"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Rendszer"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth hang"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Kész"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Médiakimenet"</string>
 </resources>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index be91c49..66ec50b 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Memungkinkan aplikasi menerima dan memproses pesan WAP. Izin ini mencakup kemampuan untuk memantau atau menghapus pesan yang dikirim kepada Anda tanpa menunjukkannya kepada Anda."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"mengambil apl yang berjalan"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Memungkinkan aplikasi mengambil informasi tentang tugas yang dijalankan saat ini dan baru-baru ini. Izin ini memungkinkan aplikasi menemukan informasi tentang aplikasi mana yang digunakan pada perangkat."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"berinteraksi antar-pengguna"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Mengizinkan aplikasi melakukan tindakan antar-pengguna yang berbeda pada perangkat. Aplikasi berbahaya dapat menggunakan ini untuk mengganggu perlindungan antar-pengguna."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"lisensi penuh untuk berinteraksi antar-pengguna"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Mengizinkan semua interaksi yang mungkin antar-pengguna."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"mengambil detail aplikasi yang sedang berjalan"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Izinkan aplikasi mengambil informasi mendetail tentang tugas yang saat ini dan baru-baru ini dijalankan. Aplikasi berbahaya dapat menemukan informasi pribadi tentang aplikasi lain."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"menyusun ulang apl yang berjalan"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Sistem"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Audio Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Selesai"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Keluaran media"</string>
 </resources>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index c492e2d..b147e10 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Consente all\'applicazione di ricevere ed elaborare messaggi WAP. Questa autorizzazione include la facoltà di monitorare o eliminare i messaggi che ti vengono inviati senza mostrarteli."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"recupero applicazioni in esecuzione"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Consente all\'applicazione di recuperare informazioni sulle attività attualmente e recentemente in esecuzione. Ciò potrebbe consentire all\'applicazione di scoprire informazioni sulle applicazioni in uso sul dispositivo."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"interazione tra gli utenti"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Consente all\'applicazione di compiere azioni per diversi utenti sul dispositivo. Le applicazioni dannose potrebbero farne uso per violare la protezione tra utenti."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"licenza completa per l\'interazione tra utenti"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Consente tutte le interazioni possibili tra gli utenti."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"recupero dettagli applicazioni in esecuzione"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Consente all\'applicazione di recuperare informazioni dettagliate sulle attività attualmente e recentemente in esecuzione. Le applicazioni dannose potrebbero scoprire informazioni riservate su altre applicazioni."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"riordinamento applicazioni in esecuzione"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Sistema"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Audio Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Fine"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Uscita media"</string>
 </resources>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index f5a7e81..e34dd67 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"מאפשר ליישום לקבל ולעבד הודעות WAP. אישור זה כולל את היכולת לעקוב אחר הודעות שנשלחו אליך ולמחוק אותן מבלי להציג לך אותן."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"אחזור יישומים פעילים"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"מאפשר ליישום לאחזר מידע לגבי משימות הפועלות כרגע ושפעלו לאחרונה. ייתכן שהדבר יתיר ליישום לגלות מידע לגבי היישומים שבהם נעשה שימוש במכשיר."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"אינטראקציה בין משתמשים"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"מאפשר ליישום לבצע פעולות בין משתמשים שונים במכשיר. יישומים זדוניים עשויים להשתמש ביכולת זו כדי לפרוץ את ההגנה בין משתמשים."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"רישיון מלא לבצע אינטראקציה בין משתמשים"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"מאפשר את כל האינטראקציות האפשריות בין משתמשים."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"אחזור פרטי יישומים פועלים"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"מאפשר ליישום לאחזר מידע מפורט על המשימות הנוכחיות הפועלות ועל משימות שפעלו לאחרונה. יישומים זדוניים עלולים לגלות מידע אישי על יישומים אחרים."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"סידור מחדש של יישומים פעילים"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"מערכת"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"אודיו Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"סיום"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"פלט מדיה"</string>
 </resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 048cd49..129c5ff 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"WAPメッセージの受信と処理をアプリに許可します。これにより、アプリが端末に届いたメッセージを表示することなく監視または削除できるようになります。"</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"実行中のアプリの取得"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"現在実行中または最近実行したタスクに関する情報の取得をアプリに許可します。これにより、その端末でどのアプリを使用しているかをアプリから識別できるようになる可能性があります。"</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"ユーザー間の交流"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"端末上の各ユーザーに対して操作を実行することをアプリに許可します。この許可を悪意のあるアプリに利用されると、ユーザー間の保護が侵害される恐れがあります。"</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"ユーザー間で交流するための完全ライセンス"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"ユーザー間の交流をすべて許可します。"</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"実行中のアプリの詳細の取得"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"現在実行中のタスクまたは最近実行したタスクに関する情報の取得をアプリに許可します。この許可を悪意のあるアプリに利用されると、他のアプリに関する非公開情報が読み取られる恐れがあります。"</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"実行中のアプリの順序変更"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"システム"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth音声"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"完了"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"メディア出力"</string>
 </resources>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 1fbf600..05a6291 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"앱이 WAP 메시지를 수신하고 처리할 수 있도록 허용합니다. 이는 앱이 사용자에게 표시하지 않고 기기로 전송된 메시지를 모니터링 또는 삭제할 수도 있다는 것을 의미합니다."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"실행 중인 앱 검색"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"앱이 현재 실행 중이거나 최근에 실행된 작업에 대한 정보를 검색할 수 있도록 허용합니다. 이 경우 앱이 기기에서 사용되는 다른 앱에 대한 정보를 검색할 수 있습니다."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"사용자에 대한 상호작용"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"앱이 기기에서 다양한 사용자에 대한 작업을 수행할 수 있도록 허용합니다. 이 경우 악성 앱이 사용자 간의 보호를 위반할 수 있습니다."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"사용자에 대한 상호작용을 위한 정식 라이센스"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"사용자에 대한 가능한 모든 상호작용을 허용합니다."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"실행 중인 앱 세부정보 검색"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"앱이 현재 실행 중이거나 최근에 실행된 작업에 대한 상세한 정보를 검색할 수 있도록 허용합니다. 이 경우 악성 앱이 다른 앱에 대한 개인 정보를 검색할 수 있습니다."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"실행 중인 앱 순서 재지정"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"시스템"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"블루투스 오디오"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"완료"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"미디어 출력"</string>
 </resources>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 9db7a4d..64fa48a 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Leidžiama programai gauti ir apdoroti WAP pranešimus. Šis leidimas apima galimybę stebėti ar ištrinti jums siunčiamus pranešimus jums jų neparodžius."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"nuskaityti vykdomas programas"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Leidžiama programai nuskaityti informaciją apie šiuo ir pastaruoju metu vykdomas užduotis. Taip programa gali atrasti informacijos, kokios programos naudojamos įrenginyje."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"sąveikauti su naudotojais"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Leidžiama programai atlikti veiksmus skirtingų įrenginio naudotojų profiliuose. Kenkėjiškos programos gali pasinaudoti šiuo leidimu, kad pažeistų naudotojų saugumą."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"visa licencija, leidžianti sąveikauti su naudotojais"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Leidžiama bet kokia sąveika tarp naudotojų."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"nuskaityti veikiančių programų išsamią informaciją"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Leidžiama programai nuskaityti išsamią informaciją apie šiuo ir pastaruoju metu vykdomas užduotis. Kenkėjiškos programos gali surasti privačios informacijos apie kitas programas."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"pertvarkyti vykdomas programas"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Sistema"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"„Bluetooth“ garsas"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Atlikta"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Medijos išvestis"</string>
 </resources>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index fd24d2ab4..dce6630 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Ļauj lietotnei saņemt un apstrādāt WAP ziņojumus. Šī atļauja ietver iespēju pārraudzīt vai dzēst jums nosūtītos ziņojumus, neparādot tos jums."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"izgūt izmantotās lietotnes"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Ļauj lietotnei izgūt informāciju par pašreiz un nesen darbinātajiem uzdevumiem. Tādējādi lietotne var atklāt informāciju par ierīcē izmantotajām lietojumprogrammām."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"darboties visos lietotāju kontos"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Ļauj lietotnei veikt darbības vairāku ierīces lietotāju kontos. Ļaunprātīgas lietotnes var izmantot šo atļauju, lai apdraudētu lietotāju kontu drošību."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"pilna licence ar atļauju darboties visos lietotāju kontos"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Ļauj veikt jebkādas darbības visos lietotāju kontos."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"Informācijas izguve par izmantotajām lietotnēm"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Ļauj lietotnei izgūt informāciju par šobrīd un nesen veiktajiem uzdevumiem. Ļaunprātīgas lietotnes var atklāt privātu informāciju par citām lietotnēm."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"pārkārtot izmantotās lietotnes"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Sistēma"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth audio"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Gatavs"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Multivides izeja"</string>
 </resources>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 1719049..1a9e3fd 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -217,6 +217,14 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Membenarkan apl menerima dan memproses mesej WAP. Kebenaran ini termasuk keupayaan untuk memantau atau memadam mesej yang dihantar kepada anda tanpa menunjukkannya kepada anda."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"dapatkan semula apl yang sedang dijalankan"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Membenarkan apl mengambil maklumat tentang tugasan yang sedang dan baru berjalan. Ini boleh membenarkan apl untuk menemui maklumat tentang apl mana yang digunakan pada peranti."</string>
+    <!-- no translation found for permlab_interactAcrossUsers (7114255281944211682) -->
+    <skip />
+    <!-- no translation found for permdesc_interactAcrossUsers (364670963623385786) -->
+    <skip />
+    <!-- no translation found for permlab_interactAcrossUsersFull (2567734285545074105) -->
+    <skip />
+    <!-- no translation found for permdesc_interactAcrossUsersFull (376841368395502366) -->
+    <skip />
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"dapatkan butiran apl yang berjalan"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Membenarkan apl untuk mendapatkan maklumat terperinci tentang tugasan yang sedang dan baru berjalan. Apl hasad boleh mendapat maklumat peribadi tentang apl lain."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"susun semula tertib apl yang dijalankan"</string>
@@ -1301,4 +1309,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Sistem"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Audio Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Selesai"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Output media"</string>
 </resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index cafdcd3..0089217 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Lar appen motta og behandle WAP-meldinger. Dette betyr at appen kan overvåke eller slette meldinger som er sendt til deg uten at du har sett dem."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"hente apper som kjører"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Lar appen hente informasjon om oppgaver som kjører og som nylig har kjørt. Dette kan tillate appen å oppdage informasjon om hvilke apper som brukes på enheten."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"samhandling på tvers av brukere"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Tillater at appen utfører handlinger på tvers av ulike brukere på enheten. Skadelige apper kan bruke dette til å bryte beskyttelsen mellom brukere."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"full lisens til å samhandle på tvers av brukere"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Tillater alle mulige samhandlinger på tvers av brukere."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"hente informasjon om apper som kjører"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Tillater at appen henter ut informasjon om oppgaver som kjører eller nylig har kjørt. Skadelige apper kan bruke dette til å oppdage privat informasjon om andre apper."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"Endre rekkefølge på apper som kjører"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"System"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth-lyd"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Fullført"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Medieutdata"</string>
 </resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 04765cf..9947175 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Hiermee kan de app WAP-berichten ontvangen en verwerken. Dit betekent dat de app berichten die naar uw apparaat zijn verzonden, kan bijhouden of verwijderen zonder deze aan u weer te geven."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"actieve apps ophalen"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Hiermee kan de app informatie ophalen over actieve en recent uitgevoerde taken. Zo kan de app informatie vinden over welke apps op het apparaat worden gebruikt."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"interactie tussen gebruikers"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Hiermee kan de app acties uitvoeren voor verschillende gebruikers van het apparaat. Schadelijke apps kunnen dit gebruiken om de beveiliging tussen gebruikers te schenden."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"volledige toestemming voor interactie tussen gebruikers"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Hiermee is alle mogelijke interactie tussen gebruikers toegestaan."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"details van actieve apps ophalen"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Hiermee kan de app gedetailleerde informatie over huidige en recent uitgevoerde taken ophalen. Schadelijke apps kunnen op deze manier mogelijk privé-informatie over andere apps achterhalen."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"actieve apps opnieuw rangschikken"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Systeem"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth-audio"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Gereed"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Media-uitvoer"</string>
 </resources>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 89875e1..850f34e 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Pozwala aplikacji na odbieranie i przetwarzanie wiadomości WAP. To oznacza, że aplikacja będzie mogła bez Twojej wiedzy monitorować i usuwać wiadomości wysyłane do Twojego urządzenia."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"pobieranie uruchomionych aplikacji"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Pozwala aplikacji na pobieranie informacji o aktualnie i niedawno działających zadaniach. Dzięki temu aplikacja może uzyskać informacje o tym, które aplikacje są używane na urządzeniu."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"interakcje między użytkownikami"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Umożliwia aplikacji wykonywanie działań dotyczących różnych użytkowników urządzenia. Złośliwe aplikacje mogą to wykorzystać do złamania zabezpieczeń na kontach użytkowników."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"pełna licencja na interakcje między użytkownikami"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Zezwala na wszystkie możliwe interakcje między użytkownikami."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"Pobieraj informacje o uruchomionych aplikacjach"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Zezwala aplikacji na pobieranie informacji o obecnie i ostatnio uruchomionych zadaniach. Złośliwe aplikacje mogą uzyskać dostęp do prywatnych informacji na temat innych aplikacji."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"zmienianie kolejności uruchomionych aplikacji"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"System"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Dźwięk Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Gotowe"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Wyjście multimediów"</string>
 </resources>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 2a1d15a..916cc63 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Permite que a aplicação receba e processe mensagens WAP. Esta autorização inclui a capacidade de monitorizar ou eliminar mensagens enviadas para si sem as apresentar."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"obter aplicações em execução"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Permite que a aplicação recupere informações acerca de tarefas executadas atual e recentemente. Isto pode permitir que a aplicação descubra informações acerca de quais as aplicações utilizadas no dispositivo."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"interagir entre utilizadores"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Permite que a aplicação execute ações com diferentes utilizadores no dispositivo. Aplicações maliciosas poderão utilizar esta opção para violar a proteção entre utilizadores."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"licença completa para interagir entre utilizadores"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Permite todas as interações possíveis entre utilizadores."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"obter detalhes das aplicações em execução"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Permite à aplicação obter informações detalhadas sobre tarefas atualmente em execução e recentemente executadas. As aplicações maliciosas poderão descobrir informações privadas de outras aplicações."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"reordenar as aplicações em execução"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Sistema"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Áudio Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Concluído"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Saída de som multimédia"</string>
 </resources>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index df74588..47fa6cf 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Permite que o aplicativo receba e processe mensagens WAP. Esta permissão inclui a capacidade de monitorar ou excluir mensagens enviadas para você sem mostrá-las para você."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"recuperar aplicativos em execução"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Permite que o aplicativo obtenha informações sobre tarefas em execução atuais e recentes. Pode permitir que o aplicativo descubra informações sobre os aplicativos usados ​​no dispositivo."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"interagir entre os usuários"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Permite que o aplicativo execute ações entre os diversos usuários do aparelho. Aplicativos mal-intencionados podem usar isto para violar a proteção entre os usuários."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"permissão total para interagir entre os usuários"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Permite todas as interações possíveis entre os usuários."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"recuperar detalhes dos aplicativos em execução"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Permite que o aplicativo recupere informações detalhadas sobre tarefas executadas atual e recentemente. Aplicativos maliciosos podem descobrir informações privadas sobre outros aplicativos."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"reordenar os aplicativos em execução"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Sistema"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Áudio Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Concluído"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Saída de mídia"</string>
 </resources>
diff --git a/core/res/res/values-rm/strings.xml b/core/res/res/values-rm/strings.xml
index a9eafdb..90c8916 100644
--- a/core/res/res/values-rm/strings.xml
+++ b/core/res/res/values-rm/strings.xml
@@ -289,6 +289,14 @@
     <skip />
     <!-- no translation found for permdesc_getTasks (7454215995847658102) -->
     <skip />
+    <!-- no translation found for permlab_interactAcrossUsers (7114255281944211682) -->
+    <skip />
+    <!-- no translation found for permdesc_interactAcrossUsers (364670963623385786) -->
+    <skip />
+    <!-- no translation found for permlab_interactAcrossUsersFull (2567734285545074105) -->
+    <skip />
+    <!-- no translation found for permdesc_interactAcrossUsersFull (376841368395502366) -->
+    <skip />
     <!-- no translation found for permlab_getDetailedTasks (6229468674753529501) -->
     <skip />
     <!-- no translation found for permdesc_getDetailedTasks (153824741440717599) -->
@@ -2050,4 +2058,6 @@
     <skip />
     <!-- no translation found for media_route_chooser_grouping_done (7966438307723317169) -->
     <skip />
+    <!-- no translation found for media_route_button_content_description (5758553567065145276) -->
+    <skip />
 </resources>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 537cb20..7244190 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Permite aplicaţiei să primească şi să proceseze mesaje WAP. Această permisiune include capacitatea de a monitoriza sau şterge mesajele care v-au fost trimise fără a vi le arăta."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"preluare aplicaţii care rulează"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Permite aplicaţiei să preia informaţiile despre activităţile care rulează în prezent şi care au rulat recent. În acest fel, aplicaţia poate descoperi informaţii despre aplicaţiile care sunt utilizate pe dispozitiv."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"interacţiune între utilizatori"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Permite aplicaţiei să efectueze acţiuni pentru diferiţi utilizatori pe dispozitiv. Aplicaţiile rău intenţionate pot utiliza această permisiune pentru a încălca protecţia între utilizatori."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"licenţă completă pentru interacţiune între utilizatori"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Permite toate interacţiunile posibile între utilizatori."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"preia detalii despre aplicaţiile care rulează"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Permite aplicaţiei să preia informaţii detaliate despre activităţile rulate curent şi recent. Aplicaţiile rău intenţionate pot să descopere informaţii private despre alte aplicaţii."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"reordonare aplicaţii care rulează"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Sistem"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Audio Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Terminat"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Rezultate media"</string>
 </resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index f11a38a..f616e35 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Приложение сможет получать и обрабатывать WAP-сообщения. Это значит, что оно сможет отслеживать и удалять отправленные на ваше устройство сообщения, не показывая их."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"Получение данных о запущенных приложениях"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Приложение сможет получать информацию о недавно запущенных и выполняемых задачах, а следовательно, и о приложениях, используемых на устройстве."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"разрешить взаимодействие со всеми аккаунтами"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Приложение сможет выполнять действия во всех аккаунтах на этом устройстве. При этом защита от вредоносных приложений может быть недостаточной."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"разрешить полное взаимодействие со всеми аккаунтами"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Приложение сможет выполнять любые действия во всех аккаунтах на этом устройстве."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"получение сведений о работающих приложениях"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Приложение сможет получать подробные сведения о недавно запущенных и выполняемых задачах. При этом конфиденциальная информация о других приложениях не будет защищена от вредоносных программ."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"Упорядочивание запущенных приложений"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Система"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Воспроизведение звука через Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Готово"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Перенаправлять поток мультимедиа"</string>
 </resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 3488b61..4aca1cb 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Umožňuje aplikácii prijímať a spracovávať správy WAP. Toto povolenie zahŕňa možnosť sledovať vaše správy alebo ich odstrániť bez toho, aby sa vám zobrazili."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"načítať spustené aplikácie"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Umožňuje aplikácii načítať informácie o aktuálne či nedávno spustených úlohách. Toto povolenie môže aplikácii umožniť objaviť informácie o tom, ktoré aplikácie sa na zariadení používajú."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"interakcie naprieč používateľmi"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Umožňuje aplikácii vykonávať akcie naprieč rôznymi používateľmi zariadenia. Škodlivé aplikácie môžu toto povolenie zneužiť na obídenie ochrany medzi používateľmi."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"plná licencia na interakcie naprieč používateľmi"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Umožňuje všetky možné interakcie naprieč používateľmi."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"načítať podrobnosti o spustených aplikáciách"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Umožňuje aplikácii načítať podrobné informácie o aktuálnych a nedávno spustených úlohách. Škodlivé aplikácie môžu odhaliť súkromné informácie o iných aplikáciách."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"zmeniť poradie spustených aplikácií"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Systém"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth audio"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Hotovo"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Výstup médií"</string>
 </resources>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index b25e3d4..552cb53 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Aplikaciji omogoča prejemanje in obdelavo sporočil WAP. S tem lahko aplikacija nadzoruje ali izbriše sporočila, poslana v napravo, ne da bi vam jih pokazala."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"dobivanje programov, ki se izvajajo"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Aplikaciji omogoča prejemanje podatkov o trenutnih in nedavno izvajajočih se opravilih. S tem lahko aplikacija odkrije podatke o aplikacijah, ki se uporabljajo v napravi."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"interakcija z uporabniki"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Aplikaciji omogoča izvajanje dejanj za različne uporabnike v napravi. Zlonamerne aplikacije lahko to uporabijo za kršitev zaščite med uporabniki."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"polna licenca za interakcijo z uporabniki"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Dovoli vso mogočo interakcijo z uporabniki"</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"prejemanje podrobnosti o aplikacijah, ki se izvajajo"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Aplikaciji omogoča, da dobi podatke o trenutnih in nedavno izvajajočih se opravilih. Zlonamerne aplikacije lahko odkrijejo zasebne podatke o drugih aplikacijah."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"preurejanje programov, ki se izvajajo"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Sistem"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Zvok prek Bluetootha"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Končano"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Izhod predstavnosti"</string>
 </resources>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 0195968..60295c0 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Дозвољава апликацији да прима и обрађује WAP поруке. Ова дозвола укључује могућност праћења или брисања порука које вам се шаљу, а које вам се не приказују."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"преузимање покренутих апликација"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Дозвољава апликацији да преузима информације о актуелним и недавно покренутим задацима. Ово може да омогући апликацији да открије информације о томе које се апликације користе на уређају."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"интеракција између корисника"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Дозвољава апликацији да обавља радње између различитих корисника на уређају. Злонамерне апликације могу да користе ово да би угрозиле заштиту између корисника."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"пуна лиценца за интеракцију између корисника"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Дозвољава све могуће интеракције између корисника."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"преузимање детаља о покренутим апликацијама"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Дозвољава апликацији да преузима детаљне информације о актуелним и недавно покренутим задацима. Злонамерне апликације могу да открију приватне информације о другим апликацијама."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"промена редоследа покренутих апликација"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Систем"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth аудио"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Готово"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Излаз медија"</string>
 </resources>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 31d63397..24622a1 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Tillåter att appen tar emot och hanterar WAP-meddelanden. Med den här behörigheten kan appen övervaka eller ta bort meddelanden som skickats till dig utan att visa dem för dig."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"hämta appar som körs"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Tillåter att appen hämtar information om nyligen körda och pågående aktiviteter. Detta kan innebära att appen tillåts ta reda på vilka appar som används på enheten."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"interagera mellan användare"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Tillåter att appen utför åtgärder mellan användare på enheten. Skadliga appar kan använda detta som ett sätt att kringgå skyddet mellan användare."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"fullständig behörighet att interagera mellan användare"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Tillåter all slags interaktion mellan användare."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"hämta information om aktiva appar"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Tillåter att appen hämtar detaljerad information om uppgifter som körs och har körts. Skadliga appar kan upptäcka personliga uppgifter om andra appar."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"byt ordning på appar som körs"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"System"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth-ljud"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Klar"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Medieuppspelning"</string>
 </resources>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 6fb20dd..2d88e4e 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Inaruhusu programu kupokea na kuchakata ujumbe wa WAP. Idhini hii inajumuisha uwezo wa kuchunguza na kufuta ujumbe uliotumwa kwako bila ya kukuonyesha."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"rudisha programu zinazoendeshwa"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Inaruhusu programu kurudisha taarifa kuhusu kazi zinazoendeshwa sasa na hivi karibuni. Hii inaweza kuruhusu programu kugundua taarifa kuhusu ni programu zipi zinazotumika kwenye kifaa."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"ingiana na watumiaji"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Inaruhusu programu kutenda vitendo kwa watumiaji tofauti kwenye kifaa. Programu hasidi huenda zikatumia hii ili kukiuka ulinzi kati ya watumiaji."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"leseni kamili ili kuingiana na watumiaji"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Inaruhusu miingialiano yote inayowezekana kwa watumiaji."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"epua maelezo ya programu zinazoendeshwa"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Huruhusu programu kuepua maelezo tondoti kuhusu kazi za sasa na zinazoendelea hivi karibuni. Programu hasidi huenda zikagundua maelezo ya kibinafsi kuhusu programu zingine."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"Agiza tena programu za kuendeshwa"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Mfumo"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Sauti ya Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Kwisha"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Towe ya midia"</string>
 </resources>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 32f6aea..fbc5800 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"อนุญาตให้แอปพลิเคชันรับและประมวลผลข้อความ WAP การอนุญาตนี้รวมถึงความสามารถในการตรวจสอบหรือลบข้อความที่ส่งมาให้คุณโดยไม่ต้องแสดงให้คุณเห็น"</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"เรียกแอปพลิเคชันที่ทำงานอยู่"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"อนุญาตให้แอปพลิเคชันเรียกดูข้อมูลเกี่ยวกับงานที่ดำเนินการอยู่ในขณะนี้และเมื่อเร็วๆ นี้ ซึ่งอาจทำให้แอปพลิเคชันสามารถค้นข้อมูลได้ว่าอุปกรณ์นี้ใช้แอปพลิเคชันใดบ้าง"</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"โต้ตอบระหว่างผู้ใช้"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"อนุญาตให้แอปพลิเคชันทำงานได้กับผู้ใช้หลายรายบนอุปกรณ์นี้ แอปพลิเคชันที่เป็นอันตรายอาจใช้การทำงานนี้ในการบุกรุกการป้องกันระหว่างผู้ใช้"</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"ใบอนุญาตฉบับเต็มสำหรับการโต้ตอบระหว่างผู้ใช้"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"อนุญาตให้ทำการโต้ตอบทุกชนิดที่เป็นไปได้กับผู้ใช้ต่างๆ"</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"ดึงรายละเอียดของแอปที่ทำงานอยู่"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"อนุญาตให้แอปพลิเคชันดึงข้อมูลเกี่ยวกับงานที่กำลังเรียกใช้อยู่ในปัจจุบันและงานล่าสุด แอปพลิเคชันที่เป็นอันตรายอาจค้นพบข้อมูลเฉพาะตัวเกี่ยวกับแอปพลิเคชันอื่นๆ"</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"จัดลำดับแอปพลิเคชันที่ทำงานอยู่ใหม่"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"ระบบ"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"เสียงบลูทูธ"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"เสร็จสิ้น"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"เอาต์พุตสื่อ"</string>
 </resources>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 1d33c75..36555b9 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Pinapayagan ang app na tumanggap at magproseso ng mga mensaheng WAP. Kabilang sa pahintulot na ito ang kakayahang sumubaybay o magtanggal ang app ng mga mensaheng ipinapadala sa iyo nang hindi ipinapakita ang mga ito sa iyo."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"bawiin ang tumatakbong apps"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Pinapayagan ang app na kumuha ng impormasyon tungkol sa mga kasalukuyan at kamakailang gumaganang gawain. Maaari nitong payagan ang app na tumuklas ng impormasyon tungkol sa kung aling mga application ang ginagamit sa device."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"makipag-ugnayan sa kabuuan ng mga user"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Binibigyang-daan ang app upang magsagawa ng mga pagkilos sa kabuuan ng iba\'t ibang mga user sa device. Maaari itong gamitin ng nakakahamak na apps upang lumabag sa proteksyon sa pagitan ng mga user."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"ganap na lisensya upang makipag-ugnayan sa kabuuan ng mga user"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Pinapayagan ang lahat ng posibleng pakikipag-ugnayan sa kabuuan ng mga user."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"bawiin ang mga detalye ng gumaganang apps"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Binibigyang-daan ang app na bawiin ang detalyadong impormasyon tungkol sa mga kasalukuyan at kamakailang gumaganang gawain. Maaaring makatuklas ang nakakahamak na apps ng pribadong impormasyon tungkol sa iba pang apps."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"muling isaayos ang tumatakbong apps"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"System"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Audio sa Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Tapos na"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Output ng media"</string>
 </resources>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 75c3e31..9c2dfef 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Uygulamaya WAP mesajlarını alma ve işleme izni verir. Buna, size gönderilen mesajları takip edip size göstermeden silebilme izni de dahildir."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"çalışan uygulamaları al"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Uygulamaya o anda ve son çalışan görevler hakkında bilgi alma izni verir. Bu izin, uygulamanın cihaz tarafından kullanılan uygulamalar hakkında bilgi elde etmesine olanak sağlayabilir."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"kullanıcılar arasında etkileşim kur"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Uygulamaya cihazdaki farklı kullanıcılar arasında işlem gerçekleştirme izni verir. Kötü amaçlı uygulamalar bu izinle kullanıcılar arasındaki korumayı ihlal edebilir."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"kullanıcılar arasında etkileşim kurmak için tam izin"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Kullanıcılar arasında tüm etkileşime izin verir."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"çalışan uygulamaların ayrıntılarını al"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Uygulamaya, şu anda çalışmakta olan ve son çalışan işlemler hakkında ayrıntılı bilgi alma izni verir. Kötü amaçlı uygulamalar diğer uygulamalar hakkında gizli bilgileri ele geçirebilir."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"çalışan uygulamaları yeniden sırala"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Sistem"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth ses"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Tamamlandı"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Medya çıkışı"</string>
 </resources>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 0fe2afe..4092aa0 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Дозволяє програмі отримувати й обробляти WAP-повідомлення. Це означає, що програма може відстежувати чи видаляти повідомлення, надіслані на ваш пристрій, навіть не показуючи їх вам."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"отримувати запущені програми"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Дозволяє програмі отримувати інформацію про поточні й останні запущені завдання. Це може дозволити програмі виявляти інформацію про програми, які використовуються на пристрої."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"взаємодіяти між користувачами"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Дозволяє програмі виконувати дії щодо різних користувачів на пристрої. Шкідливі програми можуть використовувати це для порушення захисту окремих користувачів."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"повна ліцензія на взаємодію між користувачами"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Дозволяє всі можливі взаємодії щодо користувачів."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"отримувати дані про запущені програми"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Дозволяє програмі отримувати інформацію про поточні й останні запущені завдання. Шкідливі програми можуть виявляти особисту інформацію про інші програми."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"змінювати порядок запущених програм"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Система"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Аудіо Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Готово"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Вивід медіа-даних"</string>
 </resources>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 5a4e236..1a420da 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Cho phép ứng dụng nhận và xử lý tin nhắn WAP. Quyền này bao gồm khả năng giám sát hoặc xóa tin nhắn được gửi cho bạn mà không hiển thị chúng cho bạn."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"truy xuất các ứng dụng đang chạy"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Cho phép ứng dụng truy xuất thông tin về các công việc đã và đang chạy gần đây. Việc này có thể cho phép ứng dụng phát hiện thông tin về những ứng dụng nào đã được sử dụng trên thiết bị."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"tương tác với người dùng"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Cho phép ứng dụng thực hiện hành động với những người dùng khác trên thiết bị. Ứng dụng độc hại có thể sử dụng quyền này để vi phạm khả năng bảo vệ giữa người dùng."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"cấp phép đầy đủ để tương tác với người dùng"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Cho phép tất cả các tương tác có thể xảy ra với người dùng."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"truy xuất chi tiết về các ứng dụng đang chạy"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Cho phép ứng dụng truy xuất thông tin chi tiết về các tác vụ đã và đang chạy gần đây. Ứng dụng độc hại có thể phát hiện thông tin riêng tư về các ứng dụng khác."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"sắp xếp lại những ứng dụng đang chạy"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Hệ thống"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Âm thanh Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Xong"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Đầu ra phương tiện"</string>
 </resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 2657d92..40a8422 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"允许该应用接收和处理 WAP 消息。此权限包括监视发送给您的消息或删除发送给您的消息而不向您显示的功能。"</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"检索正在运行的应用"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"允许该应用检索近期运行的和当前正在运行的任务的相关信息。此权限可让该应用了解设备上使用了哪些应用。"</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"用户间互动"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"允许该应用在设备上跨不同用户执行操作。恶意应用可能会借此破坏用户之间的保护。"</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"完全允许用户之间进行互动"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"允许用户之间进行所有可能的互动。"</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"检索正在运行的应用的详细信息"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"允许该应用检索当前正在运行和近期运行的任务的详细信息。恶意应用可能会发现有关其他应用的私密信息。"</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"对正在运行的应用重新排序"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"系统"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"蓝牙音频"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"完成"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"媒体输出线路"</string>
 </resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 8a8cb8e..ca9462e 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"允許應用程式接收和處理 WAP 訊息。這項權限也能讓應用程式監控訊息,或在您閱讀訊息前擅自刪除訊息。"</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"擷取執行中的應用程式"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"允許應用程式擷取最近執行工作的資訊。這項設定可讓應用程式找出裝置所用程式的相關資訊。"</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"對所有使用者執行各種動作"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"允許應用程式對裝置上的所有使用者執行各種動作。請注意,惡意應用程式可能利用此功能侵害使用者之間的保護機制。"</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"完整授權對所有使用者執行各種動作"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"允許對所有使用者執行各種可能的動作。"</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"擷取執行中應用程式的詳細資訊"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"允許應用程式擷取目前及最近所執行任務的詳細資訊。請注意,惡意應用程式可能會找出其他應用程式的不公開資訊。"</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"重新排序正在執行的應用程式"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"系統"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"藍牙音訊"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"完成"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"媒體輸出"</string>
 </resources>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 7c9a500..e5b8499 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -217,6 +217,10 @@
     <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Ivumela uhlelo lokusebenza ukuthola nokucubungula imilayezo ye-WAP. Le mvume ifaka phakathi amandla okungamela noma okwesusa imilayezo ethunyelwe kuwe ngaphandle kokukubonisa."</string>
     <string name="permlab_getTasks" msgid="6466095396623933906">"thola izinsiza ezisebenzayo"</string>
     <string name="permdesc_getTasks" msgid="7454215995847658102">"Ivumela uhlelo lokusebenza ukubuyisa ulwazi mayelana nemisebenzi yamanje neyakamuva. Lokhu kungavumela uhlelo lokusebenza ukuthola ulwazi mayelana nokuthi iziphi izinhlelo zokusebenza ezisetshenziswa kudivayisi."</string>
+    <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"ihlanganyela phakathi kwabasebenzisi"</string>
+    <string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Ivumela uhlelo lokusebenza ukwenza izenzo kubasebenzisi bonke kudivayisi. Izinhlelo zokusebenza ezingalungile zingasebenzisa lokhu ukwephula ukuvikela phakathi kwabasebenzisi."</string>
+    <string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"ilayisensi egcwele yokuhlanganyela kubasebenzisi"</string>
+    <string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Ivumela konke ukuhlanganyela phakathi kwabasebenzisi."</string>
     <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"thola kabusha imininingwane yezinhlelo zokusebenza ezisebenzayo"</string>
     <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Ivumela uhlelo lokusebenza ukuthola kabusha ulwazi mayelana nezinto ezenzeka manje nezisanda kwenzeka. Izinhlelo zokusebenza ezingalungile zingathola imininingwane eyimfihlo mayelana nezinye izinhlelo zokusebenza."</string>
     <string name="permlab_reorderTasks" msgid="2018575526934422779">"misa kabusha izinsiza ezisebenzayo"</string>
@@ -1301,4 +1305,5 @@
     <string name="default_audio_route_category_name" msgid="3722811174003886946">"Isistimu"</string>
     <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Umsindo we-Bluetooth"</string>
     <string name="media_route_chooser_grouping_done" msgid="7966438307723317169">"Qedile"</string>
+    <string name="media_route_button_content_description" msgid="5758553567065145276">"Okukhiphayo kwemidiya"</string>
 </resources>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 6386bcb..5d8d397 100755
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -5502,6 +5502,7 @@
         </attr>
         <!-- Options affecting how the action bar is displayed. -->
         <attr name="displayOptions">
+            <flag name="none" value="0" />
             <flag name="useLogo" value="0x1" />
             <flag name="showHome" value="0x2" />
             <flag name="homeAsUp" value="0x4" />
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 8bc1e79..1c3318d 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -284,7 +284,19 @@
          who do not know their particular component name) and for all
          content providers. -->
     <attr name="exported" format="boolean" />
-    
+
+    <!-- If set to true, a single instance of this component will run for
+         all users.  That instance will run as user 0, the default/primary
+         user.  When the app running is in processes for other users and interacts
+         with this component (by binding to a service for example) those processes will
+         always interact with the instance running for user 0.  Enabling
+         single user mode forces "exported" of the component to be false, to
+         help avoid introducing multi-user security bugs.  You must hold the
+         permission {@link android.Manifest.permission#INTERACT_ACROSS_USERS} in order
+         to use this feature.  This flag can only be used with services,
+         receivers, and providers; it can not be used with activities. -->
+    <attr name="singleUser" format="boolean" />
+
     <!-- Specify a specific process that the associated code is to run in.
          Use with the application tag (to supply a default process for all
          application components), or with the activity, receiver, service,
@@ -1194,6 +1206,7 @@
              component specific values). -->
         <attr name="enabled" />
         <attr name="exported" />
+        <attr name="singleUser" />
     </declare-styleable>
     
     <!-- Attributes that can be supplied in an AndroidManifest.xml
@@ -1275,16 +1288,7 @@
              that is isolated from the rest of the system.  The only communication
              with it is through the Service API (binding and starting). -->
         <attr name="isolatedProcess" format="boolean" />
-        <!-- If set to true, a single instance of this service will run for
-             all users.  That instance will run as user 0, the default/primary
-             user.  When the app running in processes for other users interacts
-             with this service (by binding to it, starting it, etc) they will
-             always interact with the instance running for user 0.  Enabling
-             single user mode forces "exported" of the service to be false, to
-             avoid introducing multi-user security bugs.  You must hold the
-             permission {@link android.Manifest.permission#INTERACT_ACROSS_USERS} in order
-             to use this feature. -->
-        <attr name="singleUser" format="boolean" />
+        <attr name="singleUser" />
     </declare-styleable>
     
     <!-- The <code>receiver</code> tag declares an
@@ -1318,8 +1322,9 @@
              component specific values). -->
         <attr name="enabled" />
         <attr name="exported" />
+        <attr name="singleUser" />
     </declare-styleable>
-    
+
     <!-- The <code>activity</code> tag declares an
          {@link android.app.Activity} class that is available
          as part of the package's application components, implementing
@@ -1372,6 +1377,7 @@
         <attr name="hardwareAccelerated" />
         <attr name="uiOptions" />
         <attr name="parentActivityName" />
+        <attr name="singleUser" />
     </declare-styleable>
     
     <!-- The <code>activity-alias</code> tag declares a new
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 39129e5..a4bf43f 100755
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -852,9 +852,7 @@
     <string name="config_wimaxStateTrackerClassname" translatable="false"></string>
 
     <!-- enable screen saver feature -->
-    <bool name="config_enableDreams">false</bool>
-    <!-- Name of screensaver components to look for if none has been chosen by the user -->
-    <string name="config_defaultDreamComponent" translatable="false">com.google.android.deskclock/com.android.deskclock.Screensaver</string>
+    <bool name="config_enableDreams">true</bool>
 
     <!-- Base "touch slop" value used by ViewConfiguration as a
          movement threshold where scrolling should begin. -->
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 4881a94..965d02b 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -1328,11 +1328,14 @@
   <java-symbol type="layout" name="screen_title_icons" />
   <java-symbol type="string" name="abbrev_wday_month_day_no_year" />
   <java-symbol type="string" name="android_upgrading_title" />
+  <java-symbol type="string" name="bugreport_title" />
+  <java-symbol type="string" name="bugreport_message" />
   <java-symbol type="string" name="faceunlock_multiple_failures" />
   <java-symbol type="string" name="global_action_power_off" />
   <java-symbol type="string" name="global_actions_airplane_mode_off_status" />
   <java-symbol type="string" name="global_actions_airplane_mode_on_status" />
   <java-symbol type="string" name="global_actions_toggle_airplane_mode" />
+  <java-symbol type="string" name="global_action_bug_report" />
   <java-symbol type="string" name="global_action_silent_mode_off_status" />
   <java-symbol type="string" name="global_action_silent_mode_on_status" />
   <java-symbol type="string" name="global_action_toggle_silent_mode" />
@@ -1554,7 +1557,6 @@
   <java-symbol type="style" name="Theme.Toast" />
   <java-symbol type="xml" name="storage_list" />
   <java-symbol type="bool" name="config_enableDreams" />
-  <java-symbol type="string" name="config_defaultDreamComponent" />
   <java-symbol type="string" name="enable_explore_by_touch_warning_title" />
   <java-symbol type="string" name="enable_explore_by_touch_warning_message" />
 
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index b369744..352c409 100755
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -346,6 +346,17 @@
     <!-- label for item that turns off power in phone options dialog -->
     <string name="global_action_power_off">Power off</string>
 
+    <!-- label for item that generates a bug report in the phone options dialog -->
+    <string name="global_action_bug_report">Bug report</string>
+
+    <!-- Take bug report menu title [CHAR LIMIT=NONE] -->
+    <string name="bugreport_title">Take bug report</string>
+    <!-- Message in bugreport dialog describing what it does [CHAR LIMIT=NONE] -->
+    <string name="bugreport_message">This will collect information about your
+        current device state, to send as an e-mail message.  It will take a little
+        time from starting the bug report until it is ready to be sent; please be
+        patient.</string>
+
     <!-- label for item that enables silent mode in phone options dialog -->
     <string name="global_action_toggle_silent_mode">Silent mode</string>
 
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_20120229.zip b/docs/downloads/design/Android_Design_Downloads_20120229.zip
new file mode 100644
index 0000000..7bbd85f
--- /dev/null
+++ b/docs/downloads/design/Android_Design_Downloads_20120229.zip
Binary files differ
diff --git a/docs/downloads/design/Android_Design_Fireworks_Stencil_20120229.png b/docs/downloads/design/Android_Design_Fireworks_Stencil_20120229.png
new file mode 100644
index 0000000..5136379
--- /dev/null
+++ b/docs/downloads/design/Android_Design_Fireworks_Stencil_20120229.png
Binary files differ
diff --git a/docs/downloads/design/Android_Design_Holo_Widgets_20120302.zip b/docs/downloads/design/Android_Design_Holo_Widgets_20120302.zip
new file mode 100644
index 0000000..90c45c6
--- /dev/null
+++ b/docs/downloads/design/Android_Design_Holo_Widgets_20120302.zip
Binary files differ
diff --git a/docs/downloads/design/Android_Design_Icons_20120229.zip b/docs/downloads/design/Android_Design_Icons_20120229.zip
new file mode 100644
index 0000000..c2728f3
--- /dev/null
+++ b/docs/downloads/design/Android_Design_Icons_20120229.zip
Binary files differ
diff --git a/docs/downloads/design/Android_Design_OmniGraffle_Stencil_20120229.graffle b/docs/downloads/design/Android_Design_OmniGraffle_Stencil_20120229.graffle
new file mode 100644
index 0000000..9e418d3
--- /dev/null
+++ b/docs/downloads/design/Android_Design_OmniGraffle_Stencil_20120229.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_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/downloads/training/ActivityLifecycle.zip b/docs/downloads/training/ActivityLifecycle.zip
new file mode 100644
index 0000000..1cbed44
--- /dev/null
+++ b/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..e7e71f9
--- /dev/null
+++ b/docs/downloads/training/BitmapFun.zip
Binary files differ
diff --git a/docs/downloads/training/CustomView.zip b/docs/downloads/training/CustomView.zip
new file mode 100644
index 0000000..d7ae8a2
--- /dev/null
+++ b/docs/downloads/training/CustomView.zip
Binary files differ
diff --git a/docs/downloads/training/DeviceManagement.zip b/docs/downloads/training/DeviceManagement.zip
new file mode 100644
index 0000000..9f7ec69
--- /dev/null
+++ b/docs/downloads/training/DeviceManagement.zip
Binary files differ
diff --git a/docs/downloads/training/EffectiveNavigation.zip b/docs/downloads/training/EffectiveNavigation.zip
new file mode 100644
index 0000000..f21af45
--- /dev/null
+++ b/docs/downloads/training/EffectiveNavigation.zip
Binary files differ
diff --git a/docs/downloads/training/FragmentBasics.zip b/docs/downloads/training/FragmentBasics.zip
new file mode 100644
index 0000000..b5b19d0
--- /dev/null
+++ b/docs/downloads/training/FragmentBasics.zip
Binary files differ
diff --git a/docs/downloads/training/LocationAware.zip b/docs/downloads/training/LocationAware.zip
new file mode 100644
index 0000000..8ed97cb
--- /dev/null
+++ b/docs/downloads/training/LocationAware.zip
Binary files differ
diff --git a/docs/downloads/training/MobileAds.zip b/docs/downloads/training/MobileAds.zip
new file mode 100644
index 0000000..468e4ee
--- /dev/null
+++ b/docs/downloads/training/MobileAds.zip
Binary files differ
diff --git a/docs/downloads/training/NetworkUsage.zip b/docs/downloads/training/NetworkUsage.zip
new file mode 100644
index 0000000..8c7fbef
--- /dev/null
+++ b/docs/downloads/training/NetworkUsage.zip
Binary files differ
diff --git a/docs/downloads/training/NewsReader.zip b/docs/downloads/training/NewsReader.zip
new file mode 100644
index 0000000..7dda41c
--- /dev/null
+++ b/docs/downloads/training/NewsReader.zip
Binary files differ
diff --git a/docs/downloads/training/OpenGLES.zip b/docs/downloads/training/OpenGLES.zip
new file mode 100644
index 0000000..862ae1f
--- /dev/null
+++ b/docs/downloads/training/OpenGLES.zip
Binary files differ
diff --git a/docs/downloads/training/PhotoIntentActivity.zip b/docs/downloads/training/PhotoIntentActivity.zip
new file mode 100644
index 0000000..9fcc0e1
--- /dev/null
+++ b/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..b70b442
--- /dev/null
+++ b/docs/downloads/training/TabCompat.zip
Binary files differ
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/distribute/googleplay/promote/brand.jd b/docs/html/distribute/googleplay/promote/brand.jd
index 8d04903..76ed619 100644
--- a/docs/html/distribute/googleplay/promote/brand.jd
+++ b/docs/html/distribute/googleplay/promote/brand.jd
@@ -150,7 +150,7 @@
                 <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>
+                <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>
@@ -171,4 +171,4 @@
 <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>
+respective owners and usage is reserved. You must seek the developer for appropriate permission to use them.</p>
diff --git a/docs/html/guide/google/gcm/gcm.jd b/docs/html/guide/google/gcm/gcm.jd
index 1b95520..827edaa 100644
--- a/docs/html/guide/google/gcm/gcm.jd
+++ b/docs/html/guide/google/gcm/gcm.jd
@@ -56,7 +56,7 @@
 </div>
 </div>
 
-<p>Google Cloud Messaging for Android (GCM) is a service that helps
+<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>
@@ -545,7 +545,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.
 
 <p>Here is an example, again using the <code>MyIntentReceiver</code> class:</p>
 
@@ -652,7 +653,9 @@
     <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 (4kb). Note that the values <em>must be enclosed by strings</em>. 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. Optional.</td>
+
+There is no limit on the number of key/value pairs, though there is a limit on the total size of the message (4kb). Note that the values <em>must be enclosed by strings</em>. 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 ("from" or any word starting with "google."). Optional.</td>
+
   </tr>
   <tr>
     <td><code>delay_while_idle</code></td>
@@ -683,7 +686,7 @@
   </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. Note that the key cannot be a reserved word ("from" or any word starting with "google."). Optional.</td>
   </tr>
   <tr>
     <td><code>delay_while_idle</code></td>
@@ -879,8 +882,20 @@
 <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 +989,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 +997,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/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/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/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/topics/manifest/provider-element.jd b/docs/html/guide/topics/manifest/provider-element.jd
index 4558800..7b4ca8f 100644
--- a/docs/html/guide/topics/manifest/provider-element.jd
+++ b/docs/html/guide/topics/manifest/provider-element.jd
@@ -97,7 +97,8 @@
 applications &mdash; "{@code true}" if it can be, and "{@code false}" if not.  
 If "{@code false}", the provider is available only to components of the 
 same application or applications with the same user ID.  The default value
-is "{@code true}".
+is "{@code true}" for applications which target API level 16 (Jelly Bean)
+and below, and "{@code false}" otherwise.
 
 <p>
 You can export a content provider but still limit access to it with the
diff --git a/docs/html/guide/topics/providers/content-provider-basics.jd b/docs/html/guide/topics/providers/content-provider-basics.jd
index f5e4805..8c47ad7 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="{@docRoot}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="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
-    &lt;grant-uri-permission&gt;</a>} child element of the
-    {@code <a href="{@docRoot}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/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/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/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/graphics/java/android/graphics/Bitmap.java b/graphics/java/android/graphics/Bitmap.java
index c91c2f1..6ba57809 100644
--- a/graphics/java/android/graphics/Bitmap.java
+++ b/graphics/java/android/graphics/Bitmap.java
@@ -63,7 +63,7 @@
     private boolean mRecycled;
 
     // Package-scoped for fast access.
-    int mDensity = sDefaultDensity = getDefaultDensity();
+    int mDensity = getDefaultDensity();
 
     private static volatile Matrix sScaleMatrix;
 
@@ -85,7 +85,7 @@
         sDefaultDensity = DisplayMetrics.DENSITY_DEVICE;
         return sDefaultDensity;
     }
-    
+
     /**
      * @noinspection UnusedDeclaration
      */
@@ -625,6 +625,22 @@
 
     /**
      * Returns a mutable bitmap with the specified width and height.  Its
+     * initial density is determined from the given {@link DisplayMetrics}.
+     *
+     * @param display  Display metrics for the display this bitmap will be
+     *                 drawn on.
+     * @param width    The width of the bitmap
+     * @param height   The height of the bitmap
+     * @param config   The bitmap config to create.
+     * @throws IllegalArgumentException if the width or height are <= 0
+     */
+    public static Bitmap createBitmap(DisplayMetrics display, int width,
+            int height, Config config) {
+        return createBitmap(display, width, height, config, true);
+    }
+
+    /**
+     * Returns a mutable bitmap with the specified width and height.  Its
      * initial density is as per {@link #getDensity}.
      *
      * @param width    The width of the bitmap
@@ -637,10 +653,33 @@
      * @throws IllegalArgumentException if the width or height are <= 0
      */
     private static Bitmap createBitmap(int width, int height, Config config, boolean hasAlpha) {
+        return createBitmap(null, width, height, config, hasAlpha);
+    }
+
+    /**
+     * Returns a mutable bitmap with the specified width and height.  Its
+     * initial density is determined from the given {@link DisplayMetrics}.
+     *
+     * @param display  Display metrics for the display this bitmap will be
+     *                 drawn on.
+     * @param width    The width of the bitmap
+     * @param height   The height of the bitmap
+     * @param config   The bitmap config to create.
+     * @param hasAlpha If the bitmap is ARGB_8888 this flag can be used to mark the
+     *                 bitmap as opaque. Doing so will clear the bitmap in black
+     *                 instead of transparent.  
+     * 
+     * @throws IllegalArgumentException if the width or height are <= 0
+     */
+    private static Bitmap createBitmap(DisplayMetrics display, int width, int height,
+            Config config, boolean hasAlpha) {
         if (width <= 0 || height <= 0) {
             throw new IllegalArgumentException("width and height must be > 0");
         }
         Bitmap bm = nativeCreate(null, 0, width, width, height, config.nativeInt, true);
+        if (display != null) {
+            bm.mDensity = display.densityDpi;
+        }
         if (config == Config.ARGB_8888 && !hasAlpha) {
             nativeErase(bm.mNativeBitmap, 0xff000000);
             nativeSetHasAlpha(bm.mNativeBitmap, hasAlpha);
@@ -673,6 +712,31 @@
      */
     public static Bitmap createBitmap(int colors[], int offset, int stride,
             int width, int height, Config config) {
+        return createBitmap(null, colors, offset, stride, width, height, config);
+    }
+
+    /**
+     * Returns a immutable bitmap with the specified width and height, with each
+     * pixel value set to the corresponding value in the colors array.  Its
+     * initial density is determined from the given {@link DisplayMetrics}.
+     *
+     * @param display  Display metrics for the display this bitmap will be
+     *                 drawn on.
+     * @param colors   Array of {@link Color} used to initialize the pixels.
+     * @param offset   Number of values to skip before the first color in the
+     *                 array of colors.
+     * @param stride   Number of colors in the array between rows (must be >=
+     *                 width or <= -width).
+     * @param width    The width of the bitmap
+     * @param height   The height of the bitmap
+     * @param config   The bitmap config to create. If the config does not
+     *                 support per-pixel alpha (e.g. RGB_565), then the alpha
+     *                 bytes in the colors[] will be ignored (assumed to be FF)
+     * @throws IllegalArgumentException if the width or height are <= 0, or if
+     *         the color array's length is less than the number of pixels.
+     */
+    public static Bitmap createBitmap(DisplayMetrics display, int colors[],
+            int offset, int stride, int width, int height, Config config) {
 
         checkWidthHeight(width, height);
         if (Math.abs(stride) < width) {
@@ -687,8 +751,12 @@
         if (width <= 0 || height <= 0) {
             throw new IllegalArgumentException("width and height must be > 0");
         }
-        return nativeCreate(colors, offset, stride, width, height,
+        Bitmap bm = nativeCreate(colors, offset, stride, width, height,
                             config.nativeInt, false);
+        if (display != null) {
+            bm.mDensity = display.densityDpi;
+        }
+        return bm;
     }
 
     /**
@@ -707,7 +775,29 @@
      *         the color array's length is less than the number of pixels.
      */
     public static Bitmap createBitmap(int colors[], int width, int height, Config config) {
-        return createBitmap(colors, 0, width, width, height, config);
+        return createBitmap(null, colors, 0, width, width, height, config);
+    }
+
+    /**
+     * Returns a immutable bitmap with the specified width and height, with each
+     * pixel value set to the corresponding value in the colors array.  Its
+     * initial density is determined from the given {@link DisplayMetrics}.
+     *
+     * @param display  Display metrics for the display this bitmap will be
+     *                 drawn on.
+     * @param colors   Array of {@link Color} used to initialize the pixels.
+     *                 This array must be at least as large as width * height.
+     * @param width    The width of the bitmap
+     * @param height   The height of the bitmap
+     * @param config   The bitmap config to create. If the config does not
+     *                 support per-pixel alpha (e.g. RGB_565), then the alpha
+     *                 bytes in the colors[] will be ignored (assumed to be FF)
+     * @throws IllegalArgumentException if the width or height are <= 0, or if
+     *         the color array's length is less than the number of pixels.
+     */
+    public static Bitmap createBitmap(DisplayMetrics display, int colors[],
+            int width, int height, Config config) {
+        return createBitmap(display, colors, 0, width, width, height, config);
     }
 
     /**
@@ -791,15 +881,17 @@
      * <code>(128, 128, 0, 0)</code>.</p>
      * 
      * <p>This method always returns false if {@link #getConfig()} is
-     * {@link Bitmap.Config#ALPHA_8} or {@link Bitmap.Config#RGB_565}.</p>
+     * {@link Bitmap.Config#RGB_565}.</p>
+     * 
+     * <p>This method only returns true if {@link #hasAlpha()} returns true.
+     * A bitmap with no alpha channel can be used both as a pre-multiplied and
+     * as a non pre-multiplied bitmap.</p>
      * 
      * @return true if the underlying pixels have been pre-multiplied, false
      *         otherwise
      */
     public final boolean isPremultiplied() {
-        final Config config = getConfig();
-        //noinspection deprecation
-        return config == Config.ARGB_8888 || config == Config.ARGB_4444;
+        return getConfig() != Config.RGB_565 && hasAlpha();
     }
 
     /** Returns the bitmap's width */
diff --git a/graphics/java/android/graphics/drawable/Drawable.java b/graphics/java/android/graphics/drawable/Drawable.java
index 540acfa..4bc5a5a 100644
--- a/graphics/java/android/graphics/drawable/Drawable.java
+++ b/graphics/java/android/graphics/drawable/Drawable.java
@@ -778,7 +778,8 @@
         // to the compatibility density only to have them scaled back up when
         // drawn to the screen.
         if (opts == null) opts = new BitmapFactory.Options();
-        opts.inScreenDensity = res.getDisplayMetrics().noncompatDensityDpi;
+        opts.inScreenDensity = res != null
+                ? res.getDisplayMetrics().noncompatDensityDpi : DisplayMetrics.DENSITY_DEVICE;
         Bitmap  bm = BitmapFactory.decodeResourceStream(res, value, is, pad, opts);
         if (bm != null) {
             byte[] np = bm.getNinePatchChunk();
diff --git a/keystore/java/android/security/KeyChain.java b/keystore/java/android/security/KeyChain.java
index 483ccb2..31c38d5 100644
--- a/keystore/java/android/security/KeyChain.java
+++ b/keystore/java/android/security/KeyChain.java
@@ -26,20 +26,16 @@
 import android.os.RemoteException;
 import java.io.ByteArrayInputStream;
 import java.io.Closeable;
-import java.io.IOException;
 import java.security.InvalidKeyException;
-import java.security.KeyPair;
 import java.security.Principal;
 import java.security.PrivateKey;
 import java.security.cert.Certificate;
 import java.security.cert.CertificateException;
 import java.security.cert.CertificateFactory;
 import java.security.cert.X509Certificate;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
-import libcore.util.Objects;
 
 import org.apache.harmony.xnet.provider.jsse.OpenSSLEngine;
 import org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore;
@@ -341,20 +337,9 @@
         try {
             IKeyChainService keyChainService = keyChainConnection.getService();
             byte[] certificateBytes = keyChainService.getCertificate(alias);
-            List<X509Certificate> chain = new ArrayList<X509Certificate>();
-            chain.add(toCertificate(certificateBytes));
             TrustedCertificateStore store = new TrustedCertificateStore();
-            for (int i = 0; true; i++) {
-                X509Certificate cert = chain.get(i);
-                if (Objects.equal(cert.getSubjectX500Principal(), cert.getIssuerX500Principal())) {
-                    break;
-                }
-                X509Certificate issuer = store.findIssuer(cert);
-                if (issuer == null) {
-                    break;
-                }
-                chain.add(issuer);
-            }
+            List<X509Certificate> chain = store
+                    .getCertificateChain(toCertificate(certificateBytes));
             return chain.toArray(new X509Certificate[chain.size()]);
         } catch (RemoteException e) {
             throw new KeyChainException(e);
diff --git a/libs/androidfw/AssetManager.cpp b/libs/androidfw/AssetManager.cpp
index 8d59d8e..8bd805c 100644
--- a/libs/androidfw/AssetManager.cpp
+++ b/libs/androidfw/AssetManager.cpp
@@ -98,6 +98,24 @@
 
         return path;
     }
+
+    /*
+     * Like strdup(), but uses C++ "new" operator instead of malloc.
+     */
+    static char* strdupNew(const char* str)
+    {
+        char* newStr;
+        int len;
+
+        if (str == NULL)
+            return NULL;
+
+        len = strlen(str);
+        newStr = new char[len+1];
+        memcpy(newStr, str, len+1);
+
+        return newStr;
+    }
 }
 
 /*
diff --git a/libs/hwui/Android.mk b/libs/hwui/Android.mk
index a54c188..1947c32 100644
--- a/libs/hwui/Android.mk
+++ b/libs/hwui/Android.mk
@@ -11,6 +11,7 @@
 		Caches.cpp \
 		DisplayListLogBuffer.cpp \
 		DisplayListRenderer.cpp \
+		Dither.cpp \
 		FboCache.cpp \
 		GradientCache.cpp \
 		LayerCache.cpp \
diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp
index 258ced0..0ed4888 100644
--- a/libs/hwui/Caches.cpp
+++ b/libs/hwui/Caches.cpp
@@ -52,13 +52,10 @@
     initFont();
     initExtensions();
     initConstraints();
+    initProperties();
 
     mDebugLevel = readDebugLevel();
     ALOGD("Enabling debug mode %d", mDebugLevel);
-
-#if RENDER_LAYERS_AS_REGIONS
-    INIT_LOGD("Layers will be composited as regions");
-#endif
 }
 
 void Caches::init() {
@@ -126,6 +123,16 @@
     glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize);
 }
 
+void Caches::initProperties() {
+    char property[PROPERTY_VALUE_MAX];
+    if (property_get(PROPERTY_DEBUG_LAYERS_UPDATES, property, NULL) > 0) {
+        INIT_LOGD("  Layers updates debug enabled: %s", property);
+        debugLayersUpdates = !strcmp(property, "true");
+    } else {
+        debugLayersUpdates = false;
+    }
+}
+
 void Caches::terminate() {
     if (!mInitialized) return;
 
@@ -252,6 +259,7 @@
             dropShadowCache.clear();
             gradientCache.clear();
             fontRenderer->clear();
+            dither.clear();
             // fall through
         case kFlushMode_Moderate:
             fontRenderer->flush();
diff --git a/libs/hwui/Caches.h b/libs/hwui/Caches.h
index 4cbac41..f4f56d6 100644
--- a/libs/hwui/Caches.h
+++ b/libs/hwui/Caches.h
@@ -38,6 +38,7 @@
 #include "TextDropShadowCache.h"
 #include "FboCache.h"
 #include "ResourceCache.h"
+#include "Dither.h"
 
 namespace android {
 namespace uirenderer {
@@ -235,6 +236,7 @@
 
     // Misc
     GLint maxTextureSize;
+    bool debugLayersUpdates;
 
     TextureCache textureCache;
     LayerCache layerCache;
@@ -250,6 +252,7 @@
     TextDropShadowCache dropShadowCache;
     FboCache fboCache;
     ResourceCache resourceCache;
+    Dither dither;
 
     GammaFontRenderer* fontRenderer;
 
@@ -265,6 +268,7 @@
     void initFont();
     void initExtensions();
     void initConstraints();
+    void initProperties();
 
     static void eventMarkNull(GLsizei length, const GLchar* marker) { }
     static void startMarkNull(GLsizei length, const GLchar* marker) { }
diff --git a/libs/hwui/DisplayListRenderer.cpp b/libs/hwui/DisplayListRenderer.cpp
index 76321be..95fc2c5 100644
--- a/libs/hwui/DisplayListRenderer.cpp
+++ b/libs/hwui/DisplayListRenderer.cpp
@@ -595,10 +595,13 @@
             break;
             case DrawText: {
                 getText(&text);
-                int count = getInt();
-                int positionsCount = 0;
+                int32_t count = getInt();
+                float x = getFloat();
+                float y = getFloat();
+                int32_t positionsCount = 0;
                 float* positions = getFloats(positionsCount);
                 SkPaint* paint = getPaint(renderer);
+                float length = getFloat();
                 ALOGD("%s%s %s, %d, %d, %p", (char*) indent, OP_NAMES[op],
                         text.text(), text.length(), count, paint);
             }
diff --git a/libs/hwui/Dither.cpp b/libs/hwui/Dither.cpp
new file mode 100755
index 0000000..5817977
--- /dev/null
+++ b/libs/hwui/Dither.cpp
@@ -0,0 +1,84 @@
+/*
+ * 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.
+ */
+
+#include "Caches.h"
+#include "Dither.h"
+
+namespace android {
+namespace uirenderer {
+
+///////////////////////////////////////////////////////////////////////////////
+// Defines
+///////////////////////////////////////////////////////////////////////////////
+
+// Must be a power of two
+#define DITHER_KERNEL_SIZE 4
+
+///////////////////////////////////////////////////////////////////////////////
+// Lifecycle
+///////////////////////////////////////////////////////////////////////////////
+
+void Dither::bindDitherTexture() {
+    if (!mInitialized) {
+        const uint8_t pattern[] = {
+             0,  8,  2, 10,
+            12,  4, 14,  6,
+             3, 11,  1,  9,
+            15,  7, 13,  5
+        };
+
+        glGenTextures(1, &mDitherTexture);
+        glBindTexture(GL_TEXTURE_2D, mDitherTexture);
+
+        glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+
+        glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, DITHER_KERNEL_SIZE, DITHER_KERNEL_SIZE, 0,
+                GL_ALPHA, GL_UNSIGNED_BYTE, &pattern);
+
+        mInitialized = true;
+    } else {
+        glBindTexture(GL_TEXTURE_2D, mDitherTexture);
+    }
+}
+
+void Dither::clear() {
+    if (mInitialized) {
+        glDeleteTextures(1, &mDitherTexture);
+    }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// Program management
+///////////////////////////////////////////////////////////////////////////////
+
+void Dither::setupProgram(Program* program, GLuint* textureUnit) {
+    GLuint textureSlot = (*textureUnit)++;
+    Caches::getInstance().activeTexture(textureSlot);
+
+    bindDitherTexture();
+
+    glUniform1i(program->getUniform("ditherSampler"), textureSlot);
+    glUniform1f(program->getUniform("ditherSize"), 1.0f / DITHER_KERNEL_SIZE);
+}
+
+}; // namespace uirenderer
+}; // namespace android
diff --git a/libs/hwui/Dither.h b/libs/hwui/Dither.h
new file mode 100755
index 0000000..34cf9bf
--- /dev/null
+++ b/libs/hwui/Dither.h
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+
+#ifndef ANDROID_HWUI_DITHER_H
+#define ANDROID_HWUI_DITHER_H
+
+#include <GLES2/gl2.h>
+
+#include "Program.h"
+
+namespace android {
+namespace uirenderer {
+
+/**
+ * Handles dithering for programs.
+ */
+class Dither {
+public:
+    Dither(): mInitialized(false), mDitherTexture(0) { }
+
+    void clear();
+    void setupProgram(Program* program, GLuint* textureUnit);
+
+private:
+    void bindDitherTexture();
+
+    bool mInitialized;
+    GLuint mDitherTexture;
+};
+
+}; // namespace uirenderer
+}; // namespace android
+
+#endif // ANDROID_HWUI_DITHER_H
diff --git a/libs/hwui/FontRenderer.cpp b/libs/hwui/FontRenderer.cpp
index 7f0ed73..ccddd91 100644
--- a/libs/hwui/FontRenderer.cpp
+++ b/libs/hwui/FontRenderer.cpp
@@ -37,7 +37,7 @@
 #define DEFAULT_TEXT_CACHE_WIDTH 1024
 #define DEFAULT_TEXT_CACHE_HEIGHT 256
 #define MAX_TEXT_CACHE_WIDTH 2048
-#define TEXTURE_BORDER_SIZE 2
+#define TEXTURE_BORDER_SIZE 1
 
 #define AUTO_KERN(prev, next) (((next) - (prev) + 32) >> 6 << 16)
 
@@ -50,10 +50,10 @@
         return false;
     }
 
-    if (mCurrentCol + glyph.fWidth + TEXTURE_BORDER_SIZE < mMaxWidth) {
-        *retOriginX = mCurrentCol + 1;
-        *retOriginY = mCurrentRow + 1;
-        mCurrentCol += glyph.fWidth + TEXTURE_BORDER_SIZE;
+    if (mCurrentCol + glyph.fWidth + TEXTURE_BORDER_SIZE * 2 < mMaxWidth) {
+        *retOriginX = mCurrentCol + TEXTURE_BORDER_SIZE;
+        *retOriginY = mCurrentRow + TEXTURE_BORDER_SIZE;
+        mCurrentCol += glyph.fWidth + TEXTURE_BORDER_SIZE * 2;
         mDirty = true;
         return true;
     }
@@ -412,10 +412,10 @@
     uint32_t cacheWidth = glyph->mCachedTextureLine->mCacheTexture->mWidth;
     uint32_t cacheHeight = glyph->mCachedTextureLine->mCacheTexture->mHeight;
 
-    glyph->mBitmapMinU = (float) startX / (float) cacheWidth;
-    glyph->mBitmapMinV = (float) startY / (float) cacheHeight;
-    glyph->mBitmapMaxU = (float) endX / (float) cacheWidth;
-    glyph->mBitmapMaxV = (float) endY / (float) cacheHeight;
+    glyph->mBitmapMinU = startX / (float) cacheWidth;
+    glyph->mBitmapMinV = startY / (float) cacheHeight;
+    glyph->mBitmapMaxU = endX / (float) cacheWidth;
+    glyph->mBitmapMaxV = endY / (float) cacheHeight;
 
     mState->mUploadTexture = true;
 }
@@ -590,9 +590,6 @@
     int height = cacheTexture->mHeight;
 
     cacheTexture->mTexture = new uint8_t[width * height];
-#if DEBUG_FONT_RENDERER
-    memset(cacheTexture->mTexture, 0, width * height * sizeof(uint8_t));
-#endif
 
     if (!cacheTexture->mTextureId) {
         glGenTextures(1, &cacheTexture->mTextureId);
@@ -617,7 +614,7 @@
         uint32_t* retOriginX, uint32_t* retOriginY) {
     cachedGlyph->mIsValid = false;
     // If the glyph is too tall, don't cache it
-    if (glyph.fHeight + TEXTURE_BORDER_SIZE > mCacheLines[mCacheLines.size() - 1]->mMaxHeight) {
+    if (glyph.fHeight + TEXTURE_BORDER_SIZE * 2 > mCacheLines[mCacheLines.size() - 1]->mMaxHeight) {
         ALOGE("Font size to large to fit in cache. width, height = %i, %i",
                 (int) glyph.fWidth, (int) glyph.fHeight);
         return;
@@ -677,6 +674,18 @@
     unsigned int stride = glyph.rowBytes();
 
     uint32_t cacheX = 0, bX = 0, cacheY = 0, bY = 0;
+
+    for (cacheX = startX - TEXTURE_BORDER_SIZE; cacheX < endX + TEXTURE_BORDER_SIZE; cacheX++) {
+        cacheBuffer[(startY - TEXTURE_BORDER_SIZE) * cacheWidth + cacheX] = 0;
+        cacheBuffer[(endY + TEXTURE_BORDER_SIZE - 1) * cacheWidth + cacheX] = 0;
+    }
+
+    for (cacheY = startY - TEXTURE_BORDER_SIZE + 1;
+            cacheY < endY + TEXTURE_BORDER_SIZE - 1; cacheY++) {
+        cacheBuffer[cacheY * cacheWidth + startX - TEXTURE_BORDER_SIZE] = 0;
+        cacheBuffer[cacheY * cacheWidth + endX + TEXTURE_BORDER_SIZE - 1] = 0;
+    }
+
     if (mGammaTable) {
         for (cacheX = startX, bX = 0; cacheX < endX; cacheX++, bX++) {
             for (cacheY = startY, bY = 0; cacheY < endY; cacheY++, bY++) {
@@ -954,6 +963,11 @@
 uint32_t FontRenderer::getRemainingCacheCapacity() {
     uint32_t remainingCapacity = 0;
     float totalPixels = 0;
+
+    //avoid divide by zero if the size is 0
+    if (mCacheLines.size() == 0) {
+        return 0;
+    }
     for(uint32_t i = 0; i < mCacheLines.size(); i ++) {
          remainingCapacity += (mCacheLines[i]->mMaxWidth - mCacheLines[i]->mCurrentCol);
          totalPixels += mCacheLines[i]->mMaxWidth;
diff --git a/libs/hwui/GammaFontRenderer.h b/libs/hwui/GammaFontRenderer.h
index c4a50be..5c1860e 100644
--- a/libs/hwui/GammaFontRenderer.h
+++ b/libs/hwui/GammaFontRenderer.h
@@ -103,6 +103,7 @@
 
     void clear() {
         delete mRenderer;
+        mRenderer = NULL;
     }
 
     void flush() {
diff --git a/libs/hwui/GradientCache.cpp b/libs/hwui/GradientCache.cpp
index b1c4dfe..726b57c7 100644
--- a/libs/hwui/GradientCache.cpp
+++ b/libs/hwui/GradientCache.cpp
@@ -18,6 +18,7 @@
 
 #include <utils/threads.h>
 
+#include "Caches.h"
 #include "Debug.h"
 #include "GradientCache.h"
 #include "Properties.h"
@@ -128,9 +129,13 @@
 
 void GradientCache::getGradientInfo(const uint32_t* colors, const int count,
         GradientInfo& info) {
-    uint32_t width = 1 << (31 - __builtin_clz(256 * (count - 1)));
-    bool hasAlpha = false;
+    uint32_t width = 256 * (count - 1);
 
+    if (!Caches::getInstance().extensions.hasNPot()) {
+        width = 1 << (31 - __builtin_clz(width));
+    }
+
+    bool hasAlpha = false;
     for (int i = 0; i < count; i++) {
         if (((colors[i] >> 24) & 0xff) < 255) {
             hasAlpha = true;
diff --git a/libs/hwui/LayerRenderer.cpp b/libs/hwui/LayerRenderer.cpp
index 41a5f0d..f81640b 100644
--- a/libs/hwui/LayerRenderer.cpp
+++ b/libs/hwui/LayerRenderer.cpp
@@ -45,7 +45,6 @@
     const float width = mLayer->layer.getWidth();
     const float height = mLayer->layer.getHeight();
 
-#if RENDER_LAYERS_AS_REGIONS
     Rect dirty(left, top, right, bottom);
     if (dirty.isEmpty() || (dirty.left <= 0 && dirty.top <= 0 &&
             dirty.right >= width && dirty.bottom >= height)) {
@@ -58,9 +57,6 @@
     }
 
     return OpenGLRenderer::prepareDirty(dirty.left, dirty.top, dirty.right, dirty.bottom, opaque);
-#else
-    return OpenGLRenderer::prepareDirty(0.0f, 0.0f, width, height, opaque);
-#endif
 }
 
 void LayerRenderer::finish() {
@@ -87,14 +83,10 @@
 }
 
 Region* LayerRenderer::getRegion() {
-#if RENDER_LAYERS_AS_REGIONS
     if (getSnapshot()->flags & Snapshot::kFlagFboTarget) {
         return OpenGLRenderer::getRegion();
     }
     return &mLayer->region;
-#else
-    return OpenGLRenderer::getRegion();
-#endif
 }
 
 // TODO: This implementation is flawed and can generate T-junctions
@@ -105,7 +97,6 @@
 //       In practice, T-junctions do not appear often so this has yet
 //       to be fixed.
 void LayerRenderer::generateMesh() {
-#if RENDER_LAYERS_AS_REGIONS
     if (mLayer->region.isRect() || mLayer->region.isEmpty()) {
         if (mLayer->mesh) {
             delete mLayer->mesh;
@@ -172,7 +163,6 @@
             indices[index + 5] = quad + 3;   // bottom-right
         }
     }
-#endif
 }
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index a1da878..6639231 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -321,13 +321,11 @@
     Rect clip(*mSnapshot->clipRect);
     clip.snapToPixelBoundaries();
 
-#if RENDER_LAYERS_AS_REGIONS
     // Since we don't know what the functor will draw, let's dirty
     // tne entire clip region
     if (hasLayer()) {
         dirtyLayerUnchecked(clip, getRegion());
     }
-#endif
 
     DrawGlInfo info;
     info.clipLeft = clip.left;
@@ -595,10 +593,8 @@
         GLuint previousFbo) {
     layer->setFbo(mCaches.fboCache.get());
 
-#if RENDER_LAYERS_AS_REGIONS
     snapshot->region = &snapshot->layer->region;
     snapshot->flags |= Snapshot::kFlagFboTarget;
-#endif
 
     Rect clip(bounds);
     snapshot->transform->mapRect(clip);
@@ -826,7 +822,6 @@
 }
 
 void OpenGLRenderer::composeLayerRegion(Layer* layer, const Rect& rect) {
-#if RENDER_LAYERS_AS_REGIONS
     if (layer->region.isRect()) {
         layer->setRegionAsRect();
 
@@ -907,9 +902,6 @@
 
         layer->region.clear();
     }
-#else
-    composeLayerRect(layer, rect);
-#endif
 }
 
 void OpenGLRenderer::drawRegionRects(const Region& region) {
@@ -940,27 +932,22 @@
 
 void OpenGLRenderer::dirtyLayer(const float left, const float top,
         const float right, const float bottom, const mat4 transform) {
-#if RENDER_LAYERS_AS_REGIONS
     if (hasLayer()) {
         Rect bounds(left, top, right, bottom);
         transform.mapRect(bounds);
         dirtyLayerUnchecked(bounds, getRegion());
     }
-#endif
 }
 
 void OpenGLRenderer::dirtyLayer(const float left, const float top,
         const float right, const float bottom) {
-#if RENDER_LAYERS_AS_REGIONS
     if (hasLayer()) {
         Rect bounds(left, top, right, bottom);
         dirtyLayerUnchecked(bounds, getRegion());
     }
-#endif
 }
 
 void OpenGLRenderer::dirtyLayerUnchecked(Rect& bounds, Region* region) {
-#if RENDER_LAYERS_AS_REGIONS
     if (bounds.intersect(*mSnapshot->clipRect)) {
         bounds.snapToPixelBoundaries();
         android::Rect dirty(bounds.left, bounds.top, bounds.right, bounds.bottom);
@@ -968,7 +955,6 @@
             region->orSelf(dirty);
         }
     }
-#endif
 }
 
 void OpenGLRenderer::clearLayerRegions() {
@@ -1585,11 +1571,7 @@
     float right = FLT_MIN;
     float bottom = FLT_MIN;
 
-#if RENDER_LAYERS_AS_REGIONS
     const bool hasActiveLayer = hasLayer();
-#else
-    const bool hasActiveLayer = false;
-#endif
 
     // TODO: Support the colors array
     TextureVertex mesh[count];
@@ -1620,7 +1602,6 @@
             TextureVertex::set(vertex++, vertices[cx], vertices[cy], u2, v1);
             TextureVertex::set(vertex++, vertices[dx], vertices[dy], u2, v2);
 
-#if RENDER_LAYERS_AS_REGIONS
             if (hasActiveLayer) {
                 // TODO: This could be optimized to avoid unnecessary ops
                 left = fminf(left, fminf(vertices[ax], fminf(vertices[bx], vertices[cx])));
@@ -1628,15 +1609,12 @@
                 right = fmaxf(right, fmaxf(vertices[ax], fmaxf(vertices[bx], vertices[cx])));
                 bottom = fmaxf(bottom, fmaxf(vertices[ay], fmaxf(vertices[by], vertices[cy])));
             }
-#endif
         }
     }
 
-#if RENDER_LAYERS_AS_REGIONS
     if (hasActiveLayer) {
         dirtyLayer(left, top, right, bottom, *mSnapshot->transform);
     }
-#endif
 
     drawTextureMesh(0.0f, 0.0f, 1.0f, 1.0f, texture->id, alpha / 255.0f,
             mode, texture->blend, &mesh[0].position[0], &mesh[0].texture[0],
@@ -1734,7 +1712,6 @@
 
     if (CC_LIKELY(mesh && mesh->verticesCount > 0)) {
         const bool pureTranslate = mSnapshot->transform->isPureTranslate();
-#if RENDER_LAYERS_AS_REGIONS
         // Mark the current layer dirty where we are going to draw the patch
         if (hasLayer() && mesh->hasEmptyQuads) {
             const float offsetX = left + mSnapshot->transform->getTranslateX();
@@ -1752,7 +1729,6 @@
                 }
             }
         }
-#endif
 
         if (CC_LIKELY(pureTranslate)) {
             const float x = (int) floorf(left + mSnapshot->transform->getTranslateX() + 0.5f);
@@ -2400,22 +2376,16 @@
     const Rect* clip = pureTranslate ? mSnapshot->clipRect : &mSnapshot->getLocalClip();
     Rect bounds(FLT_MAX / 2.0f, FLT_MAX / 2.0f, FLT_MIN / 2.0f, FLT_MIN / 2.0f);
 
-#if RENDER_LAYERS_AS_REGIONS
     const bool hasActiveLayer = hasLayer();
-#else
-    const bool hasActiveLayer = false;
-#endif
 
     if (fontRenderer.renderPosText(paint, clip, text, 0, bytesCount, count, x, y,
             positions, hasActiveLayer ? &bounds : NULL)) {
-#if RENDER_LAYERS_AS_REGIONS
         if (hasActiveLayer) {
             if (!pureTranslate) {
                 mSnapshot->transform->mapRect(bounds);
             }
             dirtyLayerUnchecked(bounds, getRegion());
         }
-#endif
     }
 
     return DrawGlInfo::kStatusDrew;
@@ -2501,11 +2471,7 @@
     const Rect* clip = pureTranslate ? mSnapshot->clipRect : &mSnapshot->getLocalClip();
     Rect bounds(FLT_MAX / 2.0f, FLT_MAX / 2.0f, FLT_MIN / 2.0f, FLT_MIN / 2.0f);
 
-#if RENDER_LAYERS_AS_REGIONS
     const bool hasActiveLayer = hasLayer();
-#else
-    const bool hasActiveLayer = false;
-#endif
 
     bool status;
     if (paint->getTextAlign() != SkPaint::kLeft_Align) {
@@ -2517,15 +2483,12 @@
         status = fontRenderer.renderPosText(paint, clip, text, 0, bytesCount, count, x, y,
             positions, hasActiveLayer ? &bounds : NULL);
     }
-    if (status) {
-#if RENDER_LAYERS_AS_REGIONS
-        if (hasActiveLayer) {
-            if (!pureTranslate) {
-                mSnapshot->transform->mapRect(bounds);
-            }
-            dirtyLayerUnchecked(bounds, getRegion());
+
+    if (status && hasActiveLayer) {
+        if (!pureTranslate) {
+            mSnapshot->transform->mapRect(bounds);
         }
-#endif
+        dirtyLayerUnchecked(bounds, getRegion());
     }
 
     drawTextDecorations(text, bytesCount, length, oldX, oldY, paint);
@@ -2568,20 +2531,14 @@
     const Rect* clip = &mSnapshot->getLocalClip();
     Rect bounds(FLT_MAX / 2.0f, FLT_MAX / 2.0f, FLT_MIN / 2.0f, FLT_MIN / 2.0f);
 
-#if RENDER_LAYERS_AS_REGIONS
     const bool hasActiveLayer = hasLayer();
-#else
-    const bool hasActiveLayer = false;
-#endif
 
     if (fontRenderer.renderTextOnPath(paint, clip, text, 0, bytesCount, count, path,
             hOffset, vOffset, hasActiveLayer ? &bounds : NULL)) {
-#if RENDER_LAYERS_AS_REGIONS
         if (hasActiveLayer) {
             mSnapshot->transform->mapRect(bounds);
             dirtyLayerUnchecked(bounds, getRegion());
         }
-#endif
     }
 
     return DrawGlInfo::kStatusDrew;
@@ -2610,6 +2567,8 @@
         return DrawGlInfo::kStatusDone;
     }
 
+    bool debugLayerUpdate = false;
+
     if (layer->deferredUpdateScheduled && layer->renderer && layer->displayList) {
         OpenGLRenderer* renderer = layer->renderer;
         Rect& dirty = layer->dirtyRect;
@@ -2625,6 +2584,8 @@
         layer->deferredUpdateScheduled = false;
         layer->renderer = NULL;
         layer->displayList = NULL;
+
+        debugLayerUpdate = mCaches.debugLayersUpdates;
     }
 
     mCaches.activeTexture(0);
@@ -2635,13 +2596,11 @@
 
     layer->setAlpha(alpha, mode);
 
-#if RENDER_LAYERS_AS_REGIONS
     if (CC_LIKELY(!layer->region.isEmpty())) {
         if (layer->region.isRect()) {
             composeLayerRect(layer, layer->regionRect);
         } else if (layer->mesh) {
             const float a = alpha / 255.0f;
-            const Rect& rect = layer->layer;
 
             setupDraw();
             setupDrawWithTexture();
@@ -2653,12 +2612,12 @@
             setupDrawColorFilterUniforms();
             setupDrawTexture(layer->getTexture());
             if (CC_LIKELY(mSnapshot->transform->isPureTranslate())) {
-                x = (int) floorf(x + mSnapshot->transform->getTranslateX() + 0.5f);
-                y = (int) floorf(y + mSnapshot->transform->getTranslateY() + 0.5f);
+                int tx = (int) floorf(x + mSnapshot->transform->getTranslateX() + 0.5f);
+                int ty = (int) floorf(y + mSnapshot->transform->getTranslateY() + 0.5f);
 
                 layer->setFilter(GL_NEAREST);
-                setupDrawModelViewTranslate(x, y,
-                        x + layer->layer.getWidth(), y + layer->layer.getHeight(), true);
+                setupDrawModelViewTranslate(tx, ty,
+                        tx + layer->layer.getWidth(), ty + layer->layer.getHeight(), true);
             } else {
                 layer->setFilter(GL_LINEAR);
                 setupDrawModelViewTranslate(x, y,
@@ -2675,11 +2634,12 @@
             drawRegionRects(layer->region);
 #endif
         }
+
+        if (debugLayerUpdate) {
+            drawColorRect(x, y, x + layer->layer.getWidth(), y + layer->layer.getHeight(),
+                    0x7f00ff00, SkXfermode::kSrcOver_Mode);
+        }
     }
-#else
-    const Rect r(x, y, x + layer->layer.getWidth(), y + layer->layer.getHeight());
-    composeLayerRect(layer, r);
-#endif
 
     return DrawGlInfo::kStatusDrew;
 }
@@ -2932,7 +2892,7 @@
         // the blending, turn blending off here
         // If the blend mode cannot be implemented using shaders, fall
         // back to the default SrcOver blend mode instead
-        if CC_UNLIKELY((mode > SkXfermode::kScreen_Mode)) {
+        if (CC_UNLIKELY(mode > SkXfermode::kScreen_Mode)) {
             if (CC_UNLIKELY(mCaches.extensions.hasFramebufferFetch())) {
                 description.framebufferMode = mode;
                 description.swapSrcDst = swapSrcDst;
diff --git a/libs/hwui/OpenGLRenderer.h b/libs/hwui/OpenGLRenderer.h
index 51683e1..d3b98a4 100644
--- a/libs/hwui/OpenGLRenderer.h
+++ b/libs/hwui/OpenGLRenderer.h
@@ -63,16 +63,68 @@
     ANDROID_API OpenGLRenderer();
     virtual ~OpenGLRenderer();
 
+    /**
+     * Indicates whether this renderer executes drawing commands immediately.
+     * If this method returns true, the drawing commands will be executed
+     * later.
+     */
     virtual bool isDeferred();
 
+    /**
+     * Sets the dimension of the underlying drawing surface. This method must
+     * be called at least once every time the drawing surface changes size.
+     *
+     * @param width The width in pixels of the underlysing surface
+     * @param height The height in pixels of the underlysing surface
+     */
     virtual void setViewport(int width, int height);
 
+    /**
+     * Prepares the renderer to draw a frame. This method must be invoked
+     * at the beginning of each frame. When this method is invoked, the
+     * entire drawing surface is assumed to be redrawn.
+     *
+     * @param opaque If true, the target surface is considered opaque
+     *               and will not be cleared. If false, the target surface
+     *               will be cleared
+     */
     ANDROID_API int prepare(bool opaque);
+
+    /**
+     * Prepares the renderer to draw a frame. This method must be invoked
+     * at the beginning of each frame. Only the specified rectangle of the
+     * frame is assumed to be dirty. A clip will automatically be set to
+     * the specified rectangle.
+     *
+     * @param left The left coordinate of the dirty rectangle
+     * @param top The top coordinate of the dirty rectangle
+     * @param right The right coordinate of the dirty rectangle
+     * @param bottom The bottom coordinate of the dirty rectangle
+     * @param opaque If true, the target surface is considered opaque
+     *               and will not be cleared. If false, the target surface
+     *               will be cleared in the specified dirty rectangle
+     */
     virtual int prepareDirty(float left, float top, float right, float bottom, bool opaque);
+
+    /**
+     * Indicates the end of a frame. This method must be invoked whenever
+     * the caller is done rendering a frame.
+     */
     virtual void finish();
 
-    // These two calls must not be recorded in display lists
+    /**
+     * This method must be invoked before handing control over to a draw functor.
+     * See callDrawGLFunction() for instance.
+     *
+     * This command must not be recorded inside display lists.
+     */
     virtual void interrupt();
+
+    /**
+     * This method must be invoked after getting control back from a draw functor.
+     *
+     * This command must not be recorded inside display lists.
+     */
     virtual void resume();
 
     ANDROID_API status_t invokeFunctors(Rect& dirty);
@@ -90,10 +142,6 @@
     virtual int saveLayerAlpha(float left, float top, float right, float bottom,
             int alpha, int flags);
 
-    void setAlpha(float alpha) {
-        mSnapshot->alpha = alpha;
-    }
-
     virtual void translate(float dx, float dy);
     virtual void rotate(float degrees);
     virtual void scale(float sx, float sy);
@@ -159,9 +207,30 @@
 
     SkPaint* filterPaint(SkPaint* paint);
 
+    /**
+     * Returns the desired size for the stencil buffer. If the returned value
+     * is 0, then no stencil buffer is required.
+     */
     ANDROID_API static uint32_t getStencilSize();
 
+    /**
+     * Sets the alpha on the current snapshot. This alpha value will be modulated
+     * with other alpha values when drawing primitives.
+     */
+    void setAlpha(float alpha) {
+        mSnapshot->alpha = alpha;
+    }
+
+    /**
+     * Inserts a named group marker in the stream of GL commands. This marker
+     * can be used by tools to group commands into logical groups. A call to
+     * this method must always be followed later on by a call to endMark().
+     */
     void startMark(const char* name) const;
+
+    /**
+     * Closes the last group marker opened by startMark().
+     */
     void endMark() const;
 
 protected:
@@ -579,6 +648,7 @@
      * Invoked before any drawing operation. This sets required state.
      */
     void setupDraw(bool clear = true);
+
     /**
      * Various methods to setup OpenGL rendering.
      */
@@ -626,6 +696,10 @@
     void finishDrawTexture();
     void accountForClear(SkXfermode::Mode mode);
 
+    /**
+     * Renders the specified region as a series of rectangles. This method
+     * is used for debugging only.
+     */
     void drawRegionRects(const Region& region);
 
     /**
diff --git a/libs/hwui/Patch.cpp b/libs/hwui/Patch.cpp
index 27f530c..6971d8a 100644
--- a/libs/hwui/Patch.cpp
+++ b/libs/hwui/Patch.cpp
@@ -108,9 +108,7 @@
 
 void Patch::updateVertices(const float bitmapWidth, const float bitmapHeight,
         float left, float top, float right, float bottom) {
-#if RENDER_LAYERS_AS_REGIONS
     if (hasEmptyQuads) quads.clear();
-#endif
 
     // Reset the vertices count here, we will count exactly how many
     // vertices we actually need when generating the quads
@@ -278,13 +276,11 @@
         return;
     }
 
-#if RENDER_LAYERS_AS_REGIONS
     // Record all non empty quads
     if (hasEmptyQuads) {
         Rect bounds(x1, y1, x2, y2);
         quads.add(bounds);
     }
-#endif
 
     // Left triangle
     TextureVertex::set(vertex++, x1, y1, u1, v1);
diff --git a/libs/hwui/ProgramCache.cpp b/libs/hwui/ProgramCache.cpp
index d601f01..d67bfbe 100644
--- a/libs/hwui/ProgramCache.cpp
+++ b/libs/hwui/ProgramCache.cpp
@@ -69,15 +69,15 @@
         "varying highp vec2 outBitmapTexCoords;\n";
 const char* gVS_Header_Varyings_PointHasBitmap =
         "varying highp vec2 outPointBitmapTexCoords;\n";
-// TODO: These values are used to sample from textures,
-//       they may need to be highp
 const char* gVS_Header_Varyings_HasGradient[6] = {
         // Linear
         "varying highp vec2 linear;\n",
-        "varying highp float linear;\n",
+        "varying float linear;\n",
+
         // Circular
         "varying highp vec2 circular;\n",
         "varying highp vec2 circular;\n",
+
         // Sweep
         "varying highp vec2 sweep;\n",
         "varying highp vec2 sweep;\n",
@@ -92,9 +92,11 @@
         // Linear
         "    linear = vec2((screenSpace * position).x, 0.5);\n",
         "    linear = (screenSpace * position).x;\n",
+
         // Circular
         "    circular = (screenSpace * position).xy;\n",
         "    circular = (screenSpace * position).xy;\n",
+
         // Sweep
         "    sweep = (screenSpace * position).xy;\n",
         "    sweep = (screenSpace * position).xy;\n",
@@ -137,19 +139,24 @@
         "uniform sampler2D sampler;\n";
 const char* gFS_Uniforms_ExternalTextureSampler =
         "uniform samplerExternalOES sampler;\n";
+#define FS_UNIFORMS_DITHER \
+        "uniform float ditherSize;\n" \
+        "uniform sampler2D ditherSampler;\n"
+#define FS_UNIFORMS_GRADIENT \
+        "uniform vec4 startColor;\n" \
+        "uniform vec4 endColor;\n"
 const char* gFS_Uniforms_GradientSampler[6] = {
         // Linear
-        "uniform sampler2D gradientSampler;\n",
-        "uniform vec4 startColor;\n"
-        "uniform vec4 endColor;\n",
+        FS_UNIFORMS_DITHER "uniform sampler2D gradientSampler;\n",
+        FS_UNIFORMS_DITHER FS_UNIFORMS_GRADIENT,
+
         // Circular
-        "uniform sampler2D gradientSampler;\n",
-        "uniform vec4 startColor;\n"
-        "uniform vec4 endColor;\n",
+        FS_UNIFORMS_DITHER "uniform sampler2D gradientSampler;\n",
+        FS_UNIFORMS_DITHER FS_UNIFORMS_GRADIENT,
+
         // Sweep
-        "uniform sampler2D gradientSampler;\n",
-        "uniform vec4 startColor;\n"
-        "uniform vec4 endColor;\n",
+        FS_UNIFORMS_DITHER "uniform sampler2D gradientSampler;\n",
+        FS_UNIFORMS_DITHER FS_UNIFORMS_GRADIENT
 };
 const char* gFS_Uniforms_BitmapSampler =
         "uniform sampler2D bitmapSampler;\n";
@@ -176,6 +183,11 @@
         "    highp vec2 outBitmapTexCoords = outPointBitmapTexCoords + "
         "((gl_PointCoord - vec2(0.5, 0.5)) * textureDimension * vec2(pointSize, pointSize));\n";
 
+#define FS_MAIN_DITHER \
+        "texture2D(ditherSampler, gl_FragCoord.xy * ditherSize).a * ditherSize * ditherSize"
+const char* gFS_Main_AddDitherToGradient =
+        "    gradientColor += " FS_MAIN_DITHER ";\n";
+
 // Fast cases
 const char* gFS_Fast_SingleColor =
         "\nvoid main(void) {\n"
@@ -207,18 +219,18 @@
         "}\n\n";
 const char* gFS_Fast_SingleGradient[2] = {
         "\nvoid main(void) {\n"
-        "    gl_FragColor = texture2D(gradientSampler, linear);\n"
+        "    gl_FragColor = " FS_MAIN_DITHER " + texture2D(gradientSampler, linear);\n"
         "}\n\n",
         "\nvoid main(void) {\n"
-        "    gl_FragColor = mix(startColor, endColor, clamp(linear, 0.0, 1.0));\n"
+        "    gl_FragColor = " FS_MAIN_DITHER " + mix(startColor, endColor, clamp(linear, 0.0, 1.0));\n"
         "}\n\n"
 };
 const char* gFS_Fast_SingleModulateGradient[2] = {
         "\nvoid main(void) {\n"
-        "    gl_FragColor = color.a * texture2D(gradientSampler, linear);\n"
+        "    gl_FragColor " FS_MAIN_DITHER " + color.a * texture2D(gradientSampler, linear);\n"
         "}\n\n",
         "\nvoid main(void) {\n"
-        "    gl_FragColor = color.a * mix(startColor, endColor, clamp(linear, 0.0, 1.0));\n"
+        "    gl_FragColor " FS_MAIN_DITHER " + color.a * mix(startColor, endColor, clamp(linear, 0.0, 1.0));\n"
         "}\n\n"
 };
 
@@ -255,13 +267,18 @@
 const char* gFS_Main_FetchGradient[6] = {
         // Linear
         "    vec4 gradientColor = texture2D(gradientSampler, linear);\n",
+
         "    vec4 gradientColor = mix(startColor, endColor, clamp(linear, 0.0, 1.0));\n",
+
         // Circular
         "    vec4 gradientColor = texture2D(gradientSampler, vec2(length(circular), 0.5));\n",
+
         "    vec4 gradientColor = mix(startColor, endColor, clamp(length(circular), 0.0, 1.0));\n",
+
         // Sweep
         "    highp float index = atan(sweep.y, sweep.x) * 0.15915494309; // inv(2 * PI)\n"
         "    vec4 gradientColor = texture2D(gradientSampler, vec2(index - floor(index), 0.5));\n",
+
         "    highp float index = atan(sweep.y, sweep.x) * 0.15915494309; // inv(2 * PI)\n"
         "    vec4 gradientColor = mix(startColor, endColor, clamp(index - floor(index), 0.0, 1.0));\n"
 };
@@ -651,6 +668,7 @@
         }
         if (description.hasGradient) {
             shader.append(gFS_Main_FetchGradient[gradientIndex(description)]);
+            shader.append(gFS_Main_AddDitherToGradient);
         }
         if (description.hasBitmap) {
             if (description.isPoint) {
diff --git a/libs/hwui/Properties.h b/libs/hwui/Properties.h
index 3f3b39a..6b6dc9e 100644
--- a/libs/hwui/Properties.h
+++ b/libs/hwui/Properties.h
@@ -25,9 +25,6 @@
  * the OpenGLRenderer.
  */
 
-// If turned on, layers drawn inside FBOs are optimized with regions
-#define RENDER_LAYERS_AS_REGIONS 1
-
 // If turned on, text is interpreted as glyphs instead of UTF-16
 #define RENDER_TEXT_AS_GLYPHS 1
 
@@ -43,9 +40,10 @@
 #define STENCIL_BUFFER_SIZE 0
 
 /**
- * Debug level for app developers.
+ * Debug level for app developers. The value is a numeric value defined
+ * by the DebugLevel enum below.
  */
-#define PROPERTY_DEBUG "hwui.debug_level"
+#define PROPERTY_DEBUG "debug.hwui.level"
 
 /**
  * Debug levels. Debug levels are used as flags.
@@ -57,6 +55,12 @@
     kDebugMoreCaches = kDebugMemory | kDebugCaches
 };
 
+/**
+ * Used to enable/disbale layers update debugging. The accepted values are
+ * "true" and "false". The default value is "false".
+ */
+#define PROPERTY_DEBUG_LAYERS_UPDATES "debug.hwui.show_layers_updates"
+
 // These properties are defined in mega-bytes
 #define PROPERTY_TEXTURE_CACHE_SIZE "ro.hwui.texture_cache_size"
 #define PROPERTY_LAYER_CACHE_SIZE "ro.hwui.layer_cache_size"
diff --git a/libs/hwui/SkiaShader.cpp b/libs/hwui/SkiaShader.cpp
index 71e1739..8916efd 100644
--- a/libs/hwui/SkiaShader.cpp
+++ b/libs/hwui/SkiaShader.cpp
@@ -250,6 +250,8 @@
         bindUniformColor(program->getUniform("endColor"), mColors[1]);
     }
 
+    Caches::getInstance().dither.setupProgram(program, textureUnit);
+
     mat4 screenSpace;
     computeScreenSpaceMatrix(screenSpace, modelView);
     glUniformMatrix4fv(program->getUniform("screenSpace"), 1, GL_FALSE, &screenSpace.data[0]);
@@ -375,6 +377,8 @@
        bindUniformColor(program->getUniform("endColor"), mColors[1]);
     }
 
+    Caches::getInstance().dither.setupProgram(program, textureUnit);
+
     mat4 screenSpace;
     computeScreenSpaceMatrix(screenSpace, modelView);
     glUniformMatrix4fv(program->getUniform("screenSpace"), 1, GL_FALSE, &screenSpace.data[0]);
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java
index 560c549..99db066 100644
--- a/media/java/android/media/MediaCodec.java
+++ b/media/java/android/media/MediaCodec.java
@@ -33,7 +33,6 @@
  * codec.start();
  * ByteBuffer[] inputBuffers = codec.getInputBuffers();
  * ByteBuffer[] outputBuffers = codec.getOutputBuffers();
- * MediaFormat format = codec.getOutputFormat();
  * for (;;) {
  *   int inputBufferIndex = codec.dequeueInputBuffer(timeoutUs);
  *   if (inputBufferIndex &gt;= 0) {
@@ -51,7 +50,7 @@
  *     outputBuffers = codec.getOutputBuffers();
  *   } else if (outputBufferIndex == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
  *     // Subsequent data will conform to new format.
- *     format = codec.getOutputFormat();
+ *     MediaFormat format = codec.getOutputFormat();
  *     ...
  *   }
  * }
diff --git a/media/java/android/media/MediaFile.java b/media/java/android/media/MediaFile.java
index d21ada4..06d43a2 100644
--- a/media/java/android/media/MediaFile.java
+++ b/media/java/android/media/MediaFile.java
@@ -325,7 +325,7 @@
         }
         int lastDot = fileName.lastIndexOf('.');
         if (lastDot > 0) {
-            String extension = fileName.substring(lastDot + 1);
+            String extension = fileName.substring(lastDot + 1).toUpperCase();
             Integer value = sFileTypeToFormatMap.get(extension);
             if (value != null) {
                 return value.intValue();
diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java
index 9af201d..ca2df47 100644
--- a/media/java/android/media/MediaRecorder.java
+++ b/media/java/android/media/MediaRecorder.java
@@ -721,12 +721,17 @@
     public native int getMaxAmplitude() throws IllegalStateException;
 
     /* Do not change this value without updating its counterpart
-     * in include/media/mediarecorder.h!
+     * in include/media/mediarecorder.h or mediaplayer.h!
      */
     /** Unspecified media recorder error.
      * @see android.media.MediaRecorder.OnErrorListener
      */
     public static final int MEDIA_RECORDER_ERROR_UNKNOWN = 1;
+    /** Media server died. In this case, the application must release the
+     * MediaRecorder object and instantiate a new one.
+     * @see android.media.MediaRecorder.OnErrorListener
+     */
+    public static final int MEDIA_ERROR_SERVER_DIED = 100;
 
     /**
      * Interface definition for a callback to be invoked when an error
@@ -741,6 +746,7 @@
          * @param what    the type of error that has occurred:
          * <ul>
          * <li>{@link #MEDIA_RECORDER_ERROR_UNKNOWN}
+         * <li>{@link #MEDIA_ERROR_SERVER_DIED}
          * </ul>
          * @param extra   an extra code, specific to the error type
          */
diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp
index e43e66e..4941ae5 100644
--- a/media/jni/android_media_MediaCodec.cpp
+++ b/media/jni/android_media_MediaCodec.cpp
@@ -96,7 +96,10 @@
 }
 
 JMediaCodec::~JMediaCodec() {
-    mCodec->release();
+    if (mCodec != NULL) {
+        mCodec->release();
+        mCodec.clear();
+    }
 
     JNIEnv *env = AndroidRuntime::getJNIEnv();
 
diff --git a/packages/SettingsProvider/AndroidManifest.xml b/packages/SettingsProvider/AndroidManifest.xml
index 0719426..ab2feb9 100644
--- a/packages/SettingsProvider/AndroidManifest.xml
+++ b/packages/SettingsProvider/AndroidManifest.xml
@@ -14,6 +14,7 @@
 
         <provider android:name="SettingsProvider" android:authorities="settings"
                   android:multiprocess="false"
+                  android:exported="true"
                   android:writePermission="android.permission.WRITE_SETTINGS"
                   android:initOrder="100" />
     </application>
diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml
index cd0da5a..a9de51f 100644
--- a/packages/SettingsProvider/res/values/defaults.xml
+++ b/packages/SettingsProvider/res/values/defaults.xml
@@ -151,4 +151,12 @@
     <!-- Number of retries for connecting to DHCP.
          Value here is the same as WifiStateMachine.DEFAULT_MAX_DHCP_RETRIES -->
     <integer name="def_max_dhcp_retries">9</integer>
+
+    <!-- Dreams (screen saver) default settings -->
+    <!-- Whether the feature is enabled when charging (Settings.Secure.SCREENSAVER_ENABLED) -->
+    <bool name="def_screensaver_enabled">true</bool>
+    <!-- Whether the feature activates when docked (SCREENSAVER_ACTIVATE_ON_DOCK) -->
+    <bool name="def_screensaver_activate_on_dock">true</bool>
+    <!-- ComponentName of the default screen saver (Settings.Secure.SCREENSAVER_COMPONENT) -->
+    <string name="def_screensaver_component">com.google.android.deskclock/com.android.deskclock.Screensaver</string>
 </resources>
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index 71c8c83..7c6ce73 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -65,7 +65,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;
 
@@ -1073,6 +1073,30 @@
             upgradeVersion = 79;
         }
 
+        // vvv Jelly Bean MR1 changes begin here vvv
+
+        if (upgradeVersion == 79) {
+            // update screensaver settings
+            db.beginTransaction();
+            SQLiteStatement stmt = null;
+            try {
+                stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)"
+                        + " VALUES(?,?);");
+                loadBooleanSetting(stmt, Settings.Secure.SCREENSAVER_ENABLED,
+                        R.bool.def_screensaver_enabled);
+                loadBooleanSetting(stmt, Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK,
+                        R.bool.def_screensaver_activate_on_dock);
+                loadStringSetting(stmt, Settings.Secure.SCREENSAVER_COMPONENT,
+                        R.string.def_screensaver_component);
+                db.setTransactionSuccessful();
+            } finally {
+                db.endTransaction();
+                if (stmt != null) stmt.close();
+            }
+            upgradeVersion = 80;
+        }
+
+
         // *** Remember to update DATABASE_VERSION above!
 
         if (upgradeVersion != currentVersion) {
diff --git a/packages/SystemUI/proguard.flags b/packages/SystemUI/proguard.flags
index fe5b983..c886eea 100644
--- a/packages/SystemUI/proguard.flags
+++ b/packages/SystemUI/proguard.flags
@@ -13,3 +13,5 @@
   public void setGlowAlpha(float);
   public void setGlowScale(float);
 }
+
+-keep class com.android.systemui.statusbar.tv.TvStatusBar
diff --git a/packages/SystemUI/res/layout-port/status_bar_recent_item.xml b/packages/SystemUI/res/layout/status_bar_recent_item.xml
similarity index 97%
rename from packages/SystemUI/res/layout-port/status_bar_recent_item.xml
rename to packages/SystemUI/res/layout/status_bar_recent_item.xml
index ca72530..50643ab 100644
--- a/packages/SystemUI/res/layout-port/status_bar_recent_item.xml
+++ b/packages/SystemUI/res/layout/status_bar_recent_item.xml
@@ -38,7 +38,7 @@
             android:fadingEdgeLength="@dimen/status_bar_recents_text_fading_edge_length"
             android:scrollHorizontally="true"
             android:layout_alignParentLeft="true"
-            android:layout_alignTop="@id/app_icon"
+            android:layout_alignTop="@+id/app_icon"
             android:paddingTop="2dp"
             android:layout_marginLeft="@dimen/status_bar_recents_app_label_left_margin"
             android:singleLine="true"
@@ -71,7 +71,7 @@
             android:background="@drawable/recents_callout_line"
         />
 
-        <ImageView android:id="@+id/app_icon"
+        <ImageView android:id="@id/app_icon"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_toRightOf="@id/app_label"
diff --git a/packages/SystemUI/res/layout-port/status_bar_recent_panel.xml b/packages/SystemUI/res/layout/status_bar_recent_panel.xml
similarity index 100%
rename from packages/SystemUI/res/layout-port/status_bar_recent_panel.xml
rename to packages/SystemUI/res/layout/status_bar_recent_panel.xml
diff --git a/packages/SystemUI/res/layout-port/status_bar_search_panel.xml b/packages/SystemUI/res/layout/status_bar_search_panel.xml
similarity index 100%
rename from packages/SystemUI/res/layout-port/status_bar_search_panel.xml
rename to packages/SystemUI/res/layout/status_bar_search_panel.xml
diff --git a/packages/SystemUI/res/values-port/config.xml b/packages/SystemUI/res/values-port/config.xml
deleted file mode 100644
index bbae18d..0000000
--- a/packages/SystemUI/res/values-port/config.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2011, 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. -->
-<resources>
-    <!-- Whether we're using the tablet-optimized recents interface (we use this
-     value at runtime for some things) -->
-    <integer name="status_bar_recents_bg_gradient_degrees">90</integer>
-</resources>
-
diff --git a/packages/SystemUI/res/values-port/dimens.xml b/packages/SystemUI/res/values-port/dimens.xml
deleted file mode 100644
index de7b836..0000000
--- a/packages/SystemUI/res/values-port/dimens.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (c) 2006, 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>
-    <!-- Recent Applications parameters -->
-    <!-- How far the thumbnail for a recent app appears from left edge -->
-    <dimen name="status_bar_recents_thumbnail_left_margin">20dp</dimen>
-    <!-- Padding for text descriptions -->
-    <dimen name="status_bar_recents_text_description_padding">8dp</dimen>
-    <!-- Width of application label text -->
-    <dimen name="status_bar_recents_app_label_width">88dip</dimen>
-    <!-- Left margin of application label text -->
-    <dimen name="status_bar_recents_app_label_left_margin">0dip</dimen>
-    <!-- Margin between recents container and glow on the right -->
-    <dimen name="status_bar_recents_right_glow_margin">100dip</dimen>
-    <!-- Padding between recents items -->
-    <dimen name="status_bar_recents_item_padding">0dip</dimen>
-    <!-- Where to place the app icon over the thumbnail -->
-    <dimen name="status_bar_recents_app_icon_left_margin">0dp</dimen>
-    <dimen name="status_bar_recents_app_icon_top_margin">8dp</dimen>
-</resources>
diff --git a/packages/SystemUI/res/values-port/strings.xml b/packages/SystemUI/res/values-port/strings.xml
deleted file mode 100644
index 67364a4..0000000
--- a/packages/SystemUI/res/values-port/strings.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/**
- * Copyright (c) 2010, 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-</resources>
diff --git a/packages/SystemUI/res/values-port/arrays.xml b/packages/SystemUI/res/values/arrays.xml
similarity index 100%
rename from packages/SystemUI/res/values-port/arrays.xml
rename to packages/SystemUI/res/values/arrays.xml
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 66add1a..1cd7904 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -68,5 +68,9 @@
 
     <!-- The length of the vibration when the notificaiotn pops open. -->
     <integer name="one_finger_pop_duration_ms">10</integer>
+
+    <!-- Whether we're using the tablet-optimized recents interface (we use this
+     value at runtime for some things) -->
+    <integer name="status_bar_recents_bg_gradient_degrees">90</integer>
 </resources>
 
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 6fc79c5..8204e95 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -39,6 +39,20 @@
     <dimen name="status_bar_recents_scroll_fading_edge_length">10dip</dimen>
     <!-- Margin between recents container and glow on the right -->
     <dimen name="status_bar_recents_right_glow_margin">100dip</dimen>
+    <!-- How far the thumbnail for a recent app appears from left edge -->
+    <dimen name="status_bar_recents_thumbnail_left_margin">20dp</dimen>
+    <!-- Padding for text descriptions -->
+    <dimen name="status_bar_recents_text_description_padding">8dp</dimen>
+    <!-- Width of application label text -->
+    <dimen name="status_bar_recents_app_label_width">88dip</dimen>
+    <!-- Left margin of application label text -->
+    <dimen name="status_bar_recents_app_label_left_margin">0dip</dimen>
+    <!-- Padding between recents items -->
+    <dimen name="status_bar_recents_item_padding">0dip</dimen>
+    <!-- Where to place the app icon over the thumbnail -->
+    <dimen name="status_bar_recents_app_icon_left_margin">0dp</dimen>
+    <dimen name="status_bar_recents_app_icon_top_margin">8dp</dimen>
+
     <!-- Amount to offset bottom of notification peek window from top of status bar. -->
     <dimen name="peek_window_y_offset">-12dp</dimen>
 
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/src/com/android/systemui/ExpandHelper.java b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
index 6aa7dcd..674d9a3 100644
--- a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
@@ -39,7 +39,8 @@
         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";
@@ -433,7 +434,7 @@
                     final int y = (int) ev.getY();
                     View underPointer = findView(x, y);
                     if (isFinished && underPointer != null && underPointer != mCurrView) {
-                        setGlow(0f);
+                        finishScale(false);
                         initScale(underPointer);
                         mInitialTouchY = ev.getY();
                         mHasPopped = false;
@@ -458,6 +459,7 @@
     private boolean initScale(View v) {
         if (v != null) {
             if (DEBUG) Slog.d(TAG, "scale begins on view: " + v);
+            mCallback.setUserLockedChild(v, true);
             setView(v);
             setGlow(GLOW_BASE);
             mScaler.setView(v);
@@ -479,21 +481,26 @@
     }
 
     private void finishScale(boolean force) {
+        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 (mScaleAnimation.isRunning()) {
             mScaleAnimation.cancel();
         }
-        mScaleAnimation.setFloatValues(h);
-        mScaleAnimation.setupStartValues();
-        mScaleAnimation.start();
         setGlow(0f);
         mCallback.setUserExpandedChild(mCurrView, h == mNaturalHeight);
+        if (targetHeight != currentHeight) {
+            mScaleAnimation.setFloatValues(targetHeight);
+            mScaleAnimation.setupStartValues();
+            mScaleAnimation.start();
+        }
+        mCallback.setUserLockedChild(mCurrView, false);
         if (DEBUG) Slog.d(TAG, "scale was finished on view: " + mCurrView);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index b392648..ea5089d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -780,16 +780,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/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
index 8711a8d..8365d08 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
@@ -577,18 +577,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:
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..9fee49b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java
@@ -161,6 +161,10 @@
         return NotificationData.setUserExpanded(v, userExpanded);
     }
 
+    public boolean setUserLockedChild(View v, boolean userLocked) {
+        return NotificationData.setUserLocked(v, userLocked);
+    }
+
     public void onChildDismissed(View v) {
         final View veto = v.findViewById(R.id.veto);
         if (veto != null && veto.getVisibility() != View.GONE && mRemoveViews) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java
new file mode 100644
index 0000000..5a598dc
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java
@@ -0,0 +1,162 @@
+/*
+ * 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.android.systemui.statusbar.tv;
+
+import com.android.internal.statusbar.StatusBarIcon;
+import com.android.internal.statusbar.StatusBarNotification;
+import com.android.systemui.statusbar.BaseStatusBar;
+
+import android.os.IBinder;
+import android.view.View;
+import android.view.ViewGroup.LayoutParams;
+import android.view.WindowManager;
+
+/*
+ * Status bar implementation for "large screen" products that mostly present no on-screen nav
+ */
+
+public class TvStatusBar extends BaseStatusBar {
+    View mView;
+
+    @Override
+    public void addIcon(String slot, int index, int viewIndex, StatusBarIcon icon) {
+    }
+
+    @Override
+    public void updateIcon(String slot, int index, int viewIndex, StatusBarIcon old,
+            StatusBarIcon icon) {
+    }
+
+    @Override
+    public void removeIcon(String slot, int index, int viewIndex) {
+    }
+
+    @Override
+    public void addNotification(IBinder key, StatusBarNotification notification) {
+    }
+
+    @Override
+    public void updateNotification(IBinder key, StatusBarNotification notification) {
+    }
+
+    @Override
+    public void removeNotification(IBinder key) {
+    }
+
+    @Override
+    public void disable(int state) {
+    }
+
+    @Override
+    public void animateExpand() {
+    }
+
+    @Override
+    public void animateCollapse(int flags) {
+    }
+
+    @Override
+    public void setSystemUiVisibility(int vis, int mask) {
+    }
+
+    @Override
+    public void topAppWindowChanged(boolean visible) {
+    }
+
+    @Override
+    public void setImeWindowStatus(IBinder token, int vis, int backDisposition) {
+    }
+
+    @Override
+    public void setHardKeyboardStatus(boolean available, boolean enabled) {
+    }
+
+    @Override
+    public void toggleRecentApps() {
+    }
+
+    @Override // CommandQueue
+    public void setNavigationIconHints(int hints) {
+    }
+
+    @Override
+    protected void createAndAddWindows() {
+    }
+
+    @Override
+    protected WindowManager.LayoutParams getRecentsLayoutParams(
+            LayoutParams layoutParams) {
+        return null;
+    }
+
+    @Override
+    protected WindowManager.LayoutParams getSearchLayoutParams(
+            LayoutParams layoutParams) {
+        return null;
+    }
+
+    @Override
+    protected void haltTicker() {
+    }
+
+    @Override
+    protected void setAreThereNotifications() {
+    }
+
+    @Override
+    protected void updateNotificationIcons() {
+    }
+
+    @Override
+    protected void tick(IBinder key, StatusBarNotification n, boolean firstTime) {
+    }
+
+    @Override
+    protected void updateExpandedViewPos(int expandedPosition) {
+    }
+
+    @Override
+    protected int getExpandedViewMaxHeight() {
+        return 0;
+    }
+
+    @Override
+    protected boolean shouldDisableNavbarGestures() {
+        return true;
+    }
+
+    protected View makeStatusBarView() {
+        synchronized (this) {
+            if (mView == null) {
+                mView = new View(mContext);
+            }
+        }
+        return mView;
+    }
+
+    protected int getStatusBarGravity() {
+        return 0;
+    }
+
+    public int getStatusBarHeight() {
+        return 0;
+    }
+
+    public void animateCollapse() {
+    }
+
+}
diff --git a/policy/src/com/android/internal/policy/impl/GlobalActions.java b/policy/src/com/android/internal/policy/impl/GlobalActions.java
index e9b8267..6c50f1c 100644
--- a/policy/src/com/android/internal/policy/impl/GlobalActions.java
+++ b/policy/src/com/android/internal/policy/impl/GlobalActions.java
@@ -30,7 +30,6 @@
 import android.content.pm.UserInfo;
 import android.database.ContentObserver;
 import android.graphics.drawable.Drawable;
-import android.graphics.drawable.ScaleDrawable;
 import android.media.AudioManager;
 import android.net.ConnectivityManager;
 import android.os.Handler;
@@ -45,7 +44,6 @@
 import android.telephony.ServiceState;
 import android.telephony.TelephonyManager;
 import android.util.Log;
-import android.view.Gravity;
 import android.view.IWindowManager;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -231,6 +229,50 @@
         // next: airplane mode
         mItems.add(mAirplaneModeOn);
 
+        // next: bug report, if enabled
+        if (Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.BUGREPORT_IN_POWER_MENU, 0) != 0) {
+            mItems.add(
+                new SinglePressAction(0, R.string.global_action_bug_report) {
+
+                    public void onPress() {
+                        AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
+                        builder.setTitle(com.android.internal.R.string.bugreport_title);
+                        builder.setMessage(com.android.internal.R.string.bugreport_message);
+                        builder.setNegativeButton(com.android.internal.R.string.cancel, null);
+                        builder.setPositiveButton(com.android.internal.R.string.report,
+                                new DialogInterface.OnClickListener() {
+                                    @Override
+                                    public void onClick(DialogInterface dialog, int which) {
+                                        // Add a little delay before executing, to give the
+                                        // dialog a chance to go away before it takes a
+                                        // screenshot.
+                                        mHandler.postDelayed(new Runnable() {
+                                            @Override public void run() {
+                                                SystemProperties.set("ctl.start", "bugreport");
+                                            }
+                                        }, 500);
+                                    }
+                                });
+                        AlertDialog dialog = builder.create();
+                        dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
+                        dialog.show();
+                    }
+
+                    public boolean onLongPress() {
+                        return false;
+                    }
+
+                    public boolean showDuringKeyguard() {
+                        return true;
+                    }
+
+                    public boolean showBeforeProvisioning() {
+                        return false;
+                    }
+                });
+        }
+
         // last: silent mode
         if (SHOW_SILENT_TOGGLE) {
             mItems.add(mSilentModeAction);
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 97b4cb5..5d4159a 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -361,6 +361,7 @@
     boolean mScreenOnEarly = false;
     boolean mScreenOnFully = false;
     boolean mOrientationSensorEnabled = false;
+    int mLastSensorRotation = -1;
     int mCurrentAppOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
     boolean mHasSoftInput = false;
     
@@ -964,7 +965,7 @@
         }
     }
 
-    public void setInitialDisplaySize(Display display, int width, int height) {
+    public void setInitialDisplaySize(Display display, int width, int height, int density) {
         mDisplay = display;
 
         int shortSize, longSize;
@@ -1018,11 +1019,7 @@
                         com.android.internal.R.dimen.navigation_bar_width);
 
         // SystemUI (status bar) layout policy
-        DisplayMetrics metrics = new DisplayMetrics();
-        mDisplay.getMetrics(metrics);
-        int shortSizeDp = shortSize
-                * DisplayMetrics.DENSITY_DEFAULT
-                / metrics.densityDpi;
+        int shortSizeDp = shortSize * DisplayMetrics.DENSITY_DEFAULT / density;
 
         if (shortSizeDp < 600) {
             // 0-599dp: "phone" UI with a separate status & navigation bar
@@ -1052,12 +1049,9 @@
             // The system bar is always at the bottom.  If you are watching
             // a video in landscape, we don't need to hide it if we can still
             // show a 16:9 aspect ratio with it.
-            int longSizeDp = longSize
-                    * DisplayMetrics.DENSITY_DEFAULT
-                    / DisplayMetrics.DENSITY_DEVICE;
+            int longSizeDp = longSize * DisplayMetrics.DENSITY_DEFAULT / density;
             int barHeightDp = mNavigationBarHeightForRotation[mLandscapeRotation]
-                    * DisplayMetrics.DENSITY_DEFAULT
-                    / DisplayMetrics.DENSITY_DEVICE;
+                    * DisplayMetrics.DENSITY_DEFAULT / density;
             int aspect = ((shortSizeDp-barHeightDp) * 16) / longSizeDp;
             // We have computed the aspect ratio with the bar height taken
             // out to be 16:aspect.  If this is less than 9, then hiding
@@ -1132,7 +1126,7 @@
                     com.android.internal.R.bool.config_enableDreams);
             
             mScreenSaverEnabledByUser = 0 != Settings.Secure.getInt(resolver,
-                    Settings.Secure.SCREENSAVER_ENABLED, 1);
+                    Settings.Secure.SCREENSAVER_ENABLED, 0);
 
             if (SEPARATE_TIMEOUT_FOR_SCREEN_SAVER) {
                 mScreenSaverTimeout = Settings.Secure.getInt(resolver,
@@ -3728,7 +3722,16 @@
         synchronized (mLock) {
             int sensorRotation = mOrientationListener.getProposedRotation(); // may be -1
             if (sensorRotation < 0) {
-                sensorRotation = lastRotation;
+                // Sensor is disabled, device probably just turned off.
+                if (mLastSensorRotation >= 0) {
+                    sensorRotation = mLastSensorRotation;
+                } else {
+                    // Sensor has never been enabled. Last resort is to use lastRotation.
+                    sensorRotation = lastRotation;
+                }
+            } else {
+                // Valid sensor data, save it away.
+                mLastSensorRotation = sensorRotation;
             }
 
             final int preferredRotation;
@@ -4076,7 +4079,9 @@
             if (dm == null) return;
             
             try {
-                if (localLOGV) Log.v(TAG, "startScreenSaver: awakening...");
+                if (!dm.isDreaming()) return;
+
+                if (localLOGV) Log.v(TAG, "stopScreenSaver: awakening...");
                 
                 dm.awaken();
             } catch (RemoteException ex) {
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..1095584
--- /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/common_time/common_time_server.cpp b/services/common_time/common_time_server.cpp
index 16be8f1..17f99b9 100644
--- a/services/common_time/common_time_server.cpp
+++ b/services/common_time/common_time_server.cpp
@@ -584,7 +584,7 @@
 
 static void hexDumpToString(const uint8_t* src, size_t src_len,
                             char* dst, size_t dst_len) {
-    size_t offset;
+    size_t offset = 0;
     size_t i;
 
     for (i = 0; (i < src_len) && (offset < dst_len); ++i) {
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index ad63424..dc0cb75 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -1612,6 +1612,7 @@
 
         Intent intent = new Intent(ConnectivityManager.CONNECTIVITY_ACTION);
         intent.putExtra(ConnectivityManager.EXTRA_NETWORK_INFO, info);
+        intent.putExtra(ConnectivityManager.EXTRA_NETWORK_TYPE, info.getType());
         if (info.isFailover()) {
             intent.putExtra(ConnectivityManager.EXTRA_IS_FAILOVER, true);
             info.setFailover(false);
@@ -1738,6 +1739,7 @@
     private Intent makeGeneralIntent(NetworkInfo info, String bcastType) {
         Intent intent = new Intent(bcastType);
         intent.putExtra(ConnectivityManager.EXTRA_NETWORK_INFO, info);
+        intent.putExtra(ConnectivityManager.EXTRA_NETWORK_TYPE, info.getType());
         if (info.isFailover()) {
             intent.putExtra(ConnectivityManager.EXTRA_IS_FAILOVER, true);
             info.setFailover(false);
@@ -1788,6 +1790,7 @@
 
         Intent intent = new Intent(ConnectivityManager.CONNECTIVITY_ACTION);
         intent.putExtra(ConnectivityManager.EXTRA_NETWORK_INFO, info);
+        intent.putExtra(ConnectivityManager.EXTRA_NETWORK_TYPE, info.getType());
         if (getActiveNetworkInfo() == null) {
             intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true);
         }
diff --git a/services/java/com/android/server/DockObserver.java b/services/java/com/android/server/DockObserver.java
index e7dac72..6f050d3 100644
--- a/services/java/com/android/server/DockObserver.java
+++ b/services/java/com/android/server/DockObserver.java
@@ -16,6 +16,8 @@
 
 package com.android.server;
 
+import static android.provider.Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK;
+
 import com.android.server.power.PowerManagerService;
 
 import android.bluetooth.BluetoothAdapter;
@@ -29,9 +31,12 @@
 import android.net.Uri;
 import android.os.Handler;
 import android.os.Message;
+import android.os.RemoteException;
+import android.os.ServiceManager;
 import android.os.SystemClock;
 import android.os.UEventObserver;
 import android.provider.Settings;
+import android.service.dreams.IDreamManager;
 import android.util.Log;
 import android.util.Slog;
 
@@ -48,6 +53,8 @@
     private static final String DOCK_UEVENT_MATCH = "DEVPATH=/devices/virtual/switch/dock";
     private static final String DOCK_STATE_PATH = "/sys/class/switch/dock/state";
 
+    private static final int DEFAULT_DOCK = 1;
+
     private static final int MSG_DOCK_STATE = 0;
 
     private int mDockState = Intent.EXTRA_DOCK_STATE_UNDOCKED;
@@ -128,6 +135,11 @@
         mHandler.sendEmptyMessage(MSG_DOCK_STATE);
     }
 
+    private static boolean isScreenSaverActivatedOnDock(Context context) {
+        return 0 != Settings.Secure.getInt(
+                    context.getContentResolver(), SCREENSAVER_ACTIVATE_ON_DOCK, DEFAULT_DOCK);
+    }
+
     private final Handler mHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
@@ -194,7 +206,31 @@
                             }
                         }
 
-                        mContext.sendStickyBroadcast(intent);
+                        IDreamManager mgr = IDreamManager.Stub.asInterface(ServiceManager.getService("dreams"));
+                        if (mgr != null) {
+                            // dreams feature enabled
+                            boolean undocked = mDockState == Intent.EXTRA_DOCK_STATE_UNDOCKED;
+                            if (undocked) {
+                                try {
+                                    if (mgr.isDreaming()) {
+                                        mgr.awaken();
+                                    }
+                                } catch (RemoteException e) {
+                                    Slog.w(TAG, "Unable to awaken!", e);
+                                }
+                            } else {
+                                if (isScreenSaverActivatedOnDock(mContext)) {
+                                    try {
+                                        mgr.dream();
+                                    } catch (RemoteException e) {
+                                        Slog.w(TAG, "Unable to dream!", e);
+                                    }
+                                }
+                            }
+                        } else {
+                            // dreams feature not enabled, send legacy intent
+                            mContext.sendStickyBroadcast(intent);
+                        }
                     }
                     break;
             }
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java
index 1e39492..747cf0b 100644
--- a/services/java/com/android/server/InputMethodManagerService.java
+++ b/services/java/com/android/server/InputMethodManagerService.java
@@ -17,6 +17,7 @@
 
 import com.android.internal.content.PackageMonitor;
 import com.android.internal.os.HandlerCaller;
+import com.android.internal.os.SomeArgs;
 import com.android.internal.util.FastXmlSerializer;
 import com.android.internal.view.IInputContext;
 import com.android.internal.view.IInputMethod;
@@ -2024,7 +2025,7 @@
 
     @Override
     public boolean handleMessage(Message msg) {
-        HandlerCaller.SomeArgs args;
+        SomeArgs args;
         switch (msg.what) {
             case MSG_SHOW_IM_PICKER:
                 showInputMethodMenu();
@@ -2035,8 +2036,9 @@
                 return true;
 
             case MSG_SHOW_IM_SUBTYPE_ENABLER:
-                args = (HandlerCaller.SomeArgs)msg.obj;
+                args = (SomeArgs)msg.obj;
                 showInputMethodAndSubtypeEnabler((String)args.arg1);
+                args.recycle();
                 return true;
 
             case MSG_SHOW_IM_CONFIG:
@@ -2053,48 +2055,53 @@
                 }
                 return true;
             case MSG_BIND_INPUT:
-                args = (HandlerCaller.SomeArgs)msg.obj;
+                args = (SomeArgs)msg.obj;
                 try {
                     ((IInputMethod)args.arg1).bindInput((InputBinding)args.arg2);
                 } catch (RemoteException e) {
                 }
+                args.recycle();
                 return true;
             case MSG_SHOW_SOFT_INPUT:
-                args = (HandlerCaller.SomeArgs)msg.obj;
+                args = (SomeArgs)msg.obj;
                 try {
                     ((IInputMethod)args.arg1).showSoftInput(msg.arg1,
                             (ResultReceiver)args.arg2);
                 } catch (RemoteException e) {
                 }
+                args.recycle();
                 return true;
             case MSG_HIDE_SOFT_INPUT:
-                args = (HandlerCaller.SomeArgs)msg.obj;
+                args = (SomeArgs)msg.obj;
                 try {
                     ((IInputMethod)args.arg1).hideSoftInput(0,
                             (ResultReceiver)args.arg2);
                 } catch (RemoteException e) {
                 }
+                args.recycle();
                 return true;
             case MSG_ATTACH_TOKEN:
-                args = (HandlerCaller.SomeArgs)msg.obj;
+                args = (SomeArgs)msg.obj;
                 try {
                     if (DEBUG) Slog.v(TAG, "Sending attach of token: " + args.arg2);
                     ((IInputMethod)args.arg1).attachToken((IBinder)args.arg2);
                 } catch (RemoteException e) {
                 }
+                args.recycle();
                 return true;
             case MSG_CREATE_SESSION:
-                args = (HandlerCaller.SomeArgs)msg.obj;
+                args = (SomeArgs)msg.obj;
                 try {
                     ((IInputMethod)args.arg1).createSession(
                             (IInputMethodCallback)args.arg2);
                 } catch (RemoteException e) {
                 }
+                args.recycle();
                 return true;
             // ---------------------------------------------------------
 
             case MSG_START_INPUT:
-                args = (HandlerCaller.SomeArgs)msg.obj;
+                args = (SomeArgs)msg.obj;
                 try {
                     SessionState session = (SessionState)args.arg1;
                     setEnabledSessionInMainThread(session);
@@ -2102,9 +2109,10 @@
                             (EditorInfo)args.arg3);
                 } catch (RemoteException e) {
                 }
+                args.recycle();
                 return true;
             case MSG_RESTART_INPUT:
-                args = (HandlerCaller.SomeArgs)msg.obj;
+                args = (SomeArgs)msg.obj;
                 try {
                     SessionState session = (SessionState)args.arg1;
                     setEnabledSessionInMainThread(session);
@@ -2112,6 +2120,7 @@
                             (EditorInfo)args.arg3);
                 } catch (RemoteException e) {
                 }
+                args.recycle();
                 return true;
 
             // ---------------------------------------------------------
@@ -2124,13 +2133,14 @@
                 }
                 return true;
             case MSG_BIND_METHOD:
-                args = (HandlerCaller.SomeArgs)msg.obj;
+                args = (SomeArgs)msg.obj;
                 try {
                     ((IInputMethodClient)args.arg1).onBindMethod(
                             (InputBindResult)args.arg2);
                 } catch (RemoteException e) {
                     Slog.w(TAG, "Client died receiving input method " + args.arg2);
                 }
+                args.recycle();
                 return true;
             case MSG_SET_ACTIVE:
                 try {
diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java
index 1498a11..198ba8b 100644
--- a/services/java/com/android/server/LocationManagerService.java
+++ b/services/java/com/android/server/LocationManagerService.java
@@ -1804,9 +1804,8 @@
                     mNetworkState = LocationProvider.TEMPORARILY_UNAVAILABLE;
                 }
 
-                final ConnectivityManager connManager = (ConnectivityManager) context
-                        .getSystemService(Context.CONNECTIVITY_SERVICE);
-                final NetworkInfo info = connManager.getActiveNetworkInfo();
+                final NetworkInfo info = intent.getParcelableExtra(
+                        ConnectivityManager.EXTRA_NETWORK_INFO);
 
                 // Notify location providers of current network state
                 synchronized (mLock) {
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 81f0733..96cf3d3 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -702,6 +702,12 @@
         }
 
         try {
+            lockSettings.systemReady();
+        } catch (Throwable e) {
+            reportWtf("making Lock Settings Service ready", e);
+        }
+
+        try {
             wm.systemReady();
         } catch (Throwable e) {
             reportWtf("making Window Manager Service ready", e);
@@ -726,11 +732,6 @@
         } catch (Throwable e) {
             reportWtf("making Package Manager Service ready", e);
         }
-        try {
-            lockSettings.systemReady();
-        } catch (Throwable e) {
-            reportWtf("making Lock Settings Service ready", e);
-        }
 
         // These are needed to propagate to the runnable below.
         final Context contextF = context;
diff --git a/services/java/com/android/server/am/ActiveServices.java b/services/java/com/android/server/am/ActiveServices.java
new file mode 100644
index 0000000..df6c51e
--- /dev/null
+++ b/services/java/com/android/server/am/ActiveServices.java
@@ -0,0 +1,2133 @@
+/*
+ * 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.android.server.am;
+
+import java.io.FileDescriptor;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+
+import com.android.internal.os.BatteryStatsImpl;
+import com.android.server.am.ActivityManagerService.ItemMatcher;
+import com.android.server.am.ActivityManagerService.NeededUriGrants;
+
+import android.app.ActivityManager;
+import android.app.AppGlobals;
+import android.app.IApplicationThread;
+import android.app.IServiceConnection;
+import android.app.Notification;
+import android.app.PendingIntent;
+import android.app.Service;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.content.pm.UserInfo;
+import android.os.Binder;
+import android.os.IBinder;
+import android.os.Message;
+import android.os.Process;
+import android.os.RemoteException;
+import android.os.SystemClock;
+import android.os.UserId;
+import android.util.EventLog;
+import android.util.Log;
+import android.util.Slog;
+import android.util.SparseArray;
+import android.util.TimeUtils;
+
+public class ActiveServices {
+    static final boolean DEBUG_SERVICE = ActivityManagerService.DEBUG_SERVICE;
+    static final boolean DEBUG_SERVICE_EXECUTING = ActivityManagerService.DEBUG_SERVICE_EXECUTING;
+    static final boolean DEBUG_MU = ActivityManagerService.DEBUG_MU;
+    static final String TAG = ActivityManagerService.TAG;
+    static final String TAG_MU = ActivityManagerService.TAG_MU;
+
+    // How long we wait for a service to finish executing.
+    static final int SERVICE_TIMEOUT = 20*1000;
+
+    // How long a service needs to be running until restarting its process
+    // is no longer considered to be a relaunch of the service.
+    static final int SERVICE_RESTART_DURATION = 5*1000;
+
+    // How long a service needs to be running until it will start back at
+    // SERVICE_RESTART_DURATION after being killed.
+    static final int SERVICE_RESET_RUN_DURATION = 60*1000;
+
+    // Multiplying factor to increase restart duration time by, for each time
+    // a service is killed before it has run for SERVICE_RESET_RUN_DURATION.
+    static final int SERVICE_RESTART_DURATION_FACTOR = 4;
+
+    // The minimum amount of time between restarting services that we allow.
+    // That is, when multiple services are restarting, we won't allow each
+    // to restart less than this amount of time from the last one.
+    static final int SERVICE_MIN_RESTART_TIME_BETWEEN = 10*1000;
+
+    // Maximum amount of time for there to be no activity on a service before
+    // we consider it non-essential and allow its process to go on the
+    // LRU background list.
+    static final int MAX_SERVICE_INACTIVITY = 30*60*1000;
+
+    final ActivityManagerService mAm;
+
+    final ServiceMap mServiceMap = new ServiceMap();
+
+    /**
+     * All currently bound service connections.  Keys are the IBinder of
+     * the client's IServiceConnection.
+     */
+    final HashMap<IBinder, ArrayList<ConnectionRecord>> mServiceConnections
+            = new HashMap<IBinder, ArrayList<ConnectionRecord>>();
+
+    /**
+     * List of services that we have been asked to start,
+     * but haven't yet been able to.  It is used to hold start requests
+     * while waiting for their corresponding application thread to get
+     * going.
+     */
+    final ArrayList<ServiceRecord> mPendingServices
+            = new ArrayList<ServiceRecord>();
+
+    /**
+     * List of services that are scheduled to restart following a crash.
+     */
+    final ArrayList<ServiceRecord> mRestartingServices
+            = new ArrayList<ServiceRecord>();
+
+    /**
+     * List of services that are in the process of being stopped.
+     */
+    final ArrayList<ServiceRecord> mStoppingServices
+            = new ArrayList<ServiceRecord>();
+
+    static class ServiceMap {
+
+        private final SparseArray<HashMap<ComponentName, ServiceRecord>> mServicesByNamePerUser
+                = new SparseArray<HashMap<ComponentName, ServiceRecord>>();
+        private final SparseArray<HashMap<Intent.FilterComparison, ServiceRecord>>
+                mServicesByIntentPerUser = new SparseArray<
+                    HashMap<Intent.FilterComparison, ServiceRecord>>();
+
+        ServiceRecord getServiceByName(ComponentName name, int callingUser) {
+            // TODO: Deal with global services
+            if (DEBUG_MU)
+                Slog.v(TAG_MU, "getServiceByName(" + name + "), callingUser = " + callingUser);
+            return getServices(callingUser).get(name);
+        }
+
+        ServiceRecord getServiceByName(ComponentName name) {
+            return getServiceByName(name, -1);
+        }
+
+        ServiceRecord getServiceByIntent(Intent.FilterComparison filter, int callingUser) {
+            // TODO: Deal with global services
+            if (DEBUG_MU)
+                Slog.v(TAG_MU, "getServiceByIntent(" + filter + "), callingUser = " + callingUser);
+            return getServicesByIntent(callingUser).get(filter);
+        }
+
+        ServiceRecord getServiceByIntent(Intent.FilterComparison filter) {
+            return getServiceByIntent(filter, -1);
+        }
+
+        void putServiceByName(ComponentName name, int callingUser, ServiceRecord value) {
+            // TODO: Deal with global services
+            getServices(callingUser).put(name, value);
+        }
+
+        void putServiceByIntent(Intent.FilterComparison filter, int callingUser,
+                ServiceRecord value) {
+            // TODO: Deal with global services
+            getServicesByIntent(callingUser).put(filter, value);
+        }
+
+        void removeServiceByName(ComponentName name, int callingUser) {
+            // TODO: Deal with global services
+            ServiceRecord removed = getServices(callingUser).remove(name);
+            if (DEBUG_MU)
+                Slog.v(TAG, "removeServiceByName user=" + callingUser + " name=" + name
+                        + " removed=" + removed);
+        }
+
+        void removeServiceByIntent(Intent.FilterComparison filter, int callingUser) {
+            // TODO: Deal with global services
+            ServiceRecord removed = getServicesByIntent(callingUser).remove(filter);
+            if (DEBUG_MU)
+                Slog.v(TAG_MU, "removeServiceByIntent user=" + callingUser + " intent=" + filter
+                        + " removed=" + removed);
+        }
+
+        Collection<ServiceRecord> getAllServices(int callingUser) {
+            // TODO: Deal with global services
+            return getServices(callingUser).values();
+        }
+
+        private HashMap<ComponentName, ServiceRecord> getServices(int callingUser) {
+            HashMap map = mServicesByNamePerUser.get(callingUser);
+            if (map == null) {
+                map = new HashMap<ComponentName, ServiceRecord>();
+                mServicesByNamePerUser.put(callingUser, map);
+            }
+            return map;
+        }
+
+        private HashMap<Intent.FilterComparison, ServiceRecord> getServicesByIntent(
+                int callingUser) {
+            HashMap map = mServicesByIntentPerUser.get(callingUser);
+            if (map == null) {
+                map = new HashMap<Intent.FilterComparison, ServiceRecord>();
+                mServicesByIntentPerUser.put(callingUser, map);
+            }
+            return map;
+        }
+    }
+
+    public ActiveServices(ActivityManagerService service) {
+        mAm = service;
+    }
+
+    ComponentName startServiceLocked(IApplicationThread caller,
+            Intent service, String resolvedType,
+            int callingPid, int callingUid) {
+        if (DEBUG_SERVICE) Slog.v(TAG, "startService: " + service
+                + " type=" + resolvedType + " args=" + service.getExtras());
+
+        if (caller != null) {
+            final ProcessRecord callerApp = mAm.getRecordForAppLocked(caller);
+            if (callerApp == null) {
+                throw new SecurityException(
+                        "Unable to find app for caller " + caller
+                        + " (pid=" + Binder.getCallingPid()
+                        + ") when starting service " + service);
+            }
+        }
+
+        ServiceLookupResult res =
+            retrieveServiceLocked(service, resolvedType,
+                    callingPid, callingUid, UserId.getUserId(callingUid));
+        if (res == null) {
+            return null;
+        }
+        if (res.record == null) {
+            return new ComponentName("!", res.permission != null
+                    ? res.permission : "private to package");
+        }
+        ServiceRecord r = res.record;
+        NeededUriGrants neededGrants = mAm.checkGrantUriPermissionFromIntentLocked(
+                callingUid, r.packageName, service, service.getFlags(), null);
+        if (unscheduleServiceRestartLocked(r)) {
+            if (DEBUG_SERVICE) Slog.v(TAG, "START SERVICE WHILE RESTART PENDING: " + r);
+        }
+        r.startRequested = true;
+        r.callStart = false;
+        r.pendingStarts.add(new ServiceRecord.StartItem(r, false, r.makeNextStartId(),
+                service, neededGrants));
+        r.lastActivity = SystemClock.uptimeMillis();
+        synchronized (r.stats.getBatteryStats()) {
+            r.stats.startRunningLocked();
+        }
+        if (!bringUpServiceLocked(r, service.getFlags(), false)) {
+            return new ComponentName("!", "Service process is bad");
+        }
+        return r.name;
+    }
+
+    private void stopServiceLocked(ServiceRecord service) {
+        synchronized (service.stats.getBatteryStats()) {
+            service.stats.stopRunningLocked();
+        }
+        service.startRequested = false;
+        service.callStart = false;
+        bringDownServiceLocked(service, false);
+    }
+
+    int stopServiceLocked(IApplicationThread caller, Intent service,
+            String resolvedType) {
+        if (DEBUG_SERVICE) Slog.v(TAG, "stopService: " + service
+                + " type=" + resolvedType);
+
+        final ProcessRecord callerApp = mAm.getRecordForAppLocked(caller);
+        if (caller != null && callerApp == null) {
+            throw new SecurityException(
+                    "Unable to find app for caller " + caller
+                    + " (pid=" + Binder.getCallingPid()
+                    + ") when stopping service " + service);
+        }
+
+        // If this service is active, make sure it is stopped.
+        ServiceLookupResult r = findServiceLocked(service, resolvedType,
+                callerApp == null ? UserId.getCallingUserId() : callerApp.userId);
+        if (r != null) {
+            if (r.record != null) {
+                final long origId = Binder.clearCallingIdentity();
+                try {
+                    stopServiceLocked(r.record);
+                } finally {
+                    Binder.restoreCallingIdentity(origId);
+                }
+                return 1;
+            }
+            return -1;
+        }
+
+        return 0;
+    }
+
+    IBinder peekServiceLocked(Intent service, String resolvedType) {
+        ServiceLookupResult r = findServiceLocked(service, resolvedType,
+                UserId.getCallingUserId());
+
+        IBinder ret = null;
+        if (r != null) {
+            // r.record is null if findServiceLocked() failed the caller permission check
+            if (r.record == null) {
+                throw new SecurityException(
+                        "Permission Denial: Accessing service " + r.record.name
+                        + " from pid=" + Binder.getCallingPid()
+                        + ", uid=" + Binder.getCallingUid()
+                        + " requires " + r.permission);
+            }
+            IntentBindRecord ib = r.record.bindings.get(r.record.intent);
+            if (ib != null) {
+                ret = ib.binder;
+            }
+        }
+
+        return ret;
+    }
+
+    boolean stopServiceTokenLocked(ComponentName className, IBinder token,
+            int startId) {
+        if (DEBUG_SERVICE) Slog.v(TAG, "stopServiceToken: " + className
+                + " " + token + " startId=" + startId);
+        ServiceRecord r = findServiceLocked(className, token);
+        if (r != null) {
+            if (startId >= 0) {
+                // Asked to only stop if done with all work.  Note that
+                // to avoid leaks, we will take this as dropping all
+                // start items up to and including this one.
+                ServiceRecord.StartItem si = r.findDeliveredStart(startId, false);
+                if (si != null) {
+                    while (r.deliveredStarts.size() > 0) {
+                        ServiceRecord.StartItem cur = r.deliveredStarts.remove(0);
+                        cur.removeUriPermissionsLocked();
+                        if (cur == si) {
+                            break;
+                        }
+                    }
+                }
+
+                if (r.getLastStartId() != startId) {
+                    return false;
+                }
+
+                if (r.deliveredStarts.size() > 0) {
+                    Slog.w(TAG, "stopServiceToken startId " + startId
+                            + " is last, but have " + r.deliveredStarts.size()
+                            + " remaining args");
+                }
+            }
+
+            synchronized (r.stats.getBatteryStats()) {
+                r.stats.stopRunningLocked();
+                r.startRequested = false;
+                r.callStart = false;
+            }
+            final long origId = Binder.clearCallingIdentity();
+            bringDownServiceLocked(r, false);
+            Binder.restoreCallingIdentity(origId);
+            return true;
+        }
+        return false;
+    }
+
+    public void setServiceForegroundLocked(ComponentName className, IBinder token,
+            int id, Notification notification, boolean removeNotification) {
+        final long origId = Binder.clearCallingIdentity();
+        try {
+            ServiceRecord r = findServiceLocked(className, token);
+            if (r != null) {
+                if (id != 0) {
+                    if (notification == null) {
+                        throw new IllegalArgumentException("null notification");
+                    }
+                    if (r.foregroundId != id) {
+                        r.cancelNotification();
+                        r.foregroundId = id;
+                    }
+                    notification.flags |= Notification.FLAG_FOREGROUND_SERVICE;
+                    r.foregroundNoti = notification;
+                    r.isForeground = true;
+                    r.postNotification();
+                    if (r.app != null) {
+                        updateServiceForegroundLocked(r.app, true);
+                    }
+                } else {
+                    if (r.isForeground) {
+                        r.isForeground = false;
+                        if (r.app != null) {
+                            mAm.updateLruProcessLocked(r.app, false, true);
+                            updateServiceForegroundLocked(r.app, true);
+                        }
+                    }
+                    if (removeNotification) {
+                        r.cancelNotification();
+                        r.foregroundId = 0;
+                        r.foregroundNoti = null;
+                    }
+                }
+            }
+        } finally {
+            Binder.restoreCallingIdentity(origId);
+        }
+    }
+
+    private void updateServiceForegroundLocked(ProcessRecord proc, boolean oomAdj) {
+        boolean anyForeground = false;
+        for (ServiceRecord sr : proc.services) {
+            if (sr.isForeground) {
+                anyForeground = true;
+                break;
+            }
+        }
+        if (anyForeground != proc.foregroundServices) {
+            proc.foregroundServices = anyForeground;
+            if (oomAdj) {
+                mAm.updateOomAdjLocked();
+            }
+        }
+    }
+
+    int bindServiceLocked(IApplicationThread caller, IBinder token,
+            Intent service, String resolvedType,
+            IServiceConnection connection, int flags, int userId) {
+        if (DEBUG_SERVICE) Slog.v(TAG, "bindService: " + service
+                + " type=" + resolvedType + " conn=" + connection.asBinder()
+                + " flags=0x" + Integer.toHexString(flags));
+        if (DEBUG_MU)
+            Slog.i(TAG_MU, "bindService uid=" + Binder.getCallingUid() + " origUid="
+                    + Binder.getOrigCallingUid());
+        final ProcessRecord callerApp = mAm.getRecordForAppLocked(caller);
+        if (callerApp == null) {
+            throw new SecurityException(
+                    "Unable to find app for caller " + caller
+                    + " (pid=" + Binder.getCallingPid()
+                    + ") when binding service " + service);
+        }
+
+        ActivityRecord activity = null;
+        if (token != null) {
+            activity = mAm.mMainStack.isInStackLocked(token);
+            if (activity == null) {
+                Slog.w(TAG, "Binding with unknown activity: " + token);
+                return 0;
+            }
+        }
+
+        int clientLabel = 0;
+        PendingIntent clientIntent = null;
+
+        if (callerApp.info.uid == Process.SYSTEM_UID) {
+            // Hacky kind of thing -- allow system stuff to tell us
+            // what they are, so we can report this elsewhere for
+            // others to know why certain services are running.
+            try {
+                clientIntent = (PendingIntent)service.getParcelableExtra(
+                        Intent.EXTRA_CLIENT_INTENT);
+            } catch (RuntimeException e) {
+            }
+            if (clientIntent != null) {
+                clientLabel = service.getIntExtra(Intent.EXTRA_CLIENT_LABEL, 0);
+                if (clientLabel != 0) {
+                    // There are no useful extras in the intent, trash them.
+                    // System code calling with this stuff just needs to know
+                    // this will happen.
+                    service = service.cloneFilter();
+                }
+            }
+        }
+
+        ServiceLookupResult res =
+            retrieveServiceLocked(service, resolvedType,
+                    Binder.getCallingPid(), Binder.getCallingUid(), userId);
+        if (res == null) {
+            return 0;
+        }
+        if (res.record == null) {
+            return -1;
+        }
+        if (mAm.isSingleton(res.record.processName, res.record.appInfo,
+                res.record.serviceInfo.name, res.record.serviceInfo.flags)) {
+            userId = 0;
+            res = retrieveServiceLocked(service, resolvedType, Binder.getCallingPid(),
+                    Binder.getCallingUid(), 0);
+        }
+        ServiceRecord s = res.record;
+
+        final long origId = Binder.clearCallingIdentity();
+
+        try {
+            if (unscheduleServiceRestartLocked(s)) {
+                if (DEBUG_SERVICE) Slog.v(TAG, "BIND SERVICE WHILE RESTART PENDING: "
+                        + s);
+            }
+
+            AppBindRecord b = s.retrieveAppBindingLocked(service, callerApp);
+            ConnectionRecord c = new ConnectionRecord(b, activity,
+                    connection, flags, clientLabel, clientIntent);
+
+            IBinder binder = connection.asBinder();
+            ArrayList<ConnectionRecord> clist = s.connections.get(binder);
+            if (clist == null) {
+                clist = new ArrayList<ConnectionRecord>();
+                s.connections.put(binder, clist);
+            }
+            clist.add(c);
+            b.connections.add(c);
+            if (activity != null) {
+                if (activity.connections == null) {
+                    activity.connections = new HashSet<ConnectionRecord>();
+                }
+                activity.connections.add(c);
+            }
+            b.client.connections.add(c);
+            if ((c.flags&Context.BIND_ABOVE_CLIENT) != 0) {
+                b.client.hasAboveClient = true;
+            }
+            clist = mServiceConnections.get(binder);
+            if (clist == null) {
+                clist = new ArrayList<ConnectionRecord>();
+                mServiceConnections.put(binder, clist);
+            }
+            clist.add(c);
+
+            if ((flags&Context.BIND_AUTO_CREATE) != 0) {
+                s.lastActivity = SystemClock.uptimeMillis();
+                if (!bringUpServiceLocked(s, service.getFlags(), false)) {
+                    return 0;
+                }
+            }
+
+            if (s.app != null) {
+                // This could have made the service more important.
+                mAm.updateOomAdjLocked(s.app);
+            }
+
+            if (DEBUG_SERVICE) Slog.v(TAG, "Bind " + s + " with " + b
+                    + ": received=" + b.intent.received
+                    + " apps=" + b.intent.apps.size()
+                    + " doRebind=" + b.intent.doRebind);
+
+            if (s.app != null && b.intent.received) {
+                // Service is already running, so we can immediately
+                // publish the connection.
+                try {
+                    c.conn.connected(s.name, b.intent.binder);
+                } catch (Exception e) {
+                    Slog.w(TAG, "Failure sending service " + s.shortName
+                            + " to connection " + c.conn.asBinder()
+                            + " (in " + c.binding.client.processName + ")", e);
+                }
+
+                // If this is the first app connected back to this binding,
+                // and the service had previously asked to be told when
+                // rebound, then do so.
+                if (b.intent.apps.size() == 1 && b.intent.doRebind) {
+                    requestServiceBindingLocked(s, b.intent, true);
+                }
+            } else if (!b.intent.requested) {
+                requestServiceBindingLocked(s, b.intent, false);
+            }
+        } finally {
+            Binder.restoreCallingIdentity(origId);
+        }
+
+        return 1;
+    }
+
+    void publishServiceLocked(ServiceRecord r, Intent intent, IBinder service) {
+        final long origId = Binder.clearCallingIdentity();
+        try {
+            if (DEBUG_SERVICE) Slog.v(TAG, "PUBLISHING " + r
+                    + " " + intent + ": " + service);
+            if (r != null) {
+                Intent.FilterComparison filter
+                        = new Intent.FilterComparison(intent);
+                IntentBindRecord b = r.bindings.get(filter);
+                if (b != null && !b.received) {
+                    b.binder = service;
+                    b.requested = true;
+                    b.received = true;
+                    if (r.connections.size() > 0) {
+                        Iterator<ArrayList<ConnectionRecord>> it
+                                = r.connections.values().iterator();
+                        while (it.hasNext()) {
+                            ArrayList<ConnectionRecord> clist = it.next();
+                            for (int i=0; i<clist.size(); i++) {
+                                ConnectionRecord c = clist.get(i);
+                                if (!filter.equals(c.binding.intent.intent)) {
+                                    if (DEBUG_SERVICE) Slog.v(
+                                            TAG, "Not publishing to: " + c);
+                                    if (DEBUG_SERVICE) Slog.v(
+                                            TAG, "Bound intent: " + c.binding.intent.intent);
+                                    if (DEBUG_SERVICE) Slog.v(
+                                            TAG, "Published intent: " + intent);
+                                    continue;
+                                }
+                                if (DEBUG_SERVICE) Slog.v(TAG, "Publishing to: " + c);
+                                try {
+                                    c.conn.connected(r.name, service);
+                                } catch (Exception e) {
+                                    Slog.w(TAG, "Failure sending service " + r.name +
+                                          " to connection " + c.conn.asBinder() +
+                                          " (in " + c.binding.client.processName + ")", e);
+                                }
+                            }
+                        }
+                    }
+                }
+
+                serviceDoneExecutingLocked(r, mStoppingServices.contains(r));
+            }
+        } finally {
+            Binder.restoreCallingIdentity(origId);
+        }
+    }
+
+    boolean unbindServiceLocked(IServiceConnection connection) {
+        IBinder binder = connection.asBinder();
+        if (DEBUG_SERVICE) Slog.v(TAG, "unbindService: conn=" + binder);
+        ArrayList<ConnectionRecord> clist = mServiceConnections.get(binder);
+        if (clist == null) {
+            Slog.w(TAG, "Unbind failed: could not find connection for "
+                  + connection.asBinder());
+            return false;
+        }
+
+        final long origId = Binder.clearCallingIdentity();
+        try {
+            while (clist.size() > 0) {
+                ConnectionRecord r = clist.get(0);
+                removeConnectionLocked(r, null, null);
+
+                if (r.binding.service.app != null) {
+                    // This could have made the service less important.
+                    mAm.updateOomAdjLocked(r.binding.service.app);
+                }
+            }
+        } finally {
+            Binder.restoreCallingIdentity(origId);
+        }
+
+        return true;
+    }
+
+    void unbindFinishedLocked(ServiceRecord r, Intent intent, boolean doRebind) {
+        final long origId = Binder.clearCallingIdentity();
+        try {
+            if (r != null) {
+                Intent.FilterComparison filter
+                        = new Intent.FilterComparison(intent);
+                IntentBindRecord b = r.bindings.get(filter);
+                if (DEBUG_SERVICE) Slog.v(TAG, "unbindFinished in " + r
+                        + " at " + b + ": apps="
+                        + (b != null ? b.apps.size() : 0));
+
+                boolean inStopping = mStoppingServices.contains(r);
+                if (b != null) {
+                    if (b.apps.size() > 0 && !inStopping) {
+                        // Applications have already bound since the last
+                        // unbind, so just rebind right here.
+                        requestServiceBindingLocked(r, b, true);
+                    } else {
+                        // Note to tell the service the next time there is
+                        // a new client.
+                        b.doRebind = true;
+                    }
+                }
+
+                serviceDoneExecutingLocked(r, inStopping);
+            }
+        } finally {
+            Binder.restoreCallingIdentity(origId);
+        }
+    }
+
+    private final ServiceRecord findServiceLocked(ComponentName name,
+            IBinder token) {
+        ServiceRecord r = mServiceMap.getServiceByName(name, Binder.getOrigCallingUser());
+        return r == token ? r : null;
+    }
+
+    private final class ServiceLookupResult {
+        final ServiceRecord record;
+        final String permission;
+
+        ServiceLookupResult(ServiceRecord _record, String _permission) {
+            record = _record;
+            permission = _permission;
+        }
+    };
+
+    private ServiceLookupResult findServiceLocked(Intent service,
+            String resolvedType, int userId) {
+        ServiceRecord r = null;
+        if (service.getComponent() != null) {
+            r = mServiceMap.getServiceByName(service.getComponent(), userId);
+        }
+        if (r == null) {
+            Intent.FilterComparison filter = new Intent.FilterComparison(service);
+            r = mServiceMap.getServiceByIntent(filter, userId);
+        }
+
+        if (r == null) {
+            try {
+                ResolveInfo rInfo =
+                    AppGlobals.getPackageManager().resolveService(
+                                service, resolvedType, 0, userId);
+                ServiceInfo sInfo =
+                    rInfo != null ? rInfo.serviceInfo : null;
+                if (sInfo == null) {
+                    return null;
+                }
+
+                ComponentName name = new ComponentName(
+                        sInfo.applicationInfo.packageName, sInfo.name);
+                r = mServiceMap.getServiceByName(name, Binder.getOrigCallingUser());
+            } catch (RemoteException ex) {
+                // pm is in same process, this will never happen.
+            }
+        }
+        if (r != null) {
+            int callingPid = Binder.getCallingPid();
+            int callingUid = Binder.getCallingUid();
+            if (mAm.checkComponentPermission(r.permission,
+                    callingPid, callingUid, r.appInfo.uid, r.exported)
+                    != PackageManager.PERMISSION_GRANTED) {
+                if (!r.exported) {
+                    Slog.w(TAG, "Permission Denial: Accessing service " + r.name
+                            + " from pid=" + callingPid
+                            + ", uid=" + callingUid
+                            + " that is not exported from uid " + r.appInfo.uid);
+                    return new ServiceLookupResult(null, "not exported from uid "
+                            + r.appInfo.uid);
+                }
+                Slog.w(TAG, "Permission Denial: Accessing service " + r.name
+                        + " from pid=" + callingPid
+                        + ", uid=" + callingUid
+                        + " requires " + r.permission);
+                return new ServiceLookupResult(null, r.permission);
+            }
+            return new ServiceLookupResult(r, null);
+        }
+        return null;
+    }
+
+    private class ServiceRestarter implements Runnable {
+        private ServiceRecord mService;
+
+        void setService(ServiceRecord service) {
+            mService = service;
+        }
+
+        public void run() {
+            synchronized(mAm) {
+                performServiceRestartLocked(mService);
+            }
+        }
+    }
+
+    private ServiceLookupResult retrieveServiceLocked(Intent service,
+            String resolvedType, int callingPid, int callingUid, int userId) {
+        ServiceRecord r = null;
+        if (DEBUG_SERVICE) Slog.v(TAG, "retrieveServiceLocked: " + service
+                + " type=" + resolvedType + " callingUid=" + callingUid);
+
+        if (service.getComponent() != null) {
+            r = mServiceMap.getServiceByName(service.getComponent(), userId);
+        }
+        if (r == null) {
+            Intent.FilterComparison filter = new Intent.FilterComparison(service);
+            r = mServiceMap.getServiceByIntent(filter, userId);
+        }
+        if (r == null) {
+            try {
+                ResolveInfo rInfo =
+                    AppGlobals.getPackageManager().resolveService(
+                                service, resolvedType,
+                                ActivityManagerService.STOCK_PM_FLAGS, userId);
+                ServiceInfo sInfo =
+                    rInfo != null ? rInfo.serviceInfo : null;
+                if (sInfo == null) {
+                    Slog.w(TAG, "Unable to start service " + service +
+                          ": not found");
+                    return null;
+                }
+                ComponentName name = new ComponentName(
+                        sInfo.applicationInfo.packageName, sInfo.name);
+                if (userId > 0) {
+                    if (mAm.isSingleton(sInfo.processName, sInfo.applicationInfo,
+                            sInfo.name, sInfo.flags)) {
+                        userId = 0;
+                    }
+                    sInfo = new ServiceInfo(sInfo);
+                    sInfo.applicationInfo = mAm.getAppInfoForUser(sInfo.applicationInfo, userId);
+                }
+                r = mServiceMap.getServiceByName(name, userId);
+                if (r == null) {
+                    Intent.FilterComparison filter = new Intent.FilterComparison(
+                            service.cloneFilter());
+                    ServiceRestarter res = new ServiceRestarter();
+                    BatteryStatsImpl.Uid.Pkg.Serv ss = null;
+                    BatteryStatsImpl stats = mAm.mBatteryStatsService.getActiveStatistics();
+                    synchronized (stats) {
+                        ss = stats.getServiceStatsLocked(
+                                sInfo.applicationInfo.uid, sInfo.packageName,
+                                sInfo.name);
+                    }
+                    r = new ServiceRecord(mAm, ss, name, filter, sInfo, res);
+                    res.setService(r);
+                    mServiceMap.putServiceByName(name, UserId.getUserId(r.appInfo.uid), r);
+                    mServiceMap.putServiceByIntent(filter, UserId.getUserId(r.appInfo.uid), r);
+
+                    // Make sure this component isn't in the pending list.
+                    int N = mPendingServices.size();
+                    for (int i=0; i<N; i++) {
+                        ServiceRecord pr = mPendingServices.get(i);
+                        if (pr.name.equals(name)) {
+                            mPendingServices.remove(i);
+                            i--;
+                            N--;
+                        }
+                    }
+                }
+            } catch (RemoteException ex) {
+                // pm is in same process, this will never happen.
+            }
+        }
+        if (r != null) {
+            if (mAm.checkComponentPermission(r.permission,
+                    callingPid, callingUid, r.appInfo.uid, r.exported)
+                    != PackageManager.PERMISSION_GRANTED) {
+                if (!r.exported) {
+                    Slog.w(TAG, "Permission Denial: Accessing service " + r.name
+                            + " from pid=" + callingPid
+                            + ", uid=" + callingUid
+                            + " that is not exported from uid " + r.appInfo.uid);
+                    return new ServiceLookupResult(null, "not exported from uid "
+                            + r.appInfo.uid);
+                }
+                Slog.w(TAG, "Permission Denial: Accessing service " + r.name
+                        + " from pid=" + callingPid
+                        + ", uid=" + callingUid
+                        + " requires " + r.permission);
+                return new ServiceLookupResult(null, r.permission);
+            }
+            return new ServiceLookupResult(r, null);
+        }
+        return null;
+    }
+
+    private final void bumpServiceExecutingLocked(ServiceRecord r, String why) {
+        if (DEBUG_SERVICE) Log.v(TAG, ">>> EXECUTING "
+                + why + " of " + r + " in app " + r.app);
+        else if (DEBUG_SERVICE_EXECUTING) Log.v(TAG, ">>> EXECUTING "
+                + why + " of " + r.shortName);
+        long now = SystemClock.uptimeMillis();
+        if (r.executeNesting == 0 && r.app != null) {
+            if (r.app.executingServices.size() == 0) {
+                Message msg = mAm.mHandler.obtainMessage(
+                        ActivityManagerService.SERVICE_TIMEOUT_MSG);
+                msg.obj = r.app;
+                mAm.mHandler.sendMessageAtTime(msg, now+SERVICE_TIMEOUT);
+            }
+            r.app.executingServices.add(r);
+        }
+        r.executeNesting++;
+        r.executingStart = now;
+    }
+
+    private final boolean requestServiceBindingLocked(ServiceRecord r,
+            IntentBindRecord i, boolean rebind) {
+        if (r.app == null || r.app.thread == null) {
+            // If service is not currently running, can't yet bind.
+            return false;
+        }
+        if ((!i.requested || rebind) && i.apps.size() > 0) {
+            try {
+                bumpServiceExecutingLocked(r, "bind");
+                r.app.thread.scheduleBindService(r, i.intent.getIntent(), rebind);
+                if (!rebind) {
+                    i.requested = true;
+                }
+                i.hasBound = true;
+                i.doRebind = false;
+            } catch (RemoteException e) {
+                if (DEBUG_SERVICE) Slog.v(TAG, "Crashed while binding " + r);
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private final boolean scheduleServiceRestartLocked(ServiceRecord r,
+            boolean allowCancel) {
+        boolean canceled = false;
+
+        final long now = SystemClock.uptimeMillis();
+        long minDuration = SERVICE_RESTART_DURATION;
+        long resetTime = SERVICE_RESET_RUN_DURATION;
+
+        if ((r.serviceInfo.applicationInfo.flags
+                &ApplicationInfo.FLAG_PERSISTENT) != 0) {
+            minDuration /= 4;
+        }
+
+        // Any delivered but not yet finished starts should be put back
+        // on the pending list.
+        final int N = r.deliveredStarts.size();
+        if (N > 0) {
+            for (int i=N-1; i>=0; i--) {
+                ServiceRecord.StartItem si = r.deliveredStarts.get(i);
+                si.removeUriPermissionsLocked();
+                if (si.intent == null) {
+                    // We'll generate this again if needed.
+                } else if (!allowCancel || (si.deliveryCount < ServiceRecord.MAX_DELIVERY_COUNT
+                        && si.doneExecutingCount < ServiceRecord.MAX_DONE_EXECUTING_COUNT)) {
+                    r.pendingStarts.add(0, si);
+                    long dur = SystemClock.uptimeMillis() - si.deliveredTime;
+                    dur *= 2;
+                    if (minDuration < dur) minDuration = dur;
+                    if (resetTime < dur) resetTime = dur;
+                } else {
+                    Slog.w(TAG, "Canceling start item " + si.intent + " in service "
+                            + r.name);
+                    canceled = true;
+                }
+            }
+            r.deliveredStarts.clear();
+        }
+
+        r.totalRestartCount++;
+        if (r.restartDelay == 0) {
+            r.restartCount++;
+            r.restartDelay = minDuration;
+        } else {
+            // If it has been a "reasonably long time" since the service
+            // was started, then reset our restart duration back to
+            // the beginning, so we don't infinitely increase the duration
+            // on a service that just occasionally gets killed (which is
+            // a normal case, due to process being killed to reclaim memory).
+            if (now > (r.restartTime+resetTime)) {
+                r.restartCount = 1;
+                r.restartDelay = minDuration;
+            } else {
+                if ((r.serviceInfo.applicationInfo.flags
+                        &ApplicationInfo.FLAG_PERSISTENT) != 0) {
+                    // Services in peristent processes will restart much more
+                    // quickly, since they are pretty important.  (Think SystemUI).
+                    r.restartDelay += minDuration/2;
+                } else {
+                    r.restartDelay *= SERVICE_RESTART_DURATION_FACTOR;
+                    if (r.restartDelay < minDuration) {
+                        r.restartDelay = minDuration;
+                    }
+                }
+            }
+        }
+
+        r.nextRestartTime = now + r.restartDelay;
+
+        // Make sure that we don't end up restarting a bunch of services
+        // all at the same time.
+        boolean repeat;
+        do {
+            repeat = false;
+            for (int i=mRestartingServices.size()-1; i>=0; i--) {
+                ServiceRecord r2 = mRestartingServices.get(i);
+                if (r2 != r && r.nextRestartTime
+                        >= (r2.nextRestartTime-SERVICE_MIN_RESTART_TIME_BETWEEN)
+                        && r.nextRestartTime
+                        < (r2.nextRestartTime+SERVICE_MIN_RESTART_TIME_BETWEEN)) {
+                    r.nextRestartTime = r2.nextRestartTime + SERVICE_MIN_RESTART_TIME_BETWEEN;
+                    r.restartDelay = r.nextRestartTime - now;
+                    repeat = true;
+                    break;
+                }
+            }
+        } while (repeat);
+
+        if (!mRestartingServices.contains(r)) {
+            mRestartingServices.add(r);
+        }
+
+        r.cancelNotification();
+
+        mAm.mHandler.removeCallbacks(r.restarter);
+        mAm.mHandler.postAtTime(r.restarter, r.nextRestartTime);
+        r.nextRestartTime = SystemClock.uptimeMillis() + r.restartDelay;
+        Slog.w(TAG, "Scheduling restart of crashed service "
+                + r.shortName + " in " + r.restartDelay + "ms");
+        EventLog.writeEvent(EventLogTags.AM_SCHEDULE_SERVICE_RESTART,
+                r.shortName, r.restartDelay);
+
+        return canceled;
+    }
+
+    final void performServiceRestartLocked(ServiceRecord r) {
+        if (!mRestartingServices.contains(r)) {
+            return;
+        }
+        bringUpServiceLocked(r, r.intent.getIntent().getFlags(), true);
+    }
+
+    private final boolean unscheduleServiceRestartLocked(ServiceRecord r) {
+        if (r.restartDelay == 0) {
+            return false;
+        }
+        r.resetRestartCounter();
+        mRestartingServices.remove(r);
+        mAm.mHandler.removeCallbacks(r.restarter);
+        return true;
+    }
+
+    private final boolean bringUpServiceLocked(ServiceRecord r,
+            int intentFlags, boolean whileRestarting) {
+        //Slog.i(TAG, "Bring up service:");
+        //r.dump("  ");
+
+        if (r.app != null && r.app.thread != null) {
+            sendServiceArgsLocked(r, false);
+            return true;
+        }
+
+        if (!whileRestarting && r.restartDelay > 0) {
+            // If waiting for a restart, then do nothing.
+            return true;
+        }
+
+        if (DEBUG_SERVICE) Slog.v(TAG, "Bringing up " + r + " " + r.intent);
+
+        // We are now bringing the service up, so no longer in the
+        // restarting state.
+        mRestartingServices.remove(r);
+
+        // Service is now being launched, its package can't be stopped.
+        try {
+            AppGlobals.getPackageManager().setPackageStoppedState(
+                    r.packageName, false, r.userId);
+        } catch (RemoteException e) {
+        } catch (IllegalArgumentException e) {
+            Slog.w(TAG, "Failed trying to unstop package "
+                    + r.packageName + ": " + e);
+        }
+
+        final boolean isolated = (r.serviceInfo.flags&ServiceInfo.FLAG_ISOLATED_PROCESS) != 0;
+        final String procName = r.processName;
+        ProcessRecord app;
+
+        if (!isolated) {
+            app = mAm.getProcessRecordLocked(procName, r.appInfo.uid);
+            if (DEBUG_MU)
+                Slog.v(TAG_MU, "bringUpServiceLocked: appInfo.uid=" + r.appInfo.uid + " app=" + app);
+            if (app != null && app.thread != null) {
+                try {
+                    app.addPackage(r.appInfo.packageName);
+                    realStartServiceLocked(r, app);
+                    return true;
+                } catch (RemoteException e) {
+                    Slog.w(TAG, "Exception when starting service " + r.shortName, e);
+                }
+
+                // If a dead object exception was thrown -- fall through to
+                // restart the application.
+            }
+        } else {
+            // If this service runs in an isolated process, then each time
+            // we call startProcessLocked() we will get a new isolated
+            // process, starting another process if we are currently waiting
+            // for a previous process to come up.  To deal with this, we store
+            // in the service any current isolated process it is running in or
+            // waiting to have come up.
+            app = r.isolatedProc;
+        }
+
+        // Not running -- get it started, and enqueue this service record
+        // to be executed when the app comes up.
+        if (app == null) {
+            if ((app=mAm.startProcessLocked(procName, r.appInfo, true, intentFlags,
+                    "service", r.name, false, isolated)) == null) {
+                Slog.w(TAG, "Unable to launch app "
+                        + r.appInfo.packageName + "/"
+                        + r.appInfo.uid + " for service "
+                        + r.intent.getIntent() + ": process is bad");
+                bringDownServiceLocked(r, true);
+                return false;
+            }
+            if (isolated) {
+                r.isolatedProc = app;
+            }
+        }
+
+        if (!mPendingServices.contains(r)) {
+            mPendingServices.add(r);
+        }
+
+        return true;
+    }
+
+    private final void requestServiceBindingsLocked(ServiceRecord r) {
+        Iterator<IntentBindRecord> bindings = r.bindings.values().iterator();
+        while (bindings.hasNext()) {
+            IntentBindRecord i = bindings.next();
+            if (!requestServiceBindingLocked(r, i, false)) {
+                break;
+            }
+        }
+    }
+
+    private final void realStartServiceLocked(ServiceRecord r,
+            ProcessRecord app) throws RemoteException {
+        if (app.thread == null) {
+            throw new RemoteException();
+        }
+        if (DEBUG_MU)
+            Slog.v(TAG_MU, "realStartServiceLocked, ServiceRecord.uid = " + r.appInfo.uid
+                    + ", ProcessRecord.uid = " + app.uid);
+        r.app = app;
+        r.restartTime = r.lastActivity = SystemClock.uptimeMillis();
+
+        app.services.add(r);
+        bumpServiceExecutingLocked(r, "create");
+        mAm.updateLruProcessLocked(app, true, true);
+
+        boolean created = false;
+        try {
+            mAm.mStringBuilder.setLength(0);
+            r.intent.getIntent().toShortString(mAm.mStringBuilder, true, false, true, false);
+            EventLog.writeEvent(EventLogTags.AM_CREATE_SERVICE,
+                    System.identityHashCode(r), r.shortName,
+                    mAm.mStringBuilder.toString(), r.app.pid);
+            synchronized (r.stats.getBatteryStats()) {
+                r.stats.startLaunchedLocked();
+            }
+            mAm.ensurePackageDexOpt(r.serviceInfo.packageName);
+            app.thread.scheduleCreateService(r, r.serviceInfo,
+                    mAm.compatibilityInfoForPackageLocked(r.serviceInfo.applicationInfo));
+            r.postNotification();
+            created = true;
+        } finally {
+            if (!created) {
+                app.services.remove(r);
+                scheduleServiceRestartLocked(r, false);
+            }
+        }
+
+        requestServiceBindingsLocked(r);
+
+        // If the service is in the started state, and there are no
+        // pending arguments, then fake up one so its onStartCommand() will
+        // be called.
+        if (r.startRequested && r.callStart && r.pendingStarts.size() == 0) {
+            r.pendingStarts.add(new ServiceRecord.StartItem(r, false, r.makeNextStartId(),
+                    null, null));
+        }
+
+        sendServiceArgsLocked(r, true);
+    }
+
+    private final void sendServiceArgsLocked(ServiceRecord r,
+            boolean oomAdjusted) {
+        final int N = r.pendingStarts.size();
+        if (N == 0) {
+            return;
+        }
+
+        while (r.pendingStarts.size() > 0) {
+            try {
+                ServiceRecord.StartItem si = r.pendingStarts.remove(0);
+                if (DEBUG_SERVICE) Slog.v(TAG, "Sending arguments to: "
+                        + r + " " + r.intent + " args=" + si.intent);
+                if (si.intent == null && N > 1) {
+                    // If somehow we got a dummy null intent in the middle,
+                    // then skip it.  DO NOT skip a null intent when it is
+                    // the only one in the list -- this is to support the
+                    // onStartCommand(null) case.
+                    continue;
+                }
+                si.deliveredTime = SystemClock.uptimeMillis();
+                r.deliveredStarts.add(si);
+                si.deliveryCount++;
+                if (si.neededGrants != null) {
+                    mAm.grantUriPermissionUncheckedFromIntentLocked(si.neededGrants,
+                            si.getUriPermissionsLocked());
+                }
+                bumpServiceExecutingLocked(r, "start");
+                if (!oomAdjusted) {
+                    oomAdjusted = true;
+                    mAm.updateOomAdjLocked(r.app);
+                }
+                int flags = 0;
+                if (si.deliveryCount > 1) {
+                    flags |= Service.START_FLAG_RETRY;
+                }
+                if (si.doneExecutingCount > 0) {
+                    flags |= Service.START_FLAG_REDELIVERY;
+                }
+                r.app.thread.scheduleServiceArgs(r, si.taskRemoved, si.id, flags, si.intent);
+            } catch (RemoteException e) {
+                // Remote process gone...  we'll let the normal cleanup take
+                // care of this.
+                if (DEBUG_SERVICE) Slog.v(TAG, "Crashed while scheduling start: " + r);
+                break;
+            } catch (Exception e) {
+                Slog.w(TAG, "Unexpected exception", e);
+                break;
+            }
+        }
+    }
+
+    private final void bringDownServiceLocked(ServiceRecord r, boolean force) {
+        //Slog.i(TAG, "Bring down service:");
+        //r.dump("  ");
+
+        // Does it still need to run?
+        if (!force && r.startRequested) {
+            return;
+        }
+        if (r.connections.size() > 0) {
+            if (!force) {
+                // XXX should probably keep a count of the number of auto-create
+                // connections directly in the service.
+                Iterator<ArrayList<ConnectionRecord>> it = r.connections.values().iterator();
+                while (it.hasNext()) {
+                    ArrayList<ConnectionRecord> cr = it.next();
+                    for (int i=0; i<cr.size(); i++) {
+                        if ((cr.get(i).flags&Context.BIND_AUTO_CREATE) != 0) {
+                            return;
+                        }
+                    }
+                }
+            }
+
+            // Report to all of the connections that the service is no longer
+            // available.
+            Iterator<ArrayList<ConnectionRecord>> it = r.connections.values().iterator();
+            while (it.hasNext()) {
+                ArrayList<ConnectionRecord> c = it.next();
+                for (int i=0; i<c.size(); i++) {
+                    ConnectionRecord cr = c.get(i);
+                    // There is still a connection to the service that is
+                    // being brought down.  Mark it as dead.
+                    cr.serviceDead = true;
+                    try {
+                        cr.conn.connected(r.name, null);
+                    } catch (Exception e) {
+                        Slog.w(TAG, "Failure disconnecting service " + r.name +
+                              " to connection " + c.get(i).conn.asBinder() +
+                              " (in " + c.get(i).binding.client.processName + ")", e);
+                    }
+                }
+            }
+        }
+
+        // Tell the service that it has been unbound.
+        if (r.bindings.size() > 0 && r.app != null && r.app.thread != null) {
+            Iterator<IntentBindRecord> it = r.bindings.values().iterator();
+            while (it.hasNext()) {
+                IntentBindRecord ibr = it.next();
+                if (DEBUG_SERVICE) Slog.v(TAG, "Bringing down binding " + ibr
+                        + ": hasBound=" + ibr.hasBound);
+                if (r.app != null && r.app.thread != null && ibr.hasBound) {
+                    try {
+                        bumpServiceExecutingLocked(r, "bring down unbind");
+                        mAm.updateOomAdjLocked(r.app);
+                        ibr.hasBound = false;
+                        r.app.thread.scheduleUnbindService(r,
+                                ibr.intent.getIntent());
+                    } catch (Exception e) {
+                        Slog.w(TAG, "Exception when unbinding service "
+                                + r.shortName, e);
+                        serviceDoneExecutingLocked(r, true);
+                    }
+                }
+            }
+        }
+
+        if (DEBUG_SERVICE) Slog.v(TAG, "Bringing down " + r + " " + r.intent);
+        EventLog.writeEvent(EventLogTags.AM_DESTROY_SERVICE,
+                System.identityHashCode(r), r.shortName,
+                (r.app != null) ? r.app.pid : -1);
+
+        mServiceMap.removeServiceByName(r.name, r.userId);
+        mServiceMap.removeServiceByIntent(r.intent, r.userId);
+        r.totalRestartCount = 0;
+        unscheduleServiceRestartLocked(r);
+
+        // Also make sure it is not on the pending list.
+        int N = mPendingServices.size();
+        for (int i=0; i<N; i++) {
+            if (mPendingServices.get(i) == r) {
+                mPendingServices.remove(i);
+                if (DEBUG_SERVICE) Slog.v(TAG, "Removed pending: " + r);
+                i--;
+                N--;
+            }
+        }
+
+        r.cancelNotification();
+        r.isForeground = false;
+        r.foregroundId = 0;
+        r.foregroundNoti = null;
+
+        // Clear start entries.
+        r.clearDeliveredStartsLocked();
+        r.pendingStarts.clear();
+
+        if (r.app != null) {
+            synchronized (r.stats.getBatteryStats()) {
+                r.stats.stopLaunchedLocked();
+            }
+            r.app.services.remove(r);
+            if (r.app.thread != null) {
+                try {
+                    bumpServiceExecutingLocked(r, "stop");
+                    mStoppingServices.add(r);
+                    mAm.updateOomAdjLocked(r.app);
+                    r.app.thread.scheduleStopService(r);
+                } catch (Exception e) {
+                    Slog.w(TAG, "Exception when stopping service "
+                            + r.shortName, e);
+                    serviceDoneExecutingLocked(r, true);
+                }
+                updateServiceForegroundLocked(r.app, false);
+            } else {
+                if (DEBUG_SERVICE) Slog.v(
+                    TAG, "Removed service that has no process: " + r);
+            }
+        } else {
+            if (DEBUG_SERVICE) Slog.v(
+                TAG, "Removed service that is not running: " + r);
+        }
+
+        if (r.bindings.size() > 0) {
+            r.bindings.clear();
+        }
+
+        if (r.restarter instanceof ServiceRestarter) {
+           ((ServiceRestarter)r.restarter).setService(null);
+        }
+    }
+
+    void removeConnectionLocked(
+        ConnectionRecord c, ProcessRecord skipApp, ActivityRecord skipAct) {
+        IBinder binder = c.conn.asBinder();
+        AppBindRecord b = c.binding;
+        ServiceRecord s = b.service;
+        ArrayList<ConnectionRecord> clist = s.connections.get(binder);
+        if (clist != null) {
+            clist.remove(c);
+            if (clist.size() == 0) {
+                s.connections.remove(binder);
+            }
+        }
+        b.connections.remove(c);
+        if (c.activity != null && c.activity != skipAct) {
+            if (c.activity.connections != null) {
+                c.activity.connections.remove(c);
+            }
+        }
+        if (b.client != skipApp) {
+            b.client.connections.remove(c);
+            if ((c.flags&Context.BIND_ABOVE_CLIENT) != 0) {
+                b.client.updateHasAboveClientLocked();
+            }
+        }
+        clist = mServiceConnections.get(binder);
+        if (clist != null) {
+            clist.remove(c);
+            if (clist.size() == 0) {
+                mServiceConnections.remove(binder);
+            }
+        }
+
+        if (b.connections.size() == 0) {
+            b.intent.apps.remove(b.client);
+        }
+
+        if (!c.serviceDead) {
+            if (DEBUG_SERVICE) Slog.v(TAG, "Disconnecting binding " + b.intent
+                    + ": shouldUnbind=" + b.intent.hasBound);
+            if (s.app != null && s.app.thread != null && b.intent.apps.size() == 0
+                    && b.intent.hasBound) {
+                try {
+                    bumpServiceExecutingLocked(s, "unbind");
+                    mAm.updateOomAdjLocked(s.app);
+                    b.intent.hasBound = false;
+                    // Assume the client doesn't want to know about a rebind;
+                    // we will deal with that later if it asks for one.
+                    b.intent.doRebind = false;
+                    s.app.thread.scheduleUnbindService(s, b.intent.intent.getIntent());
+                } catch (Exception e) {
+                    Slog.w(TAG, "Exception when unbinding service " + s.shortName, e);
+                    serviceDoneExecutingLocked(s, true);
+                }
+            }
+
+            if ((c.flags&Context.BIND_AUTO_CREATE) != 0) {
+                bringDownServiceLocked(s, false);
+            }
+        }
+    }
+
+    void serviceDoneExecutingLocked(ServiceRecord r, int type, int startId, int res) {
+        boolean inStopping = mStoppingServices.contains(r);
+        if (r != null) {
+            if (type == 1) {
+                // This is a call from a service start...  take care of
+                // book-keeping.
+                r.callStart = true;
+                switch (res) {
+                    case Service.START_STICKY_COMPATIBILITY:
+                    case Service.START_STICKY: {
+                        // We are done with the associated start arguments.
+                        r.findDeliveredStart(startId, true);
+                        // Don't stop if killed.
+                        r.stopIfKilled = false;
+                        break;
+                    }
+                    case Service.START_NOT_STICKY: {
+                        // We are done with the associated start arguments.
+                        r.findDeliveredStart(startId, true);
+                        if (r.getLastStartId() == startId) {
+                            // There is no more work, and this service
+                            // doesn't want to hang around if killed.
+                            r.stopIfKilled = true;
+                        }
+                        break;
+                    }
+                    case Service.START_REDELIVER_INTENT: {
+                        // We'll keep this item until they explicitly
+                        // call stop for it, but keep track of the fact
+                        // that it was delivered.
+                        ServiceRecord.StartItem si = r.findDeliveredStart(startId, false);
+                        if (si != null) {
+                            si.deliveryCount = 0;
+                            si.doneExecutingCount++;
+                            // Don't stop if killed.
+                            r.stopIfKilled = true;
+                        }
+                        break;
+                    }
+                    case Service.START_TASK_REMOVED_COMPLETE: {
+                        // Special processing for onTaskRemoved().  Don't
+                        // impact normal onStartCommand() processing.
+                        r.findDeliveredStart(startId, true);
+                        break;
+                    }
+                    default:
+                        throw new IllegalArgumentException(
+                                "Unknown service start result: " + res);
+                }
+                if (res == Service.START_STICKY_COMPATIBILITY) {
+                    r.callStart = false;
+                }
+            }
+            if (DEBUG_MU)
+                Slog.v(TAG_MU, "before serviceDontExecutingLocked, uid="
+                        + Binder.getOrigCallingUid());
+            final long origId = Binder.clearCallingIdentity();
+            serviceDoneExecutingLocked(r, inStopping);
+            Binder.restoreCallingIdentity(origId);
+        } else {
+            Slog.w(TAG, "Done executing unknown service from pid "
+                    + Binder.getCallingPid());
+        }
+    }
+
+    private void serviceDoneExecutingLocked(ServiceRecord r, boolean inStopping) {
+        if (DEBUG_SERVICE) Slog.v(TAG, "<<< DONE EXECUTING " + r
+                + ": nesting=" + r.executeNesting
+                + ", inStopping=" + inStopping + ", app=" + r.app);
+        else if (DEBUG_SERVICE_EXECUTING) Slog.v(TAG, "<<< DONE EXECUTING " + r.shortName);
+        r.executeNesting--;
+        if (r.executeNesting <= 0 && r.app != null) {
+            if (DEBUG_SERVICE) Slog.v(TAG,
+                    "Nesting at 0 of " + r.shortName);
+            r.app.executingServices.remove(r);
+            if (r.app.executingServices.size() == 0) {
+                if (DEBUG_SERVICE || DEBUG_SERVICE_EXECUTING) Slog.v(TAG,
+                        "No more executingServices of " + r.shortName);
+                mAm.mHandler.removeMessages(ActivityManagerService.SERVICE_TIMEOUT_MSG, r.app);
+            }
+            if (inStopping) {
+                if (DEBUG_SERVICE) Slog.v(TAG,
+                        "doneExecuting remove stopping " + r);
+                mStoppingServices.remove(r);
+                r.bindings.clear();
+            }
+            mAm.updateOomAdjLocked(r.app);
+        }
+    }
+
+    boolean attachApplicationLocked(ProcessRecord proc, String processName) throws Exception {
+        boolean didSomething = false;
+        if (mPendingServices.size() > 0) {
+            ServiceRecord sr = null;
+            try {
+                for (int i=0; i<mPendingServices.size(); i++) {
+                    sr = mPendingServices.get(i);
+                    if (proc != sr.isolatedProc && (proc.uid != sr.appInfo.uid
+                            || !processName.equals(sr.processName))) {
+                        continue;
+                    }
+
+                    mPendingServices.remove(i);
+                    i--;
+                    realStartServiceLocked(sr, proc);
+                    didSomething = true;
+                }
+            } catch (Exception e) {
+                Slog.w(TAG, "Exception in new application when starting service "
+                        + sr.shortName, e);
+                throw e;
+            }
+        }
+        return didSomething;
+    }
+
+    void processStartTimedOutLocked(ProcessRecord proc) {
+        for (int i=0; i<mPendingServices.size(); i++) {
+            ServiceRecord sr = mPendingServices.get(i);
+            if ((proc.uid == sr.appInfo.uid
+                    && proc.processName.equals(sr.processName))
+                    || sr.isolatedProc == proc) {
+                Slog.w(TAG, "Forcing bringing down service: " + sr);
+                sr.isolatedProc = null;
+                mPendingServices.remove(i);
+                i--;
+                bringDownServiceLocked(sr, true);
+            }
+        }
+    }
+
+    boolean forceStopLocked(String name, int userId, boolean evenPersistent, boolean doit) {
+        boolean didSomething = false;
+        ArrayList<ServiceRecord> services = new ArrayList<ServiceRecord>();
+        for (ServiceRecord service : mServiceMap.getAllServices(userId)) {
+            if (service.packageName.equals(name)
+                    && (service.app == null || evenPersistent || !service.app.persistent)) {
+                if (!doit) {
+                    return true;
+                }
+                didSomething = true;
+                Slog.i(TAG, "  Force stopping service " + service);
+                if (service.app != null) {
+                    service.app.removed = true;
+                }
+                service.app = null;
+                service.isolatedProc = null;
+                services.add(service);
+            }
+        }
+
+        int N = services.size();
+        for (int i=0; i<N; i++) {
+            bringDownServiceLocked(services.get(i), true);
+        }
+        return didSomething;
+    }
+
+    void cleanUpRemovedTaskLocked(TaskRecord tr, ComponentName component, Intent baseIntent) {
+        ArrayList<ServiceRecord> services = new ArrayList<ServiceRecord>();
+        for (ServiceRecord sr : mServiceMap.getAllServices(tr.userId)) {
+            if (sr.packageName.equals(component.getPackageName())) {
+                services.add(sr);
+            }
+        }
+
+        // Take care of any running services associated with the app.
+        for (int i=0; i<services.size(); i++) {
+            ServiceRecord sr = services.get(i);
+            if (sr.startRequested) {
+                if ((sr.serviceInfo.flags&ServiceInfo.FLAG_STOP_WITH_TASK) != 0) {
+                    Slog.i(TAG, "Stopping service " + sr.shortName + ": remove task");
+                    stopServiceLocked(sr);
+                } else {
+                    sr.pendingStarts.add(new ServiceRecord.StartItem(sr, true,
+                            sr.makeNextStartId(), baseIntent, null));
+                    if (sr.app != null && sr.app.thread != null) {
+                        sendServiceArgsLocked(sr, false);
+                    }
+                }
+            }
+        }
+    }
+
+    final void killServicesLocked(ProcessRecord app,
+            boolean allowRestart) {
+        // Report disconnected services.
+        if (false) {
+            // XXX we are letting the client link to the service for
+            // death notifications.
+            if (app.services.size() > 0) {
+                Iterator<ServiceRecord> it = app.services.iterator();
+                while (it.hasNext()) {
+                    ServiceRecord r = it.next();
+                    if (r.connections.size() > 0) {
+                        Iterator<ArrayList<ConnectionRecord>> jt
+                                = r.connections.values().iterator();
+                        while (jt.hasNext()) {
+                            ArrayList<ConnectionRecord> cl = jt.next();
+                            for (int i=0; i<cl.size(); i++) {
+                                ConnectionRecord c = cl.get(i);
+                                if (c.binding.client != app) {
+                                    try {
+                                        //c.conn.connected(r.className, null);
+                                    } catch (Exception e) {
+                                        // todo: this should be asynchronous!
+                                        Slog.w(TAG, "Exception thrown disconnected servce "
+                                              + r.shortName
+                                              + " from app " + app.processName, e);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        // Clean up any connections this application has to other services.
+        if (app.connections.size() > 0) {
+            Iterator<ConnectionRecord> it = app.connections.iterator();
+            while (it.hasNext()) {
+                ConnectionRecord r = it.next();
+                removeConnectionLocked(r, app, null);
+            }
+        }
+        app.connections.clear();
+
+        if (app.services.size() != 0) {
+            // Any services running in the application need to be placed
+            // back in the pending list.
+            Iterator<ServiceRecord> it = app.services.iterator();
+            while (it.hasNext()) {
+                ServiceRecord sr = it.next();
+                synchronized (sr.stats.getBatteryStats()) {
+                    sr.stats.stopLaunchedLocked();
+                }
+                sr.app = null;
+                sr.isolatedProc = null;
+                sr.executeNesting = 0;
+                if (mStoppingServices.remove(sr)) {
+                    if (DEBUG_SERVICE) Slog.v(TAG, "killServices remove stopping " + sr);
+                }
+
+                boolean hasClients = sr.bindings.size() > 0;
+                if (hasClients) {
+                    Iterator<IntentBindRecord> bindings
+                            = sr.bindings.values().iterator();
+                    while (bindings.hasNext()) {
+                        IntentBindRecord b = bindings.next();
+                        if (DEBUG_SERVICE) Slog.v(TAG, "Killing binding " + b
+                                + ": shouldUnbind=" + b.hasBound);
+                        b.binder = null;
+                        b.requested = b.received = b.hasBound = false;
+                    }
+                }
+
+                if (sr.crashCount >= 2 && (sr.serviceInfo.applicationInfo.flags
+                        &ApplicationInfo.FLAG_PERSISTENT) == 0) {
+                    Slog.w(TAG, "Service crashed " + sr.crashCount
+                            + " times, stopping: " + sr);
+                    EventLog.writeEvent(EventLogTags.AM_SERVICE_CRASHED_TOO_MUCH,
+                            sr.crashCount, sr.shortName, app.pid);
+                    bringDownServiceLocked(sr, true);
+                } else if (!allowRestart) {
+                    bringDownServiceLocked(sr, true);
+                } else {
+                    boolean canceled = scheduleServiceRestartLocked(sr, true);
+
+                    // Should the service remain running?  Note that in the
+                    // extreme case of so many attempts to deliver a command
+                    // that it failed we also will stop it here.
+                    if (sr.startRequested && (sr.stopIfKilled || canceled)) {
+                        if (sr.pendingStarts.size() == 0) {
+                            sr.startRequested = false;
+                            if (!hasClients) {
+                                // Whoops, no reason to restart!
+                                bringDownServiceLocked(sr, true);
+                            }
+                        }
+                    }
+                }
+            }
+
+            if (!allowRestart) {
+                app.services.clear();
+            }
+        }
+
+        // Make sure we have no more records on the stopping list.
+        int i = mStoppingServices.size();
+        while (i > 0) {
+            i--;
+            ServiceRecord sr = mStoppingServices.get(i);
+            if (sr.app == app) {
+                mStoppingServices.remove(i);
+                if (DEBUG_SERVICE) Slog.v(TAG, "killServices remove stopping " + sr);
+            }
+        }
+
+        app.executingServices.clear();
+    }
+
+    ActivityManager.RunningServiceInfo makeRunningServiceInfoLocked(ServiceRecord r) {
+        ActivityManager.RunningServiceInfo info =
+            new ActivityManager.RunningServiceInfo();
+        info.service = r.name;
+        if (r.app != null) {
+            info.pid = r.app.pid;
+        }
+        info.uid = r.appInfo.uid;
+        info.process = r.processName;
+        info.foreground = r.isForeground;
+        info.activeSince = r.createTime;
+        info.started = r.startRequested;
+        info.clientCount = r.connections.size();
+        info.crashCount = r.crashCount;
+        info.lastActivityTime = r.lastActivity;
+        if (r.isForeground) {
+            info.flags |= ActivityManager.RunningServiceInfo.FLAG_FOREGROUND;
+        }
+        if (r.startRequested) {
+            info.flags |= ActivityManager.RunningServiceInfo.FLAG_STARTED;
+        }
+        if (r.app != null && r.app.pid == ActivityManagerService.MY_PID) {
+            info.flags |= ActivityManager.RunningServiceInfo.FLAG_SYSTEM_PROCESS;
+        }
+        if (r.app != null && r.app.persistent) {
+            info.flags |= ActivityManager.RunningServiceInfo.FLAG_PERSISTENT_PROCESS;
+        }
+
+        for (ArrayList<ConnectionRecord> connl : r.connections.values()) {
+            for (int i=0; i<connl.size(); i++) {
+                ConnectionRecord conn = connl.get(i);
+                if (conn.clientLabel != 0) {
+                    info.clientPackage = conn.binding.client.info.packageName;
+                    info.clientLabel = conn.clientLabel;
+                    return info;
+                }
+            }
+        }
+        return info;
+    }
+
+    List<ActivityManager.RunningServiceInfo> getRunningServiceInfoLocked(int maxNum,
+            int flags) {
+        ArrayList<ActivityManager.RunningServiceInfo> res
+                = new ArrayList<ActivityManager.RunningServiceInfo>();
+
+        int userId = UserId.getUserId(Binder.getCallingUid());
+        if (mServiceMap.getAllServices(userId).size() > 0) {
+            Iterator<ServiceRecord> it
+                    = mServiceMap.getAllServices(userId).iterator();
+            while (it.hasNext() && res.size() < maxNum) {
+                res.add(makeRunningServiceInfoLocked(it.next()));
+            }
+        }
+
+        for (int i=0; i<mRestartingServices.size() && res.size() < maxNum; i++) {
+            ServiceRecord r = mRestartingServices.get(i);
+            ActivityManager.RunningServiceInfo info =
+                    makeRunningServiceInfoLocked(r);
+            info.restarting = r.nextRestartTime;
+            res.add(info);
+        }
+
+        return res;
+    }
+
+    public PendingIntent getRunningServiceControlPanelLocked(ComponentName name) {
+        int userId = UserId.getUserId(Binder.getCallingUid());
+        ServiceRecord r = mServiceMap.getServiceByName(name, userId);
+        if (r != null) {
+            for (ArrayList<ConnectionRecord> conn : r.connections.values()) {
+                for (int i=0; i<conn.size(); i++) {
+                    if (conn.get(i).clientIntent != null) {
+                        return conn.get(i).clientIntent;
+                    }
+                }
+            }
+        }
+        return null;
+    }
+
+    void serviceTimeout(ProcessRecord proc) {
+        String anrMessage = null;
+
+        synchronized(this) {
+            if (proc.executingServices.size() == 0 || proc.thread == null) {
+                return;
+            }
+            long maxTime = SystemClock.uptimeMillis() - SERVICE_TIMEOUT;
+            Iterator<ServiceRecord> it = proc.executingServices.iterator();
+            ServiceRecord timeout = null;
+            long nextTime = 0;
+            while (it.hasNext()) {
+                ServiceRecord sr = it.next();
+                if (sr.executingStart < maxTime) {
+                    timeout = sr;
+                    break;
+                }
+                if (sr.executingStart > nextTime) {
+                    nextTime = sr.executingStart;
+                }
+            }
+            if (timeout != null && mAm.mLruProcesses.contains(proc)) {
+                Slog.w(TAG, "Timeout executing service: " + timeout);
+                anrMessage = "Executing service " + timeout.shortName;
+            } else {
+                Message msg = mAm.mHandler.obtainMessage(
+                        ActivityManagerService.SERVICE_TIMEOUT_MSG);
+                msg.obj = proc;
+                mAm.mHandler.sendMessageAtTime(msg, nextTime+SERVICE_TIMEOUT);
+            }
+        }
+
+        if (anrMessage != null) {
+            mAm.appNotResponding(proc, null, null, anrMessage);
+        }
+    }
+
+    /**
+     * Prints a list of ServiceRecords (dumpsys activity services)
+     */
+    boolean dumpServicesLocked(FileDescriptor fd, PrintWriter pw, String[] args,
+            int opti, boolean dumpAll, boolean dumpClient, String dumpPackage) {
+        boolean needSep = false;
+
+        ItemMatcher matcher = new ItemMatcher();
+        matcher.build(args, opti);
+
+        pw.println("ACTIVITY MANAGER SERVICES (dumpsys activity services)");
+        try {
+            List<UserInfo> users = AppGlobals.getPackageManager().getUsers();
+            for (UserInfo user : users) {
+                if (mServiceMap.getAllServices(user.id).size() > 0) {
+                    boolean printed = false;
+                    long nowReal = SystemClock.elapsedRealtime();
+                    Iterator<ServiceRecord> it = mServiceMap.getAllServices(
+                            user.id).iterator();
+                    needSep = false;
+                    while (it.hasNext()) {
+                        ServiceRecord r = it.next();
+                        if (!matcher.match(r, r.name)) {
+                            continue;
+                        }
+                        if (dumpPackage != null && !dumpPackage.equals(r.appInfo.packageName)) {
+                            continue;
+                        }
+                        if (!printed) {
+                            pw.println("  Active services:");
+                            printed = true;
+                        }
+                        if (needSep) {
+                            pw.println();
+                        }
+                        pw.print("  * ");
+                        pw.println(r);
+                        if (dumpAll) {
+                            r.dump(pw, "    ");
+                            needSep = true;
+                        } else {
+                            pw.print("    app=");
+                            pw.println(r.app);
+                            pw.print("    created=");
+                            TimeUtils.formatDuration(r.createTime, nowReal, pw);
+                            pw.print(" started=");
+                            pw.print(r.startRequested);
+                            pw.print(" connections=");
+                            pw.println(r.connections.size());
+                            if (r.connections.size() > 0) {
+                                pw.println("    Connections:");
+                                for (ArrayList<ConnectionRecord> clist : r.connections.values()) {
+                                    for (int i = 0; i < clist.size(); i++) {
+                                        ConnectionRecord conn = clist.get(i);
+                                        pw.print("      ");
+                                        pw.print(conn.binding.intent.intent.getIntent()
+                                                .toShortString(false, false, false, false));
+                                        pw.print(" -> ");
+                                        ProcessRecord proc = conn.binding.client;
+                                        pw.println(proc != null ? proc.toShortString() : "null");
+                                    }
+                                }
+                            }
+                        }
+                        if (dumpClient && r.app != null && r.app.thread != null) {
+                            pw.println("    Client:");
+                            pw.flush();
+                            try {
+                                TransferPipe tp = new TransferPipe();
+                                try {
+                                    r.app.thread.dumpService(tp.getWriteFd().getFileDescriptor(),
+                                            r, args);
+                                    tp.setBufferPrefix("      ");
+                                    // Short timeout, since blocking here can
+                                    // deadlock with the application.
+                                    tp.go(fd, 2000);
+                                } finally {
+                                    tp.kill();
+                                }
+                            } catch (IOException e) {
+                                pw.println("      Failure while dumping the service: " + e);
+                            } catch (RemoteException e) {
+                                pw.println("      Got a RemoteException while dumping the service");
+                            }
+                            needSep = true;
+                        }
+                    }
+                    needSep = printed;
+                }
+            }
+        } catch (RemoteException re) {
+
+        }
+
+        if (mPendingServices.size() > 0) {
+            boolean printed = false;
+            for (int i=0; i<mPendingServices.size(); i++) {
+                ServiceRecord r = mPendingServices.get(i);
+                if (!matcher.match(r, r.name)) {
+                    continue;
+                }
+                if (dumpPackage != null && !dumpPackage.equals(r.appInfo.packageName)) {
+                    continue;
+                }
+                if (!printed) {
+                    if (needSep) pw.println(" ");
+                    needSep = true;
+                    pw.println("  Pending services:");
+                    printed = true;
+                }
+                pw.print("  * Pending "); pw.println(r);
+                r.dump(pw, "    ");
+            }
+            needSep = true;
+        }
+
+        if (mRestartingServices.size() > 0) {
+            boolean printed = false;
+            for (int i=0; i<mRestartingServices.size(); i++) {
+                ServiceRecord r = mRestartingServices.get(i);
+                if (!matcher.match(r, r.name)) {
+                    continue;
+                }
+                if (dumpPackage != null && !dumpPackage.equals(r.appInfo.packageName)) {
+                    continue;
+                }
+                if (!printed) {
+                    if (needSep) pw.println(" ");
+                    needSep = true;
+                    pw.println("  Restarting services:");
+                    printed = true;
+                }
+                pw.print("  * Restarting "); pw.println(r);
+                r.dump(pw, "    ");
+            }
+            needSep = true;
+        }
+
+        if (mStoppingServices.size() > 0) {
+            boolean printed = false;
+            for (int i=0; i<mStoppingServices.size(); i++) {
+                ServiceRecord r = mStoppingServices.get(i);
+                if (!matcher.match(r, r.name)) {
+                    continue;
+                }
+                if (dumpPackage != null && !dumpPackage.equals(r.appInfo.packageName)) {
+                    continue;
+                }
+                if (!printed) {
+                    if (needSep) pw.println(" ");
+                    needSep = true;
+                    pw.println("  Stopping services:");
+                    printed = true;
+                }
+                pw.print("  * Stopping "); pw.println(r);
+                r.dump(pw, "    ");
+            }
+            needSep = true;
+        }
+
+        if (dumpAll) {
+            if (mServiceConnections.size() > 0) {
+                boolean printed = false;
+                Iterator<ArrayList<ConnectionRecord>> it
+                        = mServiceConnections.values().iterator();
+                while (it.hasNext()) {
+                    ArrayList<ConnectionRecord> r = it.next();
+                    for (int i=0; i<r.size(); i++) {
+                        ConnectionRecord cr = r.get(i);
+                        if (!matcher.match(cr.binding.service, cr.binding.service.name)) {
+                            continue;
+                        }
+                        if (dumpPackage != null && (cr.binding.client == null
+                                || !dumpPackage.equals(cr.binding.client.info.packageName))) {
+                            continue;
+                        }
+                        if (!printed) {
+                            if (needSep) pw.println(" ");
+                            needSep = true;
+                            pw.println("  Connection bindings to services:");
+                            printed = true;
+                        }
+                        pw.print("  * "); pw.println(cr);
+                        cr.dump(pw, "    ");
+                    }
+                }
+                needSep = true;
+            }
+        }
+
+        return needSep;
+    }
+
+    /**
+     * There are three ways to call this:
+     *  - no service specified: dump all the services
+     *  - a flattened component name that matched an existing service was specified as the
+     *    first arg: dump that one service
+     *  - the first arg isn't the flattened component name of an existing service:
+     *    dump all services whose component contains the first arg as a substring
+     */
+    protected boolean dumpService(FileDescriptor fd, PrintWriter pw, String name, String[] args,
+            int opti, boolean dumpAll) {
+        ArrayList<ServiceRecord> services = new ArrayList<ServiceRecord>();
+
+        if ("all".equals(name)) {
+            synchronized (this) {
+                try {
+                    List<UserInfo> users = AppGlobals.getPackageManager().getUsers();
+                    for (UserInfo user : users) {
+                        for (ServiceRecord r1 : mServiceMap.getAllServices(user.id)) {
+                            services.add(r1);
+                        }
+                    }
+                } catch (RemoteException re) {
+                }
+            }
+        } else {
+            ComponentName componentName = name != null
+                    ? ComponentName.unflattenFromString(name) : null;
+            int objectId = 0;
+            if (componentName == null) {
+                // Not a '/' separated full component name; maybe an object ID?
+                try {
+                    objectId = Integer.parseInt(name, 16);
+                    name = null;
+                    componentName = null;
+                } catch (RuntimeException e) {
+                }
+            }
+
+            synchronized (this) {
+                try {
+                    List<UserInfo> users = AppGlobals.getPackageManager().getUsers();
+                    for (UserInfo user : users) {
+                        for (ServiceRecord r1 : mServiceMap.getAllServices(user.id)) {
+                            if (componentName != null) {
+                                if (r1.name.equals(componentName)) {
+                                    services.add(r1);
+                                }
+                            } else if (name != null) {
+                                if (r1.name.flattenToString().contains(name)) {
+                                    services.add(r1);
+                                }
+                            } else if (System.identityHashCode(r1) == objectId) {
+                                services.add(r1);
+                            }
+                        }
+                    }
+                } catch (RemoteException re) {
+                }
+            }
+        }
+
+        if (services.size() <= 0) {
+            return false;
+        }
+
+        boolean needSep = false;
+        for (int i=0; i<services.size(); i++) {
+            if (needSep) {
+                pw.println();
+            }
+            needSep = true;
+            dumpService("", fd, pw, services.get(i), args, dumpAll);
+        }
+        return true;
+    }
+
+    /**
+     * Invokes IApplicationThread.dumpService() on the thread of the specified service if
+     * there is a thread associated with the service.
+     */
+    private void dumpService(String prefix, FileDescriptor fd, PrintWriter pw,
+            final ServiceRecord r, String[] args, boolean dumpAll) {
+        String innerPrefix = prefix + "  ";
+        synchronized (this) {
+            pw.print(prefix); pw.print("SERVICE ");
+                    pw.print(r.shortName); pw.print(" ");
+                    pw.print(Integer.toHexString(System.identityHashCode(r)));
+                    pw.print(" pid=");
+                    if (r.app != null) pw.println(r.app.pid);
+                    else pw.println("(not running)");
+            if (dumpAll) {
+                r.dump(pw, innerPrefix);
+            }
+        }
+        if (r.app != null && r.app.thread != null) {
+            pw.print(prefix); pw.println("  Client:");
+            pw.flush();
+            try {
+                TransferPipe tp = new TransferPipe();
+                try {
+                    r.app.thread.dumpService(tp.getWriteFd().getFileDescriptor(), r, args);
+                    tp.setBufferPrefix(prefix + "    ");
+                    tp.go(fd);
+                } finally {
+                    tp.kill();
+                }
+            } catch (IOException e) {
+                pw.println(prefix + "    Failure while dumping the service: " + e);
+            } catch (RemoteException e) {
+                pw.println(prefix + "    Got a RemoteException while dumping the service");
+            }
+        }
+    }
+
+}
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 3b4200a..05f38a5 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -241,31 +241,6 @@
     static final int BROADCAST_FG_TIMEOUT = 10*1000;
     static final int BROADCAST_BG_TIMEOUT = 60*1000;
 
-    // How long we wait for a service to finish executing.
-    static final int SERVICE_TIMEOUT = 20*1000;
-
-    // How long a service needs to be running until restarting its process
-    // is no longer considered to be a relaunch of the service.
-    static final int SERVICE_RESTART_DURATION = 5*1000;
-
-    // How long a service needs to be running until it will start back at
-    // SERVICE_RESTART_DURATION after being killed.
-    static final int SERVICE_RESET_RUN_DURATION = 60*1000;
-
-    // Multiplying factor to increase restart duration time by, for each time
-    // a service is killed before it has run for SERVICE_RESET_RUN_DURATION.
-    static final int SERVICE_RESTART_DURATION_FACTOR = 4;
-    
-    // The minimum amount of time between restarting services that we allow.
-    // That is, when multiple services are restarting, we won't allow each
-    // to restart less than this amount of time from the last one.
-    static final int SERVICE_MIN_RESTART_TIME_BETWEEN = 10*1000;
-
-    // Maximum amount of time for there to be no activity on a service before
-    // we consider it non-essential and allow its process to go on the
-    // LRU background list.
-    static final int MAX_SERVICE_INACTIVITY = 30*60*1000;
-    
     // How long we wait until we timeout on key dispatching.
     static final int KEY_DISPATCHING_TIMEOUT = 5*1000;
 
@@ -531,35 +506,7 @@
     final HashMap<String, ArrayList<Intent>> mStickyBroadcasts =
             new HashMap<String, ArrayList<Intent>>();
 
-    final ServiceMap mServiceMap = new ServiceMap();
-
-    /**
-     * All currently bound service connections.  Keys are the IBinder of
-     * the client's IServiceConnection.
-     */
-    final HashMap<IBinder, ArrayList<ConnectionRecord>> mServiceConnections
-            = new HashMap<IBinder, ArrayList<ConnectionRecord>>();
-
-    /**
-     * List of services that we have been asked to start,
-     * but haven't yet been able to.  It is used to hold start requests
-     * while waiting for their corresponding application thread to get
-     * going.
-     */
-    final ArrayList<ServiceRecord> mPendingServices
-            = new ArrayList<ServiceRecord>();
-
-    /**
-     * List of services that are scheduled to restart following a crash.
-     */
-    final ArrayList<ServiceRecord> mRestartingServices
-            = new ArrayList<ServiceRecord>();
-
-    /**
-     * List of services that are in the process of being stopped.
-     */
-    final ArrayList<ServiceRecord> mStoppingServices
-            = new ArrayList<ServiceRecord>();
+    final ActiveServices mServices;
 
     /**
      * Backup/restore process management
@@ -1014,10 +961,10 @@
                     mDidDexOpt = false;
                     Message nmsg = mHandler.obtainMessage(SERVICE_TIMEOUT_MSG);
                     nmsg.obj = msg.obj;
-                    mHandler.sendMessageDelayed(nmsg, SERVICE_TIMEOUT);
+                    mHandler.sendMessageDelayed(nmsg, ActiveServices.SERVICE_TIMEOUT);
                     return;
                 }
-                serviceTimeout((ProcessRecord)msg.obj);
+                mServices.serviceTimeout((ProcessRecord)msg.obj);
             } break;
             case UPDATE_TIME_ZONE: {
                 synchronized (ActivityManagerService.this) {
@@ -1288,7 +1235,8 @@
                             catPw.println();
                             dumpProcessesLocked(null, catPw, emptyArgs, 0, false, null);
                             catPw.println();
-                            dumpServicesLocked(null, catPw, emptyArgs, 0, false, false, null);
+                            mServices.dumpServicesLocked(null, catPw, emptyArgs, 0,
+                                    false, false, null);
                             catPw.println();
                             dumpActivitiesLocked(null, catPw, emptyArgs, 0, false, false, null);
                         }
@@ -1525,6 +1473,8 @@
         mBroadcastQueues[0] = mFgBroadcastQueue;
         mBroadcastQueues[1] = mBgBroadcastQueue;
 
+        mServices = new ActiveServices(this);
+
         File dataDir = Environment.getDataDirectory();
         File systemDir = new File(dataDir, "system");
         systemDir.mkdirs();
@@ -3758,27 +3708,11 @@
             }
         }
 
-        ArrayList<ServiceRecord> services = new ArrayList<ServiceRecord>();
-        for (ServiceRecord service : mServiceMap.getAllServices(userId)) {
-            if (service.packageName.equals(name)
-                    && (service.app == null || evenPersistent || !service.app.persistent)) {
-                if (!doit) {
-                    return true;
-                }
-                didSomething = true;
-                Slog.i(TAG, "  Force stopping service " + service);
-                if (service.app != null) {
-                    service.app.removed = true;
-                }
-                service.app = null;
-                service.isolatedProc = null;
-                services.add(service);
+        if (mServices.forceStopLocked(name, userId, evenPersistent, doit)) {
+            if (!doit) {
+                return true;
             }
-        }
-
-        N = services.size();
-        for (i=0; i<N; i++) {
-            bringDownServiceLocked(services.get(i), true);
+            didSomething = true;
         }
 
         ArrayList<ContentProviderRecord> providers = new ArrayList<ContentProviderRecord>();
@@ -3878,18 +3812,7 @@
             // Take care of any launching providers waiting for this process.
             checkAppInLaunchingProvidersLocked(app, true);
             // Take care of any services that are waiting for the process.
-            for (int i=0; i<mPendingServices.size(); i++) {
-                ServiceRecord sr = mPendingServices.get(i);
-                if ((app.uid == sr.appInfo.uid
-                        && app.processName.equals(sr.processName))
-                        || sr.isolatedProc == app) {
-                    Slog.w(TAG, "Forcing bringing down service: " + sr);
-                    sr.isolatedProc = null;
-                    mPendingServices.remove(i);
-                    i--;
-                    bringDownServiceLocked(sr, true);
-                }
-            }
+            mServices.processStartTimedOutLocked(app);
             EventLog.writeEvent(EventLogTags.AM_KILL, pid,
                     app.processName, app.setAdj, "start timeout");
             Process.killProcessQuiet(pid);
@@ -4089,24 +4012,10 @@
         }
 
         // Find any services that should be running in this process...
-        if (!badApp && mPendingServices.size() > 0) {
-            ServiceRecord sr = null;
+        if (!badApp) {
             try {
-                for (int i=0; i<mPendingServices.size(); i++) {
-                    sr = mPendingServices.get(i);
-                    if (app != sr.isolatedProc && (app.uid != sr.appInfo.uid
-                            || !processName.equals(sr.processName))) {
-                        continue;
-                    }
-
-                    mPendingServices.remove(i);
-                    i--;
-                    realStartServiceLocked(sr, app);
-                    didSomething = true;
-                }
+                didSomething |= mServices.attachApplicationLocked(app, processName);
             } catch (Exception e) {
-                Slog.w(TAG, "Exception in new application when starting service "
-                      + sr.shortName, e);
                 badApp = true;
             }
         }
@@ -5683,29 +5592,7 @@
         }
 
         // Find any running services associated with this app.
-        ArrayList<ServiceRecord> services = new ArrayList<ServiceRecord>();
-        for (ServiceRecord sr : mServiceMap.getAllServices(tr.userId)) {
-            if (sr.packageName.equals(component.getPackageName())) {
-                services.add(sr);
-            }
-        }
-
-        // Take care of any running services associated with the app.
-        for (int i=0; i<services.size(); i++) {
-            ServiceRecord sr = services.get(i);
-            if (sr.startRequested) {
-                if ((sr.serviceInfo.flags&ServiceInfo.FLAG_STOP_WITH_TASK) != 0) {
-                    Slog.i(TAG, "Stopping service " + sr.shortName + ": remove task");
-                    stopServiceLocked(sr);
-                } else {
-                    sr.pendingStarts.add(new ServiceRecord.StartItem(sr, true,
-                            sr.makeNextStartId(), baseIntent, null));
-                    if (sr.app != null && sr.app.thread != null) {
-                        sendServiceArgsLocked(sr, false);
-                    }
-                }
-            }
-        }
+        mServices.cleanUpRemovedTaskLocked(tr, component, baseIntent);
 
         if (killProcesses) {
             // Find any running processes associated with this app.
@@ -6049,15 +5936,26 @@
             Slog.v(TAG_MU, "generateApplicationProvidersLocked, app.info.uid = " + app.uid);
         int userId = app.userId;
         if (providers != null) {
-            final int N = providers.size();
+            int N = providers.size();
             for (int i=0; i<N; i++) {
                 ProviderInfo cpi =
                     (ProviderInfo)providers.get(i);
+                boolean singleton = isSingleton(cpi.processName, cpi.applicationInfo,
+                        cpi.name, cpi.flags);
+                if (singleton && UserId.getUserId(app.uid) != 0) {
+                    // This is a singleton provider, but a user besides the
+                    // default user is asking to initialize a process it runs
+                    // in...  well, no, it doesn't actually run in this process,
+                    // it runs in the process of the default user.  Get rid of it.
+                    providers.remove(i);
+                    N--;
+                    continue;
+                }
 
                 ComponentName comp = new ComponentName(cpi.packageName, cpi.name);
                 ContentProviderRecord cpr = mProviderMap.getProviderByClass(comp, userId);
                 if (cpr == null) {
-                    cpr = new ContentProviderRecord(this, cpi, app.info, comp);
+                    cpr = new ContentProviderRecord(this, cpi, app.info, comp, singleton);
                     mProviderMap.putProviderByClass(comp, cpr);
                 }
                 if (DEBUG_MU)
@@ -6290,6 +6188,7 @@
                 Binder.restoreCallingIdentity(origId);
             }
 
+            boolean singleton;
             if (!providerRunning) {
                 try {
                     cpi = AppGlobals.getPackageManager().
@@ -6300,7 +6199,9 @@
                 if (cpi == null) {
                     return null;
                 }
-                if (isSingleton(cpi.processName, cpi.applicationInfo)) {
+                singleton = isSingleton(cpi.processName, cpi.applicationInfo,
+                        cpi.name, cpi.flags); 
+                if (singleton) {
                     userId = 0;
                 }
                 cpi.applicationInfo = getAppInfoForUser(cpi.applicationInfo, userId);
@@ -6335,7 +6236,7 @@
                             return null;
                         }
                         ai = getAppInfoForUser(ai, userId);
-                        cpr = new ContentProviderRecord(this, cpi, ai, comp);
+                        cpr = new ContentProviderRecord(this, cpi, ai, comp, singleton);
                     } catch (RemoteException ex) {
                         // pm is in same process, this will never happen.
                     }
@@ -8717,7 +8618,7 @@
                     if (args.length > 2) System.arraycopy(args, opti, newArgs, 0,
                             args.length - opti);
                 }
-                if (!dumpService(fd, pw, name, newArgs, 0, dumpAll)) {
+                if (!mServices.dumpService(fd, pw, name, newArgs, 0, dumpAll)) {
                     pw.println("No services match: " + name);
                     pw.println("Use -h for help.");
                 }
@@ -8738,7 +8639,7 @@
                 }
             } else if ("services".equals(cmd) || "s".equals(cmd)) {
                 synchronized (this) {
-                    dumpServicesLocked(fd, pw, args, opti, true, dumpClient, null);
+                    mServices.dumpServicesLocked(fd, pw, args, opti, true, dumpClient, null);
                 }
             } else {
                 // Dumping a single activity?
@@ -8777,7 +8678,7 @@
             if (dumpAll) {
                 pw.println("-------------------------------------------------------------------------------");
             }
-            needSep = dumpServicesLocked(fd, pw, args, opti, dumpAll, dumpClient, dumpPackage);
+            needSep = mServices.dumpServicesLocked(fd, pw, args, opti, dumpAll, dumpClient, dumpPackage);
             if (needSep) {
                 pw.println(" ");
             }
@@ -9208,120 +9109,6 @@
 
     /**
      * There are three ways to call this:
-     *  - no service specified: dump all the services
-     *  - a flattened component name that matched an existing service was specified as the
-     *    first arg: dump that one service
-     *  - the first arg isn't the flattened component name of an existing service:
-     *    dump all services whose component contains the first arg as a substring
-     */
-    protected boolean dumpService(FileDescriptor fd, PrintWriter pw, String name, String[] args,
-            int opti, boolean dumpAll) {
-        ArrayList<ServiceRecord> services = new ArrayList<ServiceRecord>();
-
-        if ("all".equals(name)) {
-            synchronized (this) {
-                try {
-                    List<UserInfo> users = AppGlobals.getPackageManager().getUsers();
-                    for (UserInfo user : users) {
-                        for (ServiceRecord r1 : mServiceMap.getAllServices(user.id)) {
-                            services.add(r1);
-                        }
-                    }
-                } catch (RemoteException re) {
-                }
-            }
-        } else {
-            ComponentName componentName = name != null
-                    ? ComponentName.unflattenFromString(name) : null;
-            int objectId = 0;
-            if (componentName == null) {
-                // Not a '/' separated full component name; maybe an object ID?
-                try {
-                    objectId = Integer.parseInt(name, 16);
-                    name = null;
-                    componentName = null;
-                } catch (RuntimeException e) {
-                }
-            }
-
-            synchronized (this) {
-                try {
-                    List<UserInfo> users = AppGlobals.getPackageManager().getUsers();
-                    for (UserInfo user : users) {
-                        for (ServiceRecord r1 : mServiceMap.getAllServices(user.id)) {
-                            if (componentName != null) {
-                                if (r1.name.equals(componentName)) {
-                                    services.add(r1);
-                                }
-                            } else if (name != null) {
-                                if (r1.name.flattenToString().contains(name)) {
-                                    services.add(r1);
-                                }
-                            } else if (System.identityHashCode(r1) == objectId) {
-                                services.add(r1);
-                            }
-                        }
-                    }
-                } catch (RemoteException re) {
-                }
-            }
-        }
-
-        if (services.size() <= 0) {
-            return false;
-        }
-
-        boolean needSep = false;
-        for (int i=0; i<services.size(); i++) {
-            if (needSep) {
-                pw.println();
-            }
-            needSep = true;
-            dumpService("", fd, pw, services.get(i), args, dumpAll);
-        }
-        return true;
-    }
-
-    /**
-     * Invokes IApplicationThread.dumpService() on the thread of the specified service if
-     * there is a thread associated with the service.
-     */
-    private void dumpService(String prefix, FileDescriptor fd, PrintWriter pw,
-            final ServiceRecord r, String[] args, boolean dumpAll) {
-        String innerPrefix = prefix + "  ";
-        synchronized (this) {
-            pw.print(prefix); pw.print("SERVICE ");
-                    pw.print(r.shortName); pw.print(" ");
-                    pw.print(Integer.toHexString(System.identityHashCode(r)));
-                    pw.print(" pid=");
-                    if (r.app != null) pw.println(r.app.pid);
-                    else pw.println("(not running)");
-            if (dumpAll) {
-                r.dump(pw, innerPrefix);
-            }
-        }
-        if (r.app != null && r.app.thread != null) {
-            pw.print(prefix); pw.println("  Client:");
-            pw.flush();
-            try {
-                TransferPipe tp = new TransferPipe();
-                try {
-                    r.app.thread.dumpService(tp.getWriteFd().getFileDescriptor(), r, args);
-                    tp.setBufferPrefix(prefix + "    ");
-                    tp.go(fd);
-                } finally {
-                    tp.kill();
-                }
-            } catch (IOException e) {
-                pw.println(prefix + "    Failure while dumping the service: " + e);
-            } catch (RemoteException e) {
-                pw.println(prefix + "    Got a RemoteException while dumping the service");
-            }
-        }
-    }
-
-    /**
-     * There are three ways to call this:
      *  - no provider specified: dump all the providers
      *  - a flattened component name that matched an existing provider was specified as the
      *    first arg: dump that one provider
@@ -9602,199 +9389,6 @@
         return needSep;
     }
 
-    /**
-     * Prints a list of ServiceRecords (dumpsys activity services)
-     */
-    boolean dumpServicesLocked(FileDescriptor fd, PrintWriter pw, String[] args,
-            int opti, boolean dumpAll, boolean dumpClient, String dumpPackage) {
-        boolean needSep = false;
-
-        ItemMatcher matcher = new ItemMatcher();
-        matcher.build(args, opti);
-
-        pw.println("ACTIVITY MANAGER SERVICES (dumpsys activity services)");
-        try {
-            List<UserInfo> users = AppGlobals.getPackageManager().getUsers();
-            for (UserInfo user : users) {
-                if (mServiceMap.getAllServices(user.id).size() > 0) {
-                    boolean printed = false;
-                    long nowReal = SystemClock.elapsedRealtime();
-                    Iterator<ServiceRecord> it = mServiceMap.getAllServices(
-                            user.id).iterator();
-                    needSep = false;
-                    while (it.hasNext()) {
-                        ServiceRecord r = it.next();
-                        if (!matcher.match(r, r.name)) {
-                            continue;
-                        }
-                        if (dumpPackage != null && !dumpPackage.equals(r.appInfo.packageName)) {
-                            continue;
-                        }
-                        if (!printed) {
-                            pw.println("  Active services:");
-                            printed = true;
-                        }
-                        if (needSep) {
-                            pw.println();
-                        }
-                        pw.print("  * ");
-                        pw.println(r);
-                        if (dumpAll) {
-                            r.dump(pw, "    ");
-                            needSep = true;
-                        } else {
-                            pw.print("    app=");
-                            pw.println(r.app);
-                            pw.print("    created=");
-                            TimeUtils.formatDuration(r.createTime, nowReal, pw);
-                            pw.print(" started=");
-                            pw.print(r.startRequested);
-                            pw.print(" connections=");
-                            pw.println(r.connections.size());
-                            if (r.connections.size() > 0) {
-                                pw.println("    Connections:");
-                                for (ArrayList<ConnectionRecord> clist : r.connections.values()) {
-                                    for (int i = 0; i < clist.size(); i++) {
-                                        ConnectionRecord conn = clist.get(i);
-                                        pw.print("      ");
-                                        pw.print(conn.binding.intent.intent.getIntent()
-                                                .toShortString(false, false, false, false));
-                                        pw.print(" -> ");
-                                        ProcessRecord proc = conn.binding.client;
-                                        pw.println(proc != null ? proc.toShortString() : "null");
-                                    }
-                                }
-                            }
-                        }
-                        if (dumpClient && r.app != null && r.app.thread != null) {
-                            pw.println("    Client:");
-                            pw.flush();
-                            try {
-                                TransferPipe tp = new TransferPipe();
-                                try {
-                                    r.app.thread.dumpService(tp.getWriteFd().getFileDescriptor(),
-                                            r, args);
-                                    tp.setBufferPrefix("      ");
-                                    // Short timeout, since blocking here can
-                                    // deadlock with the application.
-                                    tp.go(fd, 2000);
-                                } finally {
-                                    tp.kill();
-                                }
-                            } catch (IOException e) {
-                                pw.println("      Failure while dumping the service: " + e);
-                            } catch (RemoteException e) {
-                                pw.println("      Got a RemoteException while dumping the service");
-                            }
-                            needSep = true;
-                        }
-                    }
-                    needSep = printed;
-                }
-            }
-        } catch (RemoteException re) {
-
-        }
-
-        if (mPendingServices.size() > 0) {
-            boolean printed = false;
-            for (int i=0; i<mPendingServices.size(); i++) {
-                ServiceRecord r = mPendingServices.get(i);
-                if (!matcher.match(r, r.name)) {
-                    continue;
-                }
-                if (dumpPackage != null && !dumpPackage.equals(r.appInfo.packageName)) {
-                    continue;
-                }
-                if (!printed) {
-                    if (needSep) pw.println(" ");
-                    needSep = true;
-                    pw.println("  Pending services:");
-                    printed = true;
-                }
-                pw.print("  * Pending "); pw.println(r);
-                r.dump(pw, "    ");
-            }
-            needSep = true;
-        }
-
-        if (mRestartingServices.size() > 0) {
-            boolean printed = false;
-            for (int i=0; i<mRestartingServices.size(); i++) {
-                ServiceRecord r = mRestartingServices.get(i);
-                if (!matcher.match(r, r.name)) {
-                    continue;
-                }
-                if (dumpPackage != null && !dumpPackage.equals(r.appInfo.packageName)) {
-                    continue;
-                }
-                if (!printed) {
-                    if (needSep) pw.println(" ");
-                    needSep = true;
-                    pw.println("  Restarting services:");
-                    printed = true;
-                }
-                pw.print("  * Restarting "); pw.println(r);
-                r.dump(pw, "    ");
-            }
-            needSep = true;
-        }
-
-        if (mStoppingServices.size() > 0) {
-            boolean printed = false;
-            for (int i=0; i<mStoppingServices.size(); i++) {
-                ServiceRecord r = mStoppingServices.get(i);
-                if (!matcher.match(r, r.name)) {
-                    continue;
-                }
-                if (dumpPackage != null && !dumpPackage.equals(r.appInfo.packageName)) {
-                    continue;
-                }
-                if (!printed) {
-                    if (needSep) pw.println(" ");
-                    needSep = true;
-                    pw.println("  Stopping services:");
-                    printed = true;
-                }
-                pw.print("  * Stopping "); pw.println(r);
-                r.dump(pw, "    ");
-            }
-            needSep = true;
-        }
-
-        if (dumpAll) {
-            if (mServiceConnections.size() > 0) {
-                boolean printed = false;
-                Iterator<ArrayList<ConnectionRecord>> it
-                        = mServiceConnections.values().iterator();
-                while (it.hasNext()) {
-                    ArrayList<ConnectionRecord> r = it.next();
-                    for (int i=0; i<r.size(); i++) {
-                        ConnectionRecord cr = r.get(i);
-                        if (!matcher.match(cr.binding.service, cr.binding.service.name)) {
-                            continue;
-                        }
-                        if (dumpPackage != null && (cr.binding.client == null
-                                || !dumpPackage.equals(cr.binding.client.info.packageName))) {
-                            continue;
-                        }
-                        if (!printed) {
-                            if (needSep) pw.println(" ");
-                            needSep = true;
-                            pw.println("  Connection bindings to services:");
-                            printed = true;
-                        }
-                        pw.print("  * "); pw.println(cr);
-                        cr.dump(pw, "    ");
-                    }
-                }
-                needSep = true;
-            }
-        }
-        
-        return needSep;
-    }
-
     boolean dumpProvidersLocked(FileDescriptor fd, PrintWriter pw, String[] args,
             int opti, boolean dumpAll, String dumpPackage) {
         boolean needSep = true;
@@ -10588,125 +10182,6 @@
         return false;
     }
 
-    private final void killServicesLocked(ProcessRecord app,
-            boolean allowRestart) {
-        // Report disconnected services.
-        if (false) {
-            // XXX we are letting the client link to the service for
-            // death notifications.
-            if (app.services.size() > 0) {
-                Iterator<ServiceRecord> it = app.services.iterator();
-                while (it.hasNext()) {
-                    ServiceRecord r = it.next();
-                    if (r.connections.size() > 0) {
-                        Iterator<ArrayList<ConnectionRecord>> jt
-                                = r.connections.values().iterator();
-                        while (jt.hasNext()) {
-                            ArrayList<ConnectionRecord> cl = jt.next();
-                            for (int i=0; i<cl.size(); i++) {
-                                ConnectionRecord c = cl.get(i);
-                                if (c.binding.client != app) {
-                                    try {
-                                        //c.conn.connected(r.className, null);
-                                    } catch (Exception e) {
-                                        // todo: this should be asynchronous!
-                                        Slog.w(TAG, "Exception thrown disconnected servce "
-                                              + r.shortName
-                                              + " from app " + app.processName, e);
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        // Clean up any connections this application has to other services.
-        if (app.connections.size() > 0) {
-            Iterator<ConnectionRecord> it = app.connections.iterator();
-            while (it.hasNext()) {
-                ConnectionRecord r = it.next();
-                removeConnectionLocked(r, app, null);
-            }
-        }
-        app.connections.clear();
-
-        if (app.services.size() != 0) {
-            // Any services running in the application need to be placed
-            // back in the pending list.
-            Iterator<ServiceRecord> it = app.services.iterator();
-            while (it.hasNext()) {
-                ServiceRecord sr = it.next();
-                synchronized (sr.stats.getBatteryStats()) {
-                    sr.stats.stopLaunchedLocked();
-                }
-                sr.app = null;
-                sr.isolatedProc = null;
-                sr.executeNesting = 0;
-                if (mStoppingServices.remove(sr)) {
-                    if (DEBUG_SERVICE) Slog.v(TAG, "killServices remove stopping " + sr);
-                }
-                
-                boolean hasClients = sr.bindings.size() > 0;
-                if (hasClients) {
-                    Iterator<IntentBindRecord> bindings
-                            = sr.bindings.values().iterator();
-                    while (bindings.hasNext()) {
-                        IntentBindRecord b = bindings.next();
-                        if (DEBUG_SERVICE) Slog.v(TAG, "Killing binding " + b
-                                + ": shouldUnbind=" + b.hasBound);
-                        b.binder = null;
-                        b.requested = b.received = b.hasBound = false;
-                    }
-                }
-
-                if (sr.crashCount >= 2 && (sr.serviceInfo.applicationInfo.flags
-                        &ApplicationInfo.FLAG_PERSISTENT) == 0) {
-                    Slog.w(TAG, "Service crashed " + sr.crashCount
-                            + " times, stopping: " + sr);
-                    EventLog.writeEvent(EventLogTags.AM_SERVICE_CRASHED_TOO_MUCH,
-                            sr.crashCount, sr.shortName, app.pid);
-                    bringDownServiceLocked(sr, true);
-                } else if (!allowRestart) {
-                    bringDownServiceLocked(sr, true);
-                } else {
-                    boolean canceled = scheduleServiceRestartLocked(sr, true);
-                    
-                    // Should the service remain running?  Note that in the
-                    // extreme case of so many attempts to deliver a command
-                    // that it failed we also will stop it here.
-                    if (sr.startRequested && (sr.stopIfKilled || canceled)) {
-                        if (sr.pendingStarts.size() == 0) {
-                            sr.startRequested = false;
-                            if (!hasClients) {
-                                // Whoops, no reason to restart!
-                                bringDownServiceLocked(sr, true);
-                            }
-                        }
-                    }
-                }
-            }
-
-            if (!allowRestart) {
-                app.services.clear();
-            }
-        }
-
-        // Make sure we have no more records on the stopping list.
-        int i = mStoppingServices.size();
-        while (i > 0) {
-            i--;
-            ServiceRecord sr = mStoppingServices.get(i);
-            if (sr.app == app) {
-                mStoppingServices.remove(i);
-                if (DEBUG_SERVICE) Slog.v(TAG, "killServices remove stopping " + sr);
-            }
-        }
-        
-        app.executingServices.clear();
-    }
-
     private final boolean removeDyingProviderLocked(ProcessRecord proc,
             ContentProviderRecord cpr, boolean always) {
         final boolean inLaunching = mLaunchingProviders.contains(cpr);
@@ -10804,7 +10279,7 @@
         app.hasShownUi = false;
         app.hasAboveClient = false;
 
-        killServicesLocked(app, allowRestart);
+        mServices.killServicesLocked(app, allowRestart);
 
         boolean restart = false;
 
@@ -10966,818 +10441,21 @@
     // SERVICES
     // =========================================================
 
-    ActivityManager.RunningServiceInfo makeRunningServiceInfoLocked(ServiceRecord r) {
-        ActivityManager.RunningServiceInfo info =
-            new ActivityManager.RunningServiceInfo();
-        info.service = r.name;
-        if (r.app != null) {
-            info.pid = r.app.pid;
-        }
-        info.uid = r.appInfo.uid;
-        info.process = r.processName;
-        info.foreground = r.isForeground;
-        info.activeSince = r.createTime;
-        info.started = r.startRequested;
-        info.clientCount = r.connections.size();
-        info.crashCount = r.crashCount;
-        info.lastActivityTime = r.lastActivity;
-        if (r.isForeground) {
-            info.flags |= ActivityManager.RunningServiceInfo.FLAG_FOREGROUND;
-        }
-        if (r.startRequested) {
-            info.flags |= ActivityManager.RunningServiceInfo.FLAG_STARTED;
-        }
-        if (r.app != null && r.app.pid == MY_PID) {
-            info.flags |= ActivityManager.RunningServiceInfo.FLAG_SYSTEM_PROCESS;
-        }
-        if (r.app != null && r.app.persistent) {
-            info.flags |= ActivityManager.RunningServiceInfo.FLAG_PERSISTENT_PROCESS;
-        }
-
-        for (ArrayList<ConnectionRecord> connl : r.connections.values()) {
-            for (int i=0; i<connl.size(); i++) {
-                ConnectionRecord conn = connl.get(i);
-                if (conn.clientLabel != 0) {
-                    info.clientPackage = conn.binding.client.info.packageName;
-                    info.clientLabel = conn.clientLabel;
-                    return info;
-                }
-            }
-        }
-        return info;
-    }
-    
     public List<ActivityManager.RunningServiceInfo> getServices(int maxNum,
             int flags) {
         enforceNotIsolatedCaller("getServices");
         synchronized (this) {
-            ArrayList<ActivityManager.RunningServiceInfo> res
-                    = new ArrayList<ActivityManager.RunningServiceInfo>();
-            
-            int userId = UserId.getUserId(Binder.getCallingUid());
-            if (mServiceMap.getAllServices(userId).size() > 0) {
-                Iterator<ServiceRecord> it
-                        = mServiceMap.getAllServices(userId).iterator();
-                while (it.hasNext() && res.size() < maxNum) {
-                    res.add(makeRunningServiceInfoLocked(it.next()));
-                }
-            }
-
-            for (int i=0; i<mRestartingServices.size() && res.size() < maxNum; i++) {
-                ServiceRecord r = mRestartingServices.get(i);
-                ActivityManager.RunningServiceInfo info =
-                        makeRunningServiceInfoLocked(r);
-                info.restarting = r.nextRestartTime;
-                res.add(info);
-            }
-            
-            return res;
+            return mServices.getRunningServiceInfoLocked(maxNum, flags);
         }
     }
 
     public PendingIntent getRunningServiceControlPanel(ComponentName name) {
         enforceNotIsolatedCaller("getRunningServiceControlPanel");
         synchronized (this) {
-            int userId = UserId.getUserId(Binder.getCallingUid());
-            ServiceRecord r = mServiceMap.getServiceByName(name, userId);
-            if (r != null) {
-                for (ArrayList<ConnectionRecord> conn : r.connections.values()) {
-                    for (int i=0; i<conn.size(); i++) {
-                        if (conn.get(i).clientIntent != null) {
-                            return conn.get(i).clientIntent;
-                        }
-                    }
-                }
-            }
+            return mServices.getRunningServiceControlPanelLocked(name);
         }
-        return null;
     }
     
-    private final ServiceRecord findServiceLocked(ComponentName name,
-            IBinder token) {
-        ServiceRecord r = mServiceMap.getServiceByName(name, Binder.getOrigCallingUser());
-        return r == token ? r : null;
-    }
-
-    private final class ServiceLookupResult {
-        final ServiceRecord record;
-        final String permission;
-
-        ServiceLookupResult(ServiceRecord _record, String _permission) {
-            record = _record;
-            permission = _permission;
-        }
-    };
-
-    private ServiceLookupResult findServiceLocked(Intent service,
-            String resolvedType, int userId) {
-        ServiceRecord r = null;
-        if (service.getComponent() != null) {
-            r = mServiceMap.getServiceByName(service.getComponent(), userId);
-        }
-        if (r == null) {
-            Intent.FilterComparison filter = new Intent.FilterComparison(service);
-            r = mServiceMap.getServiceByIntent(filter, userId);
-        }
-
-        if (r == null) {
-            try {
-                ResolveInfo rInfo =
-                    AppGlobals.getPackageManager().resolveService(
-                                service, resolvedType, 0, userId);
-                ServiceInfo sInfo =
-                    rInfo != null ? rInfo.serviceInfo : null;
-                if (sInfo == null) {
-                    return null;
-                }
-
-                ComponentName name = new ComponentName(
-                        sInfo.applicationInfo.packageName, sInfo.name);
-                r = mServiceMap.getServiceByName(name, Binder.getOrigCallingUser());
-            } catch (RemoteException ex) {
-                // pm is in same process, this will never happen.
-            }
-        }
-        if (r != null) {
-            int callingPid = Binder.getCallingPid();
-            int callingUid = Binder.getCallingUid();
-            if (checkComponentPermission(r.permission,
-                    callingPid, callingUid, r.appInfo.uid, r.exported)
-                    != PackageManager.PERMISSION_GRANTED) {
-                if (!r.exported) {
-                    Slog.w(TAG, "Permission Denial: Accessing service " + r.name
-                            + " from pid=" + callingPid
-                            + ", uid=" + callingUid
-                            + " that is not exported from uid " + r.appInfo.uid);
-                    return new ServiceLookupResult(null, "not exported from uid "
-                            + r.appInfo.uid);
-                }
-                Slog.w(TAG, "Permission Denial: Accessing service " + r.name
-                        + " from pid=" + callingPid
-                        + ", uid=" + callingUid
-                        + " requires " + r.permission);
-                return new ServiceLookupResult(null, r.permission);
-            }
-            return new ServiceLookupResult(r, null);
-        }
-        return null;
-    }
-
-    private class ServiceRestarter implements Runnable {
-        private ServiceRecord mService;
-
-        void setService(ServiceRecord service) {
-            mService = service;
-        }
-
-        public void run() {
-            synchronized(ActivityManagerService.this) {
-                performServiceRestartLocked(mService);
-            }
-        }
-    }
-
-    private ServiceLookupResult retrieveServiceLocked(Intent service,
-            String resolvedType, int callingPid, int callingUid, int userId) {
-        ServiceRecord r = null;
-        if (DEBUG_SERVICE) Slog.v(TAG, "retrieveServiceLocked: " + service
-                + " type=" + resolvedType + " callingUid=" + callingUid);
-
-        if (service.getComponent() != null) {
-            r = mServiceMap.getServiceByName(service.getComponent(), userId);
-        }
-        if (r == null) {
-            Intent.FilterComparison filter = new Intent.FilterComparison(service);
-            r = mServiceMap.getServiceByIntent(filter, userId);
-        }
-        if (r == null) {
-            try {
-                ResolveInfo rInfo =
-                    AppGlobals.getPackageManager().resolveService(
-                                service, resolvedType, STOCK_PM_FLAGS, userId);
-                ServiceInfo sInfo =
-                    rInfo != null ? rInfo.serviceInfo : null;
-                if (sInfo == null) {
-                    Slog.w(TAG, "Unable to start service " + service +
-                          ": not found");
-                    return null;
-                }
-                ComponentName name = new ComponentName(
-                        sInfo.applicationInfo.packageName, sInfo.name);
-                if (userId > 0) {
-                    if (isSingleton(sInfo.processName, sInfo.applicationInfo)
-                            || (sInfo.flags&ServiceInfo.FLAG_SINGLE_USER) != 0) {
-                        userId = 0;
-                    } else if ((sInfo.flags&ServiceInfo.FLAG_SINGLE_USER) != 0) {
-                        if (checkComponentPermission(
-                                android.Manifest.permission.INTERACT_ACROSS_USERS,
-                                callingPid, callingUid, -1, true)
-                                == PackageManager.PERMISSION_GRANTED) {
-                            userId = 0;
-                        } else {
-                            String msg = "Permission Denial: Service " + name
-                                    + " requests FLAG_SINGLE_USER, but app does not hold "
-                                    + android.Manifest.permission.INTERACT_ACROSS_USERS;
-                            Slog.w(TAG, msg);
-                            throw new SecurityException(msg);
-                        }
-                    }
-                    sInfo = new ServiceInfo(sInfo);
-                    sInfo.applicationInfo = getAppInfoForUser(sInfo.applicationInfo, userId);
-                }
-                r = mServiceMap.getServiceByName(name, userId);
-                if (r == null) {
-                    Intent.FilterComparison filter = new Intent.FilterComparison(
-                            service.cloneFilter());
-                    ServiceRestarter res = new ServiceRestarter();
-                    BatteryStatsImpl.Uid.Pkg.Serv ss = null;
-                    BatteryStatsImpl stats = mBatteryStatsService.getActiveStatistics();
-                    synchronized (stats) {
-                        ss = stats.getServiceStatsLocked(
-                                sInfo.applicationInfo.uid, sInfo.packageName,
-                                sInfo.name);
-                    }
-                    r = new ServiceRecord(this, ss, name, filter, sInfo, res);
-                    res.setService(r);
-                    mServiceMap.putServiceByName(name, UserId.getUserId(r.appInfo.uid), r);
-                    mServiceMap.putServiceByIntent(filter, UserId.getUserId(r.appInfo.uid), r);
-                    
-                    // Make sure this component isn't in the pending list.
-                    int N = mPendingServices.size();
-                    for (int i=0; i<N; i++) {
-                        ServiceRecord pr = mPendingServices.get(i);
-                        if (pr.name.equals(name)) {
-                            mPendingServices.remove(i);
-                            i--;
-                            N--;
-                        }
-                    }
-                }
-            } catch (RemoteException ex) {
-                // pm is in same process, this will never happen.
-            }
-        }
-        if (r != null) {
-            if (checkComponentPermission(r.permission,
-                    callingPid, callingUid, r.appInfo.uid, r.exported)
-                    != PackageManager.PERMISSION_GRANTED) {
-                if (!r.exported) {
-                    Slog.w(TAG, "Permission Denial: Accessing service " + r.name
-                            + " from pid=" + callingPid
-                            + ", uid=" + callingUid
-                            + " that is not exported from uid " + r.appInfo.uid);
-                    return new ServiceLookupResult(null, "not exported from uid "
-                            + r.appInfo.uid);
-                }
-                Slog.w(TAG, "Permission Denial: Accessing service " + r.name
-                        + " from pid=" + callingPid
-                        + ", uid=" + callingUid
-                        + " requires " + r.permission);
-                return new ServiceLookupResult(null, r.permission);
-            }
-            return new ServiceLookupResult(r, null);
-        }
-        return null;
-    }
-
-    private final void bumpServiceExecutingLocked(ServiceRecord r, String why) {
-        if (DEBUG_SERVICE) Log.v(TAG, ">>> EXECUTING "
-                + why + " of " + r + " in app " + r.app);
-        else if (DEBUG_SERVICE_EXECUTING) Log.v(TAG, ">>> EXECUTING "
-                + why + " of " + r.shortName);
-        long now = SystemClock.uptimeMillis();
-        if (r.executeNesting == 0 && r.app != null) {
-            if (r.app.executingServices.size() == 0) {
-                Message msg = mHandler.obtainMessage(SERVICE_TIMEOUT_MSG);
-                msg.obj = r.app;
-                mHandler.sendMessageAtTime(msg, now+SERVICE_TIMEOUT);
-            }
-            r.app.executingServices.add(r);
-        }
-        r.executeNesting++;
-        r.executingStart = now;
-    }
-
-    private final void sendServiceArgsLocked(ServiceRecord r,
-            boolean oomAdjusted) {
-        final int N = r.pendingStarts.size();
-        if (N == 0) {
-            return;
-        }
-
-        while (r.pendingStarts.size() > 0) {
-            try {
-                ServiceRecord.StartItem si = r.pendingStarts.remove(0);
-                if (DEBUG_SERVICE) Slog.v(TAG, "Sending arguments to: "
-                        + r + " " + r.intent + " args=" + si.intent);
-                if (si.intent == null && N > 1) {
-                    // If somehow we got a dummy null intent in the middle,
-                    // then skip it.  DO NOT skip a null intent when it is
-                    // the only one in the list -- this is to support the
-                    // onStartCommand(null) case.
-                    continue;
-                }
-                si.deliveredTime = SystemClock.uptimeMillis();
-                r.deliveredStarts.add(si);
-                si.deliveryCount++;
-                if (si.neededGrants != null) {
-                    grantUriPermissionUncheckedFromIntentLocked(si.neededGrants,
-                            si.getUriPermissionsLocked());
-                }
-                bumpServiceExecutingLocked(r, "start");
-                if (!oomAdjusted) {
-                    oomAdjusted = true;
-                    updateOomAdjLocked(r.app);
-                }
-                int flags = 0;
-                if (si.deliveryCount > 1) {
-                    flags |= Service.START_FLAG_RETRY;
-                }
-                if (si.doneExecutingCount > 0) {
-                    flags |= Service.START_FLAG_REDELIVERY;
-                }
-                r.app.thread.scheduleServiceArgs(r, si.taskRemoved, si.id, flags, si.intent);
-            } catch (RemoteException e) {
-                // Remote process gone...  we'll let the normal cleanup take
-                // care of this.
-                if (DEBUG_SERVICE) Slog.v(TAG, "Crashed while scheduling start: " + r);
-                break;
-            } catch (Exception e) {
-                Slog.w(TAG, "Unexpected exception", e);
-                break;
-            }
-        }
-    }
-
-    private final boolean requestServiceBindingLocked(ServiceRecord r,
-            IntentBindRecord i, boolean rebind) {
-        if (r.app == null || r.app.thread == null) {
-            // If service is not currently running, can't yet bind.
-            return false;
-        }
-        if ((!i.requested || rebind) && i.apps.size() > 0) {
-            try {
-                bumpServiceExecutingLocked(r, "bind");
-                r.app.thread.scheduleBindService(r, i.intent.getIntent(), rebind);
-                if (!rebind) {
-                    i.requested = true;
-                }
-                i.hasBound = true;
-                i.doRebind = false;
-            } catch (RemoteException e) {
-                if (DEBUG_SERVICE) Slog.v(TAG, "Crashed while binding " + r);
-                return false;
-            }
-        }
-        return true;
-    }
-
-    private final void requestServiceBindingsLocked(ServiceRecord r) {
-        Iterator<IntentBindRecord> bindings = r.bindings.values().iterator();
-        while (bindings.hasNext()) {
-            IntentBindRecord i = bindings.next();
-            if (!requestServiceBindingLocked(r, i, false)) {
-                break;
-            }
-        }
-    }
-
-    private final void realStartServiceLocked(ServiceRecord r,
-            ProcessRecord app) throws RemoteException {
-        if (app.thread == null) {
-            throw new RemoteException();
-        }
-        if (DEBUG_MU)
-            Slog.v(TAG_MU, "realStartServiceLocked, ServiceRecord.uid = " + r.appInfo.uid
-                    + ", ProcessRecord.uid = " + app.uid);
-        r.app = app;
-        r.restartTime = r.lastActivity = SystemClock.uptimeMillis();
-
-        app.services.add(r);
-        bumpServiceExecutingLocked(r, "create");
-        updateLruProcessLocked(app, true, true);
-
-        boolean created = false;
-        try {
-            mStringBuilder.setLength(0);
-            r.intent.getIntent().toShortString(mStringBuilder, true, false, true, false);
-            EventLog.writeEvent(EventLogTags.AM_CREATE_SERVICE,
-                    System.identityHashCode(r), r.shortName,
-                    mStringBuilder.toString(), r.app.pid);
-            synchronized (r.stats.getBatteryStats()) {
-                r.stats.startLaunchedLocked();
-            }
-            ensurePackageDexOpt(r.serviceInfo.packageName);
-            app.thread.scheduleCreateService(r, r.serviceInfo,
-                    compatibilityInfoForPackageLocked(r.serviceInfo.applicationInfo));
-            r.postNotification();
-            created = true;
-        } finally {
-            if (!created) {
-                app.services.remove(r);
-                scheduleServiceRestartLocked(r, false);
-            }
-        }
-
-        requestServiceBindingsLocked(r);
-        
-        // If the service is in the started state, and there are no
-        // pending arguments, then fake up one so its onStartCommand() will
-        // be called.
-        if (r.startRequested && r.callStart && r.pendingStarts.size() == 0) {
-            r.pendingStarts.add(new ServiceRecord.StartItem(r, false, r.makeNextStartId(),
-                    null, null));
-        }
-        
-        sendServiceArgsLocked(r, true);
-    }
-
-    private final boolean scheduleServiceRestartLocked(ServiceRecord r,
-            boolean allowCancel) {
-        boolean canceled = false;
-        
-        final long now = SystemClock.uptimeMillis();
-        long minDuration = SERVICE_RESTART_DURATION;
-        long resetTime = SERVICE_RESET_RUN_DURATION;
-        
-        if ((r.serviceInfo.applicationInfo.flags
-                &ApplicationInfo.FLAG_PERSISTENT) != 0) {
-            minDuration /= 4;
-        }
-        
-        // Any delivered but not yet finished starts should be put back
-        // on the pending list.
-        final int N = r.deliveredStarts.size();
-        if (N > 0) {
-            for (int i=N-1; i>=0; i--) {
-                ServiceRecord.StartItem si = r.deliveredStarts.get(i);
-                si.removeUriPermissionsLocked();
-                if (si.intent == null) {
-                    // We'll generate this again if needed.
-                } else if (!allowCancel || (si.deliveryCount < ServiceRecord.MAX_DELIVERY_COUNT
-                        && si.doneExecutingCount < ServiceRecord.MAX_DONE_EXECUTING_COUNT)) {
-                    r.pendingStarts.add(0, si);
-                    long dur = SystemClock.uptimeMillis() - si.deliveredTime;
-                    dur *= 2;
-                    if (minDuration < dur) minDuration = dur;
-                    if (resetTime < dur) resetTime = dur;
-                } else {
-                    Slog.w(TAG, "Canceling start item " + si.intent + " in service "
-                            + r.name);
-                    canceled = true;
-                }
-            }
-            r.deliveredStarts.clear();
-        }
-        
-        r.totalRestartCount++;
-        if (r.restartDelay == 0) {
-            r.restartCount++;
-            r.restartDelay = minDuration;
-        } else {
-            // If it has been a "reasonably long time" since the service
-            // was started, then reset our restart duration back to
-            // the beginning, so we don't infinitely increase the duration
-            // on a service that just occasionally gets killed (which is
-            // a normal case, due to process being killed to reclaim memory).
-            if (now > (r.restartTime+resetTime)) {
-                r.restartCount = 1;
-                r.restartDelay = minDuration;
-            } else {
-                if ((r.serviceInfo.applicationInfo.flags
-                        &ApplicationInfo.FLAG_PERSISTENT) != 0) {
-                    // Services in peristent processes will restart much more
-                    // quickly, since they are pretty important.  (Think SystemUI).
-                    r.restartDelay += minDuration/2;
-                } else {
-                    r.restartDelay *= SERVICE_RESTART_DURATION_FACTOR;
-                    if (r.restartDelay < minDuration) {
-                        r.restartDelay = minDuration;
-                    }
-                }
-            }
-        }
-        
-        r.nextRestartTime = now + r.restartDelay;
-        
-        // Make sure that we don't end up restarting a bunch of services
-        // all at the same time.
-        boolean repeat;
-        do {
-            repeat = false;
-            for (int i=mRestartingServices.size()-1; i>=0; i--) {
-                ServiceRecord r2 = mRestartingServices.get(i);
-                if (r2 != r && r.nextRestartTime
-                        >= (r2.nextRestartTime-SERVICE_MIN_RESTART_TIME_BETWEEN)
-                        && r.nextRestartTime
-                        < (r2.nextRestartTime+SERVICE_MIN_RESTART_TIME_BETWEEN)) {
-                    r.nextRestartTime = r2.nextRestartTime + SERVICE_MIN_RESTART_TIME_BETWEEN;
-                    r.restartDelay = r.nextRestartTime - now;
-                    repeat = true;
-                    break;
-                }
-            }
-        } while (repeat);
-        
-        if (!mRestartingServices.contains(r)) {
-            mRestartingServices.add(r);
-        }
-        
-        r.cancelNotification();
-        
-        mHandler.removeCallbacks(r.restarter);
-        mHandler.postAtTime(r.restarter, r.nextRestartTime);
-        r.nextRestartTime = SystemClock.uptimeMillis() + r.restartDelay;
-        Slog.w(TAG, "Scheduling restart of crashed service "
-                + r.shortName + " in " + r.restartDelay + "ms");
-        EventLog.writeEvent(EventLogTags.AM_SCHEDULE_SERVICE_RESTART,
-                r.shortName, r.restartDelay);
-
-        return canceled;
-    }
-
-    final void performServiceRestartLocked(ServiceRecord r) {
-        if (!mRestartingServices.contains(r)) {
-            return;
-        }
-        bringUpServiceLocked(r, r.intent.getIntent().getFlags(), true);
-    }
-
-    private final boolean unscheduleServiceRestartLocked(ServiceRecord r) {
-        if (r.restartDelay == 0) {
-            return false;
-        }
-        r.resetRestartCounter();
-        mRestartingServices.remove(r);
-        mHandler.removeCallbacks(r.restarter);
-        return true;
-    }
-
-    private final boolean bringUpServiceLocked(ServiceRecord r,
-            int intentFlags, boolean whileRestarting) {
-        //Slog.i(TAG, "Bring up service:");
-        //r.dump("  ");
-
-        if (r.app != null && r.app.thread != null) {
-            sendServiceArgsLocked(r, false);
-            return true;
-        }
-
-        if (!whileRestarting && r.restartDelay > 0) {
-            // If waiting for a restart, then do nothing.
-            return true;
-        }
-
-        if (DEBUG_SERVICE) Slog.v(TAG, "Bringing up " + r + " " + r.intent);
-
-        // We are now bringing the service up, so no longer in the
-        // restarting state.
-        mRestartingServices.remove(r);
-        
-        // Service is now being launched, its package can't be stopped.
-        try {
-            AppGlobals.getPackageManager().setPackageStoppedState(
-                    r.packageName, false, r.userId);
-        } catch (RemoteException e) {
-        } catch (IllegalArgumentException e) {
-            Slog.w(TAG, "Failed trying to unstop package "
-                    + r.packageName + ": " + e);
-        }
-
-        final boolean isolated = (r.serviceInfo.flags&ServiceInfo.FLAG_ISOLATED_PROCESS) != 0;
-        final String procName = r.processName;
-        ProcessRecord app;
-
-        if (!isolated) {
-            app = getProcessRecordLocked(procName, r.appInfo.uid);
-            if (DEBUG_MU)
-                Slog.v(TAG_MU, "bringUpServiceLocked: appInfo.uid=" + r.appInfo.uid + " app=" + app);
-            if (app != null && app.thread != null) {
-                try {
-                    app.addPackage(r.appInfo.packageName);
-                    realStartServiceLocked(r, app);
-                    return true;
-                } catch (RemoteException e) {
-                    Slog.w(TAG, "Exception when starting service " + r.shortName, e);
-                }
-
-                // If a dead object exception was thrown -- fall through to
-                // restart the application.
-            }
-        } else {
-            // If this service runs in an isolated process, then each time
-            // we call startProcessLocked() we will get a new isolated
-            // process, starting another process if we are currently waiting
-            // for a previous process to come up.  To deal with this, we store
-            // in the service any current isolated process it is running in or
-            // waiting to have come up.
-            app = r.isolatedProc;
-        }
-
-        // Not running -- get it started, and enqueue this service record
-        // to be executed when the app comes up.
-        if (app == null) {
-            if ((app=startProcessLocked(procName, r.appInfo, true, intentFlags,
-                    "service", r.name, false, isolated)) == null) {
-                Slog.w(TAG, "Unable to launch app "
-                        + r.appInfo.packageName + "/"
-                        + r.appInfo.uid + " for service "
-                        + r.intent.getIntent() + ": process is bad");
-                bringDownServiceLocked(r, true);
-                return false;
-            }
-            if (isolated) {
-                r.isolatedProc = app;
-            }
-        }
-
-        if (!mPendingServices.contains(r)) {
-            mPendingServices.add(r);
-        }
-        
-        return true;
-    }
-
-    private final void bringDownServiceLocked(ServiceRecord r, boolean force) {
-        //Slog.i(TAG, "Bring down service:");
-        //r.dump("  ");
-
-        // Does it still need to run?
-        if (!force && r.startRequested) {
-            return;
-        }
-        if (r.connections.size() > 0) {
-            if (!force) {
-                // XXX should probably keep a count of the number of auto-create
-                // connections directly in the service.
-                Iterator<ArrayList<ConnectionRecord>> it = r.connections.values().iterator();
-                while (it.hasNext()) {
-                    ArrayList<ConnectionRecord> cr = it.next();
-                    for (int i=0; i<cr.size(); i++) {
-                        if ((cr.get(i).flags&Context.BIND_AUTO_CREATE) != 0) {
-                            return;
-                        }
-                    }
-                }
-            }
-
-            // Report to all of the connections that the service is no longer
-            // available.
-            Iterator<ArrayList<ConnectionRecord>> it = r.connections.values().iterator();
-            while (it.hasNext()) {
-                ArrayList<ConnectionRecord> c = it.next();
-                for (int i=0; i<c.size(); i++) {
-                    ConnectionRecord cr = c.get(i);
-                    // There is still a connection to the service that is
-                    // being brought down.  Mark it as dead.
-                    cr.serviceDead = true;
-                    try {
-                        cr.conn.connected(r.name, null);
-                    } catch (Exception e) {
-                        Slog.w(TAG, "Failure disconnecting service " + r.name +
-                              " to connection " + c.get(i).conn.asBinder() +
-                              " (in " + c.get(i).binding.client.processName + ")", e);
-                    }
-                }
-            }
-        }
-
-        // Tell the service that it has been unbound.
-        if (r.bindings.size() > 0 && r.app != null && r.app.thread != null) {
-            Iterator<IntentBindRecord> it = r.bindings.values().iterator();
-            while (it.hasNext()) {
-                IntentBindRecord ibr = it.next();
-                if (DEBUG_SERVICE) Slog.v(TAG, "Bringing down binding " + ibr
-                        + ": hasBound=" + ibr.hasBound);
-                if (r.app != null && r.app.thread != null && ibr.hasBound) {
-                    try {
-                        bumpServiceExecutingLocked(r, "bring down unbind");
-                        updateOomAdjLocked(r.app);
-                        ibr.hasBound = false;
-                        r.app.thread.scheduleUnbindService(r,
-                                ibr.intent.getIntent());
-                    } catch (Exception e) {
-                        Slog.w(TAG, "Exception when unbinding service "
-                                + r.shortName, e);
-                        serviceDoneExecutingLocked(r, true);
-                    }
-                }
-            }
-        }
-
-        if (DEBUG_SERVICE) Slog.v(TAG, "Bringing down " + r + " " + r.intent);
-        EventLog.writeEvent(EventLogTags.AM_DESTROY_SERVICE,
-                System.identityHashCode(r), r.shortName,
-                (r.app != null) ? r.app.pid : -1);
-
-        mServiceMap.removeServiceByName(r.name, r.userId);
-        mServiceMap.removeServiceByIntent(r.intent, r.userId);
-        r.totalRestartCount = 0;
-        unscheduleServiceRestartLocked(r);
-
-        // Also make sure it is not on the pending list.
-        int N = mPendingServices.size();
-        for (int i=0; i<N; i++) {
-            if (mPendingServices.get(i) == r) {
-                mPendingServices.remove(i);
-                if (DEBUG_SERVICE) Slog.v(TAG, "Removed pending: " + r);
-                i--;
-                N--;
-            }
-        }
-
-        r.cancelNotification();
-        r.isForeground = false;
-        r.foregroundId = 0;
-        r.foregroundNoti = null;
-        
-        // Clear start entries.
-        r.clearDeliveredStartsLocked();
-        r.pendingStarts.clear();
-        
-        if (r.app != null) {
-            synchronized (r.stats.getBatteryStats()) {
-                r.stats.stopLaunchedLocked();
-            }
-            r.app.services.remove(r);
-            if (r.app.thread != null) {
-                try {
-                    bumpServiceExecutingLocked(r, "stop");
-                    mStoppingServices.add(r);
-                    updateOomAdjLocked(r.app);
-                    r.app.thread.scheduleStopService(r);
-                } catch (Exception e) {
-                    Slog.w(TAG, "Exception when stopping service "
-                            + r.shortName, e);
-                    serviceDoneExecutingLocked(r, true);
-                }
-                updateServiceForegroundLocked(r.app, false);
-            } else {
-                if (DEBUG_SERVICE) Slog.v(
-                    TAG, "Removed service that has no process: " + r);
-            }
-        } else {
-            if (DEBUG_SERVICE) Slog.v(
-                TAG, "Removed service that is not running: " + r);
-        }
-
-        if (r.bindings.size() > 0) {
-            r.bindings.clear();
-        }
-
-        if (r.restarter instanceof ServiceRestarter) {
-           ((ServiceRestarter)r.restarter).setService(null);
-        }
-    }
-
-    ComponentName startServiceLocked(IApplicationThread caller,
-            Intent service, String resolvedType,
-            int callingPid, int callingUid) {
-        synchronized(this) {
-            if (DEBUG_SERVICE) Slog.v(TAG, "startService: " + service
-                    + " type=" + resolvedType + " args=" + service.getExtras());
-
-            if (caller != null) {
-                final ProcessRecord callerApp = getRecordForAppLocked(caller);
-                if (callerApp == null) {
-                    throw new SecurityException(
-                            "Unable to find app for caller " + caller
-                            + " (pid=" + Binder.getCallingPid()
-                            + ") when starting service " + service);
-                }
-            }
-
-            ServiceLookupResult res =
-                retrieveServiceLocked(service, resolvedType,
-                        callingPid, callingUid, UserId.getUserId(callingUid));
-            if (res == null) {
-                return null;
-            }
-            if (res.record == null) {
-                return new ComponentName("!", res.permission != null
-                        ? res.permission : "private to package");
-            }
-            ServiceRecord r = res.record;
-            NeededUriGrants neededGrants = checkGrantUriPermissionFromIntentLocked(
-                    callingUid, r.packageName, service, service.getFlags(), null);
-            if (unscheduleServiceRestartLocked(r)) {
-                if (DEBUG_SERVICE) Slog.v(TAG, "START SERVICE WHILE RESTART PENDING: " + r);
-            }
-            r.startRequested = true;
-            r.callStart = false;
-            r.pendingStarts.add(new ServiceRecord.StartItem(r, false, r.makeNextStartId(),
-                    service, neededGrants));
-            r.lastActivity = SystemClock.uptimeMillis();
-            synchronized (r.stats.getBatteryStats()) {
-                r.stats.startRunningLocked();
-            }
-            if (!bringUpServiceLocked(r, service.getFlags(), false)) {
-                return new ComponentName("!", "Service process is bad");
-            }
-            return r.name;
-        }
-    }
-
     public ComponentName startService(IApplicationThread caller, Intent service,
             String resolvedType) {
         enforceNotIsolatedCaller("startService");
@@ -11792,7 +10470,7 @@
             final int callingPid = Binder.getCallingPid();
             final int callingUid = Binder.getCallingUid();
             final long origId = Binder.clearCallingIdentity();
-            ComponentName res = startServiceLocked(caller, service,
+            ComponentName res = mServices.startServiceLocked(caller, service,
                     resolvedType, callingPid, callingUid);
             Binder.restoreCallingIdentity(origId);
             return res;
@@ -11805,22 +10483,13 @@
             if (DEBUG_SERVICE)
                 Slog.v(TAG, "startServiceInPackage: " + service + " type=" + resolvedType);
             final long origId = Binder.clearCallingIdentity();
-            ComponentName res = startServiceLocked(null, service,
+            ComponentName res = mServices.startServiceLocked(null, service,
                     resolvedType, -1, uid);
             Binder.restoreCallingIdentity(origId);
             return res;
         }
     }
 
-    private void stopServiceLocked(ServiceRecord service) {
-        synchronized (service.stats.getBatteryStats()) {
-            service.stats.stopRunningLocked();
-        }
-        service.startRequested = false;
-        service.callStart = false;
-        bringDownServiceLocked(service, false);
-    }
-
     public int stopService(IApplicationThread caller, Intent service,
             String resolvedType) {
         enforceNotIsolatedCaller("stopService");
@@ -11830,35 +10499,8 @@
         }
 
         synchronized(this) {
-            if (DEBUG_SERVICE) Slog.v(TAG, "stopService: " + service
-                    + " type=" + resolvedType);
-
-            final ProcessRecord callerApp = getRecordForAppLocked(caller);
-            if (caller != null && callerApp == null) {
-                throw new SecurityException(
-                        "Unable to find app for caller " + caller
-                        + " (pid=" + Binder.getCallingPid()
-                        + ") when stopping service " + service);
-            }
-
-            // If this service is active, make sure it is stopped.
-            ServiceLookupResult r = findServiceLocked(service, resolvedType,
-                    callerApp == null ? UserId.getCallingUserId() : callerApp.userId);
-            if (r != null) {
-                if (r.record != null) {
-                    final long origId = Binder.clearCallingIdentity();
-                    try {
-                        stopServiceLocked(r.record);
-                    } finally {
-                        Binder.restoreCallingIdentity(origId);
-                    }
-                    return 1;
-                }
-                return -1;
-            }
+            return mServices.stopServiceLocked(caller, service, resolvedType);
         }
-
-        return 0;
     }
 
     public IBinder peekService(Intent service, String resolvedType) {
@@ -11867,149 +10509,51 @@
         if (service != null && service.hasFileDescriptors() == true) {
             throw new IllegalArgumentException("File descriptors passed in Intent");
         }
-
-        IBinder ret = null;
-
         synchronized(this) {
-            ServiceLookupResult r = findServiceLocked(service, resolvedType,
-                    UserId.getCallingUserId());
-            
-            if (r != null) {
-                // r.record is null if findServiceLocked() failed the caller permission check
-                if (r.record == null) {
-                    throw new SecurityException(
-                            "Permission Denial: Accessing service " + r.record.name
-                            + " from pid=" + Binder.getCallingPid()
-                            + ", uid=" + Binder.getCallingUid()
-                            + " requires " + r.permission);
-                }
-                IntentBindRecord ib = r.record.bindings.get(r.record.intent);
-                if (ib != null) {
-                    ret = ib.binder;
-                }
-            }
+            return mServices.peekServiceLocked(service, resolvedType);
         }
-
-        return ret;
     }
     
     public boolean stopServiceToken(ComponentName className, IBinder token,
             int startId) {
         synchronized(this) {
-            if (DEBUG_SERVICE) Slog.v(TAG, "stopServiceToken: " + className
-                    + " " + token + " startId=" + startId);
-            ServiceRecord r = findServiceLocked(className, token);
-            if (r != null) {
-                if (startId >= 0) {
-                    // Asked to only stop if done with all work.  Note that
-                    // to avoid leaks, we will take this as dropping all
-                    // start items up to and including this one.
-                    ServiceRecord.StartItem si = r.findDeliveredStart(startId, false);
-                    if (si != null) {
-                        while (r.deliveredStarts.size() > 0) {
-                            ServiceRecord.StartItem cur = r.deliveredStarts.remove(0);
-                            cur.removeUriPermissionsLocked();
-                            if (cur == si) {
-                                break;
-                            }
-                        }
-                    }
-                    
-                    if (r.getLastStartId() != startId) {
-                        return false;
-                    }
-                    
-                    if (r.deliveredStarts.size() > 0) {
-                        Slog.w(TAG, "stopServiceToken startId " + startId
-                                + " is last, but have " + r.deliveredStarts.size()
-                                + " remaining args");
-                    }
-                }
-                
-                synchronized (r.stats.getBatteryStats()) {
-                    r.stats.stopRunningLocked();
-                    r.startRequested = false;
-                    r.callStart = false;
-                }
-                final long origId = Binder.clearCallingIdentity();
-                bringDownServiceLocked(r, false);
-                Binder.restoreCallingIdentity(origId);
-                return true;
-            }
+            return mServices.stopServiceTokenLocked(className, token, startId);
         }
-        return false;
     }
 
     public void setServiceForeground(ComponentName className, IBinder token,
             int id, Notification notification, boolean removeNotification) {
-        final long origId = Binder.clearCallingIdentity();
-        try {
         synchronized(this) {
-            ServiceRecord r = findServiceLocked(className, token);
-            if (r != null) {
-                if (id != 0) {
-                    if (notification == null) {
-                        throw new IllegalArgumentException("null notification");
-                    }
-                    if (r.foregroundId != id) {
-                        r.cancelNotification();
-                        r.foregroundId = id;
-                    }
-                    notification.flags |= Notification.FLAG_FOREGROUND_SERVICE;
-                    r.foregroundNoti = notification;
-                    r.isForeground = true;
-                    r.postNotification();
-                    if (r.app != null) {
-                        updateServiceForegroundLocked(r.app, true);
-                    }
-                } else {
-                    if (r.isForeground) {
-                        r.isForeground = false;
-                        if (r.app != null) {
-                            updateLruProcessLocked(r.app, false, true);
-                            updateServiceForegroundLocked(r.app, true);
-                        }
-                    }
-                    if (removeNotification) {
-                        r.cancelNotification();
-                        r.foregroundId = 0;
-                        r.foregroundNoti = null;
-                    }
-                }
-            }
-        }
-        } finally {
-            Binder.restoreCallingIdentity(origId);
+            mServices.setServiceForegroundLocked(className, token, id, notification,
+                    removeNotification);
         }
     }
 
-    public void updateServiceForegroundLocked(ProcessRecord proc, boolean oomAdj) {
-        boolean anyForeground = false;
-        for (ServiceRecord sr : proc.services) {
-            if (sr.isForeground) {
-                anyForeground = true;
-                break;
-            }
-        }
-        if (anyForeground != proc.foregroundServices) {
-            proc.foregroundServices = anyForeground;
-            if (oomAdj) {
-                updateOomAdjLocked();
-            }
-        }
-    }
-
-    boolean isSingleton(String componentProcessName, ApplicationInfo aInfo) {
+    boolean isSingleton(String componentProcessName, ApplicationInfo aInfo,
+            String className, int flags) {
         boolean result = false;
         if (UserId.getAppId(aInfo.uid) >= Process.FIRST_APPLICATION_UID) {
-            result = false;
+            if ((flags&ServiceInfo.FLAG_SINGLE_USER) != 0) {
+                if (ActivityManager.checkUidPermission(
+                        android.Manifest.permission.INTERACT_ACROSS_USERS,
+                        aInfo.uid) != PackageManager.PERMISSION_GRANTED) {
+                    ComponentName comp = new ComponentName(aInfo.packageName, className);
+                    String msg = "Permission Denial: Component " + comp.flattenToShortString()
+                            + " requests FLAG_SINGLE_USER, but app does not hold "
+                            + android.Manifest.permission.INTERACT_ACROSS_USERS;
+                    Slog.w(TAG, msg);
+                    throw new SecurityException(msg);
+                }
+                result = true;
+            }
         } else if (componentProcessName == aInfo.packageName) {
             result = (aInfo.flags & ApplicationInfo.FLAG_PERSISTENT) != 0;
         } else if ("system".equals(componentProcessName)) {
             result = true;
         }
         if (DEBUG_MU) {
-            Slog.v(TAG, "isSingleton(" + componentProcessName + ", " + aInfo + ") = " + result);
+            Slog.v(TAG, "isSingleton(" + componentProcessName + ", " + aInfo
+                    + ", " + className + ", 0x" + Integer.toHexString(flags) + ") = " + result);
         }
         return result;
     }
@@ -12026,236 +10570,15 @@
         checkValidCaller(Binder.getCallingUid(), userId);
 
         synchronized(this) {
-            if (DEBUG_SERVICE) Slog.v(TAG, "bindService: " + service
-                    + " type=" + resolvedType + " conn=" + connection.asBinder()
-                    + " flags=0x" + Integer.toHexString(flags));
-            if (DEBUG_MU)
-                Slog.i(TAG_MU, "bindService uid=" + Binder.getCallingUid() + " origUid="
-                        + Binder.getOrigCallingUid());
-            final ProcessRecord callerApp = getRecordForAppLocked(caller);
-            if (callerApp == null) {
-                throw new SecurityException(
-                        "Unable to find app for caller " + caller
-                        + " (pid=" + Binder.getCallingPid()
-                        + ") when binding service " + service);
-            }
-
-            ActivityRecord activity = null;
-            if (token != null) {
-                activity = mMainStack.isInStackLocked(token);
-                if (activity == null) {
-                    Slog.w(TAG, "Binding with unknown activity: " + token);
-                    return 0;
-                }
-            }
-
-            int clientLabel = 0;
-            PendingIntent clientIntent = null;
-            
-            if (callerApp.info.uid == Process.SYSTEM_UID) {
-                // Hacky kind of thing -- allow system stuff to tell us
-                // what they are, so we can report this elsewhere for
-                // others to know why certain services are running.
-                try {
-                    clientIntent = (PendingIntent)service.getParcelableExtra(
-                            Intent.EXTRA_CLIENT_INTENT);
-                } catch (RuntimeException e) {
-                }
-                if (clientIntent != null) {
-                    clientLabel = service.getIntExtra(Intent.EXTRA_CLIENT_LABEL, 0);
-                    if (clientLabel != 0) {
-                        // There are no useful extras in the intent, trash them.
-                        // System code calling with this stuff just needs to know
-                        // this will happen.
-                        service = service.cloneFilter();
-                    }
-                }
-            }
-            
-            ServiceLookupResult res =
-                retrieveServiceLocked(service, resolvedType,
-                        Binder.getCallingPid(), Binder.getCallingUid(), userId);
-            if (res == null) {
-                return 0;
-            }
-            if (res.record == null) {
-                return -1;
-            }
-            if (isSingleton(res.record.processName, res.record.appInfo)) {
-                userId = 0;
-                res = retrieveServiceLocked(service, resolvedType, Binder.getCallingPid(),
-                        Binder.getCallingUid(), 0);
-            }
-            ServiceRecord s = res.record;
-
-            final long origId = Binder.clearCallingIdentity();
-
-            if (unscheduleServiceRestartLocked(s)) {
-                if (DEBUG_SERVICE) Slog.v(TAG, "BIND SERVICE WHILE RESTART PENDING: "
-                        + s);
-            }
-
-            AppBindRecord b = s.retrieveAppBindingLocked(service, callerApp);
-            ConnectionRecord c = new ConnectionRecord(b, activity,
-                    connection, flags, clientLabel, clientIntent);
-
-            IBinder binder = connection.asBinder();
-            ArrayList<ConnectionRecord> clist = s.connections.get(binder);
-            if (clist == null) {
-                clist = new ArrayList<ConnectionRecord>();
-                s.connections.put(binder, clist);
-            }
-            clist.add(c);
-            b.connections.add(c);
-            if (activity != null) {
-                if (activity.connections == null) {
-                    activity.connections = new HashSet<ConnectionRecord>();
-                }
-                activity.connections.add(c);
-            }
-            b.client.connections.add(c);
-            if ((c.flags&Context.BIND_ABOVE_CLIENT) != 0) {
-                b.client.hasAboveClient = true;
-            }
-            clist = mServiceConnections.get(binder);
-            if (clist == null) {
-                clist = new ArrayList<ConnectionRecord>();
-                mServiceConnections.put(binder, clist);
-            }
-            clist.add(c);
-
-            if ((flags&Context.BIND_AUTO_CREATE) != 0) {
-                s.lastActivity = SystemClock.uptimeMillis();
-                if (!bringUpServiceLocked(s, service.getFlags(), false)) {
-                    return 0;
-                }
-            }
-
-            if (s.app != null) {
-                // This could have made the service more important.
-                updateOomAdjLocked(s.app);
-            }
-
-            if (DEBUG_SERVICE) Slog.v(TAG, "Bind " + s + " with " + b
-                    + ": received=" + b.intent.received
-                    + " apps=" + b.intent.apps.size()
-                    + " doRebind=" + b.intent.doRebind);
-
-            if (s.app != null && b.intent.received) {
-                // Service is already running, so we can immediately
-                // publish the connection.
-                try {
-                    c.conn.connected(s.name, b.intent.binder);
-                } catch (Exception e) {
-                    Slog.w(TAG, "Failure sending service " + s.shortName
-                            + " to connection " + c.conn.asBinder()
-                            + " (in " + c.binding.client.processName + ")", e);
-                }
-
-                // If this is the first app connected back to this binding,
-                // and the service had previously asked to be told when
-                // rebound, then do so.
-                if (b.intent.apps.size() == 1 && b.intent.doRebind) {
-                    requestServiceBindingLocked(s, b.intent, true);
-                }
-            } else if (!b.intent.requested) {
-                requestServiceBindingLocked(s, b.intent, false);
-            }
-
-            Binder.restoreCallingIdentity(origId);
-        }
-
-        return 1;
-    }
-
-    void removeConnectionLocked(
-        ConnectionRecord c, ProcessRecord skipApp, ActivityRecord skipAct) {
-        IBinder binder = c.conn.asBinder();
-        AppBindRecord b = c.binding;
-        ServiceRecord s = b.service;
-        ArrayList<ConnectionRecord> clist = s.connections.get(binder);
-        if (clist != null) {
-            clist.remove(c);
-            if (clist.size() == 0) {
-                s.connections.remove(binder);
-            }
-        }
-        b.connections.remove(c);
-        if (c.activity != null && c.activity != skipAct) {
-            if (c.activity.connections != null) {
-                c.activity.connections.remove(c);
-            }
-        }
-        if (b.client != skipApp) {
-            b.client.connections.remove(c);
-            if ((c.flags&Context.BIND_ABOVE_CLIENT) != 0) {
-                b.client.updateHasAboveClientLocked();
-            }
-        }
-        clist = mServiceConnections.get(binder);
-        if (clist != null) {
-            clist.remove(c);
-            if (clist.size() == 0) {
-                mServiceConnections.remove(binder);
-            }
-        }
-
-        if (b.connections.size() == 0) {
-            b.intent.apps.remove(b.client);
-        }
-
-        if (!c.serviceDead) {
-            if (DEBUG_SERVICE) Slog.v(TAG, "Disconnecting binding " + b.intent
-                    + ": shouldUnbind=" + b.intent.hasBound);
-            if (s.app != null && s.app.thread != null && b.intent.apps.size() == 0
-                    && b.intent.hasBound) {
-                try {
-                    bumpServiceExecutingLocked(s, "unbind");
-                    updateOomAdjLocked(s.app);
-                    b.intent.hasBound = false;
-                    // Assume the client doesn't want to know about a rebind;
-                    // we will deal with that later if it asks for one.
-                    b.intent.doRebind = false;
-                    s.app.thread.scheduleUnbindService(s, b.intent.intent.getIntent());
-                } catch (Exception e) {
-                    Slog.w(TAG, "Exception when unbinding service " + s.shortName, e);
-                    serviceDoneExecutingLocked(s, true);
-                }
-            }
-    
-            if ((c.flags&Context.BIND_AUTO_CREATE) != 0) {
-                bringDownServiceLocked(s, false);
-            }
+            return mServices.bindServiceLocked(caller, token, service, resolvedType,
+                    connection, flags, userId);
         }
     }
 
     public boolean unbindService(IServiceConnection connection) {
         synchronized (this) {
-            IBinder binder = connection.asBinder();
-            if (DEBUG_SERVICE) Slog.v(TAG, "unbindService: conn=" + binder);
-            ArrayList<ConnectionRecord> clist = mServiceConnections.get(binder);
-            if (clist == null) {
-                Slog.w(TAG, "Unbind failed: could not find connection for "
-                      + connection.asBinder());
-                return false;
-            }
-
-            final long origId = Binder.clearCallingIdentity();
-
-            while (clist.size() > 0) {
-                ConnectionRecord r = clist.get(0);
-                removeConnectionLocked(r, null, null);
-
-                if (r.binding.service.app != null) {
-                    // This could have made the service less important.
-                    updateOomAdjLocked(r.binding.service.app);
-                }
-            }
-
-            Binder.restoreCallingIdentity(origId);
+            return mServices.unbindServiceLocked(connection);
         }
-
-        return true;
     }
 
     public void publishService(IBinder token, Intent intent, IBinder service) {
@@ -12268,53 +10591,7 @@
             if (!(token instanceof ServiceRecord)) {
                 throw new IllegalArgumentException("Invalid service token");
             }
-            ServiceRecord r = (ServiceRecord)token;
-
-            final long origId = Binder.clearCallingIdentity();
-
-            if (DEBUG_SERVICE) Slog.v(TAG, "PUBLISHING " + r
-                    + " " + intent + ": " + service);
-            if (r != null) {
-                Intent.FilterComparison filter
-                        = new Intent.FilterComparison(intent);
-                IntentBindRecord b = r.bindings.get(filter);
-                if (b != null && !b.received) {
-                    b.binder = service;
-                    b.requested = true;
-                    b.received = true;
-                    if (r.connections.size() > 0) {
-                        Iterator<ArrayList<ConnectionRecord>> it
-                                = r.connections.values().iterator();
-                        while (it.hasNext()) {
-                            ArrayList<ConnectionRecord> clist = it.next();
-                            for (int i=0; i<clist.size(); i++) {
-                                ConnectionRecord c = clist.get(i);
-                                if (!filter.equals(c.binding.intent.intent)) {
-                                    if (DEBUG_SERVICE) Slog.v(
-                                            TAG, "Not publishing to: " + c);
-                                    if (DEBUG_SERVICE) Slog.v(
-                                            TAG, "Bound intent: " + c.binding.intent.intent);
-                                    if (DEBUG_SERVICE) Slog.v(
-                                            TAG, "Published intent: " + intent);
-                                    continue;
-                                }
-                                if (DEBUG_SERVICE) Slog.v(TAG, "Publishing to: " + c);
-                                try {
-                                    c.conn.connected(r.name, service);
-                                } catch (Exception e) {
-                                    Slog.w(TAG, "Failure sending service " + r.name +
-                                          " to connection " + c.conn.asBinder() +
-                                          " (in " + c.binding.client.processName + ")", e);
-                                }
-                            }
-                        }
-                    }
-                }
-
-                serviceDoneExecutingLocked(r, mStoppingServices.contains(r));
-
-                Binder.restoreCallingIdentity(origId);
-            }
+            mServices.publishServiceLocked((ServiceRecord)token, intent, service);
         }
     }
 
@@ -12325,38 +10602,7 @@
         }
 
         synchronized(this) {
-            if (!(token instanceof ServiceRecord)) {
-                throw new IllegalArgumentException("Invalid service token");
-            }
-            ServiceRecord r = (ServiceRecord)token;
-
-            final long origId = Binder.clearCallingIdentity();
-
-            if (r != null) {
-                Intent.FilterComparison filter
-                        = new Intent.FilterComparison(intent);
-                IntentBindRecord b = r.bindings.get(filter);
-                if (DEBUG_SERVICE) Slog.v(TAG, "unbindFinished in " + r
-                        + " at " + b + ": apps="
-                        + (b != null ? b.apps.size() : 0));
-
-                boolean inStopping = mStoppingServices.contains(r);
-                if (b != null) {
-                    if (b.apps.size() > 0 && !inStopping) {
-                        // Applications have already bound since the last
-                        // unbind, so just rebind right here.
-                        requestServiceBindingLocked(r, b, true);
-                    } else {
-                        // Note to tell the service the next time there is
-                        // a new client.
-                        b.doRebind = true;
-                    }
-                }
-
-                serviceDoneExecutingLocked(r, inStopping);
-
-                Binder.restoreCallingIdentity(origId);
-            }
+            mServices.unbindFinishedLocked((ServiceRecord)token, intent, doRebind);
         }
     }
 
@@ -12365,137 +10611,7 @@
             if (!(token instanceof ServiceRecord)) {
                 throw new IllegalArgumentException("Invalid service token");
             }
-            ServiceRecord r = (ServiceRecord)token;
-            boolean inStopping = mStoppingServices.contains(token);
-            if (r != null) {
-                if (r != token) {
-                    Slog.w(TAG, "Done executing service " + r.name
-                          + " with incorrect token: given " + token
-                          + ", expected " + r);
-                    return;
-                }
-
-                if (type == 1) {
-                    // This is a call from a service start...  take care of
-                    // book-keeping.
-                    r.callStart = true;
-                    switch (res) {
-                        case Service.START_STICKY_COMPATIBILITY:
-                        case Service.START_STICKY: {
-                            // We are done with the associated start arguments.
-                            r.findDeliveredStart(startId, true);
-                            // Don't stop if killed.
-                            r.stopIfKilled = false;
-                            break;
-                        }
-                        case Service.START_NOT_STICKY: {
-                            // We are done with the associated start arguments.
-                            r.findDeliveredStart(startId, true);
-                            if (r.getLastStartId() == startId) {
-                                // There is no more work, and this service
-                                // doesn't want to hang around if killed.
-                                r.stopIfKilled = true;
-                            }
-                            break;
-                        }
-                        case Service.START_REDELIVER_INTENT: {
-                            // We'll keep this item until they explicitly
-                            // call stop for it, but keep track of the fact
-                            // that it was delivered.
-                            ServiceRecord.StartItem si = r.findDeliveredStart(startId, false);
-                            if (si != null) {
-                                si.deliveryCount = 0;
-                                si.doneExecutingCount++;
-                                // Don't stop if killed.
-                                r.stopIfKilled = true;
-                            }
-                            break;
-                        }
-                        case Service.START_TASK_REMOVED_COMPLETE: {
-                            // Special processing for onTaskRemoved().  Don't
-                            // impact normal onStartCommand() processing.
-                            r.findDeliveredStart(startId, true);
-                            break;
-                        }
-                        default:
-                            throw new IllegalArgumentException(
-                                    "Unknown service start result: " + res);
-                    }
-                    if (res == Service.START_STICKY_COMPATIBILITY) {
-                        r.callStart = false;
-                    }
-                }
-                if (DEBUG_MU)
-                    Slog.v(TAG_MU, "before serviceDontExecutingLocked, uid="
-                            + Binder.getOrigCallingUid());
-                final long origId = Binder.clearCallingIdentity();
-                serviceDoneExecutingLocked(r, inStopping);
-                Binder.restoreCallingIdentity(origId);
-            } else {
-                Slog.w(TAG, "Done executing unknown service from pid "
-                        + Binder.getCallingPid());
-            }
-        }
-    }
-
-    public void serviceDoneExecutingLocked(ServiceRecord r, boolean inStopping) {
-        if (DEBUG_SERVICE) Slog.v(TAG, "<<< DONE EXECUTING " + r
-                + ": nesting=" + r.executeNesting
-                + ", inStopping=" + inStopping + ", app=" + r.app);
-        else if (DEBUG_SERVICE_EXECUTING) Slog.v(TAG, "<<< DONE EXECUTING " + r.shortName);
-        r.executeNesting--;
-        if (r.executeNesting <= 0 && r.app != null) {
-            if (DEBUG_SERVICE) Slog.v(TAG,
-                    "Nesting at 0 of " + r.shortName);
-            r.app.executingServices.remove(r);
-            if (r.app.executingServices.size() == 0) {
-                if (DEBUG_SERVICE || DEBUG_SERVICE_EXECUTING) Slog.v(TAG,
-                        "No more executingServices of " + r.shortName);
-                mHandler.removeMessages(SERVICE_TIMEOUT_MSG, r.app);
-            }
-            if (inStopping) {
-                if (DEBUG_SERVICE) Slog.v(TAG,
-                        "doneExecuting remove stopping " + r);
-                mStoppingServices.remove(r);
-                r.bindings.clear();
-            }
-            updateOomAdjLocked(r.app);
-        }
-    }
-
-    void serviceTimeout(ProcessRecord proc) {
-        String anrMessage = null;
-        
-        synchronized(this) {
-            if (proc.executingServices.size() == 0 || proc.thread == null) {
-                return;
-            }
-            long maxTime = SystemClock.uptimeMillis() - SERVICE_TIMEOUT;
-            Iterator<ServiceRecord> it = proc.executingServices.iterator();
-            ServiceRecord timeout = null;
-            long nextTime = 0;
-            while (it.hasNext()) {
-                ServiceRecord sr = it.next();
-                if (sr.executingStart < maxTime) {
-                    timeout = sr;
-                    break;
-                }
-                if (sr.executingStart > nextTime) {
-                    nextTime = sr.executingStart;
-                }
-            }
-            if (timeout != null && mLruProcesses.contains(proc)) {
-                Slog.w(TAG, "Timeout executing service: " + timeout);
-                anrMessage = "Executing service " + timeout.shortName;
-            } else {
-                Message msg = mHandler.obtainMessage(SERVICE_TIMEOUT_MSG);
-                msg.obj = proc;
-                mHandler.sendMessageAtTime(msg, nextTime+SERVICE_TIMEOUT);
-            }
-        }
-        
-        if (anrMessage != null) {
-            appNotResponding(proc, null, null, anrMessage);
+            mServices.serviceDoneExecutingLocked((ServiceRecord)token, type, startId, res);
         }
     }
     
@@ -13043,30 +11159,15 @@
         List receivers = null;
         List<BroadcastFilter> registeredReceivers = null;
         try {
-            if (intent.getComponent() != null) {
-                // Broadcast is going to one specific receiver class...
-                ActivityInfo ai = AppGlobals.getPackageManager().
-                        getReceiverInfo(intent.getComponent(), STOCK_PM_FLAGS, userId);
-                if (ai != null) {
-                    receivers = new ArrayList();
-                    ResolveInfo ri = new ResolveInfo();
-                    if (isSingleton(ai.processName, ai.applicationInfo)) {
-                        ri.activityInfo = getActivityInfoForUser(ai, 0);
-                    } else {
-                        ri.activityInfo = getActivityInfoForUser(ai, userId);
-                    }
-                    receivers.add(ri);
-                }
-            } else {
-                // Need to resolve the intent to interested receivers...
-                if ((intent.getFlags()&Intent.FLAG_RECEIVER_REGISTERED_ONLY)
-                         == 0) {
-                    receivers =
-                        AppGlobals.getPackageManager().queryIntentReceivers(
-                                    intent, resolvedType, STOCK_PM_FLAGS, userId);
-                }
-                registeredReceivers = mReceiverResolver.queryIntent(intent, resolvedType, false,
-                        userId);
+            // Need to resolve the intent to interested receivers...
+            if ((intent.getFlags()&Intent.FLAG_RECEIVER_REGISTERED_ONLY)
+                     == 0) {
+                receivers = AppGlobals.getPackageManager().queryIntentReceivers(
+                        intent, resolvedType, STOCK_PM_FLAGS, userId);
+            }
+            if (intent.getComponent() == null) {
+                registeredReceivers = mReceiverResolver.queryIntent(intent,
+                        resolvedType, false, userId);
             }
         } catch (RemoteException ex) {
             // pm is in same process, this will never happen.
@@ -14043,7 +12144,7 @@
                             app.adjType = "started-bg-ui-services";
                         }
                     } else {
-                        if (now < (s.lastActivity+MAX_SERVICE_INACTIVITY)) {
+                        if (now < (s.lastActivity + ActiveServices.MAX_SERVICE_INACTIVITY)) {
                             // This service has seen some activity within
                             // recent memory, so we will keep its process ahead
                             // of the background processes.
@@ -14106,7 +12207,8 @@
                                         app.hidden = false;
                                         clientAdj = adj;
                                     } else {
-                                        if (now >= (s.lastActivity+MAX_SERVICE_INACTIVITY)) {
+                                        if (now >= (s.lastActivity
+                                                + ActiveServices.MAX_SERVICE_INACTIVITY)) {
                                             // This service has not seen activity within
                                             // recent memory, so allow it to drop to the
                                             // LRU list if there is no other reason to keep
@@ -14732,7 +12834,7 @@
         return resumedActivity;
     }
 
-    private final boolean updateOomAdjLocked(ProcessRecord app) {
+    final boolean updateOomAdjLocked(ProcessRecord app) {
         final ActivityRecord TOP_ACT = resumedAppLocked();
         final ProcessRecord TOP_APP = TOP_ACT != null ? TOP_ACT.app : null;
         int curAdj = app.curAdj;
@@ -15299,7 +13401,7 @@
         return UserId.getUid(userId, uid);
     }
 
-    private ApplicationInfo getAppInfoForUser(ApplicationInfo info, int userId) {
+    ApplicationInfo getAppInfoForUser(ApplicationInfo info, int userId) {
         if (info == null) return null;
         ApplicationInfo newInfo = new ApplicationInfo(info);
         newInfo.uid = applyUserId(info.uid, userId);
@@ -15318,86 +13420,4 @@
         info.applicationInfo = getAppInfoForUser(info.applicationInfo, userId);
         return info;
     }
-
-    static class ServiceMap {
-
-        private final SparseArray<HashMap<ComponentName, ServiceRecord>> mServicesByNamePerUser
-                = new SparseArray<HashMap<ComponentName, ServiceRecord>>();
-        private final SparseArray<HashMap<Intent.FilterComparison, ServiceRecord>>
-                mServicesByIntentPerUser = new SparseArray<
-                    HashMap<Intent.FilterComparison, ServiceRecord>>();
-
-        ServiceRecord getServiceByName(ComponentName name, int callingUser) {
-            // TODO: Deal with global services
-            if (DEBUG_MU)
-                Slog.v(TAG_MU, "getServiceByName(" + name + "), callingUser = " + callingUser);
-            return getServices(callingUser).get(name);
-        }
-
-        ServiceRecord getServiceByName(ComponentName name) {
-            return getServiceByName(name, -1);
-        }
-
-        ServiceRecord getServiceByIntent(Intent.FilterComparison filter, int callingUser) {
-            // TODO: Deal with global services
-            if (DEBUG_MU)
-                Slog.v(TAG_MU, "getServiceByIntent(" + filter + "), callingUser = " + callingUser);
-            return getServicesByIntent(callingUser).get(filter);
-        }
-
-        ServiceRecord getServiceByIntent(Intent.FilterComparison filter) {
-            return getServiceByIntent(filter, -1);
-        }
-
-        void putServiceByName(ComponentName name, int callingUser, ServiceRecord value) {
-            // TODO: Deal with global services
-            getServices(callingUser).put(name, value);
-        }
-
-        void putServiceByIntent(Intent.FilterComparison filter, int callingUser,
-                ServiceRecord value) {
-            // TODO: Deal with global services
-            getServicesByIntent(callingUser).put(filter, value);
-        }
-
-        void removeServiceByName(ComponentName name, int callingUser) {
-            // TODO: Deal with global services
-            ServiceRecord removed = getServices(callingUser).remove(name);
-            if (DEBUG_MU)
-                Slog.v(TAG, "removeServiceByName user=" + callingUser + " name=" + name
-                        + " removed=" + removed);
-        }
-
-        void removeServiceByIntent(Intent.FilterComparison filter, int callingUser) {
-            // TODO: Deal with global services
-            ServiceRecord removed = getServicesByIntent(callingUser).remove(filter);
-            if (DEBUG_MU)
-                Slog.v(TAG_MU, "removeServiceByIntent user=" + callingUser + " intent=" + filter
-                        + " removed=" + removed);
-        }
-
-        Collection<ServiceRecord> getAllServices(int callingUser) {
-            // TODO: Deal with global services
-            return getServices(callingUser).values();
-        }
-
-        private HashMap<ComponentName, ServiceRecord> getServices(int callingUser) {
-            HashMap map = mServicesByNamePerUser.get(callingUser);
-            if (map == null) {
-                map = new HashMap<ComponentName, ServiceRecord>();
-                mServicesByNamePerUser.put(callingUser, map);
-            }
-            return map;
-        }
-
-        private HashMap<Intent.FilterComparison, ServiceRecord> getServicesByIntent(
-                int callingUser) {
-            HashMap map = mServicesByIntentPerUser.get(callingUser);
-            if (map == null) {
-                map = new HashMap<Intent.FilterComparison, ServiceRecord>();
-                mServicesByIntentPerUser.put(callingUser, map);
-            }
-            return map;
-        }
-    }
 }
diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java
index a1ff9c4..196a259 100755
--- a/services/java/com/android/server/am/ActivityStack.java
+++ b/services/java/com/android/server/am/ActivityStack.java
@@ -3014,7 +3014,8 @@
         // Collect information about the target of the Intent.
         ActivityInfo aInfo = resolveActivity(intent, resolvedType, startFlags,
                 profileFile, profileFd, userId);
-        if (aInfo != null && mService.isSingleton(aInfo.processName, aInfo.applicationInfo)) {
+        if (aInfo != null && mService.isSingleton(aInfo.processName, aInfo.applicationInfo,
+                null, 0)) {
             userId = 0;
         }
         aInfo = mService.getActivityInfoForUser(aInfo, userId);
@@ -3902,7 +3903,7 @@
             Iterator<ConnectionRecord> it = r.connections.iterator();
             while (it.hasNext()) {
                 ConnectionRecord c = it.next();
-                mService.removeConnectionLocked(c, null, r);
+                mService.mServices.removeConnectionLocked(c, null, r);
             }
             r.connections = null;
         }
diff --git a/services/java/com/android/server/am/BroadcastQueue.java b/services/java/com/android/server/am/BroadcastQueue.java
index c6d46fc..76ddb96 100644
--- a/services/java/com/android/server/am/BroadcastQueue.java
+++ b/services/java/com/android/server/am/BroadcastQueue.java
@@ -20,12 +20,15 @@
 import java.io.PrintWriter;
 import java.util.ArrayList;
 
+import android.app.ActivityManager;
 import android.app.AppGlobals;
 import android.content.ComponentName;
 import android.content.IIntentReceiver;
 import android.content.Intent;
+import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
@@ -249,7 +252,7 @@
                 finishReceiverLocked(br, br.resultCode, br.resultData,
                         br.resultExtras, br.resultAbort, true);
                 scheduleBroadcastsLocked();
-                // We need to reset the state if we fails to start the receiver.
+                // We need to reset the state if we failed to start the receiver.
                 br.state = BroadcastRecord.IDLE;
                 throw new RuntimeException(e.getMessage());
             }
@@ -659,6 +662,9 @@
 
             ResolveInfo info =
                 (ResolveInfo)nextReceiver;
+            ComponentName component = new ComponentName(
+                    info.activityInfo.applicationInfo.packageName,
+                    info.activityInfo.name);
 
             boolean skip = false;
             if (r.onlySendToCaller) {
@@ -667,6 +673,7 @@
                             + r.intent.toString()
                             + " from " + r.callerPackage + " (pid="
                             + r.callingPid + ", uid=" + r.callingUid + ")"
+                            + " to " + component.flattenToShortString()
                             + " not allowed to go to different app "
                             + info.activityInfo.applicationInfo.uid);
                     skip = true;
@@ -682,16 +689,14 @@
                             + " from " + r.callerPackage + " (pid=" + r.callingPid
                             + ", uid=" + r.callingUid + ")"
                             + " is not exported from uid " + info.activityInfo.applicationInfo.uid
-                            + " due to receiver " + info.activityInfo.packageName
-                            + "/" + info.activityInfo.name);
+                            + " due to receiver " + component.flattenToShortString());
                 } else {
                     Slog.w(TAG, "Permission Denial: broadcasting "
                             + r.intent.toString()
                             + " from " + r.callerPackage + " (pid=" + r.callingPid
                             + ", uid=" + r.callingUid + ")"
                             + " requires " + info.activityInfo.permission
-                            + " due to receiver " + info.activityInfo.packageName
-                            + "/" + info.activityInfo.name);
+                            + " due to receiver " + component.flattenToShortString());
                 }
                 skip = true;
             }
@@ -707,13 +712,33 @@
                 if (perm != PackageManager.PERMISSION_GRANTED) {
                     Slog.w(TAG, "Permission Denial: receiving "
                             + r.intent + " to "
-                            + info.activityInfo.applicationInfo.packageName
+                            + component.flattenToShortString()
                             + " requires " + r.requiredPermission
                             + " due to sender " + r.callerPackage
                             + " (uid " + r.callingUid + ")");
                     skip = true;
                 }
             }
+            boolean isSingleton = false;
+            try {
+                isSingleton = mService.isSingleton(info.activityInfo.processName,
+                        info.activityInfo.applicationInfo,
+                        info.activityInfo.name, info.activityInfo.flags);
+            } catch (SecurityException e) {
+                Slog.w(TAG, e.getMessage());
+                skip = true;
+            }
+            if ((info.activityInfo.flags&ActivityInfo.FLAG_SINGLE_USER) != 0) {
+                if (ActivityManager.checkUidPermission(
+                        android.Manifest.permission.INTERACT_ACROSS_USERS,
+                        info.activityInfo.applicationInfo.uid)
+                                != PackageManager.PERMISSION_GRANTED) {
+                    Slog.w(TAG, "Permission Denial: Receiver " + component.flattenToShortString()
+                            + " requests FLAG_SINGLE_USER, but app does not hold "
+                            + android.Manifest.permission.INTERACT_ACROSS_USERS);
+                    skip = true;
+                }
+            }
             if (r.curApp != null && r.curApp.crashing) {
                 // If the target process is crashing, just skip it.
                 if (DEBUG_BROADCAST)  Slog.v(TAG,
@@ -736,14 +761,9 @@
 
             r.state = BroadcastRecord.APP_RECEIVE;
             String targetProcess = info.activityInfo.processName;
-            r.curComponent = new ComponentName(
-                    info.activityInfo.applicationInfo.packageName,
-                    info.activityInfo.name);
-            if (r.callingUid != Process.SYSTEM_UID) {
-                boolean isSingleton = mService.isSingleton(info.activityInfo.processName,
-                        info.activityInfo.applicationInfo);
-                int targetUserId = isSingleton ? 0 : UserId.getUserId(r.callingUid);
-                info.activityInfo = mService.getActivityInfoForUser(info.activityInfo,targetUserId);
+            r.curComponent = component;
+            if (r.callingUid != Process.SYSTEM_UID && isSingleton) {
+                info.activityInfo = mService.getActivityInfoForUser(info.activityInfo, 0);
             }
             r.curReceiver = info.activityInfo;
             if (DEBUG_MU && r.callingUid > UserId.PER_USER_RANGE) {
diff --git a/services/java/com/android/server/am/ContentProviderRecord.java b/services/java/com/android/server/am/ContentProviderRecord.java
index fb21b06..c80d63a 100644
--- a/services/java/com/android/server/am/ContentProviderRecord.java
+++ b/services/java/com/android/server/am/ContentProviderRecord.java
@@ -38,6 +38,7 @@
     final int uid;
     final ApplicationInfo appInfo;
     final ComponentName name;
+    final boolean singleton;
     public IContentProvider provider;
     public boolean noReleaseNeeded;
     // All attached clients
@@ -54,12 +55,13 @@
     String shortStringName;
 
     public ContentProviderRecord(ActivityManagerService _service, ProviderInfo _info,
-            ApplicationInfo ai, ComponentName _name) {
+            ApplicationInfo ai, ComponentName _name, boolean _singleton) {
         service = _service;
         info = _info;
         uid = ai.uid;
         appInfo = ai;
         name = _name;
+        singleton = _singleton;
         noReleaseNeeded = uid == 0 || uid == Process.SYSTEM_UID;
     }
 
@@ -69,6 +71,7 @@
         uid = cpr.uid;
         appInfo = cpr.appInfo;
         name = cpr.name;
+        singleton = cpr.singleton;
         noReleaseNeeded = cpr.noReleaseNeeded;
     }
 
@@ -150,6 +153,9 @@
             pw.print(prefix); pw.print("uid="); pw.print(uid);
                     pw.print(" provider="); pw.println(provider);
         }
+        if (singleton) {
+            pw.print(prefix); pw.print("singleton="); pw.println(singleton);
+        }
         pw.print(prefix); pw.print("authority="); pw.println(info.authority);
         if (full) {
             if (info.isSyncable || info.multiprocess || info.initOrder != 0) {
diff --git a/services/java/com/android/server/am/ProviderMap.java b/services/java/com/android/server/am/ProviderMap.java
index d148ec3..f4d0f9b 100644
--- a/services/java/com/android/server/am/ProviderMap.java
+++ b/services/java/com/android/server/am/ProviderMap.java
@@ -44,9 +44,9 @@
 
     private static final boolean DBG = false;
 
-    private final HashMap<String, ContentProviderRecord> mGlobalByName
+    private final HashMap<String, ContentProviderRecord> mSingletonByName
             = new HashMap<String, ContentProviderRecord>();
-    private final HashMap<ComponentName, ContentProviderRecord> mGlobalByClass
+    private final HashMap<ComponentName, ContentProviderRecord> mSingletonByClass
             = new HashMap<ComponentName, ContentProviderRecord>();
 
     private final SparseArray<HashMap<String, ContentProviderRecord>> mProvidersByNamePerUser
@@ -63,7 +63,7 @@
             Slog.i(TAG, "getProviderByName: " + name + " , callingUid = " + Binder.getCallingUid());
         }
         // Try to find it in the global list
-        ContentProviderRecord record = mGlobalByName.get(name);
+        ContentProviderRecord record = mSingletonByName.get(name);
         if (record != null) {
             return record;
         }
@@ -81,7 +81,7 @@
             Slog.i(TAG, "getProviderByClass: " + name + ", callingUid = " + Binder.getCallingUid());
         }
         // Try to find it in the global list
-        ContentProviderRecord record = mGlobalByClass.get(name);
+        ContentProviderRecord record = mSingletonByClass.get(name);
         if (record != null) {
             return record;
         }
@@ -95,8 +95,8 @@
             Slog.i(TAG, "putProviderByName: " + name + " , callingUid = " + Binder.getCallingUid()
                 + ", record uid = " + record.appInfo.uid);
         }
-        if (record.appInfo.uid < Process.FIRST_APPLICATION_UID) {
-            mGlobalByName.put(name, record);
+        if (record.singleton) {
+            mSingletonByName.put(name, record);
         } else {
             final int userId = UserId.getUserId(record.appInfo.uid);
             getProvidersByName(userId).put(name, record);
@@ -108,8 +108,8 @@
             Slog.i(TAG, "putProviderByClass: " + name + " , callingUid = " + Binder.getCallingUid()
                 + ", record uid = " + record.appInfo.uid);
         }
-        if (record.appInfo.uid < Process.FIRST_APPLICATION_UID) {
-            mGlobalByClass.put(name, record);
+        if (record.singleton) {
+            mSingletonByClass.put(name, record);
         } else {
             final int userId = UserId.getUserId(record.appInfo.uid);
             getProvidersByClass(userId).put(name, record);
@@ -117,10 +117,10 @@
     }
 
     void removeProviderByName(String name, int optionalUserId) {
-        if (mGlobalByName.containsKey(name)) {
+        if (mSingletonByName.containsKey(name)) {
             if (DBG)
                 Slog.i(TAG, "Removing from globalByName name=" + name);
-            mGlobalByName.remove(name);
+            mSingletonByName.remove(name);
         } else {
             // TODO: Verify this works, i.e., the caller happens to be from the correct user
             if (DBG)
@@ -132,10 +132,10 @@
     }
 
     void removeProviderByClass(ComponentName name, int optionalUserId) {
-        if (mGlobalByClass.containsKey(name)) {
+        if (mSingletonByClass.containsKey(name)) {
             if (DBG)
                 Slog.i(TAG, "Removing from globalByClass name=" + name);
-            mGlobalByClass.remove(name);
+            mSingletonByClass.remove(name);
         } else {
             if (DBG)
                 Slog.i(TAG,
@@ -197,37 +197,30 @@
     }
 
     void dumpProvidersLocked(PrintWriter pw, boolean dumpAll) {
-        boolean needSep = false;
-        if (mGlobalByClass.size() > 0) {
-            if (needSep)
-                pw.println(" ");
-            pw.println("  Published content providers (by class):");
-            dumpProvidersByClassLocked(pw, dumpAll, mGlobalByClass);
+        if (mSingletonByClass.size() > 0) {
+            pw.println("");
+            pw.println("  Published single-user content providers (by class):");
+            dumpProvidersByClassLocked(pw, dumpAll, mSingletonByClass);
         }
 
-        if (mProvidersByClassPerUser.size() > 1) {
-            pw.println("");
-            for (int i = 0; i < mProvidersByClassPerUser.size(); i++) {
-                HashMap<ComponentName, ContentProviderRecord> map = mProvidersByClassPerUser.valueAt(i);
-                pw.println("  User " + mProvidersByClassPerUser.keyAt(i) + ":");
-                dumpProvidersByClassLocked(pw, dumpAll, map);
-                pw.println(" ");
-            }
-        } else if (mProvidersByClassPerUser.size() == 1) {
-            HashMap<ComponentName, ContentProviderRecord> map = mProvidersByClassPerUser.valueAt(0);
+        pw.println("");
+        for (int i = 0; i < mProvidersByClassPerUser.size(); i++) {
+            HashMap<ComponentName, ContentProviderRecord> map = mProvidersByClassPerUser.valueAt(i);
+            pw.println("  Published user " + mProvidersByClassPerUser.keyAt(i)
+                    + " content providers (by class):");
             dumpProvidersByClassLocked(pw, dumpAll, map);
+            pw.println(" ");
         }
-        needSep = true;
 
         if (dumpAll) {
-            pw.println(" ");
-            pw.println("  Authority to provider mappings:");
-            dumpProvidersByNameLocked(pw, mGlobalByName);
+            pw.println("");
+            pw.println("  Single-user authority to provider mappings:");
+            dumpProvidersByNameLocked(pw, mSingletonByName);
 
             for (int i = 0; i < mProvidersByNamePerUser.size(); i++) {
-                if (i > 0) {
-                    pw.println("  User " + mProvidersByNamePerUser.keyAt(i) + ":");
-                }
+                pw.println("");
+                pw.println("  User " + mProvidersByNamePerUser.keyAt(i)
+                        + " authority to provider mappings:");
                 dumpProvidersByNameLocked(pw, mProvidersByNamePerUser.valueAt(i));
             }
         }
@@ -328,6 +321,4 @@
             }
         }
     }
-
-
 }
diff --git a/services/java/com/android/server/display/DisplayManagerService.java b/services/java/com/android/server/display/DisplayManagerService.java
index b9c9ffd..468bf21 100644
--- a/services/java/com/android/server/display/DisplayManagerService.java
+++ b/services/java/com/android/server/display/DisplayManagerService.java
@@ -62,6 +62,9 @@
     /** All the DisplayInfos in the system indexed by deviceId */
     private final SparseArray<DisplayInfo> mDisplayInfos = new SparseArray<DisplayInfo>();
 
+    private final ArrayList<DisplayCallback> mCallbacks =
+            new ArrayList<DisplayManagerService.DisplayCallback>();
+
     public DisplayManagerService() {
         mHeadless = SystemProperties.get(SYSTEM_HEADLESS).equals("1");
         registerDefaultDisplayAdapter();
@@ -131,8 +134,20 @@
      * @param adapter The wrapper for information associated with the physical display.
      */
     public void registerDisplayAdapter(DisplayAdapter adapter) {
+
+        int displayId;
+        DisplayCallback[] callbacks;
+
         synchronized (mLock) {
-            int displayId = mDisplayIdSeq++;
+            displayId = mDisplayIdSeq;
+            do {
+                // Find the next unused displayId. (Pretend like it might ever wrap around).
+                mDisplayIdSeq++;
+                if (mDisplayIdSeq < 0) {
+                    mDisplayIdSeq = Display.DEFAULT_DISPLAY + 1;
+                }
+            } while (mDisplayInfos.get(mDisplayIdSeq) != null);
+
             adapter.setDisplayId(displayId);
 
             createDisplayInfoLocked(displayId, adapter);
@@ -142,6 +157,11 @@
             mLogicalToPhysicals.put(displayId, list);
 
             mDisplayAdapters.add(adapter);
+            callbacks = mCallbacks.toArray(new DisplayCallback[mCallbacks.size()]);
+        }
+
+        for (int i = callbacks.length - 1; i >= 0; i--) {
+            callbacks[i].displayAdded(displayId);
         }
 
         // TODO: Notify SurfaceFlinger of new addition.
@@ -188,7 +208,6 @@
                 list = new ArrayList<DisplayAdapter>();
                 mLogicalToPhysicals.put(displayId, list);
             }
-
             list.add(adapter);
             adapter.setDisplayId(displayId);
         }
@@ -219,6 +238,20 @@
         // TODO: Notify SurfaceFlinger of removal.
     }
 
+    public void registerDisplayCallback(final DisplayCallback callback) {
+        synchronized (mLock) {
+            if (!mCallbacks.contains(callback)) {
+                mCallbacks.add(callback);
+            }
+        }
+    }
+
+    public void unregisterDisplayCallback(final DisplayCallback callback) {
+        synchronized (mLock) {
+            mCallbacks.remove(callback);
+        }
+    }
+
     /**
      * Create a new logical DisplayInfo and fill it in with information from the physical display.
      * @param displayId The logical identifier.
@@ -288,11 +321,17 @@
 
         DisplayDeviceInfo info = new DisplayDeviceInfo();
         for (DisplayAdapter adapter : mDisplayAdapters) {
-            pw.println("Display for adapter " + adapter.getName());
+            pw.println("Display for adapter " + adapter.getName()
+                + " assigned to Display " + adapter.getDisplayId());
             DisplayDevice device = adapter.getDisplayDevice();
             pw.print("  ");
             device.getInfo(info);
             pw.println(info);
         }
     }
+
+    public interface DisplayCallback {
+        public void displayAdded(int displayId);
+        public void displayRemoved(int displayId);
+    }
 }
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index cbc3c51..180081b 100644
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -5335,21 +5335,13 @@
             final Uri packageURI, final IPackageInstallObserver observer, final int flags,
             final String installerPackageName) {
         installPackageWithVerification(packageURI, observer, flags, installerPackageName, null,
-                null, null, null, null);
-    }
-
-    public void installPackageWithOrigin(
-            Uri packageURI, IPackageInstallObserver observer, int flags,
-            String installerPackageName, Uri originatingURI, Uri referrer) {
-        installPackageWithVerification(packageURI, observer, flags, installerPackageName, null,
-                null, null, originatingURI, referrer);
+                null, null);
     }
 
     @Override
     public void installPackageWithVerification(Uri packageURI, IPackageInstallObserver observer,
             int flags, String installerPackageName, Uri verificationURI,
-            ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams,
-            Uri originatingURI, Uri referrer) {
+            ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams) {
         mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACKAGES, null);
 
         final int uid = Binder.getCallingUid();
@@ -5367,7 +5359,7 @@
 
         final Message msg = mHandler.obtainMessage(INIT_COPY);
         msg.obj = new InstallParams(packageURI, observer, filteredFlags, installerPackageName,
-                verificationURI, manifestDigest, encryptionParams, originatingURI, referrer);
+                verificationURI, manifestDigest, encryptionParams);
         mHandler.sendMessage(msg);
     }
 
@@ -5803,13 +5795,11 @@
         private int mRet;
         private File mTempPackage;
         final ContainerEncryptionParams encryptionParams;
-        final Uri originatingURI;
-        final Uri referrer;
 
         InstallParams(Uri packageURI,
                 IPackageInstallObserver observer, int flags,
                 String installerPackageName, Uri verificationURI, ManifestDigest manifestDigest,
-                ContainerEncryptionParams encryptionParams, Uri originatingURI, Uri referrer) {
+                ContainerEncryptionParams encryptionParams) {
             this.mPackageURI = packageURI;
             this.flags = flags;
             this.observer = observer;
@@ -5817,8 +5807,6 @@
             this.verificationURI = verificationURI;
             this.manifestDigest = manifestDigest;
             this.encryptionParams = encryptionParams;
-            this.originatingURI = originatingURI;
-            this.referrer = referrer;
         }
 
         private int installLocationPolicy(PackageInfoLite pkgLite, int flags) {
@@ -6014,14 +6002,6 @@
                                 verificationURI);
                     }
 
-                    if (originatingURI != null) {
-                        verification.putExtra(Intent.EXTRA_ORIGINATING_URI, originatingURI);
-                    }
-
-                    if (referrer != null) {
-                        verification.putExtra(Intent.EXTRA_REFERRER, referrer);
-                    }
-
                     final PackageVerificationState verificationState = new PackageVerificationState(
                             requiredUid, args);
 
diff --git a/services/java/com/android/server/power/PowerManagerService.java b/services/java/com/android/server/power/PowerManagerService.java
index 453c7a4..cb6db3c 100644
--- a/services/java/com/android/server/power/PowerManagerService.java
+++ b/services/java/com/android/server/power/PowerManagerService.java
@@ -424,6 +424,11 @@
                             forceUserActivityLocked();
                         }
                     }
+
+                    // stop the screensaver if we're now unplugged
+                    if (mPolicy != null) {
+                        mPolicy.stopScreenSaver();
+                    }
                 }
             }
         }
@@ -1826,7 +1831,7 @@
             final boolean stateChanged = mPowerState != newState;
 
             if (stateChanged && reason == WindowManagerPolicy.OFF_BECAUSE_OF_TIMEOUT) {
-                if (mPolicy != null && mPolicy.isScreenSaverEnabled()) {
+                if (mPolicy != null && mPolicy.isScreenSaverEnabled() && mIsPowered) {
                     if (DEBUG) {
                         Slog.d(TAG, "setPowerState: running screen saver instead of turning off screen");
                     }
@@ -1922,6 +1927,13 @@
                     } else {
                         err = 0;
                     }
+
+                    // stop the screensaver if user turned screen off
+                    if (stateChanged && reason == WindowManagerPolicy.OFF_BECAUSE_OF_USER) {
+                        if (mPolicy != null) {
+                            mPolicy.stopScreenSaver();
+                        }
+                    }
                 }
             } else if (stateChanged) {
                 // Screen on/off didn't change, but lights may have.
diff --git a/services/java/com/android/server/wm/DisplayContent.java b/services/java/com/android/server/wm/DisplayContent.java
index 2305c88..a8854cf 100644
--- a/services/java/com/android/server/wm/DisplayContent.java
+++ b/services/java/com/android/server/wm/DisplayContent.java
@@ -56,8 +56,10 @@
     final Object mDisplaySizeLock = new Object();
     int mInitialDisplayWidth = 0;
     int mInitialDisplayHeight = 0;
+    int mInitialDisplayDensity = 0;
     int mBaseDisplayWidth = 0;
     int mBaseDisplayHeight = 0;
+    int mBaseDisplayDensity = 0;
     final DisplayManagerService mDisplayManager;
     final DisplayInfo mDisplayInfo = new DisplayInfo();
 
@@ -82,16 +84,14 @@
     public void dump(PrintWriter pw) {
         pw.print("  Display: mDisplayId="); pw.println(mDisplayId);
         pw.print("  init="); pw.print(mInitialDisplayWidth); pw.print("x");
-        pw.print(mInitialDisplayHeight);
+        pw.print(mInitialDisplayHeight); pw.print(" "); pw.print(mInitialDisplayDensity);
+        pw.print("dpi");
         if (mInitialDisplayWidth != mBaseDisplayWidth
-                || mInitialDisplayHeight != mBaseDisplayHeight) {
+                || mInitialDisplayHeight != mBaseDisplayHeight
+                || mInitialDisplayDensity != mBaseDisplayDensity) {
             pw.print(" base=");
             pw.print(mBaseDisplayWidth); pw.print("x"); pw.print(mBaseDisplayHeight);
-        }
-        if (mInitialDisplayWidth != mDisplayInfo.logicalWidth
-                || mInitialDisplayHeight != mDisplayInfo.logicalHeight) {
-            pw.print(" init="); pw.print(mInitialDisplayWidth);
-            pw.print("x"); pw.print(mInitialDisplayHeight);
+            pw.print(" "); pw.print(mBaseDisplayDensity); pw.print("dpi");
         }
         pw.print(" cur=");
         pw.print(mDisplayInfo.logicalWidth);
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index e763a56..680ae4c0 100755
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -6568,6 +6568,7 @@
             displayInfo.rotation = mRotation;
             displayInfo.logicalWidth = dw;
             displayInfo.logicalHeight = dh;
+            displayInfo.logicalDensityDpi = displayContent.mBaseDisplayDensity;
             displayInfo.appWidth = appWidth;
             displayInfo.appHeight = appHeight;
             displayInfo.getLogicalMetrics(mRealDisplayMetrics, null);
@@ -6594,7 +6595,7 @@
             config.compatScreenWidthDp = (int)(config.screenWidthDp / mCompatibleScreenScale);
             config.compatScreenHeightDp = (int)(config.screenHeightDp / mCompatibleScreenScale);
             config.compatSmallestScreenWidthDp = computeCompatSmallestWidth(rotated, dm, dw, dh);
-            config.densityDpi = mDisplayMetrics.densityDpi;
+            config.densityDpi = displayContent.mBaseDisplayDensity;
 
             // Update the configuration based on available input devices, lid switch,
             // and platform configuration.
@@ -6902,8 +6903,8 @@
                     info.width, info.height);
             mInputManager.setDisplayOrientation(Display.DEFAULT_DISPLAY,
                     mDisplay.getRotation(), Surface.ROTATION_0);
-            mPolicy.setInitialDisplaySize(mDisplay,
-                    displayContent.mInitialDisplayWidth, displayContent.mInitialDisplayHeight);
+            mPolicy.setInitialDisplaySize(mDisplay, displayContent.mInitialDisplayWidth,
+                    displayContent.mInitialDisplayHeight, displayContent.mInitialDisplayDensity);
         }
     }
 
@@ -6917,8 +6918,10 @@
                 mDisplayManager.getDisplayInfo(displayId, displayInfo);
                 displayContent.mInitialDisplayWidth = displayInfo.logicalWidth;
                 displayContent.mInitialDisplayHeight = displayInfo.logicalHeight;
+                displayContent.mInitialDisplayDensity = displayInfo.logicalDensityDpi;
                 displayContent.mBaseDisplayWidth = displayContent.mInitialDisplayWidth;
                 displayContent.mBaseDisplayHeight = displayContent.mInitialDisplayHeight;
+                displayContent.mBaseDisplayDensity = displayContent.mInitialDisplayDensity;
             }
         }
 
@@ -6928,7 +6931,7 @@
         }
 
         synchronized (mWindowMap) {
-            readForcedDisplaySizeLocked(getDisplayContent(displayId));
+            readForcedDisplaySizeAndDensityLocked(getDisplayContent(displayId));
         }
     }
 
@@ -7590,24 +7593,49 @@
         }
     }
 
-    private void readForcedDisplaySizeLocked(final DisplayContent displayContent) {
-        final String str = Settings.Secure.getString(mContext.getContentResolver(),
+    private void readForcedDisplaySizeAndDensityLocked(final DisplayContent displayContent) {
+        boolean changed = false;
+        final String sizeStr = Settings.Secure.getString(mContext.getContentResolver(),
                 Settings.Secure.DISPLAY_SIZE_FORCED);
-        if (str == null || str.length() == 0) {
-            return;
+        if (sizeStr != null && sizeStr.length() > 0) {
+            final int pos = sizeStr.indexOf(',');
+            if (pos > 0 && sizeStr.lastIndexOf(',') == pos) {
+                int width, height;
+                try {
+                    width = Integer.parseInt(sizeStr.substring(0, pos));
+                    height = Integer.parseInt(sizeStr.substring(pos+1));
+                    synchronized(displayContent.mDisplaySizeLock) {
+                        if (displayContent.mBaseDisplayWidth != width
+                                || displayContent.mBaseDisplayHeight != height) {
+                            changed = true;
+                            Slog.i(TAG, "FORCED DISPLAY SIZE: " + width + "x" + height);
+                            displayContent.mBaseDisplayWidth = width;
+                            displayContent.mBaseDisplayHeight = height;
+                        }
+                    }
+                } catch (NumberFormatException ex) {
+                }
+            }
         }
-        final int pos = str.indexOf(',');
-        if (pos <= 0 || str.lastIndexOf(',') != pos) {
-            return;
+        final String densityStr = Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.DISPLAY_DENSITY_FORCED);
+        if (densityStr != null && densityStr.length() > 0) {
+            int density;
+            try {
+                density = Integer.parseInt(densityStr);
+                synchronized(displayContent.mDisplaySizeLock) {
+                    if (displayContent.mBaseDisplayDensity != density) {
+                        changed = true;
+                        Slog.i(TAG, "FORCED DISPLAY DENSITY: " + density);
+                        displayContent.mBaseDisplayDensity = density;
+                    }
+                }
+            } catch (NumberFormatException ex) {
+            }
         }
-        int width, height;
-        try {
-            width = Integer.parseInt(str.substring(0, pos));
-            height = Integer.parseInt(str.substring(pos+1));
-        } catch (NumberFormatException ex) {
-            return;
+        if (changed) {
+            reconfigureDisplayLocked(displayContent);
         }
-        setForcedDisplaySizeLocked(displayContent, width, height);
     }
 
     private void setForcedDisplaySizeLocked(DisplayContent displayContent, int width, int height) {
@@ -7617,8 +7645,49 @@
             displayContent.mBaseDisplayWidth = width;
             displayContent.mBaseDisplayHeight = height;
         }
+        reconfigureDisplayLocked(displayContent);
+    }
+
+    public void clearForcedDisplaySize(int displayId) {
+        synchronized(mWindowMap) {
+            final DisplayContent displayContent = getDisplayContent(displayId);
+            setForcedDisplaySizeLocked(displayContent, displayContent.mInitialDisplayWidth,
+                    displayContent.mInitialDisplayHeight);
+            Settings.Secure.putString(mContext.getContentResolver(),
+                    Settings.Secure.DISPLAY_SIZE_FORCED, "");
+        }
+    }
+
+    public void setForcedDisplayDensity(int displayId, int density) {
+        synchronized(mWindowMap) {
+            final DisplayContent displayContent = getDisplayContent(displayId);
+            setForcedDisplayDensityLocked(displayContent, density);
+            Settings.Secure.putString(mContext.getContentResolver(),
+                    Settings.Secure.DISPLAY_SIZE_FORCED, Integer.toString(density));
+        }
+    }
+
+    private void setForcedDisplayDensityLocked(DisplayContent displayContent, int density) {
+        Slog.i(TAG, "Using new display density: " + density);
+
+        synchronized(displayContent.mDisplaySizeLock) {
+            displayContent.mBaseDisplayDensity = density;
+        }
+        reconfigureDisplayLocked(displayContent);
+    }
+
+    public void clearForcedDisplayDensity(int displayId) {
+        synchronized(mWindowMap) {
+            final DisplayContent displayContent = getDisplayContent(displayId);
+            setForcedDisplayDensityLocked(displayContent, displayContent.mInitialDisplayDensity);
+            Settings.Secure.putString(mContext.getContentResolver(),
+                    Settings.Secure.DISPLAY_DENSITY_FORCED, "");
+        }
+    }
+
+    private void reconfigureDisplayLocked(DisplayContent displayContent) {
         mPolicy.setInitialDisplaySize(mDisplay, displayContent.mBaseDisplayWidth,
-                displayContent.mBaseDisplayHeight);
+                displayContent.mBaseDisplayHeight, displayContent.mBaseDisplayDensity);
 
         mLayoutNeeded = true;
 
@@ -7642,16 +7711,6 @@
         performLayoutAndPlaceSurfacesLocked();
     }
 
-    public void clearForcedDisplaySize(int displayId) {
-        synchronized(mWindowMap) {
-            final DisplayContent displayContent = getDisplayContent(displayId);
-            setForcedDisplaySizeLocked(displayContent, displayContent.mInitialDisplayWidth,
-                    displayContent.mInitialDisplayHeight);
-            Settings.Secure.putString(mContext.getContentResolver(),
-                    Settings.Secure.DISPLAY_SIZE_FORCED, "");
-        }
-    }
-
     public boolean hasSystemNavBar() {
         return mPolicy.hasSystemNavBar();
     }
@@ -8914,9 +8973,7 @@
                     if (DEBUG_ORIENTATION &&
                             winAnimator.mDrawState == WindowStateAnimator.DRAW_PENDING) Slog.i(
                             TAG, "Resizing " + win + " WITH DRAW PENDING");
-                    win.mClient.resized((int)winAnimator.mSurfaceW,
-                            (int)winAnimator.mSurfaceH,
-                            win.mLastContentInsets, win.mLastVisibleInsets,
+                    win.mClient.resized(win.mFrame, win.mLastContentInsets, win.mLastVisibleInsets,
                             winAnimator.mDrawState == WindowStateAnimator.DRAW_PENDING,
                             configChanged ? win.mConfiguration : null);
                     win.mContentInsetsChanged = false;
diff --git a/services/java/com/android/server/wm/WindowStateAnimator.java b/services/java/com/android/server/wm/WindowStateAnimator.java
index f1c69f2..d931426 100644
--- a/services/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/java/com/android/server/wm/WindowStateAnimator.java
@@ -474,6 +474,7 @@
         private final Point mSize = new Point();
         private final Rect mWindowCrop = new Rect();
         private boolean mShown = false;
+        private int mDisplayId;
         private String mName = "Not named";
 
         public SurfaceTrace(SurfaceSession s,
@@ -481,6 +482,7 @@
                        OutOfResourcesException {
             super(s, pid, displayId, w, h, format, flags);
             mSize.set(w, h);
+            mDisplayId = displayId;
             Slog.v(SURFACE_TAG, "ctor: " + this + ". Called by "
                     + Debug.getCallers(3));
         }
@@ -548,6 +550,13 @@
         }
 
         @Override
+        public void setDisplayId(int displayId) {
+            super.setDisplayId(displayId);
+            mDisplayId = displayId;
+            Slog.v(SURFACE_TAG, "setDisplayId: " + this + ". Called by " + Debug.getCallers(3));
+        }
+
+        @Override
         public void hide() {
             super.hide();
             mShown = false;
@@ -588,7 +597,7 @@
         @Override
         public String toString() {
             return "Surface " + Integer.toHexString(System.identityHashCode(this)) + " "
-                    + mName + ": shown=" + mShown + " layer=" + mLayer
+                    + mName + " (" + mDisplayId + "): shown=" + mShown + " layer=" + mLayer
                     + " alpha=" + mSurfaceTraceAlpha + " " + mPosition.x + "," + mPosition.y
                     + " " + mSize.x + "x" + mSize.y
                     + " crop=" + mWindowCrop.toShortString();
diff --git a/telephony/java/com/android/internal/telephony/AdnRecord.aidl b/telephony/java/com/android/internal/telephony/AdnRecord.aidl
deleted file mode 100644
index b4a1a29..0000000
--- a/telephony/java/com/android/internal/telephony/AdnRecord.aidl
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-** Copyright 2007, 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.android.internal.telephony;
-
-parcelable AdnRecord;
-
diff --git a/test-runner/src/android/test/ServiceTestCase.java b/test-runner/src/android/test/ServiceTestCase.java
index eaace27..d8ced38 100644
--- a/test-runner/src/android/test/ServiceTestCase.java
+++ b/test-runner/src/android/test/ServiceTestCase.java
@@ -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/test-runner/src/android/test/mock/MockContext.java b/test-runner/src/android/test/mock/MockContext.java
index 92c6676..9acffa3 100644
--- a/test-runner/src/android/test/mock/MockContext.java
+++ b/test-runner/src/android/test/mock/MockContext.java
@@ -285,11 +285,6 @@
     }
 
     @Override
-    public void sendBroadcastToUser(Intent intent, int userId) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
     public void sendBroadcast(Intent intent, String receiverPermission) {
         throw new UnsupportedOperationException();
     }
@@ -308,6 +303,18 @@
     }
 
     @Override
+    public void sendBroadcastToUser(Intent intent, int userId) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void sendOrderedBroadcastToUser(Intent intent, int userId,
+            BroadcastReceiver resultReceiver, Handler scheduler,
+            int initialCode, String initialData, Bundle initialExtras) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
     public void sendStickyBroadcast(Intent intent) {
         throw new UnsupportedOperationException();
     }
diff --git a/test-runner/src/android/test/mock/MockPackageManager.java b/test-runner/src/android/test/mock/MockPackageManager.java
index b1224d3..0399b3b 100644
--- a/test-runner/src/android/test/mock/MockPackageManager.java
+++ b/test-runner/src/android/test/mock/MockPackageManager.java
@@ -563,17 +563,7 @@
     @Override
     public void installPackageWithVerification(Uri packageURI, IPackageInstallObserver observer,
             int flags, String installerPackageName, Uri verificationURI,
-            ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams,
-            Uri originatingURI, Uri referrer) {
-        throw new UnsupportedOperationException();
-    }
-
-    /**
-     * @hide
-     */
-    @Override
-    public void installPackageWithOrigin(Uri packageURI, IPackageInstallObserver observer,
-            int flags, String installerPackageName, Uri originatingURI, Uri referrer) {
+            ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams) {
         throw new UnsupportedOperationException();
     }
 
diff --git a/tests/ActivityTests/AndroidManifest.xml b/tests/ActivityTests/AndroidManifest.xml
index 6f00095..9dfe4a1 100644
--- a/tests/ActivityTests/AndroidManifest.xml
+++ b/tests/ActivityTests/AndroidManifest.xml
@@ -33,5 +33,11 @@
         </service>
         <receiver android:name="UserTarget">
         </receiver>
+        <receiver android:name="SingleUserReceiver"
+            android:singleUser="true" android:exported="true" >
+        </receiver>
+        <provider android:name="SingleUserProvider"
+            android:authorities="com.google.android.test.activity.single_user"
+            android:singleUser="true" android:exported="true" />
     </application>
 </manifest>
diff --git a/tests/ActivityTests/src/com/google/android/test/activity/ActivityTestMain.java b/tests/ActivityTests/src/com/google/android/test/activity/ActivityTestMain.java
index bcef2d9..0ec1f13 100644
--- a/tests/ActivityTests/src/com/google/android/test/activity/ActivityTestMain.java
+++ b/tests/ActivityTests/src/com/google/android/test/activity/ActivityTestMain.java
@@ -22,16 +22,20 @@
 import android.app.ActivityManager;
 import android.app.AlertDialog;
 import android.content.ActivityNotFoundException;
+import android.content.BroadcastReceiver;
 import android.content.ComponentName;
+import android.content.ContentProviderClient;
 import android.content.Intent;
 import android.content.ServiceConnection;
 import android.os.Bundle;
 import android.os.IBinder;
+import android.os.RemoteException;
 import android.graphics.Bitmap;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 import android.widget.ScrollView;
+import android.widget.Toast;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
@@ -43,6 +47,18 @@
 
     ActivityManager mAm;
 
+    class BroadcastResultReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            Bundle res = getResultExtras(true);
+            int user = res.getInt("user", -1);
+            Toast.makeText(ActivityTestMain.this,
+                    "Receiver executed as user "
+                    + (user >= 0 ? Integer.toString(user) : "unknown"),
+                    Toast.LENGTH_LONG).show();
+        }
+    }
+
     private void addThumbnail(LinearLayout container, Bitmap bm,
             final ActivityManager.RecentTaskInfo task,
             final ActivityManager.TaskThumbnails thumbs, final int subIndex) {
@@ -134,8 +150,35 @@
         });
         menu.add("Send!").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
             @Override public boolean onMenuItemClick(MenuItem item) {
+                Intent intent = new Intent(ActivityTestMain.this, SingleUserReceiver.class);
+                sendOrderedBroadcast(intent, null, new BroadcastResultReceiver(), 
+                        null, Activity.RESULT_OK, null, null);
+                return true;
+            }
+        });
+        menu.add("Call!").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
+            @Override public boolean onMenuItemClick(MenuItem item) {
+                ContentProviderClient cpl = getContentResolver().acquireContentProviderClient(
+                        SingleUserProvider.AUTHORITY);
+                Bundle res = null;
+                try {
+                    res = cpl.call("getuser", null, null);
+                } catch (RemoteException e) {
+                }
+                int user = res != null ? res.getInt("user", -1) : -1;
+                Toast.makeText(ActivityTestMain.this,
+                        "Provider executed as user "
+                        + (user >= 0 ? Integer.toString(user) : "unknown"),
+                        Toast.LENGTH_LONG).show();
+                cpl.release();
+                return true;
+            }
+        });
+        menu.add("Send to user 1!").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
+            @Override public boolean onMenuItemClick(MenuItem item) {
                 Intent intent = new Intent(ActivityTestMain.this, UserTarget.class);
-                sendBroadcastToUser(intent, 1);
+                sendOrderedBroadcastToUser(intent, 1, new BroadcastResultReceiver(), 
+                        null, Activity.RESULT_OK, null, null);
                 return true;
             }
         });
diff --git a/tests/ActivityTests/src/com/google/android/test/activity/SingleUserProvider.java b/tests/ActivityTests/src/com/google/android/test/activity/SingleUserProvider.java
new file mode 100644
index 0000000..83785e4
--- /dev/null
+++ b/tests/ActivityTests/src/com/google/android/test/activity/SingleUserProvider.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.google.android.test.activity;
+
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Process;
+
+public class SingleUserProvider extends ContentProvider {
+    static final String AUTHORITY = "com.google.android.test.activity.single_user";
+
+    @Override
+    public boolean onCreate() {
+        return true;
+    }
+
+    @Override
+    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
+            String sortOrder) {
+        return null;
+    }
+
+    @Override
+    public String getType(Uri uri) {
+        return null;
+    }
+
+    @Override
+    public Uri insert(Uri uri, ContentValues values) {
+        return null;
+    }
+
+    @Override
+    public int delete(Uri uri, String selection, String[] selectionArgs) {
+        return 0;
+    }
+
+    @Override
+    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+        return 0;
+    }
+
+    @Override
+    public Bundle call(String method, String arg, Bundle extras) {
+        Bundle res = new Bundle();
+        res.putInt("user", Process.myUserHandle());
+        return res;
+    }
+}
diff --git a/tests/ActivityTests/src/com/google/android/test/activity/SingleUserReceiver.java b/tests/ActivityTests/src/com/google/android/test/activity/SingleUserReceiver.java
new file mode 100644
index 0000000..9295cf48
--- /dev/null
+++ b/tests/ActivityTests/src/com/google/android/test/activity/SingleUserReceiver.java
@@ -0,0 +1,32 @@
+/*
+ * 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.google.android.test.activity;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Process;
+
+public class SingleUserReceiver extends BroadcastReceiver {
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        Bundle res = getResultExtras(true);
+        res.putInt("user", Process.myUserHandle());
+        setResultExtras(res);
+    }
+}
diff --git a/tests/ActivityTests/src/com/google/android/test/activity/UserTarget.java b/tests/ActivityTests/src/com/google/android/test/activity/UserTarget.java
index 9890483..9c6a9f1 100644
--- a/tests/ActivityTests/src/com/google/android/test/activity/UserTarget.java
+++ b/tests/ActivityTests/src/com/google/android/test/activity/UserTarget.java
@@ -19,11 +19,16 @@
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
+import android.os.Bundle;
+import android.os.Process;
 import android.util.Log;
 
 public class UserTarget extends BroadcastReceiver {
     @Override
     public void onReceive(Context context, Intent intent) {
         Log.i("ActivityTest", "Received: " + intent);
+        Bundle res = getResultExtras(true);
+        res.putInt("user", Process.myUserHandle());
+        setResultExtras(res);
     }
 }
diff --git a/tests/HwAccelerationTest/AndroidManifest.xml b/tests/HwAccelerationTest/AndroidManifest.xml
index fad5993..1857033 100644
--- a/tests/HwAccelerationTest/AndroidManifest.xml
+++ b/tests/HwAccelerationTest/AndroidManifest.xml
@@ -33,6 +33,15 @@
         <meta-data android:name="android.graphics.renderThread" android:value="true" />
 
         <activity
+                android:name="TextPathActivity"
+                android:label="_TextPath">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+
+        <activity
                 android:name="GradientStopsActivity"
                 android:label="_GradientStops">
             <intent-filter>
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/GradientStopsActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/GradientStopsActivity.java
index ed00ecd..a73eab5 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/GradientStopsActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/GradientStopsActivity.java
@@ -19,6 +19,7 @@
 import android.app.Activity;
 import android.content.Context;
 import android.graphics.Canvas;
+import android.graphics.Color;
 import android.graphics.LinearGradient;
 import android.graphics.Paint;
 import android.graphics.Shader;
@@ -111,6 +112,14 @@
 
             canvas.translate(0.0f, 75.0f);
             canvas.drawRect(0.0f, 0.0f, 768.0f, 50.0f, paint);
+
+            gradient = new LinearGradient(0.0f, 0.0f, 512.0f, 0.0f,
+                    colors, null, Shader.TileMode.CLAMP);
+
+            paint.setShader(gradient);
+
+            canvas.translate(0.0f, 75.0f);
+            canvas.drawRect(0.0f, 0.0f, 512.0f, 50.0f, paint);
         }
     }
 }
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/TextActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/TextActivity.java
index 0a868fa..4a1f5a2 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/TextActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/TextActivity.java
@@ -153,6 +153,12 @@
             canvas.drawText("Hello OpenGL renderer!", 100, 300, mLargePaint);
             canvas.restore();
 
+//            mStrikePaint.setUnderlineText(false);
+//            canvas.save();
+//            canvas.scale(20.0f, 20.0f);
+//            canvas.drawText("aeiouyw", 5.0f, 750 / 20.0f, mStrikePaint);
+//            canvas.restore();
+//            mStrikePaint.setUnderlineText(true);
         }
     }
 }
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/TextPathActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/TextPathActivity.java
new file mode 100644
index 0000000..35a1fc9
--- /dev/null
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/TextPathActivity.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2010 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.android.test.hwui;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ScrollView;
+
+@SuppressWarnings({"UnusedDeclaration"})
+public class TextPathActivity extends Activity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        ScrollView scroller = new ScrollView(this);
+        scroller.addView(new CustomTextView(this));
+        setContentView(scroller);
+    }
+
+    static class CustomTextView extends View {
+        private final Paint mHugePaint;
+
+        CustomTextView(Context c) {
+            super(c);
+
+            mHugePaint = new Paint();
+            mHugePaint.setAntiAlias(true);
+            mHugePaint.setColor(0xff000000);
+            mHugePaint.setTextSize(300f);
+        }
+
+        @Override
+        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+            setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), 3000);
+        }
+
+        @Override
+        protected void onDraw(Canvas canvas) {
+            super.onDraw(canvas);
+            canvas.drawRGB(255, 255, 255);
+
+            Path path = new Path();
+
+            canvas.translate(100.0f, 300.0f);
+            drawTextAsPath(canvas, "Hello", path);
+
+            canvas.translate(0.0f, 400.0f);
+            drawTextAsPath(canvas, "OpenGL", path);
+        }
+
+        private void drawTextAsPath(Canvas canvas, String text, Path path) {
+            int count = text.length();
+            mHugePaint.getTextPath(text, 0, count, 0, 0, path);
+            path.close();
+            canvas.drawPath(path, mHugePaint);
+        }
+    }
+}
diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
index 9ed8fa9..d9cbf81 100644
--- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
+++ b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
@@ -150,10 +150,16 @@
             mTest = new Fisheye(true);
             break;
         case 9:
-            mTest = new Vignette(false);
+            mTest = new Vignette(false, false);
             break;
         case 10:
-            mTest = new Vignette(true);
+            mTest = new Vignette(false, true);
+            break;
+        case 11:
+            mTest = new Vignette(true, false);
+            break;
+        case 12:
+            mTest = new Vignette(true, true);
             break;
         }
 
@@ -167,7 +173,7 @@
     }
 
     void setupTests() {
-        mTestNames = new String[11];
+        mTestNames = new String[13];
         mTestNames[0] = "Levels Vec3 Relaxed";
         mTestNames[1] = "Levels Vec4 Relaxed";
         mTestNames[2] = "Levels Vec3 Full";
@@ -179,6 +185,8 @@
         mTestNames[8] = "Fisheye Relaxed";
         mTestNames[9] = "Vignette Full";
         mTestNames[10] = "Vignette Relaxed";
+        mTestNames[11] = "Vignette Approximate Full";
+        mTestNames[12] = "Vignette Approximate Relaxed";
         mTestSpinner.setAdapter(new ArrayAdapter<String>(
             this, R.layout.spinner_layout, mTestNames));
     }
diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Vignette.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Vignette.java
index 927d7d5..18d1103 100644
--- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Vignette.java
+++ b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/Vignette.java
@@ -26,6 +26,9 @@
 public class Vignette extends TestBase {
     private ScriptC_vignette_full mScript_full = null;
     private ScriptC_vignette_relaxed mScript_relaxed = null;
+    private ScriptC_vignette_approx_full mScript_approx_full = null;
+    private ScriptC_vignette_approx_relaxed mScript_approx_relaxed = null;
+    private final boolean approx;
     private final boolean relaxed;
     private float center_x = 0.5f;
     private float center_y = 0.5f;
@@ -33,7 +36,8 @@
     private float shade = 0.5f;
     private float slope = 20.0f;
 
-    public Vignette(boolean relaxed) {
+    public Vignette(boolean approx, boolean relaxed) {
+        this.approx = approx;
         this.relaxed = relaxed;
     }
 
@@ -90,7 +94,18 @@
     }
 
     private void do_init() {
-        if (relaxed)
+        if (approx) {
+            if (relaxed)
+                mScript_approx_relaxed.invoke_init_vignette(
+                        mInPixelsAllocation.getType().getX(),
+                        mInPixelsAllocation.getType().getY(), center_x,
+                        center_y, scale, shade, slope);
+            else
+                mScript_approx_full.invoke_init_vignette(
+                        mInPixelsAllocation.getType().getX(),
+                        mInPixelsAllocation.getType().getY(), center_x,
+                        center_y, scale, shade, slope);
+        } else if (relaxed)
             mScript_relaxed.invoke_init_vignette(
                     mInPixelsAllocation.getType().getX(),
                     mInPixelsAllocation.getType().getY(), center_x, center_y,
@@ -103,21 +118,36 @@
     }
 
     public void createTest(android.content.res.Resources res) {
-        if (relaxed) {
+        if (approx) {
+            if (relaxed)
+                mScript_approx_relaxed = new ScriptC_vignette_approx_relaxed(
+                        mRS, res, R.raw.vignette_approx_relaxed);
+            else
+                mScript_approx_full = new ScriptC_vignette_approx_full(
+                        mRS, res, R.raw.vignette_approx_full);
+        } else if (relaxed)
             mScript_relaxed = new ScriptC_vignette_relaxed(mRS, res,
                     R.raw.vignette_relaxed);
-        } else {
+        else
             mScript_full = new ScriptC_vignette_full(mRS, res,
                     R.raw.vignette_full);
-        }
         do_init();
     }
 
     public void runTest() {
-        if (relaxed)
-            mScript_relaxed.forEach_root(mInPixelsAllocation, mOutPixelsAllocation);
+        if (approx) {
+            if (relaxed)
+                mScript_approx_relaxed.forEach_root(mInPixelsAllocation,
+                        mOutPixelsAllocation);
+            else
+                mScript_approx_full.forEach_root(mInPixelsAllocation,
+                        mOutPixelsAllocation);
+        } else if (relaxed)
+            mScript_relaxed.forEach_root(mInPixelsAllocation,
+                    mOutPixelsAllocation);
         else
-            mScript_full.forEach_root(mInPixelsAllocation, mOutPixelsAllocation);
+            mScript_full.forEach_root(mInPixelsAllocation,
+                    mOutPixelsAllocation);
     }
 
 }
diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx.rsh b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx.rsh
new file mode 100644
index 0000000..19d0117
--- /dev/null
+++ b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx.rsh
@@ -0,0 +1,60 @@
+/*
+ * 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.
+ */
+
+static float2 neg_center, axis_scale, inv_dimensions;
+static float sloped_neg_range, sloped_inv_max_dist, shade, opp_shade;
+
+void init_vignette(uint32_t dim_x, uint32_t dim_y, float center_x, float center_y,
+        float desired_scale, float desired_shade, float desired_slope) {
+
+    neg_center.x = -center_x;
+    neg_center.y = -center_y;
+    inv_dimensions.x = 1.f / (float)dim_x;
+    inv_dimensions.y = 1.f / (float)dim_y;
+
+    axis_scale = (float2)1.f;
+    if (dim_x > dim_y)
+        axis_scale.y = (float)dim_y / (float)dim_x;
+    else
+        axis_scale.x = (float)dim_x / (float)dim_y;
+
+    const float max_dist = 0.5 * length(axis_scale);
+    sloped_inv_max_dist = desired_slope * 1.f/max_dist;
+
+    // Range needs to be between 1.3 to 0.6. When scale is zero then range is
+    // 1.3 which means no vignette at all because the luminousity difference is
+    // less than 1/256.  Expect input scale to be between 0.0 and 1.0.
+    const float neg_range = 0.7*sqrt(desired_scale) - 1.3;
+    sloped_neg_range = exp(neg_range * desired_slope);
+
+    shade = desired_shade;
+    opp_shade = 1.f - desired_shade;
+}
+
+void root(const uchar4 *in, uchar4 *out, uint32_t x, uint32_t y) {
+    // Convert x and y to floating point coordinates with center as origin
+    const float4 fin = convert_float4(*in);
+    const float2 inCoord = {(float)x, (float)y};
+    const float2 coord = mad(inCoord, inv_dimensions, neg_center);
+    const float sloped_dist_ratio = approx_length(axis_scale * coord)  * sloped_inv_max_dist;
+    // TODO:  add approx_exp once implemented
+    const float lumen = opp_shade + shade * approx_recip(1.f + sloped_neg_range * exp(sloped_dist_ratio));
+    float4 fout;
+    fout.rgb = fin.rgb * lumen;
+    fout.w = fin.w;
+    *out = convert_uchar4(fout);
+}
+
diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx_full.rs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx_full.rs
new file mode 100644
index 0000000..c83c6e1
--- /dev/null
+++ b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx_full.rs
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+
+#pragma version(1)
+#pragma rs java_package_name(com.android.rs.image)
+
+#include "vignette_approx.rsh"
+
diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx_relaxed.rs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx_relaxed.rs
new file mode 100644
index 0000000..9120612
--- /dev/null
+++ b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/vignette_approx_relaxed.rs
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+
+#pragma version(1)
+#pragma rs java_package_name(com.android.rs.image)
+#pragma rs_fp_relaxed
+
+#include "vignette_approx.rsh"
+
diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java b/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java
index f0ce458..a641ce5 100644
--- a/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java
+++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java
@@ -86,6 +86,7 @@
         unitTests.add(new UT_math(this, mRes, mCtx));
         unitTests.add(new UT_math_conformance(this, mRes, mCtx));
         unitTests.add(new UT_math_agree(this, mRes, mCtx));
+        unitTests.add(new UT_min(this, mRes, mCtx));
         unitTests.add(new UT_element(this, mRes, mCtx));
         unitTests.add(new UT_sampler(this, mRes, mCtx));
         unitTests.add(new UT_program_store(this, mRes, mCtx));
diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_min.java b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_min.java
new file mode 100644
index 0000000..8287f02
--- /dev/null
+++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_min.java
@@ -0,0 +1,40 @@
+/*
+ * 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.android.rs.test;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.renderscript.*;
+
+public class UT_min extends UnitTest {
+    private Resources mRes;
+
+    protected UT_min(RSTestCore rstc, Resources res, Context ctx) {
+        super(rstc, "Min (relaxed)", ctx);
+        mRes = res;
+    }
+
+    public void run() {
+        RenderScript pRS = RenderScript.create(mCtx);
+        ScriptC_min s = new ScriptC_min(pRS, mRes, R.raw.min);
+        pRS.setMessageHandler(mRsMessage);
+        s.invoke_min_test();
+        pRS.finish();
+        waitForMessage();
+        pRS.destroy();
+    }
+}
diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/min.rs b/tests/RenderScriptTests/tests/src/com/android/rs/test/min.rs
new file mode 100644
index 0000000..4b92763
--- /dev/null
+++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/min.rs
@@ -0,0 +1,20 @@
+#include "shared.rsh"
+#pragma rs_fp_relaxed
+
+volatile uchar2 res_uc_2 = 1;
+volatile uchar2 src1_uc_2 = 1;
+volatile uchar2 src2_uc_2 = 1;
+
+void min_test() {
+    bool failed = false;
+
+    res_uc_2 = min(src1_uc_2, src2_uc_2);
+
+    if (failed) {
+        rsSendToClientBlocking(RS_MSG_TEST_FAILED);
+    }
+    else {
+        rsSendToClientBlocking(RS_MSG_TEST_PASSED);
+    }
+}
+
diff --git a/tools/aapt/XMLNode.cpp b/tools/aapt/XMLNode.cpp
index 0dba950..dcbe7db 100644
--- a/tools/aapt/XMLNode.cpp
+++ b/tools/aapt/XMLNode.cpp
@@ -511,7 +511,8 @@
             namespaces.pop();
         } else if (code == ResXMLTree::TEXT) {
             size_t len;
-            printf("%sC: \"%s\"\n", prefix.string(), String8(block->getText(&len)).string());
+            printf("%sC: \"%s\"\n", prefix.string(),
+                    ResTable::normalizeForOutput(String8(block->getText(&len)).string()).string());
         }
     }
 
diff --git a/tools/aidl/generate_java_binder.cpp b/tools/aidl/generate_java_binder.cpp
index 2e459a8..f80a388 100644
--- a/tools/aidl/generate_java_binder.cpp
+++ b/tools/aidl/generate_java_binder.cpp
@@ -54,7 +54,7 @@
 
     // asBinder
     Method* asBinder = new Method;
-        asBinder->modifiers = PUBLIC;
+        asBinder->modifiers = PUBLIC | OVERRIDE;
         asBinder->returnType = IBINDER_TYPE;
         asBinder->name = "asBinder";
         asBinder->statements = new StatementBlock;
@@ -117,7 +117,7 @@
     queryLocalInterface->arguments.push_back(new LiteralExpression("DESCRIPTOR"));
     IInterfaceType* iinType = new IInterfaceType();
     Variable *iin = new Variable(iinType, "iin");
-    VariableDeclaration* iinVd = new VariableDeclaration(iin, queryLocalInterface, iinType);
+    VariableDeclaration* iinVd = new VariableDeclaration(iin, queryLocalInterface, NULL);
     m->statements->Add(iinVd);
 
     // Ensure the instance type of the local object is as expected.
@@ -181,7 +181,7 @@
 
     // IBinder asBinder()
     Method* asBinder = new Method;
-        asBinder->modifiers = PUBLIC;
+        asBinder->modifiers = PUBLIC | OVERRIDE;
         asBinder->returnType = IBINDER_TYPE;
         asBinder->name = "asBinder";
         asBinder->statements = new StatementBlock;
@@ -384,7 +384,7 @@
     // == the proxy method ===================================================
     Method* proxy = new Method;
         proxy->comment = gather_comments(method->comments_token->extra);
-        proxy->modifiers = PUBLIC;
+        proxy->modifiers = PUBLIC | OVERRIDE;
         proxy->returnType = NAMES.Search(method->type.type.data);
         proxy->returnTypeDimension = method->type.dimension;
         proxy->name = method->name.data;
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
index 3ae660d..c4a6906 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
@@ -1187,6 +1187,18 @@
     }
 
     @Override
+    public void sendBroadcastToUser(Intent intent, int userId) {
+        // pass
+    }
+
+    @Override
+    public void sendOrderedBroadcastToUser(Intent intent, int userId,
+            BroadcastReceiver resultReceiver, Handler scheduler,
+            int initialCode, String initialData, Bundle initialExtras) {
+        // pass
+    }
+
+    @Override
     public void sendStickyBroadcast(Intent arg0) {
         // pass
 
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindow.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindow.java
index e28375d..fa660e6 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindow.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindow.java
@@ -47,7 +47,7 @@
     }
 
     @Override
-    public void resized(int arg0, int arg1, Rect arg2, Rect arg3,
+    public void resized(Rect arg1, Rect arg2, Rect arg3,
             boolean arg4, Configuration arg5) throws RemoteException {
         // pass for now.
     }
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindowManager.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindowManager.java
index 67e51fa..f548b46 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindowManager.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindowManager.java
@@ -94,7 +94,11 @@
     @Override
     public void clearForcedDisplaySize(int displayId) throws RemoteException {
         // TODO Auto-generated method stub
+    }
 
+    @Override
+    public void clearForcedDisplayDensity(int displayId) throws RemoteException {
+        // TODO Auto-generated method stub
     }
 
     @Override
@@ -327,7 +331,11 @@
     @Override
     public void setForcedDisplaySize(int displayId, int arg0, int arg1) throws RemoteException {
         // TODO Auto-generated method stub
+    }
 
+    @Override
+    public void setForcedDisplayDensity(int displayId, int density) throws RemoteException {
+        // TODO Auto-generated method stub
     }
 
     @Override
diff --git a/wifi/java/android/net/wifi/WifiNative.java b/wifi/java/android/net/wifi/WifiNative.java
index 4bf1ca3..84c565b 100644
--- a/wifi/java/android/net/wifi/WifiNative.java
+++ b/wifi/java/android/net/wifi/WifiNative.java
@@ -368,6 +368,14 @@
         return doStringCommand("SIGNAL_POLL");
     }
 
+    /** Example outout:
+     * TXGOOD=396
+     * TXBAD=1
+     */
+    public String pktcntPoll() {
+        return doStringCommand("PKTCNT_POLL");
+    }
+
     public boolean startWpsPbc(String bssid) {
         if (TextUtils.isEmpty(bssid)) {
             return doBooleanCommand("WPS_PBC");
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java
index 473d12c..c480759 100644
--- a/wifi/java/android/net/wifi/WifiStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiStateMachine.java
@@ -51,6 +51,7 @@
 import android.net.NetworkInfo;
 import android.net.NetworkInfo.DetailedState;
 import android.net.NetworkUtils;
+import android.net.wifi.WifiWatchdogStateMachine.RssiPktcntStat;
 import android.net.wifi.WpsResult.Status;
 import android.net.wifi.p2p.WifiP2pManager;
 import android.net.wifi.p2p.WifiP2pService;
@@ -1163,7 +1164,7 @@
             case CMD_RSSI_POLL:
             case CMD_DELAYED_STOP_DRIVER:
             case WifiMonitor.SCAN_RESULTS_EVENT:
-            case WifiWatchdogStateMachine.RSSI_FETCH:
+            case WifiWatchdogStateMachine.RSSI_PKTCNT_FETCH:
                 return false;
             default:
                 return true;
@@ -1514,6 +1515,30 @@
         }
     }
 
+    /*
+     * Fetch TX packet counters on current connection
+     */
+    private void fetchPktcntNative(RssiPktcntStat stat) {
+        String pktcntPoll = mWifiNative.pktcntPoll();
+
+        if (pktcntPoll != null) {
+            String[] lines = pktcntPoll.split("\n");
+            for (String line : lines) {
+                String[] prop = line.split("=");
+                if (prop.length < 2) continue;
+                try {
+                    if (prop[0].equals("TXGOOD")) {
+                        stat.txgood = Integer.parseInt(prop[1]);
+                    } else if (prop[0].equals("TXBAD")) {
+                        stat.txbad = Integer.parseInt(prop[1]);
+                    }
+                } catch (NumberFormatException e) {
+                    //Ignore
+                }
+            }
+        }
+    }
+
     private void configureLinkProperties() {
         if (mWifiConfigStore.isUsingStaticIp(mLastNetworkId)) {
             mLinkProperties = mWifiConfigStore.getLinkProperties(mLastNetworkId);
@@ -1922,8 +1947,8 @@
                     replyToMessage(message, WifiManager.DISABLE_NETWORK_FAILED,
                             WifiManager.BUSY);
                     break;
-                case WifiWatchdogStateMachine.RSSI_FETCH:
-                    replyToMessage(message, WifiWatchdogStateMachine.RSSI_FETCH_FAILED);
+                case WifiWatchdogStateMachine.RSSI_PKTCNT_FETCH:
+                    replyToMessage(message, WifiWatchdogStateMachine.RSSI_PKTCNT_FETCH_FAILED);
                     break;
                 default:
                     loge("Error! unhandled message" + message);
@@ -3126,10 +3151,13 @@
                                 mRssiPollToken, 0), POLL_RSSI_INTERVAL_MSECS);
                     }
                     break;
-                case WifiWatchdogStateMachine.RSSI_FETCH:
+                case WifiWatchdogStateMachine.RSSI_PKTCNT_FETCH:
+                    RssiPktcntStat stat = (RssiPktcntStat) message.obj;
                     fetchRssiAndLinkSpeedNative();
-                    replyToMessage(message, WifiWatchdogStateMachine.RSSI_FETCH_SUCCEEDED,
-                            mWifiInfo.getRssi());
+                    stat.rssi = mWifiInfo.getRssi();
+                    fetchPktcntNative(stat);
+                    replyToMessage(message, WifiWatchdogStateMachine.RSSI_PKTCNT_FETCH_SUCCEEDED,
+                            stat);
                     break;
                 default:
                     return NOT_HANDLED;
diff --git a/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java b/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java
index 4018c74..7b4d113 100644
--- a/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java
@@ -26,19 +26,16 @@
 import android.content.IntentFilter;
 import android.content.res.Resources;
 import android.database.ContentObserver;
-import android.net.arp.ArpPeer;
 import android.net.ConnectivityManager;
-import android.net.LinkAddress;
 import android.net.LinkProperties;
 import android.net.NetworkInfo;
-import android.net.RouteInfo;
 import android.net.Uri;
 import android.os.Message;
 import android.os.SystemClock;
-import android.os.SystemProperties;
 import android.provider.Settings;
 import android.provider.Settings.Secure;
 import android.util.Log;
+import android.util.LruCache;
 
 import com.android.internal.R;
 import com.android.internal.util.AsyncChannel;
@@ -49,40 +46,36 @@
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.net.HttpURLConnection;
-import java.net.InetAddress;
-import java.net.SocketException;
 import java.net.URL;
+import java.text.DecimalFormat;
 
 /**
- * WifiWatchdogStateMachine monitors the connection to a Wi-Fi
- * network. After the framework notifies that it has connected to an
- * acccess point and is waiting for link to be verified, the watchdog
- * takes over and verifies if the link is good by doing ARP pings to
- * the gateway using {@link ArpPeer}.
- *
- * Upon successful verification, the watchdog notifies and continues
- * to monitor the link afterwards when the RSSI level falls below
- * a certain threshold.
-
- * When Wi-fi connects at L2 layer, the beacons from access point reach
- * the device and it can maintain a connection, but the application
- * connectivity can be flaky (due to bigger packet size exchange).
- *
- * We now monitor the quality of the last hop on
- * Wi-Fi using signal strength and ARP connectivity as indicators
- * to decide if the link is good enough to switch to Wi-Fi as the uplink.
- *
- * ARP pings are useful for link validation but can still get through
- * when the application traffic fails to go through and are thus not
- * the best indicator of real packet loss since they are tiny packets
- * (28 bytes) and have a much low chance of packet corruption than the
- * regular data packets.
- *
- * When signal strength and ARP are used together, it ends up working well in tests.
- * The goal is to switch to Wi-Fi after validating ARP transfer
- * and RSSI and then switching out of Wi-Fi when we hit a low
- * signal strength threshold and then waiting until the signal strength
- * improves and validating ARP transfer.
+ * WifiWatchdogStateMachine monitors the connection to a WiFi network. When WiFi
+ * connects at L2 layer, the beacons from access point reach the device and it
+ * can maintain a connection, but the application connectivity can be flaky (due
+ * to bigger packet size exchange).
+ * <p>
+ * We now monitor the quality of the last hop on WiFi using packet loss ratio as
+ * an indicator to decide if the link is good enough to switch to Wi-Fi as the
+ * uplink.
+ * <p>
+ * When WiFi is connected, the WiFi watchdog keeps sampling the RSSI and the
+ * instant packet loss, and record it as per-AP loss-to-rssi statistics. When
+ * the instant packet loss is higher than a threshold, the WiFi watchdog sends a
+ * poor link notification to avoid WiFi connection temporarily.
+ * <p>
+ * While WiFi is being avoided, the WiFi watchdog keep watching the RSSI to
+ * bring the WiFi connection back. Once the RSSI is high enough to achieve a
+ * lower packet loss, a good link detection is sent such that the WiFi
+ * connection become available again.
+ * <p>
+ * BSSID roaming has been taken into account. When user is moving across
+ * multiple APs, the WiFi watchdog will detect that and keep watching the
+ * currently connected AP.
+ * <p>
+ * Power impact should be minimal since much of the measurement relies on
+ * passive statistics already being tracked at the driver and the polling is
+ * done when screen is turned on and the RSSI is in a certain range.
  *
  * @hide
  */
@@ -91,92 +84,243 @@
     /* STOPSHIP: Keep this configurable for debugging until ship */
     private static boolean DBG = false;
     private static final String TAG = "WifiWatchdogStateMachine";
+
+    private static final int BASE = Protocol.BASE_WIFI_WATCHDOG;
+
+    /* Internal events */
+    private static final int EVENT_WATCHDOG_TOGGLED                 = BASE + 1;
+    private static final int EVENT_NETWORK_STATE_CHANGE             = BASE + 2;
+    private static final int EVENT_RSSI_CHANGE                      = BASE + 3;
+    private static final int EVENT_SUPPLICANT_STATE_CHANGE          = BASE + 4;
+    private static final int EVENT_WIFI_RADIO_STATE_CHANGE          = BASE + 5;
+    private static final int EVENT_WATCHDOG_SETTINGS_CHANGE         = BASE + 6;
+    private static final int EVENT_BSSID_CHANGE                     = BASE + 7;
+    private static final int EVENT_SCREEN_ON                        = BASE + 8;
+    private static final int EVENT_SCREEN_OFF                       = BASE + 9;
+
+    /* Internal messages */
+    private static final int CMD_DELAYED_WALLED_GARDEN_CHECK        = BASE + 11;
+    private static final int CMD_RSSI_FETCH                         = BASE + 12;
+
+    /* Notifications from/to WifiStateMachine */
+    static final int POOR_LINK_DETECTED                             = BASE + 21;
+    static final int GOOD_LINK_DETECTED                             = BASE + 22;
+    static final int RSSI_PKTCNT_FETCH                              = BASE + 23;
+    static final int RSSI_PKTCNT_FETCH_SUCCEEDED                    = BASE + 24;
+    static final int RSSI_PKTCNT_FETCH_FAILED                       = BASE + 25;
+
+    /*
+     * RSSI levels as used by notification icon
+     * Level 4  -55 <= RSSI
+     * Level 3  -66 <= RSSI < -55
+     * Level 2  -77 <= RSSI < -67
+     * Level 1  -88 <= RSSI < -78
+     * Level 0         RSSI < -88
+     */
+
+    /**
+     * WiFi link statistics is monitored and recorded actively below this threshold.
+     * <p>
+     * Larger threshold is more adaptive but increases sampling cost.
+     */
+    private static final int LINK_MONITOR_LEVEL_THRESHOLD = 4;
+
+    /**
+     * Remember packet loss statistics of how many BSSIDs.
+     * <p>
+     * Larger size is usually better but requires more space.
+     */
+    private static final int BSSID_STAT_CACHE_SIZE = 20;
+
+    /**
+     * RSSI range of a BSSID statistics.
+     * Within the range, (RSSI -> packet loss %) mappings are stored.
+     * <p>
+     * Larger range is usually better but requires more space.
+     */
+    private static final int BSSID_STAT_RANGE_LOW_DBM  = -105;
+
+    /**
+     * See {@link #BSSID_STAT_RANGE_LOW_DBM}.
+     */
+    private static final int BSSID_STAT_RANGE_HIGH_DBM = -45;
+
+    /**
+     * How many consecutive empty data point to trigger a empty-cache detection.
+     * In this case, a preset/default loss value (function on RSSI) is used.
+     * <p>
+     * In normal uses, some RSSI values may never be seen due to channel randomness.
+     * However, the size of such empty RSSI chunk in normal use is generally 1~2.
+     */
+    private static final int BSSID_STAT_EMPTY_COUNT = 3;
+
+    /**
+     * Sample interval for packet loss statistics, in msec.
+     * <p>
+     * Smaller interval is more accurate but increases sampling cost (battery consumption).
+     */
+    private static final long LINK_SAMPLING_INTERVAL_MS = 1 * 1000;
+
+    /**
+     * Coefficients (alpha) for moving average for packet loss tracking.
+     * Must be within (0.0, 1.0).
+     * <p>
+     * Equivalent number of samples: N = 2 / alpha - 1 .
+     * We want the historic loss to base on more data points to be statistically reliable.
+     * We want the current instant loss to base on less data points to be responsive.
+     */
+    private static final double EXP_COEFFICIENT_RECORD  = 0.1;
+
+    /**
+     * See {@link #EXP_COEFFICIENT_RECORD}.
+     */
+    private static final double EXP_COEFFICIENT_MONITOR = 0.5;
+
+    /**
+     * Thresholds for sending good/poor link notifications, in packet loss %.
+     * Good threshold must be smaller than poor threshold.
+     * Use smaller poor threshold to avoid WiFi more aggressively.
+     * Use smaller good threshold to bring back WiFi more conservatively.
+     * <p>
+     * When approaching the boundary, loss ratio jumps significantly within a few dBs.
+     * 50% loss threshold is a good balance between accuracy and reponsiveness.
+     * <=10% good threshold is a safe value to avoid jumping back to WiFi too easily.
+     */
+    private static final double POOR_LINK_LOSS_THRESHOLD = 0.5;
+
+    /**
+     * See {@link #POOR_LINK_LOSS_THRESHOLD}.
+     */
+    private static final double GOOD_LINK_LOSS_THRESHOLD = 0.1;
+
+    /**
+     * Number of samples to confirm before sending a poor link notification.
+     * Response time = confirm_count * sample_interval .
+     * <p>
+     * A smaller threshold improves response speed but may suffer from randomness.
+     * According to experiments, 3~5 are good values to achieve a balance.
+     * These parameters should be tuned along with {@link #LINK_SAMPLING_INTERVAL_MS}.
+     */
+    private static final int POOR_LINK_SAMPLE_COUNT = 3;
+
+    /**
+     * Minimum volume (converted from pkt/sec) to detect a poor link, to avoid randomness.
+     * <p>
+     * According to experiments, 1pkt/sec is too sensitive but 3pkt/sec is slightly unresponsive.
+     */
+    private static final double POOR_LINK_MIN_VOLUME = 2.0 * LINK_SAMPLING_INTERVAL_MS / 1000.0;
+
+    /**
+     * When a poor link is detected, we scan over this range (based on current
+     * poor link RSSI) for a target RSSI that satisfies a target packet loss.
+     * Refer to {@link #GOOD_LINK_TARGET}.
+     * <p>
+     * We want range_min not too small to avoid jumping back to WiFi too easily.
+     */
+    private static final int GOOD_LINK_RSSI_RANGE_MIN = 3;
+
+    /**
+     * See {@link #GOOD_LINK_RSSI_RANGE_MIN}.
+     */
+    private static final int GOOD_LINK_RSSI_RANGE_MAX = 20;
+
+    /**
+     * Adaptive good link target to avoid flapping.
+     * When a poor link is detected, a good link target is calculated as follows:
+     * <p>
+     *      targetRSSI = min{ rssi | loss(rssi) < GOOD_LINK_LOSS_THRESHOLD } + rssi_adj[i],
+     *                   where rssi is in the above GOOD_LINK_RSSI_RANGE.
+     *      targetCount = sample_count[i] .
+     * <p>
+     * While WiFi is being avoided, we keep monitoring its signal strength.
+     * Good link notification is sent when we see current RSSI >= targetRSSI
+     * for targetCount consecutive times.
+     * <p>
+     * Index i is incremented each time after a poor link detection.
+     * Index i is decreased to at most k if the last poor link was at lease reduce_time[k] ago.
+     * <p>
+     * Intuitively, larger index i makes it more difficult to get back to WiFi, avoiding flapping.
+     * In experiments, (+9 dB / 30 counts) makes it quite difficult to achieve.
+     * Avoid using it unless flapping is really bad (say, last poor link is only 1min ago).
+     */
+    private static final GoodLinkTarget[] GOOD_LINK_TARGET = {
+        /*                  rssi_adj,       sample_count,   reduce_time */
+        new GoodLinkTarget( 0,              3,              30 * 60000   ),
+        new GoodLinkTarget( 3,              5,              5  * 60000   ),
+        new GoodLinkTarget( 6,              10,             1  * 60000   ),
+        new GoodLinkTarget( 9,              30,             0  * 60000   ),
+    };
+
+    /**
+     * The max time to avoid a BSSID, to prevent avoiding forever.
+     * If current RSSI is at least min_rssi[i], the max avoidance time is at most max_time[i]
+     * <p>
+     * It is unusual to experience high packet loss at high RSSI. Something unusual must be
+     * happening (e.g. strong interference). For higher signal strengths, we set the avoidance
+     * time to be low to allow for quick turn around from temporary interference.
+     * <p>
+     * See {@link BssidStatistics#poorLinkDetected}.
+     */
+    private static final MaxAvoidTime[] MAX_AVOID_TIME = {
+        /*                  max_time,           min_rssi */
+        new MaxAvoidTime(   30 * 60000,         -200      ),
+        new MaxAvoidTime(   5  * 60000,         -70       ),
+        new MaxAvoidTime(   0  * 60000,         -55       ),
+    };
+
+
     private static final String WALLED_GARDEN_NOTIFICATION_ID = "WifiWatchdog.walledgarden";
 
-    /* RSSI Levels as used by notification icon
-       Level 4  -55 <= RSSI
-       Level 3  -66 <= RSSI < -55
-       Level 2  -77 <= RSSI < -67
-       Level 1  -88 <= RSSI < -78
-       Level 0         RSSI < -88 */
-
-    /* Wi-fi connection is monitored actively below this
-       threshold */
-    private static final int RSSI_LEVEL_MONITOR = 0;
-    /* Rssi threshold is at level 0 (-88dBm) */
-    private static final int RSSI_MONITOR_THRESHOLD = -88;
-    /* Number of times RSSI is measured to be low before being avoided */
-    private static final int RSSI_MONITOR_COUNT = 5;
-    private int mRssiMonitorCount = 0;
-
-    /* Avoid flapping. The interval is changed over time as long as we continue to avoid
-     * under the max interval after which we reset the interval again */
-    private static final int MIN_INTERVAL_AVOID_BSSID_MS[] = {0, 30 * 1000, 60 * 1000,
-            5 * 60 * 1000, 30 * 60 * 1000};
-    /* Index into the interval array MIN_INTERVAL_AVOID_BSSID_MS */
-    private int mMinIntervalArrayIndex = 0;
-
-    private long mLastBssidAvoidedTime;
-
-    private int mCurrentSignalLevel;
-
-    private static final long DEFAULT_ARP_CHECK_INTERVAL_MS = 2 * 60 * 1000;
-    private static final long DEFAULT_RSSI_FETCH_INTERVAL_MS = 1000;
     private static final long DEFAULT_WALLED_GARDEN_INTERVAL_MS = 30 * 60 * 1000;
 
-    private static final int DEFAULT_NUM_ARP_PINGS = 5;
-    private static final int DEFAULT_MIN_ARP_RESPONSES = 1;
-
-    private static final int DEFAULT_ARP_PING_TIMEOUT_MS = 100;
-
-    // See http://go/clientsdns for usage approval
+    /**
+     * See http://go/clientsdns for usage approval
+     */
     private static final String DEFAULT_WALLED_GARDEN_URL =
             "http://clients3.google.com/generate_204";
     private static final int WALLED_GARDEN_SOCKET_TIMEOUT_MS = 10000;
 
-    /* Some carrier apps might have support captive portal handling. Add some delay to allow
-        app authentication to be done before our test.
-       TODO: This should go away once we provide an API to apps to disable walled garden test
-       for certain SSIDs
+    /**
+     * Some carrier apps might have support captive portal handling. Add some
+     * delay to allow app authentication to be done before our test. TODO: This
+     * should go away once we provide an API to apps to disable walled garden
+     * test for certain SSIDs
      */
     private static final int WALLED_GARDEN_START_DELAY_MS = 3000;
 
-    private static final int BASE = Protocol.BASE_WIFI_WATCHDOG;
 
-    /**
-     * Indicates the enable setting of WWS may have changed
-     */
-    private static final int EVENT_WATCHDOG_TOGGLED                 = BASE + 1;
-
-    /**
-     * Indicates the wifi network state has changed. Passed w/ original intent
-     * which has a non-null networkInfo object
-     */
-    private static final int EVENT_NETWORK_STATE_CHANGE             = BASE + 2;
-    /* Passed with RSSI information */
-    private static final int EVENT_RSSI_CHANGE                      = BASE + 3;
-    private static final int EVENT_WIFI_RADIO_STATE_CHANGE          = BASE + 5;
-    private static final int EVENT_WATCHDOG_SETTINGS_CHANGE         = BASE + 6;
-
-    /* Internal messages */
-    private static final int CMD_ARP_CHECK                          = BASE + 11;
-    private static final int CMD_DELAYED_WALLED_GARDEN_CHECK        = BASE + 12;
-    private static final int CMD_RSSI_FETCH                         = BASE + 13;
-
-    /* Notifications to WifiStateMachine */
-    static final int POOR_LINK_DETECTED                             = BASE + 21;
-    static final int GOOD_LINK_DETECTED                             = BASE + 22;
-    static final int RSSI_FETCH                                     = BASE + 23;
-    static final int RSSI_FETCH_SUCCEEDED                           = BASE + 24;
-    static final int RSSI_FETCH_FAILED                              = BASE + 25;
-
+    /* Framework related */
     private Context mContext;
     private ContentResolver mContentResolver;
     private WifiManager mWifiManager;
     private IntentFilter mIntentFilter;
     private BroadcastReceiver mBroadcastReceiver;
-    private AsyncChannel mWsmChannel = new AsyncChannel();;
+    private AsyncChannel mWsmChannel = new AsyncChannel();
+    private WifiInfo mWifiInfo;
+    private LinkProperties mLinkProperties;
 
+    /* System settingss related */
+    private static boolean sWifiOnly = false;
+    private boolean mPoorNetworkDetectionEnabled;
+    private long mWalledGardenIntervalMs;
+    private boolean mWalledGardenTestEnabled;
+    private String mWalledGardenUrl;
+
+    /* Wall garden detection related */
+    private long mLastWalledGardenCheckTime = 0;
+    private boolean mWalledGardenNotificationShown;
+
+    /* Poor link detection related */
+    private LruCache<String, BssidStatistics> mBssidCache =
+            new LruCache<String, BssidStatistics>(BSSID_STAT_CACHE_SIZE);
+    private int mRssiFetchToken = 0;
+    private int mCurrentSignalLevel;
+    private BssidStatistics mCurrentBssid;
+    private VolumeWeightedEMA mCurrentLoss;
+    private boolean mIsScreenOn = true;
+    private static double sPresetLoss[];
+
+    /* WiFi watchdog state machine related */
     private DefaultState mDefaultState = new DefaultState();
     private WatchdogDisabledState mWatchdogDisabledState = new WatchdogDisabledState();
     private WatchdogEnabledState mWatchdogEnabledState = new WatchdogEnabledState();
@@ -184,33 +328,10 @@
     private VerifyingLinkState mVerifyingLinkState = new VerifyingLinkState();
     private ConnectedState mConnectedState = new ConnectedState();
     private WalledGardenCheckState mWalledGardenCheckState = new WalledGardenCheckState();
-    /* Online and watching link connectivity */
     private OnlineWatchState mOnlineWatchState = new OnlineWatchState();
-    /* RSSI level is below RSSI_LEVEL_MONITOR and needs close monitoring */
-    private RssiMonitoringState mRssiMonitoringState = new RssiMonitoringState();
-    /* Online and doing nothing */
+    private LinkMonitoringState mLinkMonitoringState = new LinkMonitoringState();
     private OnlineState mOnlineState = new OnlineState();
 
-    private int mArpToken = 0;
-    private long mArpCheckIntervalMs;
-    private int mRssiFetchToken = 0;
-    private long mRssiFetchIntervalMs;
-    private long mWalledGardenIntervalMs;
-    private int mNumArpPings;
-    private int mMinArpResponses;
-    private int mArpPingTimeoutMs;
-    private boolean mPoorNetworkDetectionEnabled;
-    private boolean mWalledGardenTestEnabled;
-    private String mWalledGardenUrl;
-
-    private WifiInfo mWifiInfo;
-    private LinkProperties mLinkProperties;
-
-    private long mLastWalledGardenCheckTime = 0;
-
-    private static boolean sWifiOnly = false;
-    private boolean mWalledGardenNotificationShown;
-
     /**
      * STATE MAP
      *          Default
@@ -231,7 +352,7 @@
 
         setupNetworkReceiver();
 
-        // The content observer to listen needs a handler
+        // the content observer to listen needs a handler
         registerForSettingsChanges();
         registerForWatchdogToggle();
         addState(mDefaultState);
@@ -242,7 +363,7 @@
                 addState(mConnectedState, mWatchdogEnabledState);
                     addState(mWalledGardenCheckState, mConnectedState);
                     addState(mOnlineWatchState, mConnectedState);
-                    addState(mRssiMonitoringState, mOnlineWatchState);
+                    addState(mLinkMonitoringState, mConnectedState);
                     addState(mOnlineState, mConnectedState);
 
         if (isWatchdogEnabled()) {
@@ -266,9 +387,9 @@
         // watchdog in an enabled state
         putSettingsBoolean(contentResolver, Settings.Secure.WIFI_WATCHDOG_ON, true);
 
-        // Disable poor network avoidance, but keep watchdog active for walled garden detection
+        // disable poor network avoidance, but keep watchdog active for walled garden detection
         if (sWifiOnly) {
-            log("Disabling poor network avoidance for wi-fi only device");
+            logd("Disabling poor network avoidance for wi-fi only device");
             putSettingsBoolean(contentResolver,
                     Settings.Secure.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED, false);
         }
@@ -283,15 +404,20 @@
             @Override
             public void onReceive(Context context, Intent intent) {
                 String action = intent.getAction();
-                if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
-                    sendMessage(EVENT_NETWORK_STATE_CHANGE, intent);
-                } else if (action.equals(WifiManager.RSSI_CHANGED_ACTION)) {
+                if (action.equals(WifiManager.RSSI_CHANGED_ACTION)) {
                     obtainMessage(EVENT_RSSI_CHANGE,
                             intent.getIntExtra(WifiManager.EXTRA_NEW_RSSI, -200), 0).sendToTarget();
+                } else if (action.equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)) {
+                    sendMessage(EVENT_SUPPLICANT_STATE_CHANGE, intent);
+                } else if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
+                    sendMessage(EVENT_NETWORK_STATE_CHANGE, intent);
+                } else if (action.equals(Intent.ACTION_SCREEN_ON)) {
+                    sendMessage(EVENT_SCREEN_ON);
+                } else if (action.equals(Intent.ACTION_SCREEN_OFF)) {
+                    sendMessage(EVENT_SCREEN_OFF);
                 } else if (action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
-                    sendMessage(EVENT_WIFI_RADIO_STATE_CHANGE,
-                            intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
-                                    WifiManager.WIFI_STATE_UNKNOWN));
+                    sendMessage(EVENT_WIFI_RADIO_STATE_CHANGE,intent.getIntExtra(
+                            WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN));
                 }
             }
         };
@@ -300,6 +426,9 @@
         mIntentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
         mIntentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
         mIntentFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);
+        mIntentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
+        mIntentFilter.addAction(Intent.ACTION_SCREEN_ON);
+        mIntentFilter.addAction(Intent.ACTION_SCREEN_OFF);
         mContext.registerReceiver(mBroadcastReceiver, mIntentFilter);
     }
 
@@ -331,22 +460,9 @@
         };
 
         mContext.getContentResolver().registerContentObserver(
-                Settings.Secure.getUriFor(
-                        Settings.Secure.WIFI_WATCHDOG_ARP_CHECK_INTERVAL_MS),
-                        false, contentObserver);
-        mContext.getContentResolver().registerContentObserver(
                 Settings.Secure.getUriFor(Settings.Secure.WIFI_WATCHDOG_WALLED_GARDEN_INTERVAL_MS),
                 false, contentObserver);
         mContext.getContentResolver().registerContentObserver(
-                Settings.Secure.getUriFor(Settings.Secure.WIFI_WATCHDOG_NUM_ARP_PINGS),
-                false, contentObserver);
-        mContext.getContentResolver().registerContentObserver(
-                Settings.Secure.getUriFor(Settings.Secure.WIFI_WATCHDOG_MIN_ARP_RESPONSES),
-                false, contentObserver);
-        mContext.getContentResolver().registerContentObserver(
-                Settings.Secure.getUriFor(Settings.Secure.WIFI_WATCHDOG_ARP_PING_TIMEOUT_MS),
-                false, contentObserver);
-        mContext.getContentResolver().registerContentObserver(
                 Settings.Secure.getUriFor(Settings.Secure.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED),
                 false, contentObserver);
         mContext.getContentResolver().registerContentObserver(
@@ -372,12 +488,10 @@
             urlConnection.setReadTimeout(WALLED_GARDEN_SOCKET_TIMEOUT_MS);
             urlConnection.setUseCaches(false);
             urlConnection.getInputStream();
-            // We got a valid response, but not from the real google
+            // we got a valid response, but not from the real google
             return urlConnection.getResponseCode() != 204;
         } catch (IOException e) {
-            if (DBG) {
-                log("Walled garden check - probably not a portal: exception " + e);
-            }
+            if (DBG) logd("Walled garden check - probably not a portal: exception " + e);
             return false;
         } finally {
             if (urlConnection != null) {
@@ -392,12 +506,7 @@
         pw.println("mWifiInfo: [" + mWifiInfo + "]");
         pw.println("mLinkProperties: [" + mLinkProperties + "]");
         pw.println("mCurrentSignalLevel: [" + mCurrentSignalLevel + "]");
-        pw.println("mArpCheckIntervalMs: [" + mArpCheckIntervalMs+ "]");
-        pw.println("mRssiFetchIntervalMs: [" + mRssiFetchIntervalMs + "]");
         pw.println("mWalledGardenIntervalMs: [" + mWalledGardenIntervalMs + "]");
-        pw.println("mNumArpPings: [" + mNumArpPings + "]");
-        pw.println("mMinArpResponses: [" + mMinArpResponses + "]");
-        pw.println("mArpPingTimeoutMs: [" + mArpPingTimeoutMs + "]");
         pw.println("mPoorNetworkDetectionEnabled: [" + mPoorNetworkDetectionEnabled + "]");
         pw.println("mWalledGardenTestEnabled: [" + mWalledGardenTestEnabled + "]");
         pw.println("mWalledGardenUrl: [" + mWalledGardenUrl + "]");
@@ -405,28 +514,13 @@
 
     private boolean isWatchdogEnabled() {
         boolean ret = getSettingsBoolean(mContentResolver, Settings.Secure.WIFI_WATCHDOG_ON, true);
-        if (DBG) log("watchdog enabled " + ret);
+        if (DBG) logd("Watchdog enabled " + ret);
         return ret;
     }
 
     private void updateSettings() {
-        if (DBG) log("Updating secure settings");
+        if (DBG) logd("Updating secure settings");
 
-        mArpCheckIntervalMs = Secure.getLong(mContentResolver,
-                Secure.WIFI_WATCHDOG_ARP_CHECK_INTERVAL_MS,
-                DEFAULT_ARP_CHECK_INTERVAL_MS);
-        mRssiFetchIntervalMs = Secure.getLong(mContentResolver,
-                Secure.WIFI_WATCHDOG_RSSI_FETCH_INTERVAL_MS,
-                DEFAULT_RSSI_FETCH_INTERVAL_MS);
-        mNumArpPings = Secure.getInt(mContentResolver,
-                Secure.WIFI_WATCHDOG_NUM_ARP_PINGS,
-                DEFAULT_NUM_ARP_PINGS);
-        mMinArpResponses = Secure.getInt(mContentResolver,
-                Secure.WIFI_WATCHDOG_MIN_ARP_RESPONSES,
-                DEFAULT_MIN_ARP_RESPONSES);
-        mArpPingTimeoutMs = Secure.getInt(mContentResolver,
-                Secure.WIFI_WATCHDOG_ARP_PING_TIMEOUT_MS,
-                DEFAULT_ARP_PING_TIMEOUT_MS);
         mPoorNetworkDetectionEnabled = getSettingsBoolean(mContentResolver,
                 Settings.Secure.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED, true);
         mWalledGardenTestEnabled = getSettingsBoolean(mContentResolver,
@@ -440,7 +534,7 @@
     }
 
     private void setWalledGardenNotificationVisible(boolean visible) {
-        // If it should be hidden and it is already hidden, then noop
+        // if it should be hidden and it is already hidden, then noop
         if (!visible && !mWalledGardenNotificationShown) {
             return;
         }
@@ -472,10 +566,13 @@
         mWalledGardenNotificationShown = visible;
     }
 
+    /**
+     * Default state, guard for unhandled messages.
+     */
     class DefaultState extends State {
         @Override
         public void enter() {
-            if (DBG) log(getName() + "\n");
+            if (DBG) logd(getName());
         }
 
         @Override
@@ -483,34 +580,42 @@
             switch (msg.what) {
                 case EVENT_WATCHDOG_SETTINGS_CHANGE:
                     updateSettings();
-                    if (DBG) {
-                        log("Updating wifi-watchdog secure settings");
-                    }
+                    if (DBG) logd("Updating wifi-watchdog secure settings");
                     break;
                 case EVENT_RSSI_CHANGE:
                     mCurrentSignalLevel = calculateSignalLevel(msg.arg1);
                     break;
                 case EVENT_WIFI_RADIO_STATE_CHANGE:
                 case EVENT_NETWORK_STATE_CHANGE:
-                case CMD_ARP_CHECK:
+                case EVENT_SUPPLICANT_STATE_CHANGE:
+                case EVENT_BSSID_CHANGE:
                 case CMD_DELAYED_WALLED_GARDEN_CHECK:
                 case CMD_RSSI_FETCH:
-                case RSSI_FETCH_SUCCEEDED:
-                case RSSI_FETCH_FAILED:
-                    //ignore
+                case RSSI_PKTCNT_FETCH_SUCCEEDED:
+                case RSSI_PKTCNT_FETCH_FAILED:
+                    // ignore
+                    break;
+                case EVENT_SCREEN_ON:
+                    mIsScreenOn = true;
+                    break;
+                case EVENT_SCREEN_OFF:
+                    mIsScreenOn = false;
                     break;
                 default:
-                    log("Unhandled message " + msg + " in state " + getCurrentState().getName());
+                    loge("Unhandled message " + msg + " in state " + getCurrentState().getName());
                     break;
             }
             return HANDLED;
         }
     }
 
+    /**
+     * WiFi watchdog is disabled by the setting.
+     */
     class WatchdogDisabledState extends State {
         @Override
         public void enter() {
-            if (DBG) log(getName() + "\n");
+            if (DBG) logd(getName());
         }
 
         @Override
@@ -527,8 +632,8 @@
 
                     switch (networkInfo.getDetailedState()) {
                         case VERIFYING_POOR_LINK:
-                            if (DBG) log("Watchdog disabled, verify link");
-                            mWsmChannel.sendMessage(GOOD_LINK_DETECTED);
+                            if (DBG) logd("Watchdog disabled, verify link");
+                            sendLinkStatusNotification(true);
                             break;
                         default:
                             break;
@@ -539,41 +644,46 @@
         }
     }
 
+    /**
+     * WiFi watchdog is enabled by the setting.
+     */
     class WatchdogEnabledState extends State {
         @Override
         public void enter() {
-            if (DBG) log("WifiWatchdogService enabled");
+            if (DBG) logd(getName());
         }
 
         @Override
         public boolean processMessage(Message msg) {
+            Intent intent;
             switch (msg.what) {
                 case EVENT_WATCHDOG_TOGGLED:
                     if (!isWatchdogEnabled())
                         transitionTo(mWatchdogDisabledState);
                     break;
-                case EVENT_NETWORK_STATE_CHANGE:
-                    Intent intent = (Intent) msg.obj;
-                    NetworkInfo networkInfo = (NetworkInfo)
-                            intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
 
-                    if (DBG) log("network state change " + networkInfo.getDetailedState());
+                case EVENT_NETWORK_STATE_CHANGE:
+                    intent = (Intent) msg.obj;
+                    NetworkInfo networkInfo =
+                            (NetworkInfo) intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
+                    if (DBG) logd("Network state change " + networkInfo.getDetailedState());
+
+                    mWifiInfo = (WifiInfo) intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);
+                    updateCurrentBssid(mWifiInfo != null ? mWifiInfo.getBSSID() : null);
 
                     switch (networkInfo.getDetailedState()) {
                         case VERIFYING_POOR_LINK:
                             mLinkProperties = (LinkProperties) intent.getParcelableExtra(
                                     WifiManager.EXTRA_LINK_PROPERTIES);
-                            mWifiInfo = (WifiInfo) intent.getParcelableExtra(
-                                    WifiManager.EXTRA_WIFI_INFO);
                             if (mPoorNetworkDetectionEnabled) {
                                 if (mWifiInfo == null) {
-                                    log("Ignoring link verification, mWifiInfo is NULL");
-                                    mWsmChannel.sendMessage(GOOD_LINK_DETECTED);
+                                    if (DBG) logd("Ignoring link verification, mWifiInfo is NULL");
+                                    sendLinkStatusNotification(true);
                                 } else {
                                     transitionTo(mVerifyingLinkState);
                                 }
                             } else {
-                                mWsmChannel.sendMessage(GOOD_LINK_DETECTED);
+                                sendLinkStatusNotification(true);
                             }
                             break;
                         case CONNECTED:
@@ -588,12 +698,22 @@
                             break;
                     }
                     break;
-                case EVENT_WIFI_RADIO_STATE_CHANGE:
-                    if ((Integer) msg.obj == WifiManager.WIFI_STATE_DISABLING) {
-                        if (DBG) log("WifiStateDisabling -- Resetting WatchdogState");
-                        transitionTo(mNotConnectedState);
+
+                case EVENT_SUPPLICANT_STATE_CHANGE:
+                    intent = (Intent) msg.obj;
+                    SupplicantState supplicantState = (SupplicantState) intent.getParcelableExtra(
+                            WifiManager.EXTRA_NEW_STATE);
+                    if (supplicantState == SupplicantState.COMPLETED) {
+                        mWifiInfo = mWifiManager.getConnectionInfo();
+                        updateCurrentBssid(mWifiInfo.getBSSID());
                     }
                     break;
+
+                case EVENT_WIFI_RADIO_STATE_CHANGE:
+                    if ((Integer) msg.obj == WifiManager.WIFI_STATE_DISABLING)
+                        transitionTo(mNotConnectedState);
+                    break;
+
                 default:
                     return NOT_HANDLED;
             }
@@ -601,36 +721,31 @@
             setWalledGardenNotificationVisible(false);
             return HANDLED;
         }
-
-        @Override
-        public void exit() {
-            if (DBG) log("WifiWatchdogService disabled");
-        }
     }
 
+    /**
+     * WiFi is disconnected.
+     */
     class NotConnectedState extends State {
         @Override
         public void enter() {
-            if (DBG) log(getName() + "\n");
+            if (DBG) logd(getName());
         }
     }
 
+    /**
+     * WiFi is connected, but waiting for good link detection message.
+     */
     class VerifyingLinkState extends State {
+
+        private int mSampleCount;
+
         @Override
         public void enter() {
-            if (DBG) log(getName() + "\n");
-            //Treat entry as an rssi change
-            handleRssiChange();
-        }
-
-        private void handleRssiChange() {
-            if (mCurrentSignalLevel <= RSSI_LEVEL_MONITOR) {
-                //stay here
-                if (DBG) log("enter VerifyingLinkState, stay level: " + mCurrentSignalLevel);
-            } else {
-                if (DBG) log("enter VerifyingLinkState, arp check level: " + mCurrentSignalLevel);
-                sendMessage(obtainMessage(CMD_ARP_CHECK, ++mArpToken, 0));
-            }
+            if (DBG) logd(getName());
+            mSampleCount = 0;
+            mCurrentBssid.newLinkDetected();
+            sendMessage(obtainMessage(CMD_RSSI_FETCH, ++mRssiFetchToken, 0));
         }
 
         @Override
@@ -639,27 +754,51 @@
                 case EVENT_WATCHDOG_SETTINGS_CHANGE:
                     updateSettings();
                     if (!mPoorNetworkDetectionEnabled) {
-                        mWsmChannel.sendMessage(GOOD_LINK_DETECTED);
+                        sendLinkStatusNotification(true);
                     }
                     break;
-                case EVENT_RSSI_CHANGE:
-                    mCurrentSignalLevel = calculateSignalLevel(msg.arg1);
-                    handleRssiChange();
+
+                case EVENT_BSSID_CHANGE:
+                    transitionTo(mVerifyingLinkState);
                     break;
-                case CMD_ARP_CHECK:
-                    if (msg.arg1 == mArpToken) {
-                        boolean success = ArpPeer.doArp(mWifiInfo.getMacAddress(), mLinkProperties,
-                                mArpPingTimeoutMs, mNumArpPings, mMinArpResponses);
-                        if (success) {
-                            if (DBG) log("Notify link is good " + mCurrentSignalLevel);
-                            mWsmChannel.sendMessage(GOOD_LINK_DETECTED);
+
+                case CMD_RSSI_FETCH:
+                    if (msg.arg1 == mRssiFetchToken) {
+                        mWsmChannel.sendMessage(RSSI_PKTCNT_FETCH, new RssiPktcntStat());
+                        sendMessageDelayed(obtainMessage(CMD_RSSI_FETCH, ++mRssiFetchToken, 0),
+                                LINK_SAMPLING_INTERVAL_MS);
+                    }
+                    break;
+
+                case RSSI_PKTCNT_FETCH_SUCCEEDED:
+                    RssiPktcntStat stat = (RssiPktcntStat) msg.obj;
+                    int rssi = stat.rssi;
+                    if (DBG) logd("Fetch RSSI succeed, rssi=" + rssi);
+
+                    long time = mCurrentBssid.mBssidAvoidTimeMax - SystemClock.elapsedRealtime();
+                    if (time <= 0) {
+                        // max avoidance time is met
+                        if (DBG) logd("Max avoid time elapsed");
+                        sendLinkStatusNotification(true);
+                    } else {
+                        if (rssi >= mCurrentBssid.mGoodLinkTargetRssi) {
+                            if (++mSampleCount >= mCurrentBssid.mGoodLinkTargetCount) {
+                                // link is good again
+                                if (DBG) logd("Good link detected, rssi=" + rssi);
+                                mCurrentBssid.mBssidAvoidTimeMax = 0;
+                                sendLinkStatusNotification(true);
+                            }
                         } else {
-                            if (DBG) log("Continue ARP check, rssi level: " + mCurrentSignalLevel);
-                            sendMessageDelayed(obtainMessage(CMD_ARP_CHECK, ++mArpToken, 0),
-                                    mArpCheckIntervalMs);
+                            mSampleCount = 0;
+                            if (DBG) logd("Link is still poor, time left=" + time);
                         }
                     }
                     break;
+
+                case RSSI_PKTCNT_FETCH_FAILED:
+                    if (DBG) logd("RSSI_FETCH_FAILED");
+                    break;
+
                 default:
                     return NOT_HANDLED;
             }
@@ -667,19 +806,23 @@
         }
     }
 
+    /**
+     * WiFi is connected and link is verified.
+     */
     class ConnectedState extends State {
         @Override
         public void enter() {
-            if (DBG) log(getName() + "\n");
+            if (DBG) logd(getName());
         }
+
         @Override
         public boolean processMessage(Message msg) {
             switch (msg.what) {
                 case EVENT_WATCHDOG_SETTINGS_CHANGE:
                     updateSettings();
-                    //STOPSHIP: Remove this at ship
+                    // STOPSHIP: Remove this at ship
+                    logd("Updated secure settings and turned debug on");
                     DBG = true;
-                    if (DBG) log("Updated secure settings and turned debug on");
 
                     if (mPoorNetworkDetectionEnabled) {
                         transitionTo(mOnlineWatchState);
@@ -692,11 +835,14 @@
         }
     }
 
+    /**
+     * Checking for wall garden.
+     */
     class WalledGardenCheckState extends State {
         private int mWalledGardenToken = 0;
         @Override
         public void enter() {
-            if (DBG) log(getName() + "\n");
+            if (DBG) logd(getName());
             sendMessageDelayed(obtainMessage(CMD_DELAYED_WALLED_GARDEN_CHECK,
                     ++mWalledGardenToken, 0), WALLED_GARDEN_START_DELAY_MS);
         }
@@ -708,7 +854,7 @@
                     if (msg.arg1 == mWalledGardenToken) {
                         mLastWalledGardenCheckTime = SystemClock.elapsedRealtime();
                         if (isWalledGardenConnection()) {
-                            if (DBG) log("Walled garden detected");
+                            if (DBG) logd("Walled garden detected");
                             setWalledGardenNotificationVisible(true);
                         }
                         transitionTo(mOnlineWatchState);
@@ -721,11 +867,15 @@
         }
     }
 
+    /**
+     * RSSI is high enough and don't need link monitoring.
+     */
     class OnlineWatchState extends State {
+        @Override
         public void enter() {
-            if (DBG) log(getName() + "\n");
+            if (DBG) logd(getName());
             if (mPoorNetworkDetectionEnabled) {
-                //Treat entry as an rssi change
+                // treat entry as an rssi change
                 handleRssiChange();
             } else {
                 transitionTo(mOnlineState);
@@ -733,10 +883,10 @@
         }
 
         private void handleRssiChange() {
-            if (mCurrentSignalLevel <= RSSI_LEVEL_MONITOR) {
-                transitionTo(mRssiMonitoringState);
+            if (mCurrentSignalLevel <= LINK_MONITOR_LEVEL_THRESHOLD) {
+                transitionTo(mLinkMonitoringState);
             } else {
-                //stay here
+                // stay here
             }
         }
 
@@ -745,16 +895,7 @@
             switch (msg.what) {
                 case EVENT_RSSI_CHANGE:
                     mCurrentSignalLevel = calculateSignalLevel(msg.arg1);
-                    //Ready to avoid bssid again ?
-                    long time = android.os.SystemClock.elapsedRealtime();
-                    if (time - mLastBssidAvoidedTime  > MIN_INTERVAL_AVOID_BSSID_MS[
-                            mMinIntervalArrayIndex]) {
-                        handleRssiChange();
-                    } else {
-                        if (DBG) log("Early to avoid " + mWifiInfo + " time: " + time +
-                                " last avoided: " + mLastBssidAvoidedTime +
-                                " mMinIntervalArrayIndex: " + mMinIntervalArrayIndex);
-                    }
+                    handleRssiChange();
                     break;
                 default:
                     return NOT_HANDLED;
@@ -763,48 +904,110 @@
         }
     }
 
-    class RssiMonitoringState extends State {
+    /**
+     * Keep sampling the link and monitor any poor link situation.
+     */
+    class LinkMonitoringState extends State {
+
+        private int mSampleCount;
+
+        private int mLastRssi;
+        private int mLastTxGood;
+        private int mLastTxBad;
+
+        @Override
         public void enter() {
-            if (DBG) log(getName() + "\n");
+            if (DBG) logd(getName());
+            mSampleCount = 0;
+            mCurrentLoss = new VolumeWeightedEMA(EXP_COEFFICIENT_MONITOR);
             sendMessage(obtainMessage(CMD_RSSI_FETCH, ++mRssiFetchToken, 0));
         }
 
+        @Override
         public boolean processMessage(Message msg) {
             switch (msg.what) {
                 case EVENT_RSSI_CHANGE:
                     mCurrentSignalLevel = calculateSignalLevel(msg.arg1);
-                    if (mCurrentSignalLevel <= RSSI_LEVEL_MONITOR) {
-                        //stay here;
+                    if (mCurrentSignalLevel <= LINK_MONITOR_LEVEL_THRESHOLD) {
+                        // stay here;
                     } else {
-                        //We dont need frequent RSSI monitoring any more
+                        // we don't need frequent RSSI monitoring any more
                         transitionTo(mOnlineWatchState);
                     }
                     break;
+
+                case EVENT_BSSID_CHANGE:
+                    transitionTo(mLinkMonitoringState);
+                    break;
+
                 case CMD_RSSI_FETCH:
-                    if (msg.arg1 == mRssiFetchToken) {
-                        mWsmChannel.sendMessage(RSSI_FETCH);
+                    if (!mIsScreenOn) {
+                        transitionTo(mOnlineState);
+                    } else if (msg.arg1 == mRssiFetchToken) {
+                        mWsmChannel.sendMessage(RSSI_PKTCNT_FETCH, new RssiPktcntStat());
                         sendMessageDelayed(obtainMessage(CMD_RSSI_FETCH, ++mRssiFetchToken, 0),
-                                mRssiFetchIntervalMs);
+                                LINK_SAMPLING_INTERVAL_MS);
                     }
                     break;
-                case RSSI_FETCH_SUCCEEDED:
-                    int rssi = msg.arg1;
-                    if (DBG) log("RSSI_FETCH_SUCCEEDED: " + rssi);
-                    if (msg.arg1 < RSSI_MONITOR_THRESHOLD) {
-                        mRssiMonitorCount++;
-                    } else {
-                        mRssiMonitorCount = 0;
+
+                case RSSI_PKTCNT_FETCH_SUCCEEDED:
+                    RssiPktcntStat stat = (RssiPktcntStat) msg.obj;
+                    int rssi = stat.rssi;
+                    int mrssi = (mLastRssi + rssi) / 2;
+                    int txbad = stat.txbad;
+                    int txgood = stat.txgood;
+                    if (DBG) logd("Fetch RSSI succeed, rssi=" + rssi + " mrssi=" + mrssi + " txbad="
+                            + txbad + " txgood=" + txgood);
+
+                    // skip the first data point as we want incremental values
+                    long now = SystemClock.elapsedRealtime();
+                    if (now - mCurrentBssid.mLastTimeSample < LINK_SAMPLING_INTERVAL_MS * 2) {
+
+                        // update packet loss statistics
+                        int dbad = txbad - mLastTxBad;
+                        int dgood = txgood - mLastTxGood;
+                        int dtotal = dbad + dgood;
+
+                        if (dtotal > 0) {
+                            // calculate packet loss in the last sampling interval
+                            double loss = ((double) dbad) / ((double) dtotal);
+
+                            mCurrentLoss.update(loss, dtotal);
+
+                            if (DBG) {
+                                DecimalFormat df = new DecimalFormat("#.##");
+                                logd("Incremental loss=" + dbad + "/" + dtotal + " Current loss="
+                                        + df.format(mCurrentLoss.mValue * 100) + "% volume="
+                                        + df.format(mCurrentLoss.mVolume));
+                            }
+
+                            mCurrentBssid.updateLoss(mrssi, loss, dtotal);
+
+                            // check for high packet loss and send poor link notification
+                            if (mCurrentLoss.mValue > POOR_LINK_LOSS_THRESHOLD
+                                    && mCurrentLoss.mVolume > POOR_LINK_MIN_VOLUME) {
+                                if (++mSampleCount >= POOR_LINK_SAMPLE_COUNT)
+                                    if (mCurrentBssid.poorLinkDetected(rssi)) {
+                                        sendLinkStatusNotification(false);
+                                        ++mRssiFetchToken;
+                                    }
+                            } else {
+                                mSampleCount = 0;
+                            }
+                        }
                     }
 
-                    if (mRssiMonitorCount > RSSI_MONITOR_COUNT) {
-                        sendPoorLinkDetected();
-                        ++mRssiFetchToken;
-                    }
+                    mCurrentBssid.mLastTimeSample = now;
+                    mLastTxBad = txbad;
+                    mLastTxGood = txgood;
+                    mLastRssi = rssi;
                     break;
-                case RSSI_FETCH_FAILED:
-                    //can happen if we are waiting to get a disconnect notification
-                    if (DBG) log("RSSI_FETCH_FAILED");
+
+                case RSSI_PKTCNT_FETCH_FAILED:
+                    // can happen if we are waiting to get a disconnect notification
+                    if (DBG) logd("RSSI_FETCH_FAILED");
                     break;
+
                 default:
                     return NOT_HANDLED;
             }
@@ -812,19 +1015,33 @@
         }
    }
 
-    /* Child state of ConnectedState indicating that we are online
-     * and there is nothing to do
+    /**
+     * Child state of ConnectedState indicating that we are online and there is nothing to do.
      */
     class OnlineState extends State {
         @Override
         public void enter() {
-            if (DBG) log(getName() + "\n");
+            if (DBG) logd(getName());
+        }
+
+        @Override
+        public boolean processMessage(Message msg) {
+            switch (msg.what) {
+                case EVENT_SCREEN_ON:
+                    mIsScreenOn = true;
+                    if (mPoorNetworkDetectionEnabled)
+                        transitionTo(mOnlineWatchState);
+                    break;
+                default:
+                    return NOT_HANDLED;
+            }
+            return HANDLED;
         }
     }
 
     private boolean shouldCheckWalledGarden() {
         if (!mWalledGardenTestEnabled) {
-            if (DBG) log("Skipping walled garden check - disabled");
+            if (DBG) logd("Skipping walled garden check - disabled");
             return false;
         }
 
@@ -832,40 +1049,57 @@
             - SystemClock.elapsedRealtime();
 
         if (mLastWalledGardenCheckTime != 0 && waitTime > 0) {
-            if (DBG) {
-                log("Skipping walled garden check - wait " +
-                        waitTime + " ms.");
-            }
+            if (DBG) logd("Skipping walled garden check - wait " + waitTime + " ms.");
             return false;
         }
         return true;
     }
 
+    private void updateCurrentBssid(String bssid) {
+        if (DBG) logd("Update current BSSID to " + (bssid != null ? bssid : "null"));
+
+        // if currently not connected, then set current BSSID to null
+        if (bssid == null) {
+            if (mCurrentBssid == null) return;
+            mCurrentBssid = null;
+            if (DBG) logd("BSSID changed");
+            sendMessage(EVENT_BSSID_CHANGE);
+            return;
+        }
+
+        // if it is already the current BSSID, then done
+        if (mCurrentBssid != null && bssid.equals(mCurrentBssid.mBssid)) return;
+
+        // search for the new BSSID in the cache, add to cache if not found
+        mCurrentBssid = mBssidCache.get(bssid);
+        if (mCurrentBssid == null) {
+            mCurrentBssid = new BssidStatistics(bssid);
+            mBssidCache.put(bssid, mCurrentBssid);
+        }
+
+        // send BSSID change notification
+        if (DBG) logd("BSSID changed");
+        sendMessage(EVENT_BSSID_CHANGE);
+    }
+
     private int calculateSignalLevel(int rssi) {
-        int signalLevel = WifiManager.calculateSignalLevel(rssi,
-                WifiManager.RSSI_LEVELS);
-        if (DBG) log("RSSI current: " + mCurrentSignalLevel + "new: " + rssi + ", " + signalLevel);
+        int signalLevel = WifiManager.calculateSignalLevel(rssi, WifiManager.RSSI_LEVELS);
+        if (DBG)
+            logd("RSSI current: " + mCurrentSignalLevel + " new: " + rssi + ", " + signalLevel);
         return signalLevel;
     }
 
-    private void sendPoorLinkDetected() {
-        if (DBG) log("send POOR_LINK_DETECTED " + mWifiInfo);
-        mWsmChannel.sendMessage(POOR_LINK_DETECTED);
-
-        long time = android.os.SystemClock.elapsedRealtime();
-        if (time - mLastBssidAvoidedTime  > MIN_INTERVAL_AVOID_BSSID_MS[
-                MIN_INTERVAL_AVOID_BSSID_MS.length - 1]) {
-            mMinIntervalArrayIndex = 1;
-            if (DBG) log("set mMinIntervalArrayIndex to 1");
+    private void sendLinkStatusNotification(boolean isGood) {
+        if (DBG) logd("########################################");
+        if (isGood) {
+            mWsmChannel.sendMessage(GOOD_LINK_DETECTED);
+            mCurrentBssid.mLastTimeGood = SystemClock.elapsedRealtime();
+            logd("Good link notification is sent");
         } else {
-
-            if (mMinIntervalArrayIndex < MIN_INTERVAL_AVOID_BSSID_MS.length - 1) {
-                mMinIntervalArrayIndex++;
-            }
-            if (DBG) log("mMinIntervalArrayIndex: " + mMinIntervalArrayIndex);
+            mWsmChannel.sendMessage(POOR_LINK_DETECTED);
+            mCurrentBssid.mLastTimePoor = SystemClock.elapsedRealtime();
+            logd("Poor link notification is sent");
         }
-
-        mLastBssidAvoidedTime = android.os.SystemClock.elapsedRealtime();
     }
 
     /**
@@ -884,30 +1118,28 @@
     }
 
     /**
-     * Convenience function for retrieving a single secure settings value
-     * as a boolean.  Note that internally setting values are always
-     * stored as strings; this function converts the string to a boolean
-     * for you.  The default value will be returned if the setting is
-     * not defined or not a valid boolean.
+     * Convenience function for retrieving a single secure settings value as a
+     * boolean. Note that internally setting values are always stored as
+     * strings; this function converts the string to a boolean for you. The
+     * default value will be returned if the setting is not defined or not a
+     * valid boolean.
      *
      * @param cr The ContentResolver to access.
      * @param name The name of the setting to retrieve.
      * @param def Value to return if the setting is not defined.
-     *
-     * @return The setting's current value, or 'def' if it is not defined
-     * or not a valid boolean.
+     * @return The setting's current value, or 'def' if it is not defined or not
+     *         a valid boolean.
      */
     private static boolean getSettingsBoolean(ContentResolver cr, String name, boolean def) {
         return Settings.Secure.getInt(cr, name, def ? 1 : 0) == 1;
     }
 
     /**
-     * Convenience function for updating a single settings value as an
-     * integer. This will either create a new entry in the table if the
-     * given name does not exist, or modify the value of the existing row
-     * with that name.  Note that internally setting values are always
-     * stored as strings, so this function converts the given value to a
-     * string before storing it.
+     * Convenience function for updating a single settings value as an integer.
+     * This will either create a new entry in the table if the given name does
+     * not exist, or modify the value of the existing row with that name. Note
+     * that internally setting values are always stored as strings, so this
+     * function converts the given value to a string before storing it.
      *
      * @param cr The ContentResolver to access.
      * @param name The name of the setting to modify.
@@ -918,11 +1150,267 @@
         return Settings.Secure.putInt(cr, name, value ? 1 : 0);
     }
 
-    private static void log(String s) {
+    private static void logd(String s) {
         Log.d(TAG, s);
     }
 
     private static void loge(String s) {
         Log.e(TAG, s);
     }
+
+    /**
+     * Bundle of RSSI and packet count information
+     */
+    public class RssiPktcntStat {
+        public int rssi;
+        public int txgood;
+        public int txbad;
+    }
+
+    /**
+     * Bundle of good link count parameters
+     */
+    private static class GoodLinkTarget {
+        public final int RSSI_ADJ_DBM;
+        public final int SAMPLE_COUNT;
+        public final int REDUCE_TIME_MS;
+        public GoodLinkTarget(int adj, int count, int time) {
+            RSSI_ADJ_DBM = adj;
+            SAMPLE_COUNT = count;
+            REDUCE_TIME_MS = time;
+        }
+    }
+
+    /**
+     * Bundle of max avoidance time parameters
+     */
+    private static class MaxAvoidTime {
+        public final int TIME_MS;
+        public final int MIN_RSSI_DBM;
+        public MaxAvoidTime(int time, int rssi) {
+            TIME_MS = time;
+            MIN_RSSI_DBM = rssi;
+        }
+    }
+
+    /**
+     * Volume-weighted Exponential Moving Average (V-EMA)
+     *    - volume-weighted:  each update has its own weight (number of packets)
+     *    - exponential:      O(1) time and O(1) space for both update and query
+     *    - moving average:   reflect most recent results and expire old ones
+     */
+    private class VolumeWeightedEMA {
+        private double mValue;
+        private double mVolume;
+        private double mProduct;
+        private final double mAlpha;
+
+        public VolumeWeightedEMA(double coefficient) {
+            mValue   = 0.0;
+            mVolume  = 0.0;
+            mProduct = 0.0;
+            mAlpha   = coefficient;
+        }
+
+        public void update(double newValue, int newVolume) {
+            if (newVolume <= 0) return;
+            // core update formulas
+            double newProduct = newValue * newVolume;
+            mProduct = mAlpha * newProduct + (1 - mAlpha) * mProduct;
+            mVolume  = mAlpha * newVolume  + (1 - mAlpha) * mVolume;
+            mValue   = mProduct / mVolume;
+        }
+    }
+
+    /**
+     * Record (RSSI -> pakce loss %) mappings of one BSSID
+     */
+    private class BssidStatistics {
+
+        /* MAC address of this BSSID */
+        private final String mBssid;
+
+        /* RSSI -> packet loss % mappings */
+        private VolumeWeightedEMA[] mEntries;
+        private int mRssiBase;
+        private int mEntriesSize;
+
+        /* Target to send good link notification, set when poor link is detected */
+        private int mGoodLinkTargetRssi;
+        private int mGoodLinkTargetCount;
+
+        /* Index of GOOD_LINK_TARGET array */
+        private int mGoodLinkTargetIndex;
+
+        /* Timestamps of some last events */
+        private long mLastTimeSample;
+        private long mLastTimeGood;
+        private long mLastTimePoor;
+
+        /* Max time to avoid this BSSID */
+        private long mBssidAvoidTimeMax;
+
+        /**
+         * Constructor
+         *
+         * @param bssid is the address of this BSSID
+         */
+        public BssidStatistics(String bssid) {
+            this.mBssid = bssid;
+            mRssiBase = BSSID_STAT_RANGE_LOW_DBM;
+            mEntriesSize = BSSID_STAT_RANGE_HIGH_DBM - BSSID_STAT_RANGE_LOW_DBM + 1;
+            mEntries = new VolumeWeightedEMA[mEntriesSize];
+            for (int i = 0; i < mEntriesSize; i++)
+                mEntries[i] = new VolumeWeightedEMA(EXP_COEFFICIENT_RECORD);
+        }
+
+        /**
+         * Update this BSSID cache
+         *
+         * @param rssi is the RSSI
+         * @param value is the new instant loss value at this RSSI
+         * @param volume is the volume for this single update
+         */
+        public void updateLoss(int rssi, double value, int volume) {
+            if (volume <= 0) return;
+            int index = rssi - mRssiBase;
+            if (index < 0 || index >= mEntriesSize) return;
+            mEntries[index].update(value, volume);
+            if (DBG) {
+                DecimalFormat df = new DecimalFormat("#.##");
+                logd("Cache updated: loss[" + rssi + "]=" + df.format(mEntries[index].mValue * 100)
+                        + "% volume=" + df.format(mEntries[index].mVolume));
+            }
+        }
+
+        /**
+         * Get preset loss if the cache has insufficient data, observed from experiments.
+         *
+         * @param rssi is the input RSSI
+         * @return preset loss of the given RSSI
+         */
+        public double presetLoss(int rssi) {
+            if (rssi <= -90) return 1.0;
+            if (rssi > 0) return 0.0;
+
+            if (sPresetLoss == null) {
+                // pre-calculate all preset losses only once, then reuse them
+                final int size = 90;
+                sPresetLoss = new double[size];
+                for (int i = 0; i < size; i++) sPresetLoss[i] = 1.0 / Math.pow(90 - i, 1.5);
+            }
+            return sPresetLoss[-rssi];
+        }
+
+        /**
+         * A poor link is detected, calculate a target RSSI to bring WiFi back.
+         *
+         * @param rssi is the current RSSI
+         * @return true iff the current BSSID should be avoided
+         */
+        public boolean poorLinkDetected(int rssi) {
+            if (DBG) logd("Poor link detected, rssi=" + rssi);
+
+            long now = SystemClock.elapsedRealtime();
+            long lastGood = now - mLastTimeGood;
+            long lastPoor = now - mLastTimePoor;
+
+            // reduce the difficulty of good link target if last avoidance was long time ago
+            while (mGoodLinkTargetIndex > 0
+                    && lastPoor >= GOOD_LINK_TARGET[mGoodLinkTargetIndex - 1].REDUCE_TIME_MS)
+                mGoodLinkTargetIndex--;
+            mGoodLinkTargetCount = GOOD_LINK_TARGET[mGoodLinkTargetIndex].SAMPLE_COUNT;
+
+            // scan for a target RSSI at which the link is good
+            int from = rssi + GOOD_LINK_RSSI_RANGE_MIN;
+            int to = rssi + GOOD_LINK_RSSI_RANGE_MAX;
+            mGoodLinkTargetRssi = findRssiTarget(from, to, GOOD_LINK_LOSS_THRESHOLD);
+            mGoodLinkTargetRssi += GOOD_LINK_TARGET[mGoodLinkTargetIndex].RSSI_ADJ_DBM;
+            if (mGoodLinkTargetIndex < GOOD_LINK_TARGET.length - 1) mGoodLinkTargetIndex++;
+
+            // calculate max avoidance time to prevent avoiding forever
+            int p = 0, pmax = MAX_AVOID_TIME.length - 1;
+            while (p < pmax && rssi >= MAX_AVOID_TIME[p + 1].MIN_RSSI_DBM) p++;
+            long avoidMax = MAX_AVOID_TIME[p].TIME_MS;
+
+            // don't avoid if max avoidance time is 0 (RSSI is super high)
+            if (avoidMax <= 0) return false;
+
+            // set max avoidance time, send poor link notification
+            mBssidAvoidTimeMax = now + avoidMax;
+
+            if (DBG) logd("goodRssi=" + mGoodLinkTargetRssi + " goodCount=" + mGoodLinkTargetCount
+                    + " lastGood=" + lastGood + " lastPoor=" + lastPoor + " avoidMax=" + avoidMax);
+
+            return true;
+        }
+
+        /**
+         * A new BSSID is connected, recalculate target RSSI threshold
+         */
+        public void newLinkDetected() {
+            // if this BSSID is currently being avoided, the reuse those values
+            if (mBssidAvoidTimeMax > 0) {
+                if (DBG) logd("Previous avoidance still in effect, rssi=" + mGoodLinkTargetRssi
+                        + " count=" + mGoodLinkTargetCount);
+                return;
+            }
+
+            // calculate a new RSSI threshold for new link verifying
+            int from = BSSID_STAT_RANGE_LOW_DBM;
+            int to = BSSID_STAT_RANGE_HIGH_DBM;
+            mGoodLinkTargetRssi = findRssiTarget(from, to, GOOD_LINK_LOSS_THRESHOLD);
+            mGoodLinkTargetCount = 1;
+            mBssidAvoidTimeMax = SystemClock.elapsedRealtime() + MAX_AVOID_TIME[0].TIME_MS;
+            if (DBG) logd("New link verifying target set, rssi=" + mGoodLinkTargetRssi + " count="
+                    + mGoodLinkTargetCount);
+        }
+
+        /**
+         * Return the first RSSI within the range where loss[rssi] < threshold
+         *
+         * @param from start scanning from this RSSI
+         * @param to stop scanning at this RSSI
+         * @param threshold target threshold for scanning
+         * @return target RSSI
+         */
+        public int findRssiTarget(int from, int to, double threshold) {
+            from -= mRssiBase;
+            to -= mRssiBase;
+            int emptyCount = 0;
+            int d = from < to ? 1 : -1;
+            for (int i = from; i != to; i += d)
+                // don't use a data point if it volume is too small (statistically unreliable)
+                if (i >= 0 && i < mEntriesSize && mEntries[i].mVolume > 1.0) {
+                    emptyCount = 0;
+                    if (mEntries[i].mValue < threshold) {
+                        // scan target found
+                        int rssi = mRssiBase + i;
+                        if (DBG) {
+                            DecimalFormat df = new DecimalFormat("#.##");
+                            logd("Scan target found: rssi=" + rssi + " threshold="
+                                    + df.format(threshold * 100) + "% value="
+                                    + df.format(mEntries[i].mValue * 100) + "% volume="
+                                    + df.format(mEntries[i].mVolume));
+                        }
+                        return rssi;
+                    }
+                } else if (++emptyCount >= BSSID_STAT_EMPTY_COUNT) {
+                    // cache has insufficient data around this RSSI, use preset loss instead
+                    int rssi = mRssiBase + i;
+                    double lossPreset = presetLoss(rssi);
+                    if (lossPreset < threshold) {
+                        if (DBG) {
+                            DecimalFormat df = new DecimalFormat("#.##");
+                            logd("Scan target found: rssi=" + rssi + " threshold="
+                                    + df.format(threshold * 100) + "% value="
+                                    + df.format(lossPreset * 100) + "% volume=preset");
+                        }
+                        return rssi;
+                    }
+                }
+
+            return mRssiBase + to;
+        }
+    }
 }